From 1c7f908ce09f98fdcbf79ed2a8ae21be60eaa634 Mon Sep 17 00:00:00 2001 From: Zhineng Li Date: Sun, 12 Jul 2026 17:11:17 +0800 Subject: update APIs 20260712 --- data/en_us/live/2016-11-01/api-docs.php | 105267 +++++++++++++---------------- 1 file changed, 46839 insertions(+), 58428 deletions(-) (limited to 'data/en_us/live') diff --git a/data/en_us/live/2016-11-01/api-docs.php b/data/en_us/live/2016-11-01/api-docs.php index aac1278..4b560c1 100644 --- a/data/en_us/live/2016-11-01/api-docs.php +++ b/data/en_us/live/2016-11-01/api-docs.php @@ -1,793 +1,284 @@ '1.0', - 'info' => [ - 'style' => 'RPC', - 'product' => 'live', - 'version' => '2016-11-01', - ], + 'info' => ['style' => 'RPC', 'product' => 'live', 'version' => '2016-11-01'], 'directories' => [ [ - 'id' => 387610, - 'title' => null, - 'type' => 'directory', 'children' => [ - 'AddLiveDomain', - 'AddLiveDomainPlayMapping', - 'DeleteLiveDomainPlayMapping', - 'AddLiveDomainMapping', - 'DeleteLiveDomain', - 'DeleteLiveDomainMapping', - 'DescribeLiveDomainMapping', - 'DescribeLiveDomainDetail', - 'DescribeLiveUserDomains', - 'StartLiveDomain', - 'StopLiveDomain', - 'DescribeLiveCertificateDetail', - 'DescribeLiveDomainCertificateInfo', - 'DescribeLiveCertificateList', - 'SetLiveDomainCertificate', - 'BatchDeleteLiveDomainConfigs', - 'BatchSetLiveDomainConfigs', - 'DescribeLiveDomainConfigs', - 'DescribeLiveDomainByCertificate', - 'DescribeLiveHttpsDomainList', - 'ModifyLiveDomainSchdmByProperty', - 'DescribeLiveUserTags', - 'VerifyLiveDomainOwner', - 'DescribeLiveVerifyContent', - 'ChangeLiveDomainResourceGroup', + 'AddLiveDomain', 'AddLiveDomainPlayMapping', 'DeleteLiveDomainPlayMapping', 'AddLiveDomainMapping', 'DeleteLiveDomain', 'DeleteLiveDomainMapping', 'DescribeLiveDomainMapping', 'DescribeLiveDomainDetail', 'StartLiveDomain', 'StopLiveDomain', 'DescribeLiveCertificateDetail', 'DescribeLiveDomainCertificateInfo', 'DescribeLiveCertificateList', 'SetLiveDomainCertificate', 'BatchDeleteLiveDomainConfigs', 'BatchSetLiveDomainConfigs', 'DescribeLiveDomainConfigs', 'DescribeLiveDomainByCertificate', 'DescribeLiveHttpsDomainList', 'ModifyLiveDomainSchdmByProperty', + 'DescribeLiveUserTags', 'VerifyLiveDomainOwner', 'DescribeLiveVerifyContent', 'ChangeLiveDomainResourceGroup', ], + 'type' => 'directory', + 'title' => 'Domain management', ], [ - 'id' => 387636, - 'title' => null, + 'children' => ['SetLiveStreamPreloadTasks', 'DescribeLiveStreamPreloadTasks', 'HotLiveRtcStream'], 'type' => 'directory', - 'children' => [ - 'SetLiveStreamPreloadTasks', - 'DescribeLiveStreamPreloadTasks', - 'HotLiveRtcStream', - ], + 'title' => 'Live stream preloading', ], [ - 'id' => 387640, - 'title' => null, + 'children' => ['AddLivePullStreamInfoConfig', 'DescribeLivePullStreamConfig', 'DeleteLivePullStreamInfoConfig', 'SetLiveLazyPullStreamInfoConfig', 'DescribeLiveLazyPullStreamConfig', 'DeleteLiveLazyPullStreamInfoConfig', 'UpdateLivePullStreamInfoConfig'], 'type' => 'directory', - 'children' => [ - 'AddLivePullStreamInfoConfig', - 'DescribeLivePullStreamConfig', - 'DeleteLivePullStreamInfoConfig', - 'SetLiveLazyPullStreamInfoConfig', - 'DescribeLiveLazyPullStreamConfig', - 'DeleteLiveLazyPullStreamInfoConfig', - 'UpdateLivePullStreamInfoConfig', - ], + 'title' => 'Live stream pulling', ], [ - 'id' => 387648, - 'title' => null, + 'children' => ['DescribeLiveStreamsBlockList', 'DescribeLiveStreamsControlHistory', 'DescribeLiveStreamBitRateData', 'DescribeLiveStreamsOnlineList', 'DescribeLiveStreamsPublishList', 'ForbidLiveStream', 'ResumeLiveStream', 'DescribeLiveDomainOnlineUserNum', 'DescribeLiveDomainFrameRateAndBitRateData', 'DescribeLiveDomainLimit', 'DescribeLiveStreamState'], 'type' => 'directory', - 'children' => [ - 'DescribeLiveStreamsBlockList', - 'DescribeLiveStreamsControlHistory', - 'DescribeLiveStreamBitRateData', - 'DescribeLiveStreamsOnlineList', - 'DescribeLiveStreamsPublishList', - 'ForbidLiveStream', - 'ResumeLiveStream', - 'DescribeLiveDomainOnlineUserNum', - 'DescribeLiveDomainFrameRateAndBitRateData', - 'DescribeLiveDomainLimit', - 'DescribeLiveStreamState', - ], + 'title' => 'Live stream management', ], [ - 'id' => 387660, - 'title' => null, + 'children' => ['DeleteLiveStreamMerge', 'AddLiveStreamMerge', 'DescribeLiveStreamMerge'], 'type' => 'directory', - 'children' => [ - 'DeleteLiveStreamMerge', - 'AddLiveStreamMerge', - 'DescribeLiveStreamMerge', - ], + 'title' => 'Primary/secondary stream merging', ], [ - 'id' => 387664, - 'title' => null, + 'children' => ['DeleteLiveDelayConfig', 'UpdateLiveDelayConfig', 'DescribeLiveDelayConfig', 'ListLiveDelayConfig', 'CreateLiveDelayConfig'], 'type' => 'directory', - 'children' => [ - 'DeleteLiveDelayConfig', - 'UpdateLiveDelayConfig', - 'DescribeLiveDelayConfig', - 'ListLiveDelayConfig', - 'CreateLiveDelayConfig', - ], + 'title' => 'Stream delay', ], [ - 'id' => 387670, - 'title' => null, + 'children' => ['SetLiveStreamsNotifyUrlConfig', 'DescribeLiveStreamsNotifyUrlConfig', 'DeleteLiveStreamsNotifyUrlConfig', 'DescribeLiveStreamsNotifyRecords'], 'type' => 'directory', - 'children' => [ - 'SetLiveStreamsNotifyUrlConfig', - 'DescribeLiveStreamsNotifyUrlConfig', - 'DeleteLiveStreamsNotifyUrlConfig', - 'DescribeLiveStreamsNotifyRecords', - ], + 'title' => 'Ingest callback', ], [ - 'id' => 387675, - 'title' => null, + 'children' => ['DeleteLiveStreamBlock', 'SetLiveStreamBlock', 'DescribeStreamLocationBlock'], 'type' => 'directory', - 'children' => [ - 'DeleteLiveStreamBlock', - 'SetLiveStreamBlock', - 'DescribeStreamLocationBlock', - ], + 'title' => 'Live stream security', ], [ - 'id' => 387679, - 'title' => null, + 'children' => ['DescribeLiveShiftConfigs', 'OpenLiveShift', 'CloseLiveShift'], 'type' => 'directory', - 'children' => [ - 'DescribeLiveShiftConfigs', - 'OpenLiveShift', - 'CloseLiveShift', - ], + 'title' => 'Time shifting', ], [ - 'id' => 387683, - 'title' => null, + 'children' => ['AddLiveStreamTranscode', 'AddCustomLiveStreamTranscode', 'AddRtsLiveStreamTranscode', 'UpdateCustomLiveStreamTranscode', 'UpdateLiveStreamTranscode', 'UpdateRtsLiveStreamTranscode', 'DeleteLiveStreamTranscode', 'DescribeLiveStreamTranscodeInfo', 'AddTrancodeSEI'], 'type' => 'directory', - 'children' => [ - 'AddLiveStreamTranscode', - 'AddCustomLiveStreamTranscode', - 'AddRtsLiveStreamTranscode', - 'UpdateCustomLiveStreamTranscode', - 'UpdateLiveStreamTranscode', - 'UpdateRtsLiveStreamTranscode', - 'DeleteLiveStreamTranscode', - 'DescribeLiveStreamTranscodeInfo', - 'AddTrancodeSEI', - ], + 'title' => 'Live stream transcoding', ], [ - 'id' => 387693, - 'title' => null, + 'children' => ['AddLiveRecordVodConfig', 'UpdateLiveRecordVodConfig', 'DeleteLiveRecordVodConfig', 'DescribeLiveRecordVodConfigs'], 'type' => 'directory', - 'children' => [ - 'AddLiveRecordVodConfig', - 'UpdateLiveRecordVodConfig', - 'DeleteLiveRecordVodConfig', - 'DescribeLiveRecordVodConfigs', - ], + 'title' => 'Live recording to VOD', ], [ - 'id' => 387698, - 'title' => null, + 'children' => ['AddLiveAppRecordConfig', 'RealTimeRecordCommand', 'UpdateLiveAppRecordConfig', 'DeleteLiveAppRecordConfig', 'DeleteLiveStreamRecordIndexFiles', 'DescribeLiveRecordConfig', 'DescribeLiveStreamRecordContent', 'CreateLiveStreamRecordIndexFiles', 'DescribeLiveStreamRecordIndexFile', 'DescribeLiveStreamRecordIndexFiles', 'AddLiveRecordNotifyConfig', 'DeleteLiveRecordNotifyConfig', 'DescribeLiveRecordNotifyConfig', 'UpdateLiveRecordNotifyConfig', 'DescribeLiveRecordNotifyRecords'], 'type' => 'directory', - 'children' => [ - 'AddLiveAppRecordConfig', - 'RealTimeRecordCommand', - 'UpdateLiveAppRecordConfig', - 'DeleteLiveAppRecordConfig', - 'DeleteLiveStreamRecordIndexFiles', - 'DescribeLiveRecordConfig', - 'DescribeLiveStreamRecordContent', - 'CreateLiveStreamRecordIndexFiles', - 'DescribeLiveStreamRecordIndexFile', - 'DescribeLiveStreamRecordIndexFiles', - 'AddLiveRecordNotifyConfig', - 'DeleteLiveRecordNotifyConfig', - 'DescribeLiveRecordNotifyConfig', - 'UpdateLiveRecordNotifyConfig', - 'DescribeLiveRecordNotifyRecords', - ], + 'title' => 'Live recording to OSS', ], [ - 'id' => 387714, - 'title' => null, + 'children' => ['AddLiveAppSnapshotConfig', 'DeleteLiveAppSnapshotConfig', 'DeleteSnapshotFiles', 'DescribeLiveSnapshotConfig', 'UpdateLiveAppSnapshotConfig', 'DescribeLiveStreamSnapshotInfo', 'DescribeLiveSnapshotNotifyConfig', 'DeleteLiveSnapshotNotifyConfig', 'AddLiveSnapshotNotifyConfig', 'UpdateLiveSnapshotNotifyConfig', 'SetSnapshotCallbackAuth', 'QuerySnapshotCallbackAuth', 'DeleteSnapshotCallbackAuth'], 'type' => 'directory', - 'children' => [ - 'AddLiveAppSnapshotConfig', - 'DeleteLiveAppSnapshotConfig', - 'DeleteSnapshotFiles', - 'DescribeLiveSnapshotConfig', - 'UpdateLiveAppSnapshotConfig', - 'DescribeLiveStreamSnapshotInfo', - 'DescribeLiveSnapshotNotifyConfig', - 'DeleteLiveSnapshotNotifyConfig', - 'AddLiveSnapshotNotifyConfig', - 'UpdateLiveSnapshotNotifyConfig', - 'SetSnapshotCallbackAuth', - 'QuerySnapshotCallbackAuth', - 'DeleteSnapshotCallbackAuth', - ], + 'title' => 'Live stream snapshot', ], [ - 'id' => 387728, - 'title' => null, + 'children' => ['AddLivePackageConfig', 'UpdateLivePackageConfig', 'DescribeLivePackageConfig', 'DeleteLivePackageConfig'], 'type' => 'directory', - 'children' => [ - 'AddLivePackageConfig', - 'UpdateLivePackageConfig', - 'DescribeLivePackageConfig', - 'DeleteLivePackageConfig', - ], + 'title' => 'Live stream packaging', ], [ - 'id' => 387733, - 'title' => null, + 'children' => ['AddLiveSnapshotDetectPornConfig', 'AddLiveDetectNotifyConfig', 'DescribeLiveSnapshotDetectPornConfig', 'DescribeLiveDetectNotifyConfig', 'UpdateLiveSnapshotDetectPornConfig', 'UpdateLiveDetectNotifyConfig', 'DeleteLiveSnapshotDetectPornConfig', 'DeleteLiveDetectNotifyConfig', 'AddLiveAudioAuditConfig', 'AddLiveAudioAuditNotifyConfig', 'DeleteLiveAudioAuditConfig', 'DeleteLiveAudioAuditNotifyConfig', 'UpdateLiveAudioAuditNotifyConfig', 'UpdateLiveAudioAuditConfig', 'DescribeLiveAudioAuditConfig', 'DescribeLiveAudioAuditNotifyConfig'], 'type' => 'directory', - 'children' => [ - 'AddLiveSnapshotDetectPornConfig', - 'AddLiveDetectNotifyConfig', - 'DescribeLiveSnapshotDetectPornConfig', - 'DescribeLiveDetectNotifyConfig', - 'UpdateLiveSnapshotDetectPornConfig', - 'UpdateLiveDetectNotifyConfig', - 'DeleteLiveSnapshotDetectPornConfig', - 'DeleteLiveDetectNotifyConfig', - 'AddLiveAudioAuditConfig', - 'AddLiveAudioAuditNotifyConfig', - 'DeleteLiveAudioAuditConfig', - 'DeleteLiveAudioAuditNotifyConfig', - 'UpdateLiveAudioAuditNotifyConfig', - 'UpdateLiveAudioAuditConfig', - 'DescribeLiveAudioAuditConfig', - 'DescribeLiveAudioAuditNotifyConfig', - ], + 'title' => 'Live stream content moderation', ], [ - 'id' => 387750, - 'title' => null, + 'children' => ['CreateLivePrivateLine', 'DeleteLivePrivateLine', 'DescribeLivePrivateLineAreas', 'DescribeLivePrivateLineAvailGA'], 'type' => 'directory', - 'children' => [ - 'CreateLivePrivateLine', - 'DeleteLivePrivateLine', - 'DescribeLivePrivateLineAreas', - 'DescribeLivePrivateLineAvailGA', - ], + 'title' => 'Global acceleration', ], [ - 'id' => 387755, - 'title' => null, + 'children' => ['DescribeLiveStreamDelayConfig', 'SetLiveStreamDelayConfig'], 'type' => 'directory', - 'children' => [ - 'DescribeLiveStreamDelayConfig', - 'SetLiveStreamDelayConfig', - ], + 'title' => 'Live streaming latency', ], [ - 'id' => 387758, - 'title' => null, - 'type' => 'directory', 'children' => [ - 'DescribeLiveDomainBpsData', - 'DescribeLiveDomainTrafficData', - 'DescribeLiveStreamTranscodeMetricData', - 'DescribeLiveCenterStreamRateData', - 'DescribeLiveDomainBpsDataByLayer', - 'DescribeLiveDomainPushBpsData', - 'DescribeLiveDomainPushTrafficData', - 'DescribeLiveStreamPushMetricDetailData', - 'DescribeLiveDomainPublishErrorCode', - 'DescribeLiveUpVideoAudioInfo', - 'DescribeLiveDomainRealTimeBpsData', - 'DescribeLiveDomainRealTimeTrafficData', - 'DescribeLiveDomainRealTimeHttpCodeData', - 'DescribeLiveStreamHistoryUserNum', - 'DescribeLiveStreamCount', - 'DescribeLiveStreamTranscodeStreamNum', - 'DescribeLiveDomainPvUvData', - 'DescribeLiveTopDomainsByFlow', - 'DescribeLiveStreamsTotalCount', - 'DescribeLiveStreamMetricDetailData', - 'DescribeLiveStreamDetailFrameRateAndBitRateData', - 'DescribeLiveUserStreamMetricData', + 'DescribeLiveDomainBpsData', 'DescribeLiveDomainTrafficData', 'DescribeLiveStreamTranscodeMetricData', 'DescribeLiveCenterStreamRateData', 'DescribeLiveDomainBpsDataByLayer', 'DescribeLiveDomainPushBpsData', 'DescribeLiveDomainPushTrafficData', 'DescribeLiveStreamPushMetricDetailData', 'DescribeLiveDomainPublishErrorCode', 'DescribeLiveUpVideoAudioInfo', 'DescribeLiveDomainRealTimeBpsData', 'DescribeLiveDomainRealTimeTrafficData', 'DescribeLiveDomainRealTimeHttpCodeData', 'DescribeLiveStreamHistoryUserNum', 'DescribeLiveStreamCount', 'DescribeLiveStreamTranscodeStreamNum', 'DescribeLiveDomainPvUvData', 'DescribeLiveTopDomainsByFlow', 'DescribeLiveStreamsTotalCount', 'DescribeLiveStreamMetricDetailData', + 'DescribeLiveStreamDetailFrameRateAndBitRateData', 'DescribeLiveUserStreamMetricData', ], + 'type' => 'directory', + 'title' => 'Monitoring and statistics', ], [ - 'id' => 387781, - 'title' => null, + 'children' => ['DescribeLiveDomainRecordUsageData', 'DescribeLiveDomainSnapshotData', 'DescribeLiveDetectPornData', 'DescribeDomainUsageData', 'DescribeLivePushProxyUsageData', 'DescribeLiveRealtimeDeliveryAcc', 'DescribeLiveDomainTimeShiftData', 'DescribeLiveDomainStreamTranscodeData', 'DescribeLiveProducerUsageData', 'DescribeLiveDomainMonitoringUsageData', 'DescribeLiveDelayedStreamingUsage', 'DescribeLiveGrtnDuration', 'DescribeLiveDrmUsageData', 'DescribeLiveRtcRecordUsageData'], 'type' => 'directory', - 'children' => [ - 'DescribeLiveDomainRecordUsageData', - 'DescribeLiveDomainSnapshotData', - 'DescribeLiveDetectPornData', - 'DescribeDomainUsageData', - 'DescribeLivePushProxyUsageData', - 'DescribeLiveRealtimeDeliveryAcc', - 'DescribeLiveDomainTimeShiftData', - 'DescribeLiveDomainStreamTranscodeData', - 'DescribeLiveProducerUsageData', - 'DescribeLiveDomainMonitoringUsageData', - 'DescribeLiveDelayedStreamingUsage', - 'DescribeLiveGrtnDuration', - 'DescribeMeterLiveBypassDuration', - 'DescribeLiveDrmUsageData', - 'DescribeLiveRtcRecordUsageData', - ], + 'title' => 'Usage query', ], [ - 'id' => 387797, - 'title' => null, - 'type' => 'directory', 'children' => [ [ - 'id' => 387798, - 'title' => null, + 'children' => ['CreateCaster', 'SetCasterConfig', 'DescribeCasterConfig', 'DescribeCasters', 'DescribeCasterStreamUrl', 'CopyCaster', 'StartCaster', 'StopCaster', 'DeleteCaster', 'RestartCaster', 'UpdateCasterResourceGroup'], 'type' => 'directory', - 'children' => [ - 'CreateCaster', - 'SetCasterConfig', - 'DescribeCasterConfig', - 'DescribeCasters', - 'DescribeCasterStreamUrl', - 'CopyCaster', - 'StartCaster', - 'StopCaster', - 'DeleteCaster', - 'RestartCaster', - 'UpdateCasterResourceGroup', - ], - ], - [ - 'id' => 387810, - 'title' => null, + 'title' => 'Production studio management', + ], + [ + 'children' => ['AddCasterVideoResource', 'DeleteCasterVideoResource', 'ModifyCasterVideoResource', 'DescribeCasterVideoResources'], 'type' => 'directory', - 'children' => [ - 'AddCasterVideoResource', - 'DeleteCasterVideoResource', - 'ModifyCasterVideoResource', - 'DescribeCasterVideoResources', - ], + 'title' => 'Input source media management', ], [ - 'id' => 387815, - 'title' => null, + 'children' => ['AddCasterLayout', 'DeleteCasterLayout', 'ModifyCasterLayout', 'DescribeCasterLayouts'], 'type' => 'directory', - 'children' => [ - 'AddCasterLayout', - 'DeleteCasterLayout', - 'ModifyCasterLayout', - 'DescribeCasterLayouts', - ], + 'title' => 'Layout management', ], [ - 'id' => 387820, - 'title' => null, + 'children' => ['AddCasterComponent', 'DeleteCasterComponent', 'ModifyCasterComponent', 'DescribeCasterComponents'], 'type' => 'directory', - 'children' => [ - 'AddCasterComponent', - 'DeleteCasterComponent', - 'ModifyCasterComponent', - 'DescribeCasterComponents', - ], + 'title' => 'Component management', ], [ - 'id' => 387825, - 'title' => null, + 'children' => ['CopyCasterSceneConfig', 'DeleteCasterSceneConfig', 'UpdateCasterSceneConfig', 'SetCasterSceneConfig', 'DescribeCasterScenes', 'UpdateCasterSceneAudio', 'DescribeCasterSceneAudio', 'StartCasterScene', 'StopCasterScene'], 'type' => 'directory', - 'children' => [ - 'CopyCasterSceneConfig', - 'DeleteCasterSceneConfig', - 'UpdateCasterSceneConfig', - 'SetCasterSceneConfig', - 'DescribeCasterScenes', - 'UpdateCasterSceneAudio', - 'DescribeCasterSceneAudio', - 'StartCasterScene', - 'StopCasterScene', - ], + 'title' => 'Scene and audio management', ], [ - 'id' => 387835, - 'title' => null, + 'children' => ['SetCasterChannel', 'DescribeCasterChannels'], 'type' => 'directory', - 'children' => [ - 'SetCasterChannel', - 'DescribeCasterChannels', - ], + 'title' => 'Channel management', ], [ - 'id' => 387838, - 'title' => null, + 'children' => ['EffectCasterUrgent', 'EffectCasterVideoResource'], 'type' => 'directory', - 'children' => [ - 'EffectCasterUrgent', - 'EffectCasterVideoResource', - ], + 'title' => 'Standby video management', ], [ - 'id' => 387841, - 'title' => null, + 'children' => ['AddShowIntoShowList', 'RemoveShowFromShowList', 'ModifyShowList', 'DescribeShowList', 'PlayChoosenShow', 'InitializeAutoShowListTask', 'DescribeAutoShowListTasks', 'EditShowAndReplace', 'GetEditingJobInfo', 'SetShowListBackground'], 'type' => 'directory', - 'children' => [ - 'AddShowIntoShowList', - 'RemoveShowFromShowList', - 'ModifyShowList', - 'DescribeShowList', - 'PlayChoosenShow', - 'InitializeAutoShowListTask', - 'DescribeAutoShowListTasks', - 'EditShowAndReplace', - 'GetEditingJobInfo', - 'SetShowListBackground', - ], - ], - [ - 'id' => 387852, - 'title' => null, + 'title' => 'New playlist mode production studio management', + ], + [ + 'children' => ['AddStudioLayout', 'DeleteStudioLayout', 'ModifyStudioLayout', 'DescribeStudioLayouts'], 'type' => 'directory', - 'children' => [ - 'AddStudioLayout', - 'DeleteStudioLayout', - 'ModifyStudioLayout', - 'DescribeStudioLayouts', - ], + 'title' => 'Virtual studio management', ], [ - 'id' => 387857, - 'title' => null, + 'children' => ['AddCasterEpisode', 'DeleteCasterEpisode', 'ModifyCasterEpisode', 'AddCasterEpisodeGroup', 'DeleteCasterEpisodeGroup', 'AddCasterEpisodeGroupContent', 'AddCasterProgram', 'DescribeCasterProgram', 'ModifyCasterProgram', 'DeleteCasterProgram', 'AddPlaylistItems', 'DeletePlaylistItems', 'ListPlaylistItems', 'EditPlaylist', 'DeletePlaylist', 'ListPlaylist', 'StartPlaylist', 'StopPlaylist'], 'type' => 'directory', - 'children' => [ - 'AddCasterEpisode', - 'DeleteCasterEpisode', - 'ModifyCasterEpisode', - 'AddCasterEpisodeGroup', - 'DeleteCasterEpisodeGroup', - 'AddCasterEpisodeGroupContent', - 'AddCasterProgram', - 'DescribeCasterProgram', - 'ModifyCasterProgram', - 'DeleteCasterProgram', - 'AddPlaylistItems', - 'DeletePlaylistItems', - 'ListPlaylistItems', - 'EditPlaylist', - 'DeletePlaylist', - 'ListPlaylist', - 'StartPlaylist', - 'StopPlaylist', - ], + 'title' => '(Legacy) playlist mode production studio', ], ], + 'type' => 'directory', + 'title' => 'Cloud production studio', ], [ - 'id' => 387876, - 'title' => null, + 'children' => ['CreateMixStream', 'UpdateMixStream', 'DescribeMixStreamList', 'DeleteMixStream', 'GetAllCustomTemplates'], 'type' => 'directory', - 'children' => [ - 'CreateMixStream', - 'UpdateMixStream', - 'DescribeMixStreamList', - 'DeleteMixStream', - 'CreateCustomTemplate', - 'DeleteCustomTemplate', - 'GetCustomTemplate', - 'GetAllCustomTemplates', - ], + 'title' => 'Cloud stream mixing', ], [ - 'id' => 387885, - 'title' => null, + 'children' => ['AddLiveStreamWatermark', 'DeleteLiveStreamWatermark', 'UpdateLiveStreamWatermark', 'DynamicUpdateWaterMarkStreamRule', 'DescribeLiveStreamWatermarks', 'AddLiveStreamWatermarkRule', 'DeleteLiveStreamWatermarkRule', 'UpdateLiveStreamWatermarkRule', 'DescribeLiveStreamWatermarkRules'], 'type' => 'directory', - 'children' => [ - 'AddLiveStreamWatermark', - 'DeleteLiveStreamWatermark', - 'UpdateLiveStreamWatermark', - 'DynamicUpdateWaterMarkStreamRule', - 'DescribeLiveStreamWatermarks', - 'AddLiveStreamWatermarkRule', - 'DeleteLiveStreamWatermarkRule', - 'UpdateLiveStreamWatermarkRule', - 'DescribeLiveStreamWatermarkRules', - ], + 'title' => 'Live stream watermark', ], [ - 'id' => 387895, - 'title' => null, + 'children' => ['ListEdgeTranscodeTemplate', 'GetEdgeTranscodeTemplate', 'CreateEdgeTranscodeJob', 'DeleteEdgeTranscodeJob', 'ListEdgeTranscodeJob', 'GetEdgeTranscodeJob', 'UpdateEdgeTranscodeJob', 'StartEdgeTranscodeJob', 'StopEdgeTranscodeJob'], 'type' => 'directory', - 'children' => [ - 'ListEdgeTranscodeTemplate', - 'GetEdgeTranscodeTemplate', - 'CreateEdgeTranscodeJob', - 'DeleteEdgeTranscodeJob', - 'ListEdgeTranscodeJob', - 'GetEdgeTranscodeJob', - 'UpdateEdgeTranscodeJob', - 'StartEdgeTranscodeJob', - 'StopEdgeTranscodeJob', - ], + 'title' => 'Edge transcoding', ], [ - 'id' => 387905, - 'title' => null, + 'children' => ['EnableLiveRealtimeLogDelivery', 'DisableLiveRealtimeLogDelivery', 'ModifyLiveRealtimeLogDelivery', 'CreateLiveRealTimeLogDelivery', 'DeleteLiveRealtimeLogDelivery', 'DescribeLiveDomainRealtimeLogDelivery', 'ListLiveRealtimeLogDelivery', 'ListLiveRealtimeLogDeliveryDomains', 'ListLiveRealtimeLogDeliveryInfos', 'DescribeLivePushProxyLog', 'DeleteLiveRealTimeLogLogstore', 'DescribeLiveDomainLog'], 'type' => 'directory', - 'children' => [ - 'EnableLiveRealtimeLogDelivery', - 'DisableLiveRealtimeLogDelivery', - 'ModifyLiveRealtimeLogDelivery', - 'CreateLiveRealTimeLogDelivery', - 'DeleteLiveRealtimeLogDelivery', - 'DescribeLiveDomainRealtimeLogDelivery', - 'ListLiveRealtimeLogDelivery', - 'ListLiveRealtimeLogDeliveryDomains', - 'ListLiveRealtimeLogDeliveryInfos', - 'DescribeLivePushProxyLog', - 'DeleteLiveRealTimeLogLogstore', - 'DescribeLiveDomainLog', - ], + 'title' => 'Live stream logs', ], [ - 'id' => 387918, - 'title' => null, + 'children' => ['CreateLiveStreamMonitor', 'UpdateLiveStreamMonitor', 'DescribeLiveStreamMonitorList', 'StartLiveStreamMonitor', 'StopLiveStreamMonitor', 'DeleteLiveStreamMonitor'], 'type' => 'directory', - 'children' => [ - 'CreateLiveStreamMonitor', - 'UpdateLiveStreamMonitor', - 'DescribeLiveStreamMonitorList', - 'StartLiveStreamMonitor', - 'StopLiveStreamMonitor', - 'DeleteLiveStreamMonitor', - ], + 'title' => 'Live stream monitoring', ], [ - 'id' => 387925, - 'title' => null, - 'type' => 'directory', 'children' => [ - 'GetMessageToken', - 'CreateMessageApp', - 'UpdateMessageApp', - 'ListMessageApp', - 'GetMessageApp', - 'QueryMessageApp', - 'DeleteMessageApp', - 'CreateMessageGroup', - 'UpdateMessageGroup', - 'ListMessageGroupUser', - 'ListMessageGroup', - 'GetMessageGroup', - 'JoinMessageGroup', - 'MuteAllGroupUser', - 'MuteGroupUser', - 'CancelMuteGroupUser', - 'CancelMuteAllGroupUser', - 'LeaveMessageGroup', - 'SendLike', - 'SendMessageToGroup', - 'SendMessageToGroupUsers', - 'ListMessage', - 'ListMessageGroupUserById', - 'BatchGetOnlineUsers', - 'ListMuteGroupUser', + 'GetMessageToken', 'CreateMessageApp', 'UpdateMessageApp', 'ListMessageApp', 'GetMessageApp', 'QueryMessageApp', 'DeleteMessageApp', 'CreateMessageGroup', 'UpdateMessageGroup', 'ListMessageGroupUser', 'ListMessageGroup', 'GetMessageGroup', 'JoinMessageGroup', 'MuteAllGroupUser', 'MuteGroupUser', 'CancelMuteGroupUser', 'CancelMuteAllGroupUser', 'LeaveMessageGroup', 'SendLike', 'SendMessageToGroup', + 'SendMessageToGroupUsers', 'ListMessage', 'ListMessageGroupUserById', 'BatchGetOnlineUsers', 'ListMuteGroupUser', ], + 'type' => 'directory', + 'title' => 'Interactive messaging server API', ], [ - 'id' => 387951, - 'title' => null, + 'children' => ['CreateLiveMessageApp', 'ModifyLiveMessageGroup', 'ModifyLiveMessageGroupBand', 'BanLiveMessageGroup', 'AddLiveMessageGroupBand', 'RemoveLiveMessageGroupBand', 'SendLiveMessageGroup'], 'type' => 'directory', - 'children' => [ - 'CreateLiveMessageApp', - 'CreateLiveMessageGroup', - 'DescribeLiveMessageGroup', - 'ModifyLiveMessageGroup', - 'DeleteLiveMessageGroup', - 'ListLiveMessageGroups', - 'ListLiveMessageGroupByPage', - 'ModifyLiveMessageGroupBand', - 'DescribeLiveMessageGroupBand', - 'CheckLiveMessageUsersOnline', - 'CheckLiveMessageUsersInGroup', - 'ListLiveMessageGroupUsers', - 'ListLiveMessageGroupMessages', - 'UnbanLiveMessageGroup', - 'RecoverLiveMessageDeletedGroup', - 'BanLiveMessageGroup', - 'AddLiveMessageGroupBand', - 'RemoveLiveMessageGroupBand', - 'DeleteLiveMessageGroupMessage', - 'DeleteLiveMessageUserMessage', - 'SendLiveMessageGroup', - 'SendLiveMessageUser', - 'ListLiveMessageApps', - 'DescribeLiveMessageApp', - 'ModifyLiveMessageAppDisable', - 'ModifyLiveMessageAppAudit', - 'ModifyLiveMessageAppCallback', - 'KickLiveMessageGroupUser', - 'ModifyLiveMessageUserInfo', - ], + 'title' => 'Interactive messaging (new)', ], [ - 'id' => 387981, - 'title' => null, - 'type' => 'directory', 'children' => [ [ - 'id' => 387982, - 'title' => null, + 'children' => ['StartRtcCloudRecording', 'UpdateRtcCloudRecording', 'StopRtcCloudRecording', 'DescribeRtcCloudRecordingFiles'], 'type' => 'directory', - 'children' => [ - 'StartRtcCloudRecording', - 'UpdateRtcCloudRecording', - 'StopRtcCloudRecording', - 'DescribeRtcCloudRecordingFiles', - ], + 'title' => 'Cloud recording', ], [ - 'id' => 387987, - 'title' => null, + 'children' => ['CreateRTCWhipStreamAddress', 'CreateRoomRealTimeStreamAddress', 'ListRTCLiveRooms'], 'type' => 'directory', - 'children' => [ - 'DescribeChannelParticipants', - 'DescribeChannelUsers', - 'RemoveTerminals', - 'CreateRTCWhipStreamAddress', - 'CreateRoomRealTimeStreamAddress', - 'DeleteChannel', - 'ListRTCLiveRooms', - ], + 'title' => 'Channel management', ], [ - 'id' => 387995, - 'title' => null, + 'children' => ['StartLiveMPUTask', 'UpdateLiveMPUTask', 'StopLiveMPUTask', 'ListRtcMPUTaskDetail', 'SetLiveMpuTaskSei'], 'type' => 'directory', - 'children' => [ - 'StartLiveMPUTask', - 'UpdateLiveMPUTask', - 'StopLiveMPUTask', - 'ListRtcMPUTaskDetail', - 'SetLiveMpuTaskSei', - ], + 'title' => 'Relay to CDN', ], [ - 'id' => 388001, - 'title' => null, + 'children' => ['CreateEventSub', 'UpdateEventSub', 'CreateRtcMPUEventSub', 'UpdateRtcMPUEventSub', 'DeleteRtcMPUEventSub', 'DescribeRtcMPUEventSub', 'ListRtcMPUEventSubRecord'], 'type' => 'directory', - 'children' => [ - 'CreateEventSub', - 'ListEventSub', - 'ListEventSubEvent', - 'UpdateEventSub', - 'DeleteEventSub', - 'CreateRtcMPUEventSub', - 'UpdateRtcMPUEventSub', - 'DeleteRtcMPUEventSub', - 'DescribeRtcMPUEventSub', - 'ListRtcMPUEventSubRecord', - ], - ], - [ - 'id' => 388012, - 'title' => null, - 'type' => 'directory', - 'children' => [ - 'DescribeLiveInteractionMetricData', - ], + 'title' => 'Event callback', ], [ - 'id' => 388014, - 'title' => null, + 'children' => ['DescribeLiveInteractionMetricData'], 'type' => 'directory', - 'children' => [ - 'CreateRtcAsrTask', - 'QueryRtcAsrTasks', - 'StopRtcAsrTask', - 'DeleteRtcAsrTask', - ], + 'title' => 'Quality data', ], ], + 'type' => 'directory', + 'title' => 'ApsaraVideo real-time communication', ], [ - 'id' => 388019, - 'title' => null, + 'children' => ['DeleteLiveAIProduceRules', 'DescribeLiveAIProduceRules', 'UpdateLiveAIProduceRules', 'AddLiveAIProduceRules', 'AddLiveAISubtitle', 'DeleteLiveAISubtitle', 'UpdateLiveAISubtitle', 'DescribeLiveAISubtitle'], 'type' => 'directory', - 'children' => [ - 'DeleteLiveAIProduceRules', - 'DescribeLiveAIProduceRules', - 'UpdateLiveAIProduceRules', - 'AddLiveAIProduceRules', - 'AddLiveAISubtitle', - 'DeleteLiveAISubtitle', - 'UpdateLiveAISubtitle', - 'DescribeLiveAISubtitle', - ], + 'title' => 'Real-time subtitles', ], [ - 'id' => 388028, - 'title' => null, + 'children' => ['CreateLiveAIStudio', 'DeleteLiveAIStudio', 'ModifyLiveAIStudio', 'DescribeLiveAIStudio'], 'type' => 'directory', - 'children' => [ - 'CreateLiveAIStudio', - 'DeleteLiveAIStudio', - 'ModifyLiveAIStudio', - 'DescribeLiveAIStudio', - ], + 'title' => 'Virtual background', ], [ - 'id' => 388033, - 'title' => null, + 'children' => ['CreateLivePullToPush', 'UpdateLivePullToPush', 'DeleteLivePullToPush', 'DescribeLivePullToPush', 'DescribeLivePullToPushList', 'StopLivePullToPush', 'RestartLivePullToPush'], 'type' => 'directory', - 'children' => [ - 'CreateLivePullToPush', - 'UpdateLivePullToPush', - 'DeleteLivePullToPush', - 'DescribeLivePullToPush', - 'DescribeLivePullToPushList', - 'StopLivePullToPush', - 'RestartLivePullToPush', - ], + 'title' => 'Stream pulling and relaying', ], [ - 'id' => 388041, - 'title' => null, + 'children' => ['SetLiveDomainMultiStreamOptimalMode', 'SetLiveDomainMultiStreamMaster', 'DescribeLiveDomainMultiStreamConfig', 'QueryLiveDomainMultiStreamList'], 'type' => 'directory', - 'children' => [ - 'SetLiveDomainMultiStreamConfig', - 'SetLiveDomainMultiStreamOptimalMode', - 'SetLiveDomainMultiStreamMaster', - 'DescribeLiveDomainMultiStreamConfig', - 'QueryLiveDomainMultiStreamList', - ], + 'title' => 'Dual-stream disaster recovery', ], [ - 'id' => 388047, - 'title' => null, + 'children' => ['DescribeLiveDomainStagingConfig', 'PublishLiveStagingConfigToProduction', 'RollbackLiveStagingConfig', 'SetLiveDomainStagingConfig', 'DeleteLiveSpecificStagingConfig'], 'type' => 'directory', - 'children' => [ - 'DescribeLiveDomainStagingConfig', - 'PublishLiveStagingConfigToProduction', - 'RollbackLiveStagingConfig', - 'SetLiveDomainStagingConfig', - 'DeleteLiveSpecificStagingConfig', - ], + 'title' => 'Edge scripting', ], [ - 'id' => 388053, - 'title' => null, + 'children' => ['DescribeLiveIpInfo', 'DescribeLiveStreamAuthChecking'], 'type' => 'directory', - 'children' => [ - 'DescribeLiveIpInfo', - 'DescribeLiveStreamAuthChecking', - ], + 'title' => 'Toolbox', ], [ - 'id' => 388056, - 'title' => null, + 'children' => ['TagLiveResources', 'UnTagLiveResources', 'ListLiveTagResources', 'DescribeLiveTagResources'], 'type' => 'directory', - 'children' => [ - 'TagLiveResources', - 'UnTagLiveResources', - 'ListLiveTagResources', - 'DescribeLiveTagResources', - ], + 'title' => 'Tag management', ], [ - 'id' => 388061, - 'title' => null, - 'type' => 'directory', 'children' => [ [ - 'id' => 388062, - 'title' => null, + 'children' => ['AddLiveCenterTransfer', 'UpdateLiveCenterTransfer', 'DescribeLiveCenterTransfer', 'DeleteLiveCenterTransfer'], 'type' => 'directory', - 'children' => [ - 'AddLiveCenterTransfer', - 'UpdateLiveCenterTransfer', - 'DescribeLiveCenterTransfer', - 'DeleteLiveCenterTransfer', - ], + 'title' => 'Live center relay', ], [ - 'id' => 388067, - 'title' => null, + 'children' => ['CreateRtcAsrTask', 'QueryRtcAsrTasks', 'StopRtcAsrTask', 'DeleteRtcAsrTask'], 'type' => 'directory', - 'children' => [ - 'DescribeLiveEdgeTransfer', - 'DeleteLiveEdgeTransfer', - 'SetLiveEdgeTransfer', - ], + 'title' => 'Real-time speech-to-text/translation', + ], + [ + 'children' => ['DescribeLiveEdgeTransfer', 'DeleteLiveEdgeTransfer', 'SetLiveEdgeTransfer'], + 'type' => 'directory', + 'title' => 'Edge relay', ], 'DescribeLiveUserBillPrediction', 'DescribeRTSNativeSDKFirstFrameCost', @@ -805,168 +296,213 @@ 'DescribeRtcCloudTranscode', 'StartRtcCloudTranscode', 'StopRtcCloudTranscode', + 'CheckLiveMessageUsersInGroup', + 'CheckLiveMessageUsersOnline', + 'CreateCustomTemplate', + 'CreateLiveMessageGroup', + 'DeleteChannel', + 'DeleteCustomTemplate', + 'DeleteEventSub', + 'DeleteLiveMessageGroup', + 'DeleteLiveMessageGroupMessage', + 'DeleteLiveMessageUserMessage', + 'DescribeChannelParticipants', + 'DescribeChannelUsers', + 'DescribeLiveMessageApp', + 'DescribeLiveMessageGroup', + 'DescribeLiveMessageGroupBand', + 'DescribeLiveUserDomains', + 'DescribeMeterLiveBypassDuration', + 'GetCustomTemplate', + 'KickLiveMessageGroupUser', + 'ListEventSub', + 'ListEventSubEvent', + 'ListLiveMessageApps', + 'ListLiveMessageGroupByPage', + 'ListLiveMessageGroupMessages', + 'ListLiveMessageGroupUsers', + 'ListLiveMessageGroups', + 'ModifyLiveMessageAppAudit', + 'ModifyLiveMessageAppCallback', + 'ModifyLiveMessageAppDisable', + 'ModifyLiveMessageUserInfo', + 'RecoverLiveMessageDeletedGroup', + 'RemoveTerminals', + 'SendLiveMessageUser', + 'SetLiveDomainMultiStreamConfig', + 'UnbanLiveMessageGroup', ], + 'type' => 'directory', + 'title' => 'Others', ], ], 'components' => [ 'schemas' => [], ], 'apis' => [ - 'AddLiveDomain' => [ - 'summary' => 'Adds a domain name to ApsaraVideo Live. This operation allows you to add only one domain name at a time.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'AddCasterComponent' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeCode' => '106844', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'LiveDomainType', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the domain name. Valid values:'."\n" - ."\n" - .'* **liveVideo**: streaming domain. This value is required if you set the DomainName parameter to a streaming domain.'."\n" - .'* **liveEdge**: ingest domain. This value is required if you set the DomainName parameter to an ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => 'liveVideo', - 'enum' => [ - 'liveVideo', - 'liveEdge', - 'liveGrtnPub', - 'liveGrtnSub', - ], - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain or streaming domain that you want to add. Wildcard domain names that start with a period (.) are supported.'."\n", - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => 'example.aliyundoc.com', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create the production studio by calling the [CreateCaster](~~2848009~~) operation, find the ID in the CasterId parameter of the response.'."\n" + ."\n" + .'- If you create the production studio in the LIVE console, go to the **LIVE Console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'Region', + 'name' => 'ComponentName', 'in' => 'query', - 'schema' => [ - 'description' => 'The region in which the domain name resides. Valid values:'."\n" - ."\n" - .'* **cn-beijing**: China (Beijing)'."\n" - .'* **cn-shanghai**: China (Shanghai)'."\n" - .'* **cn-shenzhen**: China (Shenzhen)'."\n" - .'* **cn-qingdao**: China (Qingdao)'."\n" - .'* **ap-southeast-1**: Singapore'."\n" - .'* **eu-central-1**: Germany (Frankfurt)'."\n" - .'* **ap-northeast-1**: Japan (Tokyo)'."\n" - .'* **ap-southeast-5**: Indonesia (Jakarta)'."\n" - ."\n" - .'> Make sure that the settings of the Region and Scope parameters do not conflict with each other.'."\n", - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => 'cn-beijing', - ], + 'schema' => ['description' => 'The name of the component. The default value is the component ID.', 'type' => 'string', 'required' => false, 'example' => 'text01', 'title' => ''], ], [ - 'name' => 'CheckUrl', + 'name' => 'LocationId', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL that is used for health checks.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://demo.aliyundoc.com/status.html', - ], + 'schema' => ['description' => 'Specifies the position of the component. Each position can hold only one component. The format must be RC01 to RC99.'."\n" + ."\n" + .'> If the component type is caption, this parameter specifies the location of the referenced video source.', 'type' => 'string', 'required' => true, 'example' => 'RC01', 'title' => ''], ], [ - 'name' => 'Scope', + 'name' => 'ComponentType', 'in' => 'query', - 'schema' => [ - 'description' => 'The edge group. This parameter is applicable to users of level 3 or higher in mainland China and users outside mainland China. Valid values:'."\n" - ."\n" - .'* **domestic**: mainland China. This is the default value.'."\n" - .'* **overseas**: outside mainland China.'."\n" - .'* **global**: regions in and outside mainland China.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'domestic', - ], + 'schema' => ['description' => 'The type of component. Valid values:'."\n" + ."\n" + .'- **text**: A text component. If you set this parameter to text, you must also set the TextLayerContent parameter.'."\n" + ."\n" + .'- **image**: An image component. If you set this parameter to image, you must also set the ImageLayerContent parameter.'."\n" + ."\n" + .'- **caption**: A caption component. If you set this parameter to caption, you must also set the CaptionLayerContent parameter.', 'type' => 'string', 'required' => true, 'example' => 'text', 'title' => ''], ], [ - 'name' => 'TopLevelDomain', + 'name' => 'Effect', 'in' => 'query', - 'schema' => [ - 'description' => 'The top-level domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'learn.aliyundoc.com', - ], + 'schema' => ['description' => 'The display effect of the component. Valid values:'."\n" + ."\n" + .'- **none** (default): No effect.'."\n" + ."\n" + .'- **animateH**: Scrolls horizontally.'."\n" + ."\n" + .'- **animateV**: Scrolls vertically.', 'type' => 'string', 'required' => false, 'example' => 'animateH', 'title' => ''], ], [ - 'name' => 'ResourceGroupId', + 'name' => 'ComponentLayer', 'in' => 'query', - 'allowEmptyValue' => true, - 'schema' => [ - 'title' => '', - 'description' => 'The ID of the resource group. For more information about resource groups, see [Resource groups](~~2381067~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rg-aekzw******', - ], + 'schema' => ['description' => 'The size, layout, and other information about the component layer. The elements are described as follows:'."\n" + ."\n" + .'- **HeightNormalized**: The normalized height.'."\n" + ."\n" + .'- **WidthNormalized**: The normalized width.'."\n" + ."\n" + .'- **PositionNormalized**: The normalized position of the layer element.'."\n" + ."\n" + .'- **PositionRefer**: The reference coordinates for the element\'s position.'."\n" + ."\n" + .'The value is a JSON-formatted string. Parameter names must be in upper-camel case.', 'type' => 'string', 'required' => true, 'example' => '{"HeightNormalized":"1","PositionRefer":"topRight","WidthNormalized":"0","PositionNormalized":["0.1","0.2"]}', 'title' => ''], ], [ - 'name' => 'Tag', + 'name' => 'LayerOrder', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The key of the tag.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TestKey', - ], - 'Value' => [ - 'description' => 'The value of the tag.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TestValue'."\n", - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 21, - ], + 'schema' => ['description' => 'The layer order of the component.'."\n" + ."\n" + .'- cover: The component is in the foreground.'."\n" + ."\n" + .'- background: The component is in the background.', 'type' => 'string', 'required' => false, 'example' => 'cover', 'title' => ''], + ], + [ + 'name' => 'TextLayerContent', + 'in' => 'query', + 'schema' => ['description' => 'The properties of the layer element. The properties are described as follows:'."\n" + .'>This parameter is required only when ComponentType is set to text.>'."\n" + ."\n" + .'- **SizeNormalized**: The normalized font size. This value is calculated as font size / output height. The value must be in the `[0,1]` range. If the font size calculated from the normalized value is greater than 1024, the font size is set to 1024.'."\n" + ."\n" + .'- **BorderWidthNormalized**: The normalized width of the text border. This value is calculated based on the font size: BorderWidth / FontSize. The value must be in the `[0,1]` range. If the width calculated from the normalized value is greater than 16, the width is set to 16. The default value is 0.'."\n" + ."\n" + .'- **FontName**: The font name. For valid values, see **Production studio fonts**. The default font is KaiTi.'."\n" + ."\n" + .'- **BorderColor**: The color of the text border. The value must be a hexadecimal color code that ranges from 0x000000 to 0xffffff. The default value is an empty string (""), which indicates that no border color is set.'."\n" + ."\n" + .'- **Text**: The text content. The default value is an empty string ("").'."\n" + ."\n" + .'- **Color**: The text color. The default value is 0xff0000, which represents red.'."\n" + ."\n" + .'The value must be a JSON-formatted string. Parameter names must be in upper-camel case.', 'type' => 'string', 'required' => false, 'example' => '{"BorderWidthNormalized":"1","SizeNormalized":"0.2","Color":"0x000000","FontName":"KaiTi","BorderColor":"0x000000","Text":"hello world!"}', 'title' => ''], + ], + [ + 'name' => 'ImageLayerContent', + 'in' => 'query', + 'schema' => ['description' => 'The properties of the layer element. The properties are described as follows:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required when ComponentType is set to image.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'MaterialId: The ID of the media asset. The name that you specify when you upload a media asset is used as the ID of the media asset.'."\n" + ."\n" + .'The value must be a JSON-formatted string. Parameter names must be in upper-camel case.', 'type' => 'string', 'required' => false, 'example' => '{"MaterialId":"6cf724c6ebfd4a59b5b3cec6f10d****"}', 'title' => ''], + ], + [ + 'name' => 'CaptionLayerContent', + 'in' => 'query', + 'schema' => ['description' => 'The properties of the layer element. The properties are described as follows:'."\n" + .'>This parameter is required when ComponentType is set to caption.>'."\n" + ."\n" + .'- **SizeNormalized**: The normalized font size. This value is calculated as font size / output height. The value must be in the `[0,1]` range and accurate to two decimal places. If the font size calculated from the normalized value is greater than **1024**, the font size is set to **1024**.'."\n" + ."\n" + .'- **BorderWidthNormalized**: The normalized width of the text border. This value is calculated based on the font size: BorderWidth / FontSize. The value must be in the `[0,1]` range and accurate to two decimal places. If the width calculated from the normalized value is greater than **16**, the width is set to **16**. The default value is **0**.'."\n" + ."\n" + .'- **FontName**: The font name. For valid values, see **Production studio fonts**. The default font is KaiTi.'."\n" + ."\n" + .'- **BorderColor**: The color of the text border. The value must be a hexadecimal color code that ranges from 0x000000 to 0xffffff. The default value is an empty string (""), which indicates that no border color is set.'."\n" + ."\n" + .'- **LocationId**: The channel ID of the translation source.'."\n" + ."\n" + .'- **SourceLan**: The original audio language of the video source. Valid values: en (English), cn (Chinese), es (Spanish), and ru (Russian). The default value is cn.'."\n" + ."\n" + .'- **TargetLan**: The target audio language for the video source. If you do not set this parameter, only speech recognition is performed. If you set this parameter, the audio is translated. Valid values: en (English), cn (Chinese), es (Spanish), and ru (Russian).'."\n" + ."\n" + .'- **ShowSourceLan**: Specifies whether to display the source language. Valid values: true and false. The default value is false.'."\n" + ."\n" + .'- **Truncation**: Specifies whether captions can be truncated. Valid values: true and false. The default value is false.'."\n" + ."\n" + .'- **SourceLanPerLineWordCount**: The maximum number of words per line for the source language captions. The default value is 20.'."\n" + ."\n" + .'- **TargetLanPerLineWordCount**: The maximum number of words per line for the target language captions. The default value is 20.'."\n" + ."\n" + .'- **SourceLanReservePages**: The number of lines to reserve for the source language captions. This parameter takes effect only when Truncation is set to true. The default value is 2.'."\n" + ."\n" + .'- **TargetLanReservePages**: The number of lines to reserve for the target language captions. This parameter takes effect only when Truncation is set to true. The default value is 2.'."\n" + ."\n" + .'The value must be a JSON-formatted string. Parameter names must be in upper-camel case.', 'type' => 'string', 'required' => false, 'example' => '{"BorderWidthNormalized":0.01,"SizeNormalized":0.05,"Color":"0x000000","LocationId":"RV01","SourceLan":"cn","FontName":"KaiTi","BorderColor":"0xffffff"}', 'title' => ''], + ], + [ + 'name' => 'HtmlLayerContent', + 'in' => 'query', + 'schema' => ['description' => 'The configuration of the H5 component.', 'type' => 'string', 'required' => false, 'example' => '{"htmlUrl":http://caster.example.com}', 'title' => ''], ], ], 'responses' => [ @@ -974,239 +510,184 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'ComponentId' => ['description' => 'The component ID. Use this ID to query, modify, or delete the component.', 'type' => 'string', 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidDomainName.Malformed', - 'errorMessage' => 'Specified DomainName is malformed.', - ], - [ - 'errorCode' => 'InvalidRegion.Malformed', - 'errorMessage' => 'Specified Region is malformed.', - ], - [ - 'errorCode' => 'InvalidSource.Content.Malformed', - 'errorMessage' => 'Specified source content is malformed.', - ], - [ - 'errorCode' => 'InvalidTypeContent.Mismatch', - 'errorMessage' => 'Specified source type does not math the specified source content.', - ], - [ - 'errorCode' => 'MissingSource.Content', - 'errorMessage' => 'Specified source content is mandatory for this action.', - ], - [ - 'errorCode' => 'MissingSource.Type', - 'errorMessage' => 'Specified source type is mandatory for this action.', - ], - [ - 'errorCode' => 'InvalidSource.Type.Malformed', - 'errorMessage' => 'Specified source type is malformed.', - ], - [ - 'errorCode' => 'InvalidSource.Priority.Malformed', - 'errorMessage' => 'Specified source priority is malformed.', - ], - [ - 'errorCode' => 'InvalidScope.Malformed', - 'errorMessage' => 'Specified Scope is malformed.', - ], - [ - 'errorCode' => 'SourceIp.Exceed', - 'errorMessage' => 'The Certificate you provided is malformed!', - ], - [ - 'errorCode' => 'InvalidCertificate', - 'errorMessage' => 'The Certificate you provided is malformed!', - ], - [ - 'errorCode' => 'InvalidCertificate.TooLong', - 'errorMessage' => 'The Certificate you provided is over the max length!', - ], - [ - 'errorCode' => 'InnerAddDomainDenied', - 'errorMessage' => 'Your account haven\'t bind aoneId, can not add domain.', - ], - [ - 'errorCode' => 'CheckSourceHealthFailed', - 'errorMessage' => 'sources ip or source domain check health failed,please input right source.', - ], - [ - 'errorCode' => 'ExtensiveAndAllBothExist', - 'errorMessage' => 'Extensive domain and the domain begins with \'all.\' can not exist at the same time.', - ], - [ - 'errorCode' => 'CdnTypeNotSupportExtensiveDomain', - 'errorMessage' => 'Extensive domain not supported for this cdn type.', - ], - [ - 'errorCode' => 'ExtensiveAndSpecificDomainConflict', - 'errorMessage' => 'Extensive domain and corresponding specific domain are mutually exclusive.', - ], - [ - 'errorCode' => 'InvalidDomainNameLevel', - 'errorMessage' => 'Domain name suffixed with alicdn.com only support third level.', - ], - [ - 'errorCode' => 'TopLevelDomain.NotFound', - 'errorMessage' => 'TopLevelDomain is not exist.', - ], - [ - 'errorCode' => 'EntityNotExists.ResourceGroup', - 'errorMessage' => 'The resource group does not exist.', - ], - [ - 'errorCode' => 'InvalidStatus.ResourceGroup', - 'errorMessage' => 'It\'s now allowed to do this operation because of the current status of resource-group.', - ], - [ - 'errorCode' => 'NotInternationRealIdentity', - 'errorMessage' => 'You need to do real name authentication when you use Chinese mainland resources.', - ], - [ - 'errorCode' => 'RecordCheckNotAvailable', - 'errorMessage' => 'Please try again later.', - ], - [ - 'errorCode' => 'IcpBlack', - 'errorMessage' => 'The domain is on the ICP blacklist.', - ], - [ - 'errorCode' => 'IspBlack', - 'errorMessage' => 'The domain is on the ISP blacklist.', - ], - [ - 'errorCode' => 'DomainNotRecordedAliyun', - 'errorMessage' => 'The domain not access Ali Cloud for the record please access.', - ], - [ - 'errorCode' => 'Abs.CheckUrl.Malformed', - 'errorMessage' => 'The CheckUrl you provided is malformed!', - ], - [ - 'errorCode' => 'DomainOwnerVerifyFail', - 'errorMessage' => 'Owner verification of the root domain failed.', - ], - [ - 'errorCode' => 'TopLevelDomain.Mismatch', - 'errorMessage' => 'The specified TopLevelDomain does not match webSiteType.', - ], - [ - 'errorCode' => 'InvalidResourceGroupId.Malformed', - 'errorMessage' => 'Specified ResourceGroupId is malformed.', - ], - [ - 'errorCode' => 'DomainReserved', - 'errorMessage' => 'The root domain of your domain is reserved by another account.', - ], - [ - 'errorCode' => 'ExceedLimit', - 'errorMessage' => 'The number of domains has exceeded the limit.', - ], - [ - 'errorCode' => 'LockFail', - 'errorMessage' => 'Domain has been occupied.', - ], - ], - 403 => [ - [ - 'errorCode' => 'AccountException', - 'errorMessage' => 'Account exception. Please open ticket to make an appeal.', - ], - [ - 'errorCode' => 'EntityNotExist.ResourceGroup', - 'errorMessage' => 'The resource group does not exist.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidPositionNormalized.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PositionNormalized is invalid, please check and try again.'], + ['errorCode' => 'DuplicateLocationID', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter LocationID duplicate. Check and try again.'], ], [ - [ - 'errorCode' => 'InvalidUser', - 'errorMessage' => 'The user\'s account is invalid.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'CanvasNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Canvas does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n\\t\\"Code\\":\\"InternalError\\",\\n\\t\\"HostId\\":\\"live.aliyuncs.com\\",\\n\\t\\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n\\t\\"RequestId\\":\\"6EBD1AC4-C34D-4BE1-963E-B688A228BE31\\"\\n}\\n"},{"type":"xml","example":"\\r\\n\\r\\n\\t15C66C7B-671A-4297-9187-2C4477247A74\\r\\n","errorExample":"{\\n\\t\\"RequestId\\":\\"15C66C7B-671A-4297-9187-2C4477247A74\\"\\n}\\n"}]', - 'title' => 'AddLiveDomain', - 'description' => '* You must activate ApsaraVideo Live before you add a domain name. For more information, see [Activate ApsaraVideo Live](~~195292~~).'."\n" - .'* ApsaraVideo Live verifies the ownership of a new domain name that you add. After the verification is passed, the domain name is added to ApsaraVideo Live. ApsaraVideo Live allows you to use a Domain Name System (DNS) record or a verification file to verify the ownership of a domain name. For more information, see [Verify the ownership of a domain name](~~184466~~).'."\n" - .'* To use ApsaraVideo Live to ingest and play streams, you must add an ingest domain and a streaming domain. You can add only one domain name at a time.'."\n" - .'* After you add a domain name, you must configure a CNAME record for the domain name. For more information, see [Add a CNAME record](~~84929~~).'."\n" - .'* After you add an ingest domain and a streaming domain, you must associate the streaming domain with the ingest domain. For more information, see [Associate a streaming domain with an ingest domain](~~199338~~).'."\n" - ."\n" - .'> From February 19, 2019, domain names that are added by calling the AddLiveDomain operation do not support live center ingest. Domain names that are added by using Alibaba Cloud CDN also do not support live center ingest. When you call the AddLiveDomain operation, you can set the LiveDomainType parameter to liveEdge to add an ingest domain that uses edge ingest or set the LiveDomainType parameter to liveVideo to add a streaming domain. You can associate a streaming domain with an ingest domain by calling the AddLiveDomainMapping operation. Domain names added before February 19, 2019, for which live center ingest was configured, are not affected.'."\n" + 'title' => 'AddCasterComponent', + 'summary' => 'Adds a component to a production studio.', + 'description' => 'Before calling this operation, create a production studio and review its layout list. This operation adds components such as images, text, and captions. For more information about creating a production studio using an API call, see [Create a production studio](~~2848009~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', + .'The queries per second (QPS) limit for a single user is 10. If you exceed this limit, API calls are throttled. This may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => '## Production studio fonts'."\n" + ."\n" + .'| Font | FontName value |'."\n" + .'| ------------------------- | ---------------------- |'."\n" + .'| KaiTi | KaiTi |'."\n" + .'| Alibaba PuHuiTi - Regular | AlibabaPuHuiTi-Regular |'."\n" + .'| Alibaba PuHuiTi - Bold | AlibabaPuHuiTi-Bold |'."\n" + .'| Alibaba PuHuiTi - Light | AlibabaPuHuiTi-Light |'."\n" + .'| Source Han Sans - Regular | NotoSansHans-Regular |'."\n" + .'| Source Han Sans - Bold | NotoSansHans-Bold |'."\n" + .'| Source Han Sans - Light | NotoSansHans-Light |', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - 'translator' => 'machine', - ], - 'AddLiveDomainPlayMapping' => [ - 'summary' => 'Maps a sub-streaming domain to a main streaming domain.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterComponent'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterComponent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ComponentId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'AddCasterEpisode' => [ + 'summary' => 'Adds an episode to a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106846', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'ComponentId', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'type' => 'string', + 'description' => 'A list of component IDs. The components are layered from bottom to top in the specified order.'."\n" + ."\n" + .'If you add a component by calling the [AddCasterComponent](~~2848030~~) operation, check the value of the ComponentId parameter that is returned.'."\n" + ."\n" + .'- This parameter is required and applies only when the resource type is **Component**.'."\n" + ."\n" + .'- This parameter is optional when the resource type is **Resource**. If you specify this parameter, the component is attached to the video source and they are switched synchronously.'."\n" + ."\n" + .'> N specifies the sequence number of a component ID. For example, **ComponentId.1** specifies the first component ID and **ComponentId.2** specifies the second component ID.', + 'type' => 'array', + 'items' => ['description' => 'The component ID.', 'type' => 'string', 'required' => false, 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], 'required' => false, - 'default' => 'cn-shanghai', + 'example' => '["a2b8e671-2fe5-4642-a2ec-bf93880e****"]', + 'maxItems' => 10, + 'title' => '', ], ], [ - 'name' => 'PlayDomain', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The sub-streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.aliyundoc.com', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, check the value of the CasterId parameter that is returned.'."\n" + ."\n" + .'- If you create a production studio in the LIVE console, go to the **LIVE Console**> **Production Studio** > **Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the production studio list serves as the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'PullDomain', + 'name' => 'EpisodeType', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The node type. Valid values:'."\n" + ."\n" + .'- **Resource**: A video source. If you set this parameter to Resource, you must also specify the ResourceId and SwitchType parameters.'."\n" + ."\n" + .'- **Component**: A component.', 'type' => 'string', 'required' => true, 'example' => 'Resource', 'title' => ''], + ], + [ + 'name' => 'EpisodeName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the episode.', 'type' => 'string', 'required' => false, 'example' => 'episode_1', 'title' => ''], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the video source.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required and applies only when EpisodeType is set to Resource.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'If you add a video source by calling the [AddCasterVideoResource](~~2848020~~) operation, check the value of the ResourceId parameter that is returned.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'required' => true, 'example' => '2016-06-29T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'required' => true, 'example' => '2016-06-29T09:10:00Z', 'title' => ''], + ], + [ + 'name' => 'SwitchType', + 'in' => 'query', + 'schema' => ['description' => 'The switch policy. Valid values:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter applies only when EpisodeType is set to Resource.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- **TimeFirst**: Time first.'."\n" + ."\n" + .'- **ContentFirst**: Content first.'."\n" + ."\n" + .'> For more information about video sources, see [Add a video source](~~66094~~).', 'type' => 'string', 'required' => true, 'example' => 'TimeFirst', 'title' => ''], ], ], 'responses' => [ @@ -1214,103 +695,164 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'EpisodeId' => ['description' => 'The ID of the episode. This ID can be used as a request parameter to query the episode list, modify an episode, or delete an episode.', 'type' => 'string', 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'SwitchTypeInvalid.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SwitchType is invalid, please check and try again.'], + ['errorCode' => 'IncorrectStartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['errorCode' => 'IncorrectEndTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ['errorCode' => 'EpisodeConflict.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'There is a conflict with the program time, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', - 'title' => 'AddLiveDomainPlayMapping', - 'description' => 'You can call the [AddLiveDomain](~~88327~~) operation to add a main streaming domain and a sub-streaming domain and then call this operation to map the sub-streaming domain to the main streaming domain.'."\n" + 'title' => 'AddCasterEpisode', + 'description' => 'Before you call this operation, obtain the ID of the production studio. The ID is generated when the production studio is created.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, check the value of the returned CasterId parameter.'."\n" + ."\n" + .'- If you create a production studio in the LIVE console, go to **LIVE Console** > **Production Studio** > **Production Studio** to view the name of the production studio.'."\n" + ."\n" + .'> The name of the production studio in the production studio list serves as the production studio ID.'."\n" + ."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 4 for each account. API calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteLiveDomainPlayMapping' => [ - 'summary' => 'Deletes the mapping between a main streaming domain and a sub-streaming domain.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterEpisode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EpisodeId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'AddCasterEpisodeGroup' => [ + 'summary' => 'Adds a program list to a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106928', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PlayDomain', + 'name' => 'Item', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The sub-streaming domain.'."\n", - 'type' => 'string', + 'description' => 'The list of programs.', + 'type' => 'array', + 'items' => [ + 'description' => 'The program object.', + 'type' => 'object', + 'properties' => [ + 'ItemName' => ['description' => 'The name of the program.', 'type' => 'string', 'required' => false, 'example' => 'Program 1', 'title' => ''], + 'VodUrl' => ['description' => 'The URL of the video-on-demand (VOD) file.'."\n" + ."\n" + .'If you call the [DescribeCasterVideoResources](~~2848023~~) operation to query the video sources of the production studio, use the value of the returned VodUrl parameter.'."\n" + ."\n" + .'> This parameter is used only when the resource is a video file that is not imported to the Material Library.
Supported formats: MP4, FLV, and TS.', 'type' => 'string', 'required' => false, 'example' => 'http://learn.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****.flv?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => true, - 'example' => 'example.aliyundoc.com', + 'maxItems' => 150, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'PullDomain', + 'name' => 'ClientToken', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'A client-generated token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'The token must be unique for each request. It can be up to 64 ASCII characters in length.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => true, 'example' => '8751ad99-2ddb-4aac-ad44-84b21102****', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. Specify the time in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2018-03-06T19:00:00Z', 'title' => ''], + ], + [ + 'name' => 'RepeatNum', + 'in' => 'query', + 'schema' => ['description' => 'The number of times to repeat the program. Valid values:'."\n" + ."\n" + .'- **0**: The program does not loop.'."\n" + ."\n" + .'- **-1**: The program loops indefinitely.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'SideOutputUrl', + 'in' => 'query', + 'schema' => ['description' => 'The ingest URL for the custom bypass output of the production studio.'."\n" + ."\n" + .'If you do not specify this parameter, the system uses the ingest URL for the output URL that is automatically generated by Alibaba Cloud.', 'type' => 'string', 'required' => true, 'example' => 'rtmp://guide.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', 'title' => ''], + ], + [ + 'name' => 'CallbackUrl', + 'in' => 'query', + 'schema' => ['description' => 'The webhook address.'."\n" + ."\n" + .'If you call the [DescribeCasterConfig](~~2848011~~) operation to query the configuration of the production studio, use the value of the returned CallbackUrl parameter.', 'type' => 'string', 'required' => true, 'example' => 'http://developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', 'title' => ''], ], ], 'responses' => [ @@ -1318,127 +860,207 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'ItemIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ItemId' => [ + 'itemNode' => true, + 'description' => 'The list of program IDs.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The program ID.', 'type' => 'string', 'example' => '21926b36-7dd2-4fde-ae25-51b5bc98****', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'ProgramId' => ['description' => 'The ID of the program list. This ID is used as a request parameter for other operations, such as deleting or editing a program list, or adding, deleting, or querying a program.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68X****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'IncorrectStartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\r\\n","errorExample":""}]', - 'title' => 'DeleteLiveDomainPlayMapping', - 'description' => 'Before you call this operation, make sure that the mapping between the main streaming domain and the sub-streaming domain is created. For more information about how to call an operation to create the mapping between a main streaming domain and a sub-streaming domain, see [AddLiveDomainPlayMapping](~~173091~~).'."\n" + 'title' => 'AddCasterEpisodeGroup', + 'description' => 'Before you call this operation, you must create a production studio and obtain its configuration information. For more information, see [Create a production studio](~~2848009~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 4 calls per second per user. If you exceed the limit, your API calls are throttled. Throttling can affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddLiveDomainMapping' => [ - 'summary' => 'Creates the mapping between a streaming domain and an ingest domain.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterEpisodeGroup'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterEpisodeGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ItemIds\\": {\\n \\"ItemId\\": [\\n \\"21926b36-7dd2-4fde-ae25-51b5bc98****\\"\\n ]\\n },\\n \\"ProgramId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68X****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'AddCasterEpisodeGroupContent' => [ + 'summary' => 'Adds content to an episode group of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'create', - 'abilityTreeCode' => '106845', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'PushDomain', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain. The type of the domain name is **liveEdge**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PullDomain', + 'name' => 'ClientToken', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain. The type of the domain name is **liveVideo**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'A client-generated token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'> The client generates this value. Make sure that the value is unique among different requests. The value can be up to 64 ASCII characters in length.', 'type' => 'string', 'required' => true, 'example' => '8751ad99-2ddb-4aac-ad44-84b21102****', 'title' => ''], ], - ], + [ + 'name' => 'Content', + 'in' => 'query', + 'schema' => ['description' => 'The properties of the episode in the production studio. This parameter is a JSON string. The parameter names are in upper camel case. The properties are described as follows:'."\n" + ."\n" + .'- **CallbackUrl**: The webhook address.'."\n" + ."\n" + .'- **SideOutputUrl**: The custom bypass output URL.'."\n" + ."\n" + .'- **RepeatNum**: The number of times to loop the episode. A value of 0 means the episode does not loop. A value of -1 means the episode loops indefinitely.'."\n" + ."\n" + .'- **StartTime**: The start time in UTC. The format is *yyyy-MM-dd*T*HH:mm:ss*Z.'."\n" + ."\n" + .'- **DomainName**: The domain name.'."\n" + ."\n" + .'- **Items**'."\n" + ."\n" + .' : The list of items in the episode.'."\n" + ."\n" + .' - **ItemName**: The item name.'."\n" + ."\n" + .' - **VodUrl**: The URL of the video-on-demand (VOD) file. This parameter is required only when the resource is a video file that has not been imported to the Material Library. The MP4, FLV, and TS formats are supported.', 'type' => 'string', 'example' => '{"CallbackUrl":"http://example.aliyundoc.com/callBackLive","SideOutputUrl":"rtmp://guide.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****","DomainName":"developer.aliyundoc.com ","StartTime":"2018-03-26T16:00:00Z","RepeatNum":-1,"Items":[{"ItemName":"program1","VodUrl":"http://learn.aliyundoc.com"},{"ItemName":"program2","VodUrl":"http://demo.aliyundoc.com"}]}', 'required' => true, 'title' => ''], + ], + ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'ItemIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ItemId' => [ + 'itemNode' => true, + 'description' => 'A list of item IDs.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The item ID.', 'type' => 'string', 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'ProgramId' => ['description' => 'The program ID. You can use this ID as a request parameter when you create, add, delete, or query program items. You can also use this ID to edit, delete, query, start, or stop a program.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68X****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidPushDomain', - 'errorMessage' => 'The PushDomain should be liveEdge type.', - ], - [ - 'errorCode' => 'InvalidPullDomain', - 'errorMessage' => 'The PullDomain should be liveVideo type.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'IncorrectStartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\", \\n}"}]', - 'title' => 'AddLiveDomainMapping', - 'description' => 'Call the [AddLiveDomain](~~88327~~) operation to add a streaming domain and an ingest domain, and then call this operation to create the mapping between the two domain names.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ItemIds\\": {\\n \\"ItemId\\": [\\n \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\"\\n ]\\n },\\n \\"ProgramId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68X****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + 'title' => 'AddCasterEpisodeGroupContent', + 'description' => 'Before you call this operation, you must create a production studio and an episode group. For more information, see [Create a production studio](~~2848009~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'The queries per second (QPS) limit for this operation is 4 for each user. If you exceed this limit, your API calls are throttled. This may impact your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteLiveDomain' => [ - 'summary' => 'Removes a domain name from ApsaraVideo Live.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterEpisodeGroupContent'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterEpisodeGroupContent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'translator' => 'manual', + ], + 'AddCasterLayout' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -1446,297 +1068,551 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106925', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'VideoLayer', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The ingest domain or streaming domain that you want to delete.'."\n", - 'type' => 'string', + 'description' => 'The video layouts.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'FillMode' => ['description' => 'The fill mode of the element. Valid values:'."\n" + ."\n" + .'- **none** (default): No scaling. The video is displayed in its original size.'."\n" + ."\n" + .'- **fit**: The video is scaled to fit the fill area while maintaining its aspect ratio. The video is centered in the fill area. If the aspect ratio of the fill area is different from that of the video, the area along the shorter edge is not filled. This area displays the video of the underlying layer. If no underlying layer is configured, this area is black.', 'type' => 'string', 'required' => false, 'example' => 'fit', 'title' => ''], + 'FixedDelayDuration' => ['description' => 'The fixed latency for the video layer. Use this parameter to synchronize the video with captions. Unit: milliseconds. Default value: 0. Valid values: **0** to **5000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5000', 'title' => ''], + 'HeightNormalized' => ['description' => 'The normalized height of the layer.'."\n" + ."\n" + .'- If you set FillMode to none, the width of the layer is scaled in proportion to the height. The default value is **0**. A value of 0 indicates that the video is displayed in its original size.'."\n" + ."\n" + .'- If you set FillMode to fit, this parameter is required and its value must be greater than **0**. The value specifies the normalized height of the fill area.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '1', 'title' => ''], + 'PositionNormalized' => [ + 'description' => 'The position of the video layer. The value is a normalized coordinate `[x,y]`. Default value: `[0,0]`.'."\n" + ."\n" + .'Note: The x and y coordinates must be normalized.', + 'type' => 'array', + 'items' => ['description' => 'The value.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0', 'title' => ''], + 'required' => false, + 'example' => '0.3', + 'maxItems' => 2, + 'title' => '', + ], + 'PositionRefer' => ['description' => 'The reference point for the position of the layer. Valid values:'."\n" + ."\n" + .'- **topLeft** (default): Top-left.'."\n" + ."\n" + .'- **topRight**: Top-right.'."\n" + ."\n" + .'- **bottomLeft**: Bottom-left.'."\n" + ."\n" + .'- **bottomRight**: Bottom-right.'."\n" + ."\n" + .'- **center**: Center.'."\n" + ."\n" + .'- **topCenter**: Top-center.'."\n" + ."\n" + .'- **bottomCenter**: Bottom-center.'."\n" + ."\n" + .'- **leftCenter**: Left-center.'."\n" + ."\n" + .'- **rightCenter**: Right-center.', 'type' => 'string', 'required' => false, 'example' => 'topLeft', 'title' => ''], + 'WidthNormalized' => ['description' => 'The normalized width of the layer.'."\n" + ."\n" + .'- If you set FillMode to none, the height of the layer is scaled in proportion to the width. The default value is **0**. A value of 0 indicates that the video is displayed in its original size.'."\n" + ."\n" + .'- If you set FillMode to fit, this parameter is required and its value must be greater than **0**. The value specifies the normalized width of the fill area.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '1', 'title' => ''], + ], + 'required' => false, + 'description' => 'The video layout.', + 'title' => '', + 'example' => '', + ], 'required' => true, - 'example' => 'demo.aliyundoc.com', + 'maxItems' => 12, + 'title' => '', + 'example' => '', ], ], - ], - 'responses' => [ - 200 => [ + [ + 'name' => 'AudioLayer', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '94E3559F-7B6A-4A5E-AFFD-44E2A208A249', + 'description' => 'The audio layouts.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'FixedDelayDuration' => ['description' => 'The fixed latency for the audio layer. Use this parameter to synchronize the audio with captions. Unit: milliseconds. Default value: 0. Valid values: **0** to **5000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5000', 'title' => ''], + 'ValidChannel' => ['description' => 'The sound channels that are used for audio input. Valid values:'."\n" + ."\n" + .'- **leftChannel**: Left channel.'."\n" + ."\n" + .'- **rightChannel**: Right channel.'."\n" + ."\n" + .'- **all** (default): Both channels.', 'type' => 'string', 'required' => false, 'example' => 'all', 'title' => ''], + 'VolumeRate' => ['description' => 'The volume multiplication factor for the audio stream. Valid values: 0 to **10.0**.'."\n" + ."\n" + .'- **1.0** (default): The original volume is used.'."\n" + ."\n" + .'- A value less than **1** decreases the volume.'."\n" + ."\n" + .'- A value greater than **1** increases the volume.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '1.0', 'title' => ''], ], + 'required' => false, + 'description' => 'The audio layout.', + 'title' => '', + 'example' => '', ], - 'description' => '', - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidDomainName.Malformed', - 'errorMessage' => 'The specific value of parameter DomainName is malformed.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => 'Delete live region parameters have error.', - ], - [ - 'errorCode' => 'InvalidOperation', - 'errorMessage' => 'Delete domain until configure compete.', + 'required' => true, + 'maxItems' => 12, + 'title' => '', + 'example' => '', ], ], - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"94E3559F-7B6A-4A5E-AFFD-44E2A208A249\\"\\n}","type":"json"}]', - 'title' => 'DeleteLiveDomain', - 'description' => '* After you successfully call the DeleteLiveDomain operation, all records of the specified domain name are deleted. Exercise caution when you perform this operation.'."\n" - .'* We recommend that you restore to an A record for the domain name at the DNS provider before you remove the domain name. Otherwise, the domain name may become inaccessible. If your domain name is registered with Alibaba Cloud, log on to the [Alibaba Cloud DNS console](https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fdns.console.aliyun.com%2F%3Fspm%3Da2c4g.11186623.0.0.3cda841fcvk7Qs\\&lang=zh) and navigate to the **Domain Name Resolution** page. Find the domain name and then click **DNS Settings** in the Actions column. On the page that appears, change the CNAME record to an A record. If your domain name is registered with another DNS provider, configure similar settings on the platform of that DNS provider.'."\n" - .'* If you want to only suspend the use of the domain name, we recommend that you call the [StopLiveDomain](~~88329~~) operation.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveDomainMapping' => [ - 'summary' => 'Deletes the mapping between a streaming domain and an ingest domain.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'systemTags' => [ - 'operationType' => 'delete', - 'abilityTreeCode' => '106927', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], - ], - 'parameters' => [ [ - 'name' => 'PushDomain', + 'name' => 'BlendList', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The ingest domain. The type of the domain name is **liveEdge**.'."\n", - 'type' => 'string', + 'description' => 'The location IDs of the video sources. The order of the location IDs corresponds to the order of the video layers specified in the **VideoLayer** parameter. For more information about location IDs, see [AddCasterVideoResource](~~2848020~~).'."\n" + ."\n" + .'For LocationId, see [Add a video source](~~2848020~~). This ID corresponds to the order of the VideoLayers elements.', + 'type' => 'array', + 'items' => ['description' => 'The location ID.', 'type' => 'string', 'required' => false, 'example' => 'RV01', 'title' => ''], 'required' => true, - 'example' => 'demo.aliyundoc.com', + 'example' => 'RV01', + 'maxItems' => 12, + 'title' => '', ], ], [ - 'name' => 'PullDomain', + 'name' => 'MixList', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The streaming domain. The type of the domain name is **liveVideo**.'."\n", - 'type' => 'string', + 'description' => 'The location IDs of the audio sources. The order of the location IDs corresponds to the order of the audio layers specified in the **AudioLayer** parameter. For more information about location IDs, see [AddCasterVideoResource](~~2848020~~).'."\n" + ."\n" + .'For \\`LocationId\\`, see [Add a video source](~~2848020~~). It corresponds to the order of the \\`AudioLayers\\` elements.', + 'type' => 'array', + 'items' => ['description' => 'The location ID.', 'type' => 'string', 'required' => false, 'example' => 'RV01', 'title' => ''], 'required' => true, - 'example' => 'example.com', + 'example' => 'RV01', + 'maxItems' => 12, + 'title' => '', ], ], + [ + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, the CasterId is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the LIVE console, go to **Production Studio** > **Cloud Production Studio** to view the name of the production studio.'."\n" + ."\n" + .'> The name of the production studio on the Cloud Production Studio page is the ID of the production studio.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'LayoutId' => ['description' => 'The ID of the layout. You can use this ID as a request parameter when you call operations to manage layouts, such as deleting, modifying, or querying layouts for a production studio or a virtual studio.', 'type' => 'string', 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidPushDomain', - 'errorMessage' => 'The PushDomain should be liveEdge type.', - ], - [ - 'errorCode' => 'InvalidPullDomain', - 'errorMessage' => 'The PullDomain should be liveVideo type.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidVideoLayersAndBlendListSize.Mismatch', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The size of the VideoLayers does not match the size of the BlendList, please check and try again.'], + ['errorCode' => 'InvalidAudioLayersAndMixListSize.Mismatch', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The size of the AudioLayers does not match the size of the MixList, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidBlendList.ExceedNorm', 'errorMessage' => '%s, please check and try again later.', 'description' => 'BlendList size exceeds specification, please check and try again.'], + ['errorCode' => 'InvalidPositionNormalized.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PositionNormalized is invalid, please check and try again.'], + ['errorCode' => 'InvalidHeightOrWidthNormalized', 'errorMessage' => '%s, please check and try again later.', 'description' => 'HeightNormalized or WidthNormalized parameters are invalid, please check and try again.'], + ['errorCode' => 'InvalidMixList.ExceedNorm', 'errorMessage' => '%s, please check and try again later.', 'description' => 'MixList size exceeds specification, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\", \\n}"}]', - 'title' => 'DeleteLiveDomainMapping', - 'description' => 'Make sure that the streaming domain has been mapped to the ingest domain before you call this operation to delete the mapping. For more information about how to map a streaming domain to an ingest domain, see [AddLiveDomainMapping](~~88782~~).'."\n" + 'title' => 'AddCasterLayout', + 'summary' => 'Adds a layout to a production studio.', + 'description' => 'Before you call this operation, you must create a production studio and add video sources. For more information about how to create a production studio, see [CreateCaster](~~2848009~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. API calls that exceed this limit are throttled, which may affect your business. Do not exceed this limit.', + 'requestParamsDescription' => '> In the request parameters, N represents the sequence number of an element. For example, VideoLayer.N.FillMode specifies the fill mode for the Nth video layer. VideoLayer.1.FillMode specifies the fill mode for the first video layer, and VideoLayer.2.FillMode specifies the fill mode for the second video layer.', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainMapping' => [ - 'summary' => 'Queries the mappings of an ingest domain, a main streaming domain, or a sub-streaming domain.', - 'methods' => [ - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterLayout'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'AddCasterProgram' => [ + 'summary' => 'Adds a program list to a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Episode', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The domain name for which you want to query the mappings. The following types of domain names are supported:'."\n" - ."\n" - .'* Ingest domain'."\n" - .'* Main streaming domain'."\n" - .'* Sub-streaming domain'."\n", - 'type' => 'string', + 'description' => 'The program list information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The program list information.', + 'type' => 'object', + 'properties' => [ + 'ComponentId' => [ + 'description' => 'A list of component IDs. The components are layered from bottom to top in the order of the elements in the list.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required and takes effect only when Episode.N.EpisodeType is set to **Component**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'If the node type is **Resource**, the components are attached to the video source and switched in sync.', + 'type' => 'array', + 'items' => ['description' => 'The component ID.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf931826****', 'title' => ''], + 'required' => false, + 'example' => '[ "a2b8e671-2fe5-4642-a2ec-bf931826****", "a2b8e671-2fe5-4642-a2ec-28374657****"]', + 'maxItems' => 10, + 'title' => '', + ], + 'EndTime' => ['description' => 'The end time. The time is in UTC. The format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T10:02:00Z', 'title' => ''], + 'EpisodeName' => ['description' => 'The program name.', 'type' => 'string', 'required' => false, 'example' => 'program_name_1', 'title' => ''], + 'EpisodeType' => ['description' => 'The node type.'."\n" + ."\n" + .'- **Resource**: a video source. If you set this parameter to Resource, you must also set the Episode.N.ResourceId and Episode.N.SwitchType parameters.'."\n" + ."\n" + .'- **Component**: a component. If you set this parameter to Component, you must also set the Episode.N.ComponentId.N parameter.', 'type' => 'string', 'required' => false, 'example' => 'Resource', 'title' => ''], + 'ResourceId' => ['description' => 'The video source ID.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required and takes effect only when Episode.N.EpisodeType is set to **Resource**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is not available when Episode.N.EpisodeType is set to **Component**.'."\n" + ."\n" + .'If you call the [AddCasterVideoResource](~~60250~~) operation to add a video source to the production studio, use the value of the ResourceId parameter that is returned.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in UTC. The format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T09:00:00Z', 'title' => ''], + 'SwitchType' => ['description' => 'The switch policy. Valid values:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter takes effect only when Episode.N.EpisodeType is set to **Resource**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- **TimeFirst**: time-based priority. This is the only policy allowed for live video sources.'."\n" + ."\n" + .'- **ContentFirst**: content-based priority.', 'type' => 'string', 'required' => false, 'example' => 'TimeFirst', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => true, - 'example' => 'example.com', + 'maxItems' => 100, + 'title' => '', + 'example' => '', ], ], + [ + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the value of the CasterId parameter that is returned.'."\n" + ."\n" + .'- If you create a production studio in the LIVE console, you can find the name of the production studio by choosing **LIVE Console** > **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F6CD8', - ], - 'LiveDomainModels' => [ + 'EpisodeIds' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'LiveDomainModel' => [ - 'description' => 'The mappings of the queried domain name.'."\n", + 'EpisodeId' => [ + 'itemNode' => true, + 'description' => 'A list of program IDs. The order of elements in the list is the same as the order of the programs in the request.', + 'title' => '', 'type' => 'array', 'items' => [ - 'description' => 'The mapping information.'."\n", 'type' => 'object', 'properties' => [ - 'Type' => [ - 'description' => 'The type of the queried domain name. Valid values:'."\n" - ."\n" - .'* **vhost**: main streaming domain'."\n" - .'* **publish**: ingest domain'."\n" - .'* **play**: sub-streaming domain'."\n", - 'type' => 'string', - 'example' => 'play', - ], - 'DomainName' => [ - 'description' => 'The domain name to which the queried domain name is mapped.'."\n", - 'type' => 'string', - 'example' => 'example.aliyundoc.com', - ], + 'EpisodeId' => ['description' => 'The program group ID. You can use this ID as a request parameter to modify the program list, query the program list, delete a program, or modify a program.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'SwitchTypeInvalid.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SwitchType is invalid, please check and try again.'], + ['errorCode' => 'IncorrectStartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['errorCode' => 'IncorrectEndTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ['errorCode' => 'EpisodeConflict.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'There is a conflict with the program time, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.EndTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F6CD8\\",\\n \\"LiveDomainModels\\": {\\n \\"LiveDomainModel\\": [\\n {\\n \\"Type\\": \\"play\\",\\n \\"DomainName\\": \\"example.aliyundoc.com\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F6CD8\\n \\n play\\n example.aliyundoc.com\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainMapping', - 'description' => 'Obtain the ingest domain, main streaming domain, or sub-streaming domain, and then call this operation to query the mappings of the domain name.'."\n" + 'title' => 'AddCasterProgram', + 'description' => 'Before you call this operation, you must create a production studio and add video resources to it. This operation supports only video source and component nodes. To create a production studio by calling an API, see [CreateCaster](~~2848009~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 500 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', + .'The queries per second (QPS) limit for a single user is 10 calls per second. If you exceed this limit, API calls are throttled. This can affect your business. We recommend that you call this operation within this limit.', + 'requestParamsDescription' => '> In the request parameters, N indicates the sequence number. For example, Episode.1.EpisodeName specifies the name of the first program and Episode.2.EpisodeName specifies the name of the second program.', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainDetail' => [ - 'summary' => 'Queries the basic information about a domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterProgram', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EpisodeIds\\": {\\n \\"EpisodeId\\": [\\n {\\n \\"EpisodeId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'AddCasterVideoResource' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107014', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '106832', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain or ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'Region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + ], + [ + 'name' => 'ResourceName', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, find the CasterId value in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to **Live Console** > **Production Studio** > **Cloud Production Studio** to find the name of the production studio.'."\n" + ."\n" + .'> The name of a production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'test001', 'title' => ''], + ], + [ + 'name' => 'LocationId', + 'in' => 'query', + 'schema' => ['description' => 'The name of the video source.', 'type' => 'string', 'required' => false, 'example' => 'RV01', 'title' => ''], + ], + [ + 'name' => 'LiveStreamUrl', + 'in' => 'query', + 'schema' => ['description' => 'The location identifier for the video source. This parameter is required.'."\n" + ."\n" + .'The identifier references the video\'s position in the layout. Each location supports a maximum of one resource. The format is RV followed by a number from 01 to 99. For example, `RV01`.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://guide.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', 'title' => ''], + ], + [ + 'name' => 'MaterialId', + 'in' => 'query', + 'schema' => ['description' => 'The Alibaba Cloud streaming URL.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- This parameter is required if the video source type is live stream.'."\n" + ."\n" + .'- If the video source type is not live stream, do not include this parameter in the request.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => 'f080575eb5f4427684fc0715159a****', 'title' => ''], + ], + [ + 'name' => 'VodUrl', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the media asset.'."\n" + .'>This parameter is required and takes effect only when the video source is a media asset.>'."\n" + ."\n" + .'If you call the [DescribeCasterConfig](~~2848011~~) operation to query the configuration of the production studio, view the value of the UrgentMaterialId parameter in the response.'."\n" + ."\n" + .'> The value of UrgentMaterialId is the ID of the media asset.', 'type' => 'string', 'required' => false, 'example' => 'http://learn.aliyundoc.com/AppName/StreamName.flv', 'title' => ''], + ], + [ + 'name' => 'BeginOffset', + 'in' => 'query', + 'schema' => ['description' => 'The URL of the video-on-demand (VOD) file.'."\n" + .'>This parameter is active only when the video source is a file that is not in the Material Library.>'."\n" + ."\n" + .'> The VOD file must be in MP4, FLV, or TS format.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1000', 'title' => ''], + ], + [ + 'name' => 'EndOffset', + 'in' => 'query', + 'schema' => ['description' => 'The start offset of the video file, in milliseconds.'."\n" + .'>This parameter is valid only when the video source is a file.>'."\n" + ."\n" + .'> A value greater than **0** specifies the offset from the first frame. The system starts to read the file from this offset.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10000', 'title' => ''], + ], + [ + 'name' => 'RepeatNum', + 'in' => 'query', + 'schema' => ['description' => 'The end offset value for the video file. Unit: ms.'."\n" + .'>This parameter is valid only when the video source is a file.>'."\n" + ."\n" + .'- A value greater than **0** sets the end point for reading at an offset from the first frame.'."\n" + ."\n" + .'- A value less than **0** sets the end point for reading at an offset from the last frame.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '60', 'minimum' => '-1', 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'PtsCallbackInterval', + 'in' => 'query', + 'schema' => ['description' => 'The number of times to repeat the video.'."\n" + .'>This parameter is valid only when the video source is a file.>'."\n" + ."\n" + .'- **0** (default): The video plays only once.'."\n" + ."\n" + .'- **-1**: The video repeats indefinitely.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'minimum' => '0', 'example' => '2000', 'title' => ''], + ], + [ + 'name' => 'FixedDelayDuration', + 'in' => 'query', + 'schema' => ['description' => 'The PTS callback interval. The unit is milliseconds.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => ['description' => 'This field sets a fixed delay for the video to synchronize captions. The unit is ms. The default value is 0. The value range is `[0-5000]`.', 'type' => 'string', 'required' => false, 'example' => 'a089175eb5f4427684fc0715159a****', 'title' => ''], + ], + [ + 'name' => 'ImageUrl', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the image asset.'."\n" + ."\n" + .'> This parameter is active and required only when the video source type is Image.', 'type' => 'string', 'required' => false, 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', 'title' => ''], ], ], 'responses' => [ @@ -1744,617 +1620,333 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'DomainDetail' => [ - 'description' => 'The configuration details of the domain name.'."\n", - 'type' => 'object', - 'properties' => [ - 'CertName' => [ - 'description' => 'The name of the certificate.'."\n", - 'type' => 'string', - 'example' => 'liveCert****', - ], - 'Cname' => [ - 'description' => 'The CNAME that is assigned to the domain name. You must add a CNAME record in the system of your Domain Name System (DNS) service provider to map the domain name to the CNAME.'."\n" - ."\n" - .'> A time-to-live (TTL) value is specified in the CNAME record of a domain name to indicate how long the CNAME record can be cached on the DNS resolver. If you modify the CNAME record of the domain name, the new settings take effect after the cache expires, which takes about 10 minutes. For more information, see [CNAME resolution](~~362010~~).'."\n", - 'type' => 'string', - 'example' => 'learn.developer.aliyundoc.com', - ], - 'Description' => [ - 'description' => 'The description of the domain name.'."\n", - 'type' => 'string', - 'example' => 'test', - ], - 'DomainName' => [ - 'description' => 'The streaming domain or ingest domain.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'DomainStatus' => [ - 'description' => 'The status of the domain name. Valid values:'."\n" - ."\n" - .'* **online**: The domain name is enabled.'."\n" - .'* **offline**: The domain name is disabled.'."\n" - .'* **configuring**: The domain is being configured.'."\n", - 'type' => 'string', - 'example' => 'online', - ], - 'GmtCreated' => [ - 'description' => 'The time when the domain name was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-07-27T06:51:25Z', - ], - 'GmtModified' => [ - 'description' => 'The time when the domain name was last modified. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-08-07T06:51Z', - ], - 'LiveDomainType' => [ - 'description' => 'The type of the domain name. Valid values:'."\n" - ."\n" - .'* **liveVideo**: streaming domain'."\n" - .'* **liveEdge**: ingest domain'."\n", - 'type' => 'string', - 'example' => 'liveVideo', - ], - 'Region' => [ - 'description' => 'The ID of the region where the domain name resides.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'SSLProtocol' => [ - 'description' => 'Indicates whether the SSL certificate is enabled. Valid values:'."\n" - ."\n" - .'* **on**'."\n" - .'* **off**'."\n", - 'type' => 'string', - 'example' => 'on', - ], - 'SSLPub' => [ - 'description' => 'The public key of the certificate.'."\n", - 'type' => 'string', - 'example' => 'Public Key', - ], - 'Scope' => [ - 'description' => 'The acceleration region. Valid values:'."\n" - ."\n" - .'* **domestic**: regions in the Chinese mainland.'."\n" - .'* **overseas**: regions outside the Chinese mainland.'."\n" - .'* **global**: regions in and outside the Chinese mainland.'."\n", - 'type' => 'string', - 'example' => 'domestic', - ], - 'ResourceGroupId' => [ - 'description' => 'The ID of the resource group.'."\n", - 'type' => 'string', - 'example' => 'rg-aek2ogvt4nwmi7i', - ], - ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '09ABE829-6CD3-4FE0-AFEE-556113E29727', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], + 'ResourceId' => ['description' => 'The resource ID. Use this ID as a request parameter to delete or modify a production studio video source.', 'type' => 'string', 'example' => 'e5542d98-b08c-46bf-83e9-5b09d08c****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidLiveStreamUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter LiveStreamUrl is invalid, please check and try again.'], + ['errorCode' => 'InvalidMaterialId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter MaterialId is invalid, please check and try again.'], + ['errorCode' => 'InvalidVodUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter VodUrl is invalid, please check and try again.'], + ['errorCode' => 'ResourceNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of resources exceeds the limit. Please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'DuplicateLocationID', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter LocationID duplicate. Check and try again.'], + ['errorCode' => 'UnexpectedLocationID', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The LocationId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainDetail\\": {\\n \\"CertName\\": \\"liveCert****\\",\\n \\"Cname\\": \\"learn.developer.aliyundoc.com\\",\\n \\"Description\\": \\"test\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"DomainStatus\\": \\"online\\",\\n \\"GmtCreated\\": \\"2018-07-27T06:51:25Z\\",\\n \\"GmtModified\\": \\"2018-08-07T06:51Z\\",\\n \\"LiveDomainType\\": \\"liveVideo\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"SSLProtocol\\": \\"on\\",\\n \\"SSLPub\\": \\"Public Key\\",\\n \\"Scope\\": \\"domestic\\",\\n \\"ResourceGroupId\\": \\"rg-**k3bpq2yjw22**\\"\\n },\\n \\"RequestId\\": \\"09ABE829-6CD3-4FE0-AFEE-556113E29727\\"\\n}","type":"json"}]', - 'title' => 'DescribeLiveDomainDetail', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'You can call this operation to query the basic information about an ingest domain or a streaming domain. If you want to query a newly added domain name, wait a few minutes until the configuration of the domain name is completed in ApsaraVideo Live.'."\n" + 'title' => 'AddCasterVideoResource', + 'summary' => 'Adds a video source to a production studio. The number of video sources that you can add is limited by the number of ingest endpoints in the production studio.', + 'description' => 'Before you add a video source, you must create a production studio. The number of video sources that you can add is limited by the number of ingest endpoints in the production studio. For more information about creating a production studio by calling an API operation, see [Create a production studio](~~2848009~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', + .'This operation is limited to 10 queries per second (QPS) per user. If you exceed this limit, API calls are throttled, which can impact your business. Call this operation at a reasonable rate.', + 'requestParamsDescription' => '> The type of a video source is determined by the resource type in the streaming URL.', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveUserDomains' => [ - 'summary' => 'Queries domain names of ApsaraVideo Live in your Alibaba Cloud account.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-08-08T03:24:10.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-03-31T08:26:54.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterVideoResource'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterVideoResource', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"ResourceId\\": \\"e5542d98-b08c-46bf-83e9-5b09d08c****\\"\\n}","type":"json"}]', + ], + 'AddCustomLiveStreamTranscode' => [ + 'summary' => 'Adds a custom transcoding configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', - 'abilityTreeCode' => '107118', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '106833', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ - 'name' => 'LiveDomainType', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the domain name. Valid values:'."\n" - ."\n" - .'* **liveVideo**: streaming domain'."\n" - .'* **liveEdge**: ingest domain'."\n" - ."\n" - .'> If you leave this parameter empty, all ingest domains and streaming domains within your Alibaba Cloud account are queried by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveVideo', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Default value: **20**. Maximum value: **50**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '500', - 'example' => '20', - 'default' => '20', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'PageNumber', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Valid values: **1 to 100000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'KmsKeyID', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name that is used as a keyword to filter domain names. Fuzzy match is supported.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If you set LiveDomainType to liveVideo and leave this parameter empty, the streaming domains are queried. - If you set LiveDomainType to liveEdge and leave this parameter empty, the ingest domains are queried.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '*.aliyundoc.com', - ], + 'schema' => ['description' => 'The ID of the customer master key (CMK) in Key Management Service (KMS).', 'type' => 'string', 'required' => false, 'example' => 'afce5722-81d2-43c3-9930-7601da11****', 'title' => ''], ], [ - 'name' => 'RegionName', + 'name' => 'KmsUID', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region in which the domain name resides.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-beijing', - ], + 'schema' => ['description' => 'The ID of the KMS account.', 'type' => 'string', 'required' => false, 'example' => '25346073170691****', 'title' => ''], ], [ - 'name' => 'DomainSearchType', + 'name' => 'KmsKeyExpireInterval', 'in' => 'query', - 'schema' => [ - 'description' => 'The search mode. Valid values:'."\n" - ."\n" - .'* **fuzzy_match** (default): fuzzy match'."\n" - .'* **pre_match**: prefix match'."\n" - .'* **suf_match**: suffix match'."\n" - .'* **full_match**: exact match'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'fuzzy_match', - ], + 'schema' => ['description' => 'The key rotation period. Unit: seconds. Valid values: 60 to 3600.', 'type' => 'string', 'required' => false, 'example' => '3600', 'title' => ''], ], [ - 'name' => 'DomainStatus', + 'name' => 'Template', 'in' => 'query', - 'schema' => [ - 'description' => 'The status of the domain name. Valid values:'."\n" - ."\n" - .'* **online**'."\n" - .'* **offline**'."\n" - .'* **configuring**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'online', - ], + 'schema' => ['description' => 'The custom name of the transcoding template.'."\n" + ."\n" + .'> The name can contain digits, letters, and hyphens (-). It must start with a digit or a letter. It cannot be the same as the name of a standard transcoding template.', 'type' => 'string', 'required' => true, 'example' => 'LiveCusTranscode****', 'title' => ''], ], [ - 'name' => 'Tag', + 'name' => 'TemplateType', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The list of tags.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The key of the tag.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TestKey', - ], - 'Value' => [ - 'description' => 'The value of the tag.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TestValue', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, - ], + 'schema' => ['description' => 'The type of the custom transcoding template. Valid values:'."\n" + ."\n" + .'- **h264**: custom H.264 standard transcoding.'."\n" + ."\n" + .'- **h264-nbhd**: custom H.264 Narrowband HD™ transcoding.'."\n" + ."\n" + .'- **h265**: custom H.265 standard transcoding.'."\n" + ."\n" + .'- **h265-nbhd**: custom H.265 Narrowband HD™ transcoding.'."\n" + ."\n" + .'- **audio**: audio-only transcoding.'."\n" + ."\n" + .'> For video types, Height, Width, FPS, and VideoBitrate are required.', 'type' => 'string', 'required' => true, 'example' => 'h264', 'title' => ''], ], [ - 'name' => 'ResourceGroupId', + 'name' => 'Height', 'in' => 'query', - 'allowEmptyValue' => true, - 'schema' => [ - 'description' => 'The ID of the resource group.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rg-aek2egyoep3jp7a', - ], + 'schema' => ['description' => 'Output video height in pixels. Requirements:'."\n" + ."\n" + .'- **Height ≥ 100**'."\n" + ."\n" + .'- **max(Height, Width) ≤ 2560**'."\n" + ."\n" + .'- **min(Height, Width) ≤ 1440**'."\n" + ."\n" + .'> For h265-nbhd, it cannot exceed 720.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '720', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Domains' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'PageData' => [ - 'description' => 'The domain names.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the domain name.'."\n", - 'type' => 'object', - 'properties' => [ - 'Cname' => [ - 'description' => 'The CNAME generated for the domain name.'."\n", - 'type' => 'string', - 'example' => 'learn.developer.aliyundoc.com', - ], - 'Description' => [ - 'description' => 'The description.'."\n", - 'type' => 'string', - 'example' => 'test', - ], - 'DomainName' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'GmtCreated' => [ - 'description' => 'The time when the domain name was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-08-29T12:15:36Z', - ], - 'GmtModified' => [ - 'description' => 'The time when the domain name was last modified. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-12-29T12:15:36Z', - ], - 'LiveDomainStatus' => [ - 'description' => 'The status of the domain name. Valid values:'."\n" - ."\n" - .'* **online**'."\n" - .'* **offline**'."\n" - .'* **configuring**'."\n", - 'type' => 'string', - 'example' => 'online', - ], - 'LiveDomainType' => [ - 'description' => 'The type of the domain name. Valid values:'."\n" - ."\n" - .'* **liveVideo**: streaming domain'."\n" - .'* **liveEdge**: ingest domain'."\n", - 'type' => 'string', - 'example' => 'liveVideo', - ], - 'RegionName' => [ - 'description' => 'The ID of the region in which the domain name resides.'."\n", - 'type' => 'string', - 'example' => 'cn-beijing', - ], - 'ResourceGroupId' => [ - 'description' => 'The ID of the resource group.'."\n", - 'type' => 'string', - 'example' => 'rg-aekzvyjetyjjmla', - ], - ], - ], - ], - ], - ], - 'PageNumber' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '100', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'E4EBD2BF-5EB0-4476-8829-9D94E1B15267', - ], - 'TotalCount' => [ - 'description' => 'The total number of entries.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - ], - 'description' => '', - ], + [ + 'name' => 'Width', + 'in' => 'query', + 'schema' => ['description' => 'Output video width in pixels.'."\n" + ."\n" + .'Requirements:'."\n" + ."\n" + .'- **Width ≥ 100**'."\n" + ."\n" + .'- **max(Height, Width) ≤ 2560**'."\n" + ."\n" + .'- **min(Height, Width) ≤ 1440**'."\n" + ."\n" + .'> For h265-nbhd, it cannot exceed 1280.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '576', 'title' => ''], ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidPageNumber.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter PageNumber is not supported.', - ], - [ - 'errorCode' => 'InvalidPageSize.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter PageSize is not supported.', - ], - [ - 'errorCode' => 'InvalidDomainStatus.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter DomainStatus is not supported.', - ], - [ - 'errorCode' => 'InvalidDomainName.Malformed', - 'errorMessage' => 'The specific value of parameter DomainName is malformed.', - ], - [ - 'errorCode' => 'InvalidDomainSearchType.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter DomainSearchType is not supported.', - ], - [ - 'errorCode' => 'InvalidDomainSearchType.Malformed', - 'errorMessage' => 'he specified value of parameter DomainSearchType is invalid.', - ], - [ - 'errorCode' => 'InvalidLiveDomainType.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter LiveDomainType is not supported.', - ], + [ + 'name' => 'FPS', + 'in' => 'query', + 'schema' => ['description' => 'The frame rate of the output video. Unit: frames per second (FPS). Valid values: 1 to **60**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''], ], - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Domains\\": {\\n \\"PageData\\": [\\n {\\n \\"Cname\\": \\"learn.developer.aliyundoc.com\\",\\n \\"Description\\": \\"test\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"GmtCreated\\": \\"2017-08-29T12:15:36Z\\",\\n \\"GmtModified\\": \\"2017-12-29T12:15:36Z\\",\\n \\"LiveDomainStatus\\": \\"online\\",\\n \\"LiveDomainType\\": \\"liveVideo\\",\\n \\"RegionName\\": \\"cn-beijing\\",\\n \\"ResourceGroupId\\": \\"rg-**kzvyjetyjjm**\\"\\n }\\n ]\\n },\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 100,\\n \\"RequestId\\": \\"E4EBD2BF-5EB0-4476-8829-9D94E1B15267\\",\\n \\"TotalCount\\": 1\\n}","type":"json"}]', - 'title' => 'DescribeLiveUserDomains', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'You can call this operation to query all domain names of ApsaraVideo Live within your Alibaba Cloud account. The supported types of domain names are streaming domains and edge ingest domains.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'StartLiveDomain' => [ - 'summary' => 'Enables a disabled domain name. After the domain name is enabled, its status changes to online.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'VideoBitrate', + 'in' => 'query', + 'schema' => ['description' => 'The output video bitrate. Unit: kbps. Valid values: 1 to **6000**.'."\n" + ."\n" + .'> The system tries to transcode the video at the specified bitrate. However, the actual bitrate may not be the same as the specified value, especially when the specified value is too high or too low.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '720', 'title' => ''], ], - ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107241', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'name' => 'AudioBitrate', + 'in' => 'query', + 'schema' => ['description' => 'The output audio bitrate. Unit: kbps. Valid values: 1 to **1000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '512', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'Gop', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain or streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The Group of Pictures (GOP) size. The unit can be frame or second. Valid values:'."\n" + ."\n" + .'- By frames: 1 to 3000.'."\n" + ."\n" + .'- By seconds: 1s to 20s.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '0AEDAF20-4DDF-4165-8750-47FF9C1929C9', - ], - ], - 'description' => '', - ], + [ + 'name' => 'Profile', + 'in' => 'query', + 'schema' => ['description' => 'The video codec profile. A larger value indicates better video quality and higher resource consumption for encoding and decoding. Valid values:'."\n" + ."\n" + .'- **1**: baseline (for mobile devices).'."\n" + ."\n" + .'- **2**: main (for SD devices).'."\n" + ."\n" + .'- **3**: high (for HD devices).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'RecordCheckNotAvailable', - 'errorMessage' => 'Please try again later.', - ], - [ - 'errorCode' => 'IcpBlack', - 'errorMessage' => 'The domain is on the ICP blacklist.', - ], - [ - 'errorCode' => 'IspBlack', - 'errorMessage' => 'The domain is on the ISP blacklist.', - ], - [ - 'errorCode' => 'DomainNotRecordedAliyun', - 'errorMessage' => 'The domain not access Ali Cloud for the record please access.', - ], + [ + 'name' => 'AudioProfile', + 'in' => 'query', + 'schema' => ['description' => 'The audio profile. Valid values:'."\n" + ."\n" + .'- **aac\\_low**'."\n" + ."\n" + .'- **aac\\_he**'."\n" + ."\n" + .'- **aac\\_he\\_v2**'."\n" + ."\n" + .'- **aac\\_ld**', 'type' => 'string', 'required' => false, 'example' => 'aac_low', 'title' => ''], ], - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0AEDAF20-4DDF-4165-8750-47FF9C1929C9\\"\\n}","type":"json"}]', - 'title' => 'StartLiveDomain', - 'description' => 'This operation does not work if the Alibaba Cloud account to which the domain name belongs has overdue payments or the domain name is invalid.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'StopLiveDomain' => [ - 'summary' => 'Disables an enabled domain name. After the domain name is disabled, its status changes to offline.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'AudioCodec', + 'in' => 'query', + 'schema' => ['description' => 'The audio codec. Valid values:'."\n" + ."\n" + .'- **AAC**'."\n" + ."\n" + .'- **MP3**', 'type' => 'string', 'required' => false, 'example' => 'AAC', 'title' => ''], ], - ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107251', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'name' => 'AudioRate', + 'in' => 'query', + 'schema' => ['description' => 'The audio sample rate. Valid values: **22050** to **96000**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'If you set AudioProfile to **aac\\_ld**, the sample rate cannot exceed 44100.'."\n" + ."\n" + .'>', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '96000', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'AudioChannelNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain or ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The number of audio channels. Valid values:'."\n" + ."\n" + .'- **1**: mono.'."\n" + ."\n" + .'- **2**: stereo.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '324AEFFF-308C-4DA7-8CD3-01B277B98F28', - ], - ], - 'description' => '', - ], + [ + 'name' => 'Lazy', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable on-demand transcoding. Valid values:'."\n" + ."\n" + .'- **yes**: Transcoding only starts when the first viewer requests this transcoded stream.'."\n" + ."\n" + .'- **no**: Transcoding starts immediately after the stream is published.', 'type' => 'string', 'required' => false, 'example' => 'yes', 'title' => ''], ], - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"324AEFFF-308C-4DA7-8CD3-01B277B98F28\\"\\n}","type":"json"}]', - 'title' => 'StopLiveDomain', - 'description' => 'After you disable a domain name, the information about the domain name is retained. ApsaraVideo Live automatically reroutes all requests that are destined for the domain name to the origin.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveCertificateDetail' => [ - 'summary' => 'Queries the details of a certificate.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'EncryptParameters', + 'in' => 'query', + 'schema' => ['description' => 'The encryption settings, formatted as a JSON string.'."\n" + ."\n" + .'- **EncryptType**: The encryption type. Set the value to aliyun.'."\n" + ."\n" + .'- **KmsKeyID**: The ID of the customer master key (CMK) in Key Management Service (KMS).'."\n" + ."\n" + .'- **KmsKeyExpireInterval**: The key rotation period. Unit: seconds. Valid values: **60 to 3600.**'."\n" + ."\n" + .'> If set, its internal fields cannot be empty.', 'type' => 'string', 'required' => false, 'example' => '{"EncryptType": "aliyun", "KmsKeyID":"afce5722-81d2-43c3-9930-7601da11****","KmsKeyExpireInterval":"3600"}', 'title' => ''], ], - ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'name' => 'ResWithSource', + 'in' => 'query', + 'schema' => ['description' => 'The adaptive resolution settings. If specified, it overrides the Height and Width parameters. Fieds:'."\n" + ."\n" + .'- **Type (string):** Required. Valid values:'."\n" + ."\n" + .' - **short**: sets the shorter edge of the video to the specified value and scales the other edge to maintain the original aspect ratio.'."\n" + ."\n" + .' - **long**: sets the longer edge of the video to the specified value and scales the other edge to maintain the original aspect ratio.'."\n" + ."\n" + .' - **screen**: Matches the output to a standard resolution, automatically flipping the dimensions based on the source\'s orientation.'."\n" + ."\n" + .'- **Value (string):** Required. Valid values:'."\n" + ."\n" + .' - For short: 360, 480, 540, 720, and 1080.'."\n" + ."\n" + .' - For long: 640, 848, 960, 1280, and 1920.'."\n" + ."\n" + .' - For screen: 640×360, 848×480, 960×540, 1280×720, and 1920×1080.', 'type' => 'string', 'required' => false, 'example' => '{"Type":"short","Value":"1080"}', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'CertName', + 'name' => 'FpsWithSource', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the certificate.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'Cert-****', - ], + 'schema' => ['description' => 'Adapts the output frame rate based on the source\'s frame rate, while keeping it within a specified range. If specified, it overrides the FPS parameter. Fields:'."\n" + ."\n" + .'- **UpLimit (integer):** Required. The upper limit of the frame rate. This must be an integer from 1 to 60 and greater than the lower limit.'."\n" + ."\n" + .'- **LowerLimit (integer):** Required. The lower limit of the frame rate. This must be an integer from 1 to 60 and less than the upper limit.', 'type' => 'string', 'required' => false, 'example' => '{"UpLimit":60,"LowerLimit":1}', 'title' => ''], + ], + [ + 'name' => 'BitrateWithSource', + 'in' => 'query', + 'schema' => ['description' => 'The adaptive bitrate settings. If specified, it overrides the VideoBitrate parameter. Fields:'."\n" + ."\n" + .'- **UpLimit (integer):** Required. The upper limit of the bitrate. This must be an integer from 128 to 10000 and greater than the lower limit.'."\n" + ."\n" + .'- **LowerLimit (integer):** Required. The lower limit of the bitrate. This must be an integer from 128 to 10000 and less than the upper limit.'."\n" + ."\n" + .'- **Factor (float):** Required: The factor by which the source bitrate is multiplied to calculate the output bitrate. Valid values: 0.1 to 1. The value can be accurate to one decimal place. A value of 1 indicates that the output bitrate is the same as the source bitrate.', 'type' => 'string', 'required' => false, 'example' => '{"UpLimit":2500,"LowerLimit":800,"Factor":1}', 'title' => ''], + ], + [ + 'name' => 'ExtWithSource', + 'in' => 'query', + 'schema' => ['description' => 'Other adaptive settings that align the transcoded stream with the source stream. Fields:'."\n" + ."\n" + .'- **KeyFrameOpen**: Specifies whether to align keyframes with the source stream. Valid values: yes and no.'."\n" + ."\n" + .'- **Copyts (string)**: Specifies whether to align the presentation timestamp (PTS) with the source stream. Valid values: yes and no.'."\n" + ."\n" + .'- **SeiMode**: The pass-through mode for Supplemental Enhancement Information (SEI). Valid values: 0 (disabled) and 1 (enabled).', 'type' => 'string', 'required' => false, 'example' => '{"KeyFrameOpen":"yes","Copyts":"yes","SeiMode":1}', 'title' => ''], + ], + [ + 'name' => 'DeInterlaced', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to automatically detect and remove interlacing during transcoding. Deinterlacing converts interlaced video into progressive video.'."\n" + ."\n" + .'- true: enables deinterlacing.'."\n" + ."\n" + .'- false: keeps the source format. This is the default value.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], ], 'responses' => [ @@ -2362,95 +1954,143 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CertName' => [ - 'description' => 'The name of the certificate.'."\n", - 'type' => 'string', - 'example' => 'Cert-****', - ], - 'Cert' => [ - 'description' => 'The content of the certificate.'."\n", - 'type' => 'string', - 'example' => '-----BEGIN CERTIFICATE-----****-----END CERTIFICATE-----', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'C7C69682-7F88-40DD-A198-10D0309E439B', - ], - 'CertId' => [ - 'description' => 'The ID of the certificate.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '23451111', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 404 => [ - [ - 'errorCode' => 'CertNameNotFound', - 'errorMessage' => 'The cert name is not found.', - ], + 400 => [ + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'TemplateLimit', 'errorMessage' => '%s Please check and try again later.', 'description' => 'The number of templates reached the upper limit.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CertName\\": \\"Cert-****\\",\\n \\"Cert\\": \\"-----BEGIN CERTIFICATE-----****-----END CERTIFICATE-----\\",\\n \\"RequestId\\": \\"C7C69682-7F88-40DD-A198-10D0309E439B\\",\\n \\"CertId\\": 23451111\\n}","errorExample":""},{"type":"xml","example":"\\n\\nC7C69682-7F88-40DD-A198-10D0309E439B\\n23451111\\nCert-****\\n-----BEGIN CERTIFICATE-----****-----END CERTIFICATE-----\\n","errorExample":"{\\n \\"CertId\\": xxx,\\n \\"RequestId\\": \\"C7C69682-7F88-40DD-A198-10D0309E439B\\",\\n \\"CertName\\": \\"证书名称\\",\\n \\"Cert\\": \\"-----BEGIN CERTIFICATE-----xxx-----END CERTIFICATE-----\\"\\n}"}]', - 'title' => 'DescribeLiveCertificateDetail', - 'description' => 'You can obtain the certificate name on the [Certificates](~~2584962~~) page of the ApsaraVideo Live console and then call this operation to query the certificate details.'."\n" + 'title' => 'AddCustomLiveStreamTranscode', + 'description' => 'This operation supports the following types of custom transcoding templates:'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- h264: H.264 standard transcoding.'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'- h264-nbhd: H.264 Narrowband HD™ transcoding.'."\n" + ."\n" + .'- h265: H.265 standard transcoding.'."\n" + ."\n" + .'- h265-nbhd: H.265 Narrowband HD™ transcoding.'."\n" + ."\n" + .'- audio: audio-only transcoding.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 6,000 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. For more information, see [QPS limit](~~343507~~).', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainCertificateInfo' => [ - 'summary' => 'Queries certificate information about a domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCustomLiveStreamTranscode'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCustomLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'AddLiveAIProduceRules' => [ + 'summary' => 'Adds a subtitle rule.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107011', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '218952', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain or ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'App', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live streaming application. The name can be up to 256 characters long and can contain digits, uppercase and lowercase letters, hyphens (-), and underscores (\\_). The AppName must match the AppName in the ingest URL for the template to take effect.', 'type' => 'string', 'required' => true, 'example' => 'AppName', 'title' => ''], + ], + [ + 'name' => 'Suffix', + 'in' => 'query', + 'schema' => ['description' => 'The suffix to match.', 'type' => 'string', 'required' => false, 'example' => 'test01', 'title' => ''], + ], + [ + 'name' => 'SubtitleName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the subtitle template.', 'type' => 'string', 'required' => false, 'example' => 'sub01', 'title' => ''], + ], + [ + 'name' => 'StudioName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the virtual background template.', 'type' => 'string', 'required' => false, 'example' => 'sub02', 'title' => ''], + ], + [ + 'name' => 'IsLazy', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether the rule is triggered by stream pulling. Valid values:'."\n" + ."\n" + .'- true: Subtitles are generated when stream pulling starts. If no stream is pulled for 5 minutes, subtitle generation stops. Subtitle generation resumes when stream pulling starts again.'."\n" + ."\n" + .'- false: Subtitles are generated when stream ingest starts, regardless of whether a stream is being pulled.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'LiveTemplate', + 'in' => 'query', + 'schema' => ['description' => 'The specifications of the output subtitles. Valid values:'."\n" + ."\n" + .'- Landscape low definition 360p (640 × 360): `lp_ld`'."\n" + ."\n" + .'- Portrait low definition 360p (360 × 640): `lp_ld_v`'."\n" + ."\n" + .'- Landscape standard definition 480p (854 × 480): `lp_sd`'."\n" + ."\n" + .'- Portrait standard definition 480p (480 × 854): `lp_sd_v`'."\n" + ."\n" + .'- Landscape high definition 720p (1280 × 720): `lp_hd`'."\n" + ."\n" + .'- Portrait high definition 720p (720 × 1280): `lp_hd_v`'."\n" + ."\n" + .'- Landscape ultra high definition 1080p (1920 × 1080): `lp_ud`'."\n" + ."\n" + .'- Portrait ultra high definition 1080p (1080 × 1920): `lp_ud_v`', 'type' => 'string', 'required' => true, 'example' => 'lp_ld', 'title' => ''], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => ['description' => 'The description of the subtitle rule. The description can contain Chinese and English characters, digits, and special characters. It can be up to 128 characters in length.', 'type' => 'string', 'required' => false, 'example' => 'live AI subtitle template', 'title' => ''], ], ], 'responses' => [ @@ -2458,249 +2098,74 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5C1E43DC-9E51-4771-82C0-7D5ECEB547A1', - ], - 'CertInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'CertInfo' => [ - 'description' => 'The certificate information.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Status' => [ - 'description' => 'The status of the free certificate that is used for testing. Valid values:'."\n" - ."\n" - .'* **success**: The certificate is effective.'."\n" - .'* **checking**: The system is checking whether the domain name is mapped to the CNAME that is assigned by ApsaraVideo Live.'."\n" - .'* **cname_error**: The domain name is not mapped to the CNAME that is assigned by ApsaraVideo Live.'."\n" - .'* **domain_invalid**: The domain name contains invalid characters.'."\n" - .'* **unsupport_wildcard**: The domain name is a wildcard domain name, which is not supported.'."\n" - .'* **applying**: The certificate is in the application progress.'."\n" - .'* **failed**: The application for the certificate failed.'."\n" - ."\n" - .'> The **Status** parameter is valid only if the certificate is a free certificate for testing. If the certificate is not a free certificate for testing, an empty value is returned.'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'CertLife' => [ - 'description' => 'The validity period of the certificate.'."\n" - ."\n" - .'* If the validity period is greater than 12 months, XX years XX months is displayed. For example, 2 years 3 months indicates that the validity period is 2 years and 3 months.'."\n" - .'* If the validity period is less than 12 months, XX months is displayed. For example, 3 months indicates that the validity period is 3 months.'."\n", - 'type' => 'string', - 'example' => '3 months', - ], - 'CertExpireTime' => [ - 'description' => 'The expiration time of the certificate. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-06-03T22:03:39Z', - ], - 'SSLPub' => [ - 'description' => 'The public key of the certificate.'."\n", - 'type' => 'string', - 'example' => 'yourSSLPub', - ], - 'SSLProtocol' => [ - 'description' => 'The status of HTTPS. Valid values:'."\n" - ."\n" - .'* **on**: HTTPS is enabled.'."\n" - .'* **off**: HTTPS is disabled.'."\n", - 'type' => 'string', - 'example' => 'on', - ], - 'CertType' => [ - 'description' => 'The type of the certificate. Valid values:'."\n" - ."\n" - .'* **free**: a free certificate (for testing)'."\n" - .'* **cas**: a certificate that is purchased from Certificate Management Service'."\n" - .'* **upload**: a custom certificate that you uploaded'."\n", - 'type' => 'string', - 'example' => 'cas', - ], - 'CertDomainName' => [ - 'description' => 'The streaming domain or ingest domain that matches the certificate.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'CertName' => [ - 'description' => 'The name of the certificate.'."\n", - 'type' => 'string', - 'example' => 'Cert-****', - ], - 'CertOrg' => [ - 'description' => 'The certificate authority (CA) that issued the certificate.'."\n", - 'type' => 'string', - 'example' => 'Let\'s Encrypt', - ], - 'DomainName' => [ - 'description' => 'The streaming domain or ingest domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - ], - 'description' => '', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', 'title' => ''], + 'RulesId' => ['description' => 'The ID of the subtitle rule.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], 'eventInfo' => [ 'enable' => false, 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5C1E43DC-9E51-4771-82C0-7D5ECEB547A1\\",\\n \\"CertInfos\\": {\\n \\"CertInfo\\": [\\n {\\n \\"Status\\": \\"success\\",\\n \\"CertLife\\": \\"3 months\\",\\n \\"CertExpireTime\\": \\"2018-06-03T22:03:39Z\\",\\n \\"SSLPub\\": \\"yourSSLPub\\",\\n \\"SSLProtocol\\": \\"on\\",\\n \\"CertType\\": \\"cas\\",\\n \\"CertDomainName\\": \\"example.com\\",\\n \\"CertName\\": \\"Cert-****\\",\\n \\"CertOrg\\": \\"Let\'s Encrypt\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\n \\n success\\n 3 months\\n example.com\\n yourSSLPub\\n Let\'s Encrypt\\n example.com\\n cas\\n 2018-06-03T22:03:39Z\\n Cert-****\\n on\\n \\n\\n5C1E43DC-9E51-4771-82C0-7D5ECEB547A1\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainCertificateInfo', - 'description' => 'Obtain a domain name, and then call this operation to query certificate information about the domain name.'."\n" + 'title' => 'AddLiveAIProduceRules', + 'description' => '- After you add a subtitle template by calling the [AddLiveAISubtitle](~~2848222~~) operation, you can call this operation to add a subtitle rule.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- To play a subtitle stream, append \\_{Subtitle template name} to the StreamName in the playback URL.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'DescribeLiveCertificateList' => [ - 'summary' => 'Queries the certificates of one or more specified domain names or all certificates within your Alibaba Cloud account.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], + .' - RTMP: rtmp\\://example.aliyundoc.com/app/stream\\_{Subtitle template name}?auth\\_key={access token}'."\n" + ."\n" + .' - FLV: http\\://example.aliyundoc.com/app/stream\\_{Subtitle template name}.flv?auth\\_key={access token}'."\n" + ."\n" + .' - M3U8: http\\://example.aliyundoc.com/app/stream\\_{Subtitle template name}.m3u8?auth\\_key={access token}'."\n" + ."\n" + .'>'."\n" + ."\n" + .'The real-time subtitle feature is in invitational preview. You can add up to 300 subtitle templates.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 60 per user. If you exceed this limit, API calls are throttled. This may affect your business. Plan your calls accordingly.', + 'changeSet' => [ + ['createdAt' => '2024-10-14T03:46:55.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-07-04T02:57:17.000Z', 'description' => 'Request parameters changed'], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAIProduceRules'], ], ], - 'parameters' => [ + 'ramActions' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain or streaming domain. Separate multiple domain names with commas (,).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'demo.aliyundoc.com,example.com', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'CertificateListModel' => [ - 'description' => 'The details.'."\n", - 'type' => 'object', - 'properties' => [ - 'Count' => [ - 'description' => 'The number of certificates.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'CertList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Cert' => [ - 'description' => 'The certificates.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the certificate.'."\n", - 'type' => 'object', - 'properties' => [ - 'LastTime' => [ - 'description' => 'The time when the certificate was issued. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1512388659', - ], - 'Fingerprint' => [ - 'description' => 'The fingerprint of the certificate.'."\n", - 'type' => 'string', - 'example' => '****', - ], - 'CertName' => [ - 'description' => 'The name of the certificate.'."\n", - 'type' => 'string', - 'example' => 'Cert-****', - ], - 'Issuer' => [ - 'description' => 'The certificate authority (CA) that issued the certificate.'."\n", - 'type' => 'string', - 'example' => '*****', - ], - 'CertId' => [ - 'description' => 'The ID of the certificate.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '123456', - ], - 'Common' => [ - 'description' => 'The Common Name (CN) attribute of the certificate.'."\n", - 'type' => 'string', - 'example' => 'example.net', - ], - ], - ], - ], - ], - ], - ], - ], + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAIProduceRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], - 'description' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"CertificateListModel\\": {\\n \\"Count\\": 2,\\n \\"CertList\\": {\\n \\"Cert\\": [\\n {\\n \\"LastTime\\": 1512388659,\\n \\"Fingerprint\\": \\"****\\",\\n \\"CertName\\": \\"Cert-****\\",\\n \\"Issuer\\": \\"*****\\",\\n \\"CertId\\": 123456,\\n \\"Common\\": \\"example.net\\"\\n }\\n ]\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\n 2\\n \\n \\n ****\\n *****\\n 123456\\n Cert-****\\n 1512388659\\n example.net\\n \\n \\n\\n","errorExample":""}]', - 'title' => 'DescribeLiveCertificateList', - 'description' => 'If you specify one or more domain names in the request, the certificates of the domain names are returned. If you do not specify a domain name in the request, all certificates within your Alibaba Cloud account are returned.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\",\\n \\"RulesId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\"\\n}","type":"json"}]', ], - 'SetLiveDomainCertificate' => [ - 'summary' => 'Enables or disables the certificate of a domain name, and modifies the certificate information.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'AddLiveAISubtitle' => [ + 'summary' => 'Adds a subtitle template by calling AddLiveAISubtitle.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -2708,99 +2173,136 @@ ], 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '220749', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name that is secured by the certificate. The domain name uses `HTTPS`-based acceleration.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'developer.aliyundoc.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CertName', + 'name' => 'SubtitleName', 'in' => 'query', - 'schema' => [ - 'description' => 'The certificate name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Cert-****', - ], + 'schema' => ['description' => 'The name of the subtitle template. The name can contain only digits, letters, and hyphens (-). The name cannot start with a hyphen.', 'type' => 'string', 'required' => true, 'example' => 'sub01', 'title' => ''], ], [ - 'name' => 'CertType', + 'name' => 'SrcLanguage', 'in' => 'query', - 'schema' => [ - 'description' => 'The certificate type. Valid values:'."\n" - ."\n" - .'* **upload**: a custom certificate'."\n" - .'* **cas**: a certificate that is purchased from Certificate Management Service'."\n" - .'* **free**: a free certificate (for testing)'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'free', - 'enum' => [ - 'free', - 'cas', - 'upload', - ], - ], + 'schema' => ['description' => 'The source language. Valid values:'."\n" + .'- English: en-US'."\n" + .'- Chinese: zh-CN'."\n" + .'- Russian: ru-RU.', 'type' => 'string', 'required' => true, 'example' => 'zh-CN', 'title' => ''], ], [ - 'name' => 'SSLProtocol', + 'name' => 'DstLanguage', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable the HTTPS certificate. Valid values:'."\n" - ."\n" - .'* **on**. If you set this parameter to **on**, you must also specify the SSLPub and SSLPri parameters.'."\n" - .'* **off**. This is the default value.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'off', - ], + 'schema' => ['description' => 'The target language for translation. Valid values:'."\n" + .'- English: en-US'."\n" + .'- Chinese: zh-CN'."\n" + .'- Spanish: es-ES'."\n" + .'- Russian: ru-RU.', 'type' => 'string', 'required' => false, 'example' => 'zh-CN', 'title' => ''], ], [ - 'name' => 'SSLPub', + 'name' => 'FontColor', 'in' => 'query', - 'schema' => [ - 'description' => 'The public key.'."\n" - ."\n" - .'> This parameter is required only if you set the SSLProtocol parameter to on.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '****', - ], + 'schema' => ['description' => 'The font color. Specify the value in RGBA format.', 'type' => 'string', 'required' => false, 'example' => '0xFFFFFF', 'title' => ''], ], [ - 'name' => 'SSLPri', + 'name' => 'FontName', 'in' => 'query', - 'schema' => [ - 'description' => 'The private key.'."\n" - ."\n" - .'> This parameter is required only if you set the SSLProtocol parameter to on.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '****', - ], + 'schema' => ['description' => 'The font. Valid values:'."\n" + .'- KaiTi: KaiTi (default)'."\n" + .'- AlibabaPuHuiTi-Regular: Alibaba PuHuiTi Regular'."\n" + .'- AlibabaPuHuiTi-Bold: Alibaba PuHuiTi Bold'."\n" + .'- AlibabaPuHuiTi-Light: Alibaba PuHuiTi Light'."\n" + .'- NotoSansHans-Regular: Noto Sans SC Regular'."\n" + .'- NotoSansHans-Bold: Noto Sans SC Bold'."\n" + .'- NotoSansHans-Light: Noto Sans SC Light.', 'type' => 'string', 'required' => false, 'example' => 'KaiTi', 'title' => ''], ], [ - 'name' => 'ForceSet', + 'name' => 'BgColor', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to check the certificate name for duplicates. A value of 1 indicates that the system does not perform the check and overwrites the information about the certificate that has the same name. Set the value to **1**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The background color of the subtitle. Specify the value in RGBA format.', 'type' => 'string', 'required' => false, 'example' => '0xFF0000', 'title' => ''], + ], + [ + 'name' => 'PositionNormalized', + 'in' => 'query', + 'style' => 'json', + 'schema' => [ + 'description' => 'The position of the subtitle. The value is the x,y coordinates with the bottom-left corner of the screen as the origin.'."\n" + ."\n" + .'> The x and y values must be normalized. The actual values are multiplied by the video height. For example, if the video height is 720p and PositionNormalized is set to [0.1, 0.5], the actual position of the subtitle is x = 72 and y = 360.', + 'type' => 'array', + 'items' => ['description' => 'The coordinate value of the subtitle position.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.32', 'title' => ''], + 'required' => true, + 'example' => '[0.32,0.27]', + 'title' => '', + ], + ], + [ + 'name' => 'ShowSourceLan', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to display the source language. Default value: false.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'MaxLines', + 'in' => 'query', + 'schema' => ['description' => 'The number of lines to display.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'WordPerLine', + 'in' => 'query', + 'schema' => ['description' => 'The number of characters per line. Valid values: integers in the range of [1, 500].', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '20', 'title' => ''], + ], + [ + 'name' => 'FontSizeNormalized', + 'in' => 'query', + 'schema' => ['description' => 'The font size. Valid values: [0, 1].', 'type' => 'number', 'format' => 'float', 'required' => true, 'example' => '0.037', 'title' => ''], + ], + [ + 'name' => 'BorderWidthNormalized', + 'in' => 'query', + 'schema' => ['description' => 'The font weight. Valid values: [0, 1].', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.05', 'title' => ''], + ], + [ + 'name' => 'BgWidthNormalized', + 'in' => 'query', + 'schema' => ['description' => 'The background size of the subtitle. Valid values: [0, 1].', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.09', 'title' => ''], + ], + [ + 'name' => 'CopyFrom', + 'in' => 'query', + 'schema' => ['description' => 'The subtitle template to copy from. Set this parameter to the value of SubtitleName.', 'type' => 'string', 'required' => false, 'example' => 'sub01', 'title' => ''], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => ['description' => 'The custom description of the subtitle. The description can contain Chinese characters, letters, digits, and special characters, and can be up to 128 characters in length.', 'type' => 'string', 'required' => false, 'example' => 'live AI subtitle template', 'title' => ''], + ], + [ + 'name' => 'Width', + 'in' => 'query', + 'schema' => ['description' => 'The width of the preview screen. Unit: px.', 'type' => 'string', 'required' => false, 'example' => '1280', 'title' => ''], + ], + [ + 'name' => 'Height', + 'in' => 'query', + 'schema' => ['description' => 'The height of the preview screen. Unit: px.'."\n" + ."\n" + .'The width × height of the preview screen supports only the following specifications: '."\n" + .'- Landscape low definition 360P: 640 × 360 '."\n" + .'- Portrait low definition 360P: 360 × 640'."\n" + .'- Landscape standard definition 480P: 854 × 480'."\n" + .'- Portrait standard definition 480P: 480 × 854'."\n" + .'- Landscape high definition 720P: 1280 × 720'."\n" + .'- Portrait high definition 720P: 720 × 1280'."\n" + .'- Landscape ultra-high definition 1080P: 1920 × 1080'."\n" + .'- Portrait ultra-high definition 1080P: 1080 × 1920.', 'type' => 'string', 'required' => false, 'example' => '720', 'title' => ''], ], ], 'responses' => [ @@ -2808,218 +2310,277 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', 'title' => ''], + 'SubtitleId' => ['description' => 'The subtitle template ID.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidSSLProtocol.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter SSLProtocol is not supported.', - ], - [ - 'errorCode' => 'SSLPub.MissingParameter', - 'errorMessage' => 'An input parameter "SSLPub" that is mandatory for processing the request is not supplied.', - ], - [ - 'errorCode' => 'SSLPri.MissingParameter', - 'errorMessage' => 'An input parameter "SSLPri" that is mandatory for processing the request is not supplied.', - ], - [ - 'errorCode' => 'InvalidSSLPub', - 'errorMessage' => 'The SSLPub you provided is malformed!', - ], - [ - 'errorCode' => 'InvalidSSLPri', - 'errorMessage' => 'The SSLPri you provided is malformed!', - ], - [ - 'errorCode' => 'Certificate.MissMatch', - 'errorMessage' => 'The SSLPri does not math the specified Certificate!', - ], - [ - 'errorCode' => 'InvalidCertificate.TooLong', - 'errorMessage' => 'The Certificate you provided is over the max length!', - ], - [ - 'errorCode' => 'InvalidCertName.TooLong', - 'errorMessage' => 'The Certificate name you provided is over the max length 128!', - ], - [ - 'errorCode' => 'IllegalOperationDomain', - 'errorMessage' => 'You are not authorized to operate the domain.', - ], - [ - 'errorCode' => 'Certificate.NotPermittedOff', - 'errorMessage' => 'Turn off certificate will change domain scheduling, please contact customer service', - ], - [ - 'errorCode' => 'Certificate.SettedNotEffect', - 'errorMessage' => 'Certificate was successfully setted but does\'t take effect for protecting current service, please contact customer service', - ], - [ - 'errorCode' => 'Certificate.NotFind', - 'errorMessage' => 'Not find the certificate info.', - ], - [ - 'errorCode' => 'AuthenticationFailed', - 'errorMessage' => 'Authentication failed.', - ], - [ - 'errorCode' => 'SetDomainCertificate.ParameterError', - 'errorMessage' => 'Parameters have error.', - ], - [ - 'errorCode' => 'InvalidSSLPubOrInvalidSSLPri', - 'errorMessage' => 'The SSLPri or SSLPub you provided is malformed!', - ], - [ - 'errorCode' => 'Certificate.StatusError', - 'errorMessage' => 'Certificate is not exist or its status is error.', - ], - [ - 'errorCode' => 'DeleteFailed', - 'errorMessage' => 'Delete certificate is failed.', - ], - [ - 'errorCode' => 'Certificate.Duplicated', - 'errorMessage' => 'The certificate name is duplicated.', - ], - [ - 'errorCode' => 'Certificate.FormatError', - 'errorMessage' => 'The certificate format is error.', - ], - [ - 'errorCode' => 'Certificate.KeyNull', - 'errorMessage' => 'The private key is not null.', - ], - [ - 'errorCode' => 'Key.Malformed', - 'errorMessage' => 'The private key format is error.', - ], - [ - 'errorCode' => 'CertStorage.failed', - 'errorMessage' => 'The certificate storage failed.', - ], - [ - 'errorCode' => 'CertificateContent.Duplicated', - 'errorMessage' => 'The certificate is already uploaded, please don\'t upload again.', - ], - [ - 'errorCode' => 'Certificate.Expired', - 'errorMessage' => 'The certificate is expired.', - ], - [ - 'errorCode' => 'InvalidDomain.notOnline', - 'errorMessage' => 'The domain is not online, please check the domain status and try again later.', - ], - [ - 'errorCode' => 'Decode.Error', - 'errorMessage' => 'The certificate sslpub or sslpri decode error.', - ], - [ - 'errorCode' => 'sslPub.Error', - 'errorMessage' => 'The SSLPub encoded failed.', - ], - [ - 'errorCode' => 'sslPri.Error', - 'errorMessage' => 'The SSLPri encoded failed.', - ], - [ - 'errorCode' => 'DomainInSafeMode', - 'errorMessage' => 'This domain is in the safe mode. if you want to do this operation, please contact us!', - ], - [ - 'errorCode' => 'DomainInProtectedMode', - 'errorMessage' => 'This domain is in the protected mode. if you want to do this operation, please contact us!', - ], - [ - 'errorCode' => 'FunctionMutex', - 'errorMessage' => 'Function is mutex with other function.', - ], - [ - 'errorCode' => 'DomainOffline', - 'errorMessage' => 'The domain is not online, please check the domain status and try again later.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], - 403 => [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => 'Illegal domain operate is not permitted.', - ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\",\\n \\"SubtitleId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\"\\n}","type":"json"}]', + 'title' => 'Add a live subtitle template', + 'description' => '## Operation description'."\n" + ."\n" + .'- This operation allows you to add a live subtitle template configuration. The template configuration describes subtitle content, layout, and other information.'."\n" + .'- After you add a subtitle template, call the [AddLiveAIProduceRules](~~2799676~~) operation to add subtitle rules. The subtitles take effect in the stream only after you re-ingest the stream.'."\n" + .'- Real-time subtitles are supported only in the Beijing, Shanghai, Singapore, Indonesia, and Saudi Arabia regions.'."\n" + ."\n" + .'>The real-time subtitle feature is in public preview. Each user can add up to 300 subtitle templates. The feature is free of charge during the public preview. After the public preview ends, standard billing applies. The specific date will be announced separately.'."\n" + .'>'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 60 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation as appropriate. For more information, see [QPS limit](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2024-12-04T05:54:29.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAISubtitle'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'CertName.MissingParameter', - 'errorMessage' => 'The CertName parameter is required.', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAISubtitle', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t0AEDAF20-4DDF-4165-8750-47FF9C1929C9\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"0AEDAF20-4DDF-4165-8750-47FF9C1929C9\\"\\n}"}]', - 'title' => 'SetLiveDomainCertificate', - 'description' => 'Obtain the domain name, and then call this operation to enable or disable the certificate of a domain name and modify the certificate information.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'BatchDeleteLiveDomainConfigs' => [ - 'summary' => 'Deletes the configurations of multiple domain names at a time.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'AddLiveAppRecordConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], - ], + 'systemTags' => ['operationType' => 'create'], 'parameters' => [ [ - 'name' => 'DomainNames', + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The AppName of the live stream. The template only applies if this name matches the `AppName` in the ingest URL. Use an asterisk (`*`) to match all AppNames.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'OssEndpoint', + 'in' => 'query', + 'schema' => ['description' => 'The endpoint for OSS storage. You must create an OSS bucket before using this feature. See [Configure OSS](~~84932~~).', 'type' => 'string', 'required' => true, 'example' => 'oss-cn-beijing.aliyuncs.com', 'title' => ''], + ], + [ + 'name' => 'OssBucket', + 'in' => 'query', + 'schema' => ['description' => 'The name of the OSS bucket for storage.', 'type' => 'string', 'required' => true, 'example' => 'liveBucket****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name. The template only applies if this name matches the StreamName in the ingest URL. Use an asterisk (`*`) to match all streams under the AppName.', 'type' => 'string', 'required' => false, 'example' => 'teststream', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The recording start time. Format: *yyyy-MM-dd*T*HH:mm:ss*Z (UTC time).'."\n" + ."\n" + .'> This parameter is only effective for stream-level recordings (i.e., when `StreamName` is specified). The time must be within 7 days of the actual stream start time.', 'type' => 'string', 'required' => false, 'example' => '2018-04-10T09:57:21Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The recording end time. Format: *yyyy-MM-dd*T*HH:mm:ss*Z (UTC time).'."\n" + ."\n" + .'> This parameter is only effective for stream-level recordings. The interval between EndTime and StartTime cannot exceed 7 days.', 'type' => 'string', 'required' => false, 'example' => '2018-04-16T09:57:21Z', 'title' => ''], + ], + [ + 'name' => 'OnDemand', + 'in' => 'query', + 'schema' => ['description' => 'Specifies the recording mode. Valid values:'."\n" + ."\n" + .'- **0** (default): Automatic recording.'."\n" + ."\n" + .'- **1**: On-demand recording via HTTP callback. You need to configure OnDemandUrl through the [AddLiveRecordNotifyConfig](~~2847891~~) operation first, otherwise recording is disabled by default.'."\n" + ."\n" + .'- **2**: On-demand recording by parsing parameters in the ingest URL.'."\n" + ."\n" + .'- **7**: Manual recording, disabled by default. You can manually start o. stop recording through the [RealTimeRecordCommand](~~2847882~~) API.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'DelayTime', + 'in' => 'query', + 'schema' => ['description' => 'The window in seconds for merging fragmented recording after an interruption. If a stream disconnects and reconnects within this window, the recording will continue in the same file. Valid values: 15 to 21600.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '180', 'title' => ''], + ], + [ + 'name' => 'RecordFormat', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The ingest domain or streaming domain. Separate multiple domain names with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com,example.aliyundoc.com,example.com', + 'description' => 'The recording details.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'SliceDuration' => ['description' => 'The duration of a single segment. Unit: seconds.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter takes effect only when RecordFormat.N.Format is set to m3u8 or cmaf.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'If not specified, the default value is 30 seconds. Valid values: 5s to 30s.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''], + 'SliceOssObjectPrefix' => ['description' => 'The naming pattern for segments.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter takes effect only when RecordFormat.N.Format is set to m3u8 or cmaf.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- By default, each segment is 30 seconds long and less than 256 bytes. Supports variables: {AppName}, {StreamName}, {UnixTimestamp}, {Sequence}.'."\n" + ."\n" + .'- The value must include the {UnixTimestamp} and {Sequence} variables.', 'type' => 'string', 'required' => false, 'example' => 'record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}', 'title' => ''], + 'CycleDuration' => ['description' => 'The duration of a single recording cycle in seconds.'."\n" + ."\n" + .'> - If not specified, the default value is used. Different recording formats have different default values: m3u8 and cmaf formats default to 6 hours, while flv and mp4 formats default to 1 hour.'."\n" + .'>'."\n" + .'> - If a live stream is interrupted during a recording cycle but resumes normal streaming within the merge window, recording will continue in the same file.'."\n" + .'>'."\n" + .'> - A recording file is generated only when a live stream is interrupted for longer than the merge window.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + 'OssObjectPrefix' => ['description' => 'The naming pattern for the recording file stored in OSS.'."\n" + ."\n" + .'- The file name must be less than 256 bytes. Supports variables: {AppName}, {StreamName}, {Sequence}, {StartTime}, {EndTime}, {EscapedStartTime}, {EscapedEndTime}.'."\n" + ."\n" + .'- The value must include either {StartTime} or {EscapedStartTime} and either {EndTime} or {EscapedEndTime}.', 'type' => 'string', 'required' => false, 'example' => 'record/{AppName}/{StreamName}/{Sequence}_{EscapedStartTime}_{EscapedEndTime}', 'title' => ''], + 'Format' => ['description' => 'The recording format. Valid values:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'If you choose m3u8 or cmaf, you must also set SliceOssObjectPrefix and SliceDuration.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- m3u8.'."\n" + ."\n" + .'- flv.'."\n" + ."\n" + .'- mp4.'."\n" + ."\n" + .'- cmaf.', 'type' => 'string', 'required' => false, 'example' => 'm3u8', 'title' => ''], + ], + 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 3, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'FunctionNames', + 'name' => 'TranscodeRecordFormat', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The names of the features. Separate multiple features with commas (,). For more information, see **Features specified by the Functions parameter**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'referer_white_list_set,ip_black_list_set', + 'description' => 'The transcoding recording details.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'SliceDuration' => ['description' => 'The duration of a single segment for transcoded stream recording. Unit: seconds.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter takes effect only when TranscodeRecordFormat.N.Format is set to m3u8 or cmaf.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'If not specified, the default value is 30 seconds. Valid values: 5s to 30s.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''], + 'SliceOssObjectPrefix' => ['description' => 'The naming pattern for segments of the transcoded stream.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required only when TranscodeRecordFormat.N.Format is set to m3u8 or cmaf.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- By default, each segment is 30 seconds long. The file name must be less than 256 bytes. Supports variables: {AppName}, {StreamName}, {UnixTimestamp}, {Sequence}.'."\n" + ."\n" + .'- The value must include the {UnixTimestamp} and {Sequence} variables.', 'type' => 'string', 'required' => false, 'example' => 'record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}', 'title' => ''], + 'CycleDuration' => ['description' => 'The duration of a single recording cycle in seconds.'."\n" + ."\n" + .'> If not specified, the default value is used. Different recording formats have different default values: m3u8 and cmaf formats default to 6 hours, while flv and mp4 formats default to 1 hour.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '21600', 'title' => ''], + 'OssObjectPrefix' => ['description' => 'The maning pattern of the recording file stored in OSS for transcoded stream.'."\n" + ."\n" + .'- The file name must be less than 256 bytes. Supports variables: {AppName}, {StreamName}, {Sequence}, {StartTime}, {EndTime}, {EscapedStartTime}, {EscapedEndTime}.'."\n" + ."\n" + .'- The value must include either {StartTime} or {EscapedStartTime} and either {EndTime} or {EscapedEndTime}.', 'type' => 'string', 'required' => false, 'example' => 'record/{AppName}/{StreamName}/{Sequence}_{EscapedStartTime}_{EscapedEndTime}', 'title' => ''], + 'Format' => ['description' => 'The format for transcoded stream recording. Valid values:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'If you select the m3u8 or cmaf format, you must also set the TranscodeRecordFormat.N.SliceOssObjectPrefix and TranscodeRecordFormat.N.SliceDuration request parameters.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- m3u8.'."\n" + ."\n" + .'- flv.'."\n" + ."\n" + .'- mp4.'."\n" + ."\n" + .'- cmaf.', 'type' => 'string', 'required' => false, 'example' => 'm3u8', 'title' => ''], + ], + 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 3, + 'title' => '', + 'example' => '', + ], + ], + [ + 'name' => 'TranscodeTemplates', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The transcoding template group.', + 'type' => 'array', + 'items' => ['description' => '- The [transcoding template](~~45039~~). You can configure multiple templates, up to 10.'."\n" + ."\n" + .'- When setting TranscodeRecordFormat.N.xxx configurations, you need to set at least one TranscodeTemplates.'."\n" + ."\n" + .'- To record multiple or all transcoded streams, you can set TranscodeTemplates.1 to \\*\\*\\*\\*\\* (five asterisks).'."\n" + ."\n" + .'> TranscodeTemplates is not allowed to pass in `raw`, which is a reserved identifier.
The .N in TranscodeTemplates.N represents an incremental index for specifying multiple templates. For example: TranscodeTemplates.1=sd, TranscodeTemplates.2=hd.', 'type' => 'string', 'required' => false, 'example' => 'sd', 'title' => ''], + 'required' => false, + 'example' => 'sd', + 'maxItems' => 10, + 'title' => '', ], ], ], @@ -3028,127 +2589,156 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Invalid%s.ValueNotSupported', - 'errorMessage' => 'FunctionName [%s] is not supported.', - ], + ['errorCode' => 'InvalidOssEndpoint.Malformed', 'errorMessage' => '%s', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.Malformed', 'errorMessage' => 'Specified parameter OssBucket is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.NotFound', 'errorMessage' => 'The parameter OssBucket does not exist.', 'description' => ''], + ['errorCode' => 'InvalidFormat.Malformed', 'errorMessage' => 'Specified parameter Format is not valid.', 'description' => 'Invalid value of Format. Check whether the Format parameter that you specified is correct.'], + ['errorCode' => 'InvalidCycleDuration.Malformed', 'errorMessage' => 'Specified CycleDuration Format is not valid.', 'description' => 'Invalid format of CycleDuration. Check whether the format of the CycleDuration parameter is correct.'], + ['errorCode' => 'InvalidSliceDuration.Malformed', 'errorMessage' => 'Specified SliceDuration Format is not valid.', 'description' => ''], + ['errorCode' => 'InvalidTemplateLength.Malformed', 'errorMessage' => 'Specified record template length is not valid.', 'description' => ''], + ['errorCode' => 'InvalidTemplate.ForbidRaw', 'errorMessage' => 'Template named raw is Forbidden.', 'description' => ''], + ['errorCode' => 'MissingTemplate', 'errorMessage' => 'Template is mandatory for this action.', 'description' => ''], + ['errorCode' => 'MissingOssObjectPrefix', 'errorMessage' => 'OssObjectPrefix is mandatory for this action.', 'description' => ''], + ['errorCode' => 'MissingSliceOssObjectPrefix', 'errorMessage' => 'SliceOssObjectPrefix is mandatory for this action.', 'description' => ''], + ['errorCode' => 'InvalidOssObjectPrefix.Malformed', 'errorMessage' => 'Specified parameter OssObjectPrefix is not valid.', 'description' => ''], + ['errorCode' => 'InvalidSliceOssObjectPrefix.Malformed', 'errorMessage' => 'Specified parameter SliceOssObjectPrefix is not valid.', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'InvalidFormat.IllegalOperation', 'errorMessage' => 'Specified parameter Format can not be multiple.', 'description' => ''], + ['errorCode' => 'InvalidDelayTime', 'errorMessage' => 'Specified Delaytime is invalid.', 'description' => ''], + ['errorCode' => 'Live2Vod.ConfigAlreadyExists', 'errorMessage' => 'Had live2vod record config already.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified EndTime does not math the specified StartTime or current time.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Mismatch', 'errorMessage' => 'Specified StartTime does not math the current time.', 'description' => ''], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","type":"json"}]', - 'title' => 'BatchDeleteLiveDomainConfigs', - 'description' => 'Obtain the domain names for which you want to delete the configurations, and then call this operation to delete the configurations of these domain domains at a time.'."\n" + 'title' => 'AddLiveAppRecordConfig', + 'summary' => 'Configures live recording settings and saves the output to Object Storage Service (OSS).', + 'description' => '- Before using this API, ensure that you understand the billing methods and pricing of live recording. For details, see [Billing of live recording](~~195287~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- To save recordings to OSS, you must first activate the OSS service and create a bucket. For instructions, see [Record and store in OSS](~~84932~~).'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## Format of the FunctionNames parameter'."\n" + .'- Storing recorded files in OSS incurs storage fees, which are billed separately. For details, see [Storage fees](~~173534~~).'."\n" ."\n" - .'* Example: `[{"functionArgs":[{"argName":"domain_name","argValue":"developer.aliyundoc.com"}],"functionName":"set_req_host_header"}]`'."\n" + .'- The live recording feature allows you to record live streams and save them to a specified location for later playback. When saving to OSS, multiple formats (TS, MP4, FLV, CMAF) and recording strategies (automatic, on-demand, manual) are supported. Use this API to configure a recording template. For more information, see [Live recording](~~199357~~).'."\n" ."\n" - .'* Some features, such as filetype\\_based\\_ttl\\_set, support multiple configuration records. To update one of the configuration records, use configId to identify the record. Example: `[{"functionArgs":[{"argName":"file_type","argValue":"jpg"},{"argName":"ttl","argValue":"18"},{"argName":"weight","argValue":"30"}],"functionName":"filetype_based_ttl_set","configId":506***}]`'."\n" + .'- A unique recording configuration is identified by the triplet (`DomainName`, `AppName`, `StreamName`). Calling this API for a triplet that already has a configuration will result in an error indicating that the configuration already exists.'."\n" ."\n" - .'## Features specified by the FunctionNames parameter'."\n" + .'- Configurations set using this API take effect only after the stream is reingested. Once active, the configuration remains effective indefinitely.'."\n" + ."\n" + .'## QPS limits'."\n" ."\n" - .'|Feature|Attribute|'."\n" - .'|---|---|'."\n" - .'|**referer\\_white\\_list\\_set**: specifies the Referer whitelist.|**refer\\_domain\\_allow\\_list**: the Referers to be added to the whitelist. Separate multiple Referers with commas (,).**allow\\_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**.|'."\n" - .'|**referer\\_black\\_list\\_set**: specifies the Referer blacklist.|**refer\\_domain\\_deny\\_list**: the Referers to be added to the blacklist. Separate multiple Referers with commas (,).**allow\\_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**.|'."\n" - .'|**filetype\\_based\\_ttl\\_set**: specifies the time period after which a file expires.|**ttl**: the cache duration. Unit: seconds. Valid values: 1 to 99999999 (more than three years).**file\\_type**: the file type. Separate multiple file types with commas (,).**weight**: the weight of the file type. Valid values: **1 to 99**.|'."\n" - .'|**path\\_based\\_ttl\\_set**: specifies the time period after which a directory expires.|**ttl**: the cache duration. Unit: seconds. Valid values: 1 to 99999999 (more than three years).**path**: the directory, which must start with a forward slash (/).**weight**: the weight of the directory. Valid values: **1 to 99**.|'."\n" - .'|**oss\\_auth**: authenticates access to an Object Storage Service (OSS) bucket.|**oss\\_bucket\\_id**: the path of your OSS bucket.|'."\n" - .'|**ip\\_black\\_list\\_set**: specifies the IP address blacklist.|**ip\\_list**: the IP addresses to be added to the blacklist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**ip\\_allow\\_list\\_set**: specifies the IP address whitelist.|**ip\\_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**ip\\_white\\_list\\_set**: specifies the IP address whitelist for rate limiting.|**ip\\_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**error\\_page**: redirects an error page to a specified page.|**error\\_code**: the error code.**rewrite\\_page**: the page to which the error page is redirected.|'."\n" - .'|**set\\_req\\_host\\_header**: modifies the Host header of back-to-origin requests.|**domain\\_name**: the Host header of back-to-origin requests.|'."\n" - .'|**set\\_hashkey\\_args**: ignores the specified URL parameters.|**hashkey\\_args**: the parameters to be reserved. Separate multiple parameters with commas (,).**disable**: specifies whether to ignore all parameters. Valid values: on and off. A value of on specifies that all parameters are ignored. A value of off specifies that none of the parameters are ignored.|'."\n" - .'|**aliauth**: configures Alibaba Cloud authentication.|**auth\\_type**: the authentication type. Valid values: **type\\_a** and **no\\_auth**. A value of type\\_a specifies that authentication type A is enabled. A value of no\\_auth specifies that authentication is disabled.**auth\\_key1**: the primary authentication key. The authentication key can contain letters and digits. We recommend that you set the authentication key to a value that is 8 to 32 characters in length.**auth\\_key2**: the secondary authentication key.**ali\\_auth\\_delta**: the custom buffer time for authentication. Unit: minutes. We recommend that you set the value to at least 1 minute.**auth\\_m3u8**: specifies whether to enable M3U8 rewrite. If you enable M3U8 rewrite, the system completes authentication for TS segments in an M3U8 playlist to prevent failures in accessing the TS segments. Valid values: **on** (default) and **off**.|'."\n" - .'|**remote\\_auth**: configures remote authentication for live streaming.|**enable**: specifies whether to enable remote authentication. This attribute is required. Valid values: on and off.**remote\\_auth\\_path**: the address of the authentication server. This attribute is required.**remote\\_auth\\_pattern**: the authentication mode. The following fields are available:\\- **param**: specifies whether to pass parameters in the ingest URL to the authentication server. Valid values: pass (default) and fail.\\- **args\\_white**: the parameter that you want to pass. Separate multiple parameters with commas (,).\\- **args\\_black**: the parameter that you do not want to pass. Separate multiple parameters with commas (,).\\- **code**: the HTTP status code. A value in the form of code=XXX is returned by the authentication server to ApsaraVideo Live upon successful authentication. Example: code=200. A value in the form of code=~XXX is returned by the authentication server to ApsaraVideo Live upon failed authentication. Example: code=~403.\\- **delta**: the timeout duration for authentication.\\- **retry**: the number of retries upon authentication timeout.\\- **timeout**: the action to perform upon authentication timeout. Valid values: **pass** and **fail**. **pass**: ApsaraVideo Live passes the request. **fail**: ApsaraVideo Live returns the HTTP status code 403 that indicates failure.\\- **async**: specifies whether to enable asynchronous authentication. Valid values: **on** and **off** (default).|'."\n" - .'|**set\\_resp\\_header**: configures a response header. To verify the configuration, you can check the response message in a browser.|**key**: the name of the response header. Valid values:**Content-Type** **Cache-Control** **Content-Disposition** **Content-Language** **Expires** **Access-Control-Allow-Origin** **Access-Control-Allow-Methods** **Access-Control-Allow-Headers** **Access-Control-Max-Age** **Access-Control-Expose-Headers** **value**: the content of the response header. If you want to delete the header, enter null.|'."\n" - .'|**https\\_force**: configures force redirect to HTTPS.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https\\_force and http\\_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature.|'."\n" - .'|**http\\_force**: configures force redirect to HTTP.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https\\_force and http\\_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature.|'."\n" - .'|**forward\\_scheme**: configures adaptive back-to-origin.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.**scheme\\_origin**: the protocol of the origin. Valid values: http, https, and follow.**scheme\\_origin\\_port**: the port number of the origin. Valid values: 80, 443, and 80:443.|'."\n" - .'|**green\\_manager**: configures pornography detection.|**enable**: specifies whether to enable pornography detection. Valid values: **on** and **off**.|'."\n" - .'|**tmd\\_signature**: configures custom rate limiting rules.|**name**: the name of the rule, which must be globally unique.**path**: the uniform resource identifier (URI). You can specify duplicate URIs. However, you must verify their validity.**pathType**: the matching rule. Valid values: **0** and **1**. A value of 0 specifies a prefix match. A value of 1 specifies an exact match.**interval**: the interval at which data is monitored. Unit: seconds. The interval must be greater than or equal to 10 seconds.**count**: the number of visits from an IP address.**action**: the action to perform after the specified conditions are met. Valid values: **0** and **1**. A value of 0 specifies that access is blocked. A value of 1 specifies that bot detection is performed.**ttl**: the time period during which access is blocked. Unit: seconds.|'."\n" - .'|**l2\\_oss\\_key**: configures private key authentication for back-to-origin requests from L2 nodes to private OSS buckets.|**private\\_oss\\_auth**: specifies whether to authenticate access to a private OSS bucket. Valid values: **on** and **off**.|'."\n" - .'|**video\\_seek**: configures video seeking.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.|'."\n" - .'|**gzip**: configures Gzip compression.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.|'."\n" - .'|**tesla**: configures page optimization to accelerate access.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.|'."\n" - .'|**ali\\_ua**: configures User-Agent-based access control.|**ua**: the User-Agent.**type**: the type of the list. Valid values: **black** and **white**.|'."\n" - .'|**host\\_redirect**: configures URL rewrite.|**regex**: the URL to be rewritten. Example: ^/$.**replacement**: the destination URL. Example: /go/act/sale/tbzlsy.php.**flag**: the flag. Valid values: redirect and break.|'."\n" - .'|**ipv6**: configures IPv6.|**switch**: specifies whether to enable IPv6. This attribute is required. Valid values: **on** and **off**. If you want to disable this feature after this feature is enabled, deselect the feature in the console. Do not delete the configuration. Otherwise, the feature will still be enabled.**region**: the region in which you want to enable IPv6. Valid values: cn-beijing, cn-shanghai, cn-shenzhen, cn-qingdao, apsoutheast-1, eu-central-1, ap-northeast-1, and ap-southeast-5, which indicate China (Beijing), China (Shanghai), China (Shenzhen), China (Qingdao), Singapore, Germany (Frankfurt), Japan (Tokyo), and Indonesia (Jakarta), respectively.|'."\n" - .'|**ali\\_location**: configures region-based access control.|**location**: the regions.**type**: the type of the list. Valid values: **black** and **white**.|'."\n" - .'|**cc\\_defense**: configures protection against HTTP flood attacks.|**enable**: specifies whether to enable protection against HTTP flood attacks. Valid values: **on** and **off**.|'."\n" - .'|**alilive**: configures the live streaming settings.|**notify\\_url**: the URL for receiving notifications from ApsaraVideo Live.**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.**live\\_forbid\\_flv**: specifies whether to prohibit the playback of Flash Video (FLV) videos. Valid values: **on** and **off**.**live\\_forbid\\_rtmp**: specifies whether to prohibit the playback of Real-Time Messaging Protocol (RTMP) videos. Valid values: **on** and **off**.**live\\_forbid\\_hls**: specifies whether to prohibit the playback of HTTP Live Streaming (HLS) videos. Valid values: **on** and **off**.|'."\n" - .'|**ali\\_grtn**: specifies whether to connect to Global Realtime Transport Network (GRTN).|**grtn\\_rts\\_pub**: specifies whether to enable stream ingest over Real-Time Streaming (RTS). This attribute is applicable to ingest domains. Valid values: **on** and **off**.**grtn\\_rts\\_play**: specifies whether to enable streaming over RTS. This attribute is applicable to streaming domains. Valid values: **on** and **off**.**grtn\\_rts\\_transcode**: specifies whether to enable auto transcoding for RTS-based HTML5 playback. Valid values: **on** and **off**.|'."\n" - .'|**edge\\_function**: configures the edge function.|Required attributes:**rule**: the domain-specific language (DSL) rule.**pri**: the priority of the rule.**enable**: specifies whether to enable the rule. Valid values: **on** and **off**.Optional attributes:**name**: the name of the rule.**pos**: the position from which to execute the rule.**brk**: After the rule is hit, the rules after the specified position are skipped.**option**: the option.**grammar**: the grammar. Valid values: es2 and js. You can also leave this attribute empty.**jsmode**: the mode to manage the domain name whitelist in JavaScript. Valid values: **redirect** and **bypass**.|'."\n" - .'|**https\\_tls\\_version**: configures the Transport Layer Security (TLS) protocol versions.|**tls10**: specifies whether to enable TLS 1.0. Default value: **on**. Valid values: **on** and **off**.**tls11**: specifies whether to enable TLS 1.1. Default value: **on**. Valid values: **on** and **off**.**tls12**: specifies whether to enable TLS 1.2. Default value: **on**. Valid values: **on** and **off**.**tls13**: specifies whether to enable TLS 1.3. Default value: **on**. Valid values: **on** and **off**.|'."\n" - .'|**https\\_option** :configures HTTP settings.|**http2**: specifies whether to enable HTTP/2. Default value: **off**. Valid values: **on** and **off**.**live\\_http2**: specifies whether to enable live\\_http2. Default value: **off**. Valid values: **on** and **off**.|', + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'BatchSetLiveDomainConfigs' => [ - 'summary' => 'Configures multiple domain names at a time.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '# Considerations:'."\n" + ."\n" + .'- ApsaraVideo Live supports triggered stream pulling. If the streaming URL for a domain name is used for playback, ApsaraVideo Live is automatically triggered to pull live streams. If no live streams are played, ApsaraVideo Live does not pull live streams from the origin. In this case, automatic recording, on-demand recording, and manual recording are also disabled.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAppRecordConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAppRecordConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'AddLiveAppSnapshotConfig' => [ + 'summary' => 'Configures the snapshot feature for a streaming domain. The captured snapshots are stored in Object Storage Service (OSS). The configuration takes effect after you restart stream ingest.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106875', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ - 'name' => 'DomainNames', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain names that you want to batch configure. Supported domain names include ingest domains, main streaming domains, and sub-streaming domains. Separate multiple domain names with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com,example.aliyundoc.com,example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Functions', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The list of features.'."\n" - ."\n" - .'Some features, such as `filetype_based_ttl_set`, support multiple configuration records. To update one of the configuration records, use `configId` to identify the record. For more information, see **Format of the Functions parameter** and **Features specified by the Functions parameter**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => ' [{"functionArgs":[{"argName":"file_type","argValue":"jpg"},{"argName":"ttl","argValue":"18"},{"argName":"weight","argValue":"30"}],"functionName":"filetype_based_ttl_set","configId":506***}]', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name cannot start with a hyphen (-) or underscore (\\_). You can also specify an asterisk (\\*) as the value to match all applications.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'TimeInterval', + 'in' => 'query', + 'schema' => ['description' => 'The interval at which snapshots are captured. Unit: seconds. Valid values: **5 to 3600**.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '3600', 'minimum' => '5', 'example' => '5', 'title' => ''], + ], + [ + 'name' => 'OssEndpoint', + 'in' => 'query', + 'schema' => ['description' => 'The endpoint of the OSS bucket.'."\n" + ."\n" + .'After the configuration is complete, you can search for specific snapshots in the OSS console based on the callback information. You must configure the OSS endpoint in advance. For more information, see [Configure OSS](~~84932~~).', 'type' => 'string', 'required' => true, 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + ], + [ + 'name' => 'OssBucket', + 'in' => 'query', + 'schema' => ['description' => 'The name of the OSS bucket.'."\n" + ."\n" + .'After the configuration is complete, you can search for specific snapshots in the OSS console based on the callback information. You must create the OSS bucket in advance. For more information, see [Configure OSS](~~84932~~).', 'type' => 'string', 'required' => true, 'example' => 'liveBucket****', 'title' => ''], + ], + [ + 'name' => 'OverwriteOssObject', + 'in' => 'query', + 'schema' => ['description' => 'The naming format of snapshots that are stored in the overwrite mode, which means that a new snapshot overwrites the previous snapshot.'."\n" + ."\n" + .'- The name must be less than 256 bytes in length.'."\n" + ."\n" + .'- Only JPG images are supported.'."\n" + ."\n" + .'- The name can contain variables such as {AppName} and {StreamName}.', 'type' => 'string', 'required' => false, 'example' => '{AppName}/{StreamName}.jpg', 'title' => ''], + ], + [ + 'name' => 'SequenceOssObject', + 'in' => 'query', + 'schema' => ['description' => 'The naming format of snapshots that are stored in sequence,'."\n" + ."\n" + .'which means that a new snapshot does not overwrite the previous snapshot. You can call the [DescribeLiveStreamSnapshotInfo](~~2847902~~) operation to query the snapshots that were captured within a specific time period.'."\n" + ."\n" + .'- The name must be less than 256 bytes in length.'."\n" + ."\n" + .'- Only JPG images are supported.'."\n" + ."\n" + .'- The name can contain variables such as {AppName}, {StreamName}, {UnixTimestamp}, and {Sequence}. The name must contain at least one of the {UnixTimestamp} and {Sequence} variables.', 'type' => 'string', 'required' => false, 'example' => 'snapshot/{AppName}/{StreamName}/{UnixTimestamp}.jpg', 'title' => ''], + ], + [ + 'name' => 'Callback', + 'in' => 'query', + 'schema' => ['description' => 'The callback URL that is used to receive notifications about snapshot capture.', 'type' => 'string', 'required' => false, 'example' => 'https://learn.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ @@ -3156,156 +2746,115 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidFunctions.Malformed', - 'errorMessage' => 'Specified Functions is malformed.', - ], - [ - 'errorCode' => 'InvalidFunctionArgs.Malformed', - 'errorMessage' => 'The specified FunctionArgs is invalid.', - ], - [ - 'errorCode' => 'InvalidArgValue.Malformed', - 'errorMessage' => 'Specified ArgValue is malformed.', - ], - [ - 'errorCode' => 'Invalid%s.ValueNotSupported', - 'errorMessage' => 'FunctionName [%s] is not supported.', - ], - [ - 'errorCode' => 'Invalid%s.Malformed', - 'errorMessage' => 'ArgValue [%s] is malformed.', - ], - [ - 'errorCode' => 'MissingParameter%s', - 'errorMessage' => 'The specified value of ArgName[%s] is missing.', - ], - [ - 'errorCode' => 'FunctionMutex', - 'errorMessage' => 'Function is mutex with other function.', - ], - [ - 'errorCode' => 'RewriteHostRely', - 'errorMessage' => 'Domain name is configured as rewrite host by others.', - ], - [ - 'errorCode' => 'ConfigurationConflicts', - 'errorMessage' => 'The staging environment has a configuration in effect and cannot modify the production environment configuration.', - ], + ['errorCode' => 'InvalidOverwriteOssObjectOrSequenceOssObject.Malformed', 'errorMessage' => 'Specified paramters OverwriteOssObject or SequenceOssObject should have one.', 'description' => 'You can specify only one of the OverwriteOssObject and SequenceOssObject parameters.'], + ['errorCode' => 'InvalidOssBucket.Malformed', 'errorMessage' => 'Specified parameter OssBucket is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssEndpoint.Malformed', 'errorMessage' => 'Specified parameter OssEndpoint is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOverwriteOssObject.Malformed', 'errorMessage' => 'Specified parameter OverwriteOssObject is not valid.', 'description' => ''], + ['errorCode' => 'InvalidSequenceOssObject.Malformed', 'errorMessage' => 'Specified parameter SequenceOssObject is not valid.', 'description' => 'Invalid value of SequenceOssObject. Check whether the SequenceOssObject parameter that you specified is correct.'], + ['errorCode' => 'InvalidOssBucket.NotFound', 'errorMessage' => 'The parameter OssBucket does not exist.', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t04F0F334-1335-436C-A1D7-6C044FE73368\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}"}]', - 'title' => 'BatchSetLiveDomainConfigs', - 'description' => 'Obtain the domain names that you want to configure, and then call this operation to configure the domain names in batches.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'title' => 'AddLiveAppSnapshotConfig', + 'description' => '- Before you call this operation, make sure that you fully understand the billing method and pricing of live stream snapshots in ApsaraVideo Live. For more information, see [Billing of live stream snapshots](~~195286~~).'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## Format of the Functions parameter'."\n" + .'- Make sure that Object Storage Service (OSS) is activated and a specific bucket is created. This way, ApsaraVideo Live can store live stream snapshots in the bucket. For more information, see [Configure OSS](~~84932~~).'."\n" ."\n" - .'* Example: `[{"functionArgs":[{"argName":"domain_name","argValue":"developer.aliyundoc.com"}],"functionName":"set_req_host_header"}]`'."\n" + .'- If you store snapshots in OSS, storage fees are generated. For more information, see [Storage fees](~~173534~~).'."\n" ."\n" - .'* Some features, such as filetype\\_based\\_ttl\\_set, support multiple configuration records. To update one of the configuration records, use configId to identify the record. Example: `[{"functionArgs":[{"argName":"file_type","argValue":"jpg"},{"argName":"ttl","argValue":"18"},{"argName":"weight","argValue":"30"}],"functionName":"filetype_based_ttl_set","configId":506***}]`'."\n" + .'- The OSS bucket must reside in the same region as the live center of the streaming domain. Cross-region snapshot capture is not supported.'."\n" ."\n" - .'## Features specified by the Functions parameter'."\n" + .'## [](#qps-)QPS limit'."\n" ."\n" - .'|Feature|Attribute|'."\n" - .'|---|---|'."\n" - .'|**referer\\_white\\_list\\_set**: specifies the Referer whitelist.|**refer\\_domain\\_allow\\_list**: the Referers to be added to the whitelist. Separate multiple Referers with commas (,).**allow\\_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**.|'."\n" - .'|**referer\\_black\\_list\\_set**: specifies the Referer blacklist.|**refer\\_domain\\_deny\\_list**: the Referers to be added to the blacklist. Separate multiple Referers with commas (,).**allow\\_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**.|'."\n" - .'|**filetype\\_based\\_ttl\\_set**: specifies the time period after which a file expires.|**ttl**: the cache duration. Unit: seconds. Valid values: 1 to 99999999 (more than three years).**file\\_type**: the file type. Separate multiple file types with commas (,).**weight**: the weight of the file type. Valid values: **1 to 99**.|'."\n" - .'|**path\\_based\\_ttl\\_set**: specifies the time period after which a directory expires.|**ttl**: the cache duration. Unit: seconds. Valid values: 1 to 99999999 (more than three years).**path**: the directory, which must start with a forward slash (/).**weight**: the weight of the directory. Valid values: **1 to 99**.|'."\n" - .'|**oss\\_auth**: authenticates access to an Object Storage Service (OSS) bucket.|**oss\\_bucket\\_id**: the path of your OSS bucket.|'."\n" - .'|**ip\\_black\\_list\\_set**: specifies the IP address blacklist.|**ip\\_list**: the IP addresses to be added to the blacklist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**ip\\_allow\\_list\\_set**: specifies the IP address whitelist.|**ip\\_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**ip\\_white\\_list\\_set**: specifies the IP address whitelist for rate limiting.|**ip\\_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**error\\_page**: redirects an error page to a specified page.|**error\\_code**: the error code.**rewrite\\_page**: the page to which the error page is redirected.|'."\n" - .'|**set\\_req\\_host\\_header**: modifies the Host header of back-to-origin requests.|**domain\\_name**: the Host header of back-to-origin requests.|'."\n" - .'|**set\\_hashkey\\_args**: ignores the specified URL parameters.|**hashkey\\_args**: the parameters to be reserved. Separate multiple parameters with commas (,).**disable**: specifies whether to ignore all parameters. Valid values: on and off. A value of on specifies that all parameters are ignored. A value of off specifies that none of the parameters are ignored.|'."\n" - .'|**aliauth**: configures Alibaba Cloud authentication.|**auth\\_type**: the authentication type. Valid values: **type\\_a** and **no\\_auth**. A value of type\\_a specifies that authentication type A is enabled. A value of no\\_auth specifies that authentication is disabled.**auth\\_key1**: the primary authentication key. The authentication key can contain letters and digits. We recommend that you set the authentication key to a value that is 8 to 32 characters in length.**auth\\_key2**: the secondary authentication key.**ali\\_auth\\_delta**: the custom buffer time for authentication. Unit: seconds. We recommend that you set the value to at least 60 seconds.**auth\\_m3u8**: specifies whether to enable M3U8 rewrite. If you enable M3U8 rewrite, the system completes authentication for TS segments in an M3U8 playlist to prevent failures in accessing the TS segments. Valid values: **on** (default) and **off**.|'."\n" - .'|**remote\\_auth**: configures remote authentication for live streaming.|**enable**: specifies whether to enable remote authentication. This attribute is required. Valid values: on and off.**remote\\_auth\\_path**: the address of the authentication server. This attribute is required.**remote\\_auth\\_pattern**: the authentication mode. The following fields are available:\\- **param**: specifies whether to pass parameters in the ingest URL to the authentication server. Valid values: pass (default) and fail.\\- **args\\_white**: the parameter that you want to pass. Separate multiple parameters with commas (,).\\- **args\\_black**: the parameter that you do not want to pass. Separate multiple parameters with commas (,).\\- **code**: the HTTP status code. A value in the form of code=XXX is returned by the authentication server to ApsaraVideo Live upon successful authentication. Example: code=200. A value in the form of code=~XXX is returned by the authentication server to ApsaraVideo Live upon failed authentication. Example: code=~403.\\- **delta**: the timeout duration for authentication.\\- **retry**: the number of retries upon authentication timeout.\\- **timeout**: the action to perform upon authentication timeout. Valid values: **pass** and **fail**. **pass**: ApsaraVideo Live passes the request. **fail**: ApsaraVideo Live returns the HTTP status code 403 that indicates failure.\\- **async**: specifies whether to enable asynchronous authentication. Valid values: **on** and **off** (default).|'."\n" - .'|**set\\_resp\\_header**: configures a response header. To verify the configuration, you can check the response message in a browser.|**key**: the name of the response header. Valid values:**Content-Type** **Cache-Control** **Content-Disposition** **Content-Language** **Expires** **Access-Control-Allow-Origin** **Access-Control-Allow-Methods** **Access-Control-Allow-Headers** **Access-Control-Max-Age** **Access-Control-Expose-Headers** **value**: the content of the response header. If you want to delete the header, enter null.|'."\n" - .'|**https\\_force**: configures force redirect to HTTPS.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https\\_force and http\\_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature.|'."\n" - .'|**http\\_force**: configures force redirect to HTTP.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https\\_force and http\\_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature.|'."\n" - .'|**forward\\_scheme**: configures adaptive back-to-origin.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.**scheme\\_origin**: the protocol of the origin. Valid values: http, https, and follow.**scheme\\_origin\\_port**: the port number of the origin. Valid values: 80, 443, and 80:443.|'."\n" - .'|**green\\_manager**: configures pornography detection.|**enable**: specifies whether to enable pornography detection. Valid values: **on** and **off**.|'."\n" - .'|**tmd\\_signature**: configures custom rate limiting rules.|**name**: the name of the rule, which must be globally unique.**path**: the uniform resource identifier (URI). You can specify duplicate URIs. However, you must verify their validity.**pathType**: the matching rule. Valid values: **0** and **1**. A value of 0 specifies a prefix match. A value of 1 specifies an exact match.**interval**: the interval at which data is monitored. Unit: seconds. The interval must be greater than or equal to 10 seconds.**count**: the number of visits from an IP address.**action**: the action to perform after the specified conditions are met. Valid values: **0** and **1**. A value of 0 specifies that access is blocked. A value of 1 specifies that bot detection is performed.**ttl**: the time period during which access is blocked. Unit: seconds.|'."\n" - .'|**l2\\_oss\\_key**: configures private key authentication for back-to-origin requests from L2 nodes to private OSS buckets.|**private\\_oss\\_auth**: specifies whether to authenticate access to a private OSS bucket. Valid values: **on** and **off**.|'."\n" - .'|**video\\_seek**: configures video seeking.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.|'."\n" - .'|**gzip**: configures Gzip compression.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.|'."\n" - .'|**tesla**: configures page optimization to accelerate access.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.|'."\n" - .'|**ali\\_ua**: configures User-Agent-based access control.|**ua**: the User-Agent.**type**: the type of the list. Valid values: **black** and **white**.|'."\n" - .'|**host\\_redirect**: configures URL rewrite.|**regex**: the URL to be rewritten. Example: ^/$.**replacement**: the destination URL. Example: /go/act/sale/tbzlsy.php.**flag**: the flag. Valid values: redirect and break.|'."\n" - .'|**ipv6**: configures IPv6.|**switch**: specifies whether to enable IPv6. This attribute is required. Valid values: **on** and **off**. If you want to disable this feature after this feature is enabled, deselect the feature in the console. Do not delete the configuration. Otherwise, the feature will still be enabled.**region**: the region in which you want to enable IPv6. Valid values: cn-beijing, cn-shanghai, cn-shenzhen, cn-qingdao, apsoutheast-1, eu-central-1, ap-northeast-1, and ap-southeast-5, which indicate China (Beijing), China (Shanghai), China (Shenzhen), China (Qingdao), Singapore, Germany (Frankfurt), Japan (Tokyo), and Indonesia (Jakarta), respectively.|'."\n" - .'|**ali\\_location**: configures region-based access control.|**location**: the regions.**type**: the type of the list. Valid values: **black** and **white**.|'."\n" - .'|**cc\\_defense**: configures protection against HTTP flood attacks.|**enable**: specifies whether to enable protection against HTTP flood attacks. Valid values: **on** and **off**.|'."\n" - .'|**alilive**: configures the live streaming settings.|**notify\\_url**: the URL for receiving notifications from ApsaraVideo Live.**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.**live\\_forbid\\_flv**: specifies whether to prohibit the playback of Flash Videos (FLVs). Valid values: **on** and **off**.**live\\_forbid\\_rtmp**: specifies whether to prohibit the playback of Real-Time Messaging Protocol (RTMP) videos. Valid values: **on** and **off**.**live\\_forbid\\_hls**: specifies whether to prohibit the playback of HTTP Live Streaming (HLS) videos. Valid values: **on** and **off**.|'."\n" - .'|**ali\\_grtn**: specifies whether to connect to Global Realtime Transport Network (GRTN).|**grtn\\_rts\\_pub**: specifies whether to enable stream ingest over Real-Time Streaming (RTS). This attribute is applicable to ingest domains. Valid values: **on** and **off**.**grtn\\_rts\\_play**: specifies whether to enable streaming over RTS. This attribute is applicable to streaming domains. Valid values: **on** and **off**.**grtn\\_rts\\_transcode**: specifies whether to enable auto transcoding for RTS-based HTML5 playback. Valid values: **on** and **off**.|'."\n" - .'|**edge\\_function**: configures the edge function.|Required attributes:**rule**: the domain-specific language (DSL) rule.**pri**: the priority of the rule.**enable**: specifies whether to enable the rule. Valid values: **on** and **off**.Optional attributes:**name**: the name of the rule.**pos**: the position from which to execute the rule.**brk**: After the rule is hit, the rules after the specified position are skipped.**option**: the option.**grammar**: the grammar. Valid values: es2 and js. You can also leave this attribute empty.**jsmode**: the mode to manage the domain name whitelist in JavaScript. Valid values: **redirect** and **bypass**.|'."\n" - .'|**https\\_tls\\_version**: configures the Transport Layer Security (TLS) protocol versions.|**tls10**: specifies whether to enable TLS 1.0. Default value: **on**. Valid values: **on** and **off**.**tls11**: specifies whether to enable TLS 1.1. Default value: **on**. Valid values: **on** and **off**.**tls12**: specifies whether to enable TLS 1.2. Default value: **on**. Valid values: **on** and **off**.**tls13**: specifies whether to enable TLS 1.3. Default value: **on**. Valid values: **on** and **off**.|'."\n" - .'|**https\\_option**: configures HTTP settings.|**http2**: specifies whether to enable HTTP/2. Default value: **off**. Valid values: **on** and **off**.**live\\_http2**: specifies whether to enable live\\_http2. Default value: **off**. Valid values: **on** and **off**.|', + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'DescribeLiveDomainConfigs' => [ - 'summary' => 'Queries one or more configurations of a domain name.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAppSnapshotConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'AddLiveAudioAuditConfig' => [ + 'summary' => 'Adds an audio moderation configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain or streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'FunctionNames', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The names of the features. Separate multiple features with commas (,). For more information, see the **Features specified by the Functions parameter** section in this topic.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'set_req_host_header,set_hashkey_args', - ], + 'schema' => ['description' => 'The AppName of the live stream. The AppName must match that in the ingest URL for the template to take effect. The value is case-sensitive.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream. The StreamName must match that in the ingest URL for the template to take effect. The value is case-sensitive.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'OssBucket', + 'in' => 'query', + 'schema' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'required' => false, 'example' => 'liveBucket****', 'title' => ''], + ], + [ + 'name' => 'OssEndpoint', + 'in' => 'query', + 'schema' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'required' => false, 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + ], + [ + 'name' => 'OssObject', + 'in' => 'query', + 'schema' => ['description' => 'The name of the recording file stored in OSS.', 'type' => 'string', 'required' => false, 'example' => 'liveObject****', 'title' => ''], + ], + [ + 'name' => 'BizType', + 'in' => 'query', + 'schema' => ['description' => 'The business type. This parameter can be used to select a model. The default value is the domain name.', 'type' => 'string', 'required' => false, 'example' => 'example.edu', 'title' => ''], ], ], 'responses' => [ @@ -3313,547 +2862,391 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'F8AA0364-0FDB-4AD5-AC74-D69FAB8924ED', - ], - 'DomainConfigs' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DomainConfig' => [ - 'description' => 'The configurations of the domain name.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Status' => [ - 'description' => 'The configuration status. Valid values:'."\n" - ."\n" - .'* **success**'."\n" - .'* **testing**'."\n" - .'* **failed**'."\n" - .'* **configuring**'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'ConfigId' => [ - 'description' => 'The configuration ID.'."\n", - 'type' => 'string', - 'example' => '5003576', - ], - 'FunctionName' => [ - 'description' => 'The name of the feature.'."\n", - 'type' => 'string', - 'example' => 'set_req_host_header', - ], - 'FunctionArgs' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'FunctionArg' => [ - 'description' => 'The attributes of the feature.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ArgName' => [ - 'description' => 'The name of the attribute.'."\n", - 'type' => 'string', - 'example' => 'domain_name', - ], - 'ArgValue' => [ - 'description' => 'The attribute value.'."\n", - 'type' => 'string', - 'example' => 'developer.aliyundoc.com', - ], - ], - 'description' => '', - ], - ], - ], - ], - ], - 'description' => '', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Invalid%s.ValueNotSupported', - 'errorMessage' => 'FunctionName [%s] is not supported.', - ], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'ConfigExisted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidUser', - 'errorMessage' => 'The user\'s account is invalid.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F8AA0364-0FDB-4AD5-AC74-D69FAB8924ED\\",\\n \\"DomainConfigs\\": {\\n \\"DomainConfig\\": [\\n {\\n \\"Status\\": \\"success\\",\\n \\"ConfigId\\": \\"5003576\\",\\n \\"FunctionName\\": \\"set_req_host_header\\",\\n \\"FunctionArgs\\": {\\n \\"FunctionArg\\": [\\n {\\n \\"ArgName\\": \\"domain_name\\",\\n \\"ArgValue\\": \\"developer.aliyundoc.com\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\nF8AA0364-0FDB-4AD5-AC74-D69FAB8924ED\\n\\n \\n success\\n set_req_host_header\\n 5003576\\n \\n \\n developer.aliyundoc.com\\n domain_name\\n \\n \\n \\n\\n","errorExample":"{\\n \\"RequestId\\": \\"F8AA0364-0FDB-4AD5-AC74-D69FAB8924ED\\",\\n \\"DomainConfigs\\": {\\n \\"DomainConfig\\": [\\n { \\n \\"Status\\": \\"success\\",\\n \\"FunctionArgs\\": {\\n \\"FunctionArg\\": [\\n {\\n \\"ArgName\\": \\"domain_name\\",\\n \\"ArgValue\\": \\"testscdn3.cdnpe.com\\"\\n }\\n ]\\n },\\n \\"ConfigId\\": 5003576,\\n \\"FunctionName\\": \\"set_req_host_header\\"\\n },\\n {\\n \\"FunctionArgs\\": {\\n \\"Status\\": \\"success\\",\\n \\"FunctionArg\\": [\\n {\\n \\"ArgName\\": \\"file_type\\",\\n \\"ArgValue\\": \\"txt\\"\\n },\\n {\\n \\"ArgName\\": \\"ttl\\",\\n \\"ArgValue\\": \\"13\\"\\n },\\n {\\n \\"ArgName\\": \\"weight\\",\\n \\"ArgValue\\": \\"8\\"\\n }\\n ]\\n },\\n \\"ConfigId\\": 5068995,\\n \\"FunctionName\\": \\"filetype_based_ttl_set\\"\\n }\\n ]\\n }\\n}"}]', - 'title' => 'DescribeLiveDomainConfigs', - 'description' => 'You can call this operation to query multiple configurations at a time.'."\n" + 'title' => 'AddLiveAudioAuditConfig', + 'description' => '- The audio moderation feature detects sensitive content in audio from live streams and uses callbacks to notify you of violations in real time. You can then manually review the content and take appropriate actions.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- Currently, only some live centers support automated review. For supported regions, see [Service regions](~~193730~~).'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## Features specified by the Functions parameter'."\n" + .''."\n" ."\n" - .'**Note** All parameter values are of the string type. Some features, such as **filetype\\_based\\_ttl\\_set**, support multiple configuration records. To update one of the configuration records, use the **configId** field to specify the record.'."\n" + .'Before you call this API, make sure that you understand the billing methods and pricing of the live audio moderation service. For more information, see [Automated review fees](~~195288~~).'."\n" + ."\n" + .''."\n" ."\n" - .'|Name|Parameter|'."\n" - .'|---|---|'."\n" - .'|**referer\\_white\\_list\\_set**: the Referer whitelist.|**refer\\_domain\\_allow\\_list**: the Referers to be added to the whitelist. Separate multiple Referers with commas (,).**allow\\_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**.|'."\n" - .'|**referer\\_black\\_list\\_set**: the Referer blacklist.|**refer\\_domain\\_deny\\_list**: the Referers to be added to the blacklist. Separate multiple Referers with commas (,).**allow\\_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**.|'."\n" - .'|**filetype\\_based\\_ttl\\_set**: the time period after which a file expires.|**ttl**: the cache duration. Unit: seconds.**file\\_type**: the file type. Separate multiple file types with commas (,).**weight**: the weight of the file type. Valid values: **1 to 99**.|'."\n" - .'|**path\\_based\\_ttl\\_set**: the time period after which a directory expires.|**ttl**: the cache duration. Unit: seconds.**path**: the directory, which must start with a forward slash (/).**weight**: the weight of the directory. Valid values: **1 to 99**.|'."\n" - .'|**oss\\_auth**: authenticates access to an Object Storage Service (OSS) bucket.|**oss\\_bucket\\_id**: the name of your OSS bucket.|'."\n" - .'|**ip\\_black\\_list\\_set**: the IP address blacklist.|**ip\\_list**: the IP addresses to be added to the blacklist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**ip\\_allow\\_list\\_set**: the IP address whitelist.|**ip\\_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**ip\\_white\\_list\\_set**: the IP address whitelist for rate limiting.|**ip\\_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,).|'."\n" - .'|**error\\_page**: redirects an error page to a specified page.|**error\\_code**: the error code.**rewrite\\_page**: the page to which the error page is redirected.|'."\n" - .'|**set\\_req\\_host\\_header**: modifies the Host header of back-to-origin requests.|**domain\\_name**: the Host header of back-to-origin requests.|'."\n" - .'|**set\\_hashkey\\_args**: ignores the specified URL parameters.|**hashkey\\_args**: the parameters to be reserved. Separate multiple parameters with commas (,).**disable**: specifies whether to ignore all parameters. Valid values: on and off. A value of on specifies that all parameters are ignored. A value of off specifies that none of the parameters are ignored.|'."\n" - .'|**aliauth**: configures Alibaba Cloud authentication.|**auth\\_type**: the authentication type. Valid values: **type\\_a** and **no\\_auth**. A value of type\\_a specifies that authentication type A is enabled. A value of no\\_auth specifies that authentication is disabled.**auth\\_key1**: the primary authentication key. The authentication key must be 16 to 32 characters in length and can contain uppercase letters, lowercase letters, and digits.**auth\\_key2**: the secondary authentication key.**ali\\_auth\\_delta**: the custom buffer time for authentication. Unit: seconds. We recommend that you set the value to at least 60 seconds.|'."\n" - .'|**remote\\_auth**: configures remote authentication for live streaming.|**enable**: specifies whether to enable remote authentication. This attribute is required. Valid values: on and off.**remote\\_auth\\_path**: the address of the authentication server. This attribute is required.**remote\\_auth\\_pattern**: the authentication mode. The following fields are available:\\- **param**: specifies whether to pass parameters in the ingest URL to the authentication server. Valid values: pass (default) and fail.\\- **args\\_white**: the parameter that you want to pass. Separate multiple parameters with commas (,).\\- **args\\_black**: the parameter that you do not want to pass. Separate multiple parameters with commas (,).\\- **code**: the HTTP status code. A value in the form of code=XXX is returned by the authentication server to ApsaraVideo Live upon successful authentication. Example: code=200. A value in the form of code=~XXX is returned by the authentication server to ApsaraVideo Live upon failed authentication. Example: code=~403.\\- **delta**: the timeout duration for authentication.\\- **retry**: the number of retries upon authentication timeout.\\- **timeout**: the action to perform upon authentication timeout. Valid values: **pass** and **fail**. **pass**: ApsaraVideo Live passes the request. **fail**: ApsaraVideo Live returns the HTTP status code 403 that indicates failure.\\- **async**: specifies whether to enable asynchronous authentication. Valid values: **on** and **off** (default).|'."\n" - .'|**set\\_resp\\_header**: configures a response header. To verify the configuration, you can check the response message in a browser.|**key**: the name of the response header.**value**: the content of the response header. If you want to delete the header, enter null.|'."\n" - .'|**https\\_force**: configures force redirection to HTTPS.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https\\_force and http\\_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature.|'."\n" - .'|**http\\_force**: configures force redirection to HTTP.|**enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https\\_force and http\\_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature.|'."\n" - .'|**l2\\_oss\\_key**: configures private key authentication for back-to-origin requests from L2 nodes to private OSS buckets.|**private\\_oss\\_auth**: specifies whether to authenticate access to a private OSS bucket. Valid values: **on** and **off**.|'."\n" - .'|**green\\_manager**: configures pornography detection.|**enable**: specifies whether to enable pornography detection. Valid values: **on** and **off**.|'."\n" - .'|**tmd\\_signature**: configures custom rate limiting rules.|**name**: the name of the rule, which must be globally unique.**path**: the uniform resource identifier (URI). You can specify duplicate URIs. However, you must verify their validity.**pathType**: the matching rule. Valid values: **0** and **1**. A value of 0 specifies a prefix match. A value of 1 specifies an exact match.**interval**: the interval at which data is monitored. Unit: seconds. The interval must be greater than or equal to 10 seconds.**count**: the number of visits from an IP address.**action**: the action to perform after the specified conditions are met. Valid values: **0** and **1**. A value of 0 specifies that access is blocked. A value of 1 specifies that bot detection is performed.**ttl**: the time period during which access is blocked. Unit: seconds.|'."\n" - .'|**forward\\_scheme**: configures adaptive back-to-origin.|**enable**: specifies whether to enable the feature. Valid values: on and off.**scheme\\_origin**: the protocol of the origin. Valid values: http, https, and follow.**scheme\\_origin\\_port**: the port number of the origin. Valid values: 80, 443, and 80:443.|'."\n" - .'|**video\\_seek**: configures video seeking.|**enable**: specifies whether to enable video seeking. Valid values: on and off.|'."\n" - .'|**gzip**: configures Gzip compression.|**enable**: specifies whether to enable Gzip compression. Valid values: on and off.|'."\n" - .'|**tesla**: configures page optimization to accelerate access.|**enable**: specifies whether to enable the feature. Valid values: on and off.|'."\n" - .'|**ali\\_ua**: configures User-Agent-based access control.|**ua**: the User-Agent **type**. Valid values: black and white.|'."\n" - .'|**host\\_redirect**: configures URL rewrite.|**regex**: the URL to be rewritten, for example, ^/$.**replacement**: the final URL, for example, /go/act/sale/tbzlsy.php.**flag**: the flag. Valid values: redirect and break.|'."\n" - .'|**ipv6** :configures IPv6.|**switch**: specifies whether to enable IPv6. This attribute is required. Valid values: on and off. If you want to disable this feature after this feature is enabled, deselect the feature in the console. Do not delete the configuration. Otherwise, the feature is still enabled.**region**: the region in which you want to enable IPv6. Valid values: cn-beijing (Beijing), cn-shanghai (Shanghai), cn-shenzhen (Shenzhen), cn-qingdao (Qingdao), apsoutheast-1 (Singapore), eu-central-1 (Germany), ap-northeast-1 (Tokyo), and ap-southeast-5 (Jakarta).|'."\n" - .'|**ali\\_location**: configures region-based access control.|**location**: the regions.|'."\n" - .'|**type**: the type of the list.|Valid values: black and white.|'."\n" - .'|**enable**: specifies whether to enable the feature.|Valid values: on and off.|'."\n" - .'|**live\\_forbid\\_flv**: specifies whether to prohibit the playback of Flash Videos (FLVs).|Valid values: on and off.|'."\n" - .'|**live\\_forbid\\_rtmp**: specifies whether to prohibit the playback of Real-Time Messaging Protocol (RTMP) videos.|Valid values: on and off.|'."\n" - .'|**live\\_forbid\\_hls**: specifies whether to prohibit the playback of HTTP Live Streaming (HLS) videos.|Valid values: on and off.|'."\n" - .'|**https\\_option**: configures HTTP settings.|**http2**: specifies whether to enable HTTP/2. Default value: **off**. Valid values: **on** and **off**.**live\\_http2**: specifies whether to enable live\\_http2. Default value: **off**. Valid values: **on** and **off**.|', + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainByCertificate' => [ - 'summary' => 'Queries the accelerated domain names that match a certificate.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAudioAuditConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAudioAuditConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","type":"json"}]', + ], + 'AddLiveAudioAuditNotifyConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', - 'abilityTreeCode' => '191820', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'SSLPub', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The public key of the SSL certificate. You must Base64-encode the public key before you invoke the encodeURIComponent function to encode a URI component. The public key must be in the PEM format.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'SSLStatus', + 'name' => 'Callback', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to return only domain names with HTTPS enabled or disabled.'."\n" - ."\n" - .'* **true**: returns only domain names with HTTPS enabled.'."\n" - .'* **false**: The rule is disabled.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The URL used to receive callbacks for audio that contains problematic content.', 'type' => 'string', 'required' => false, 'example' => 'https://demo.aliyundoc.com/callback', 'title' => ''], + ], + [ + 'name' => 'CallbackTemplate', + 'in' => 'query', + 'schema' => ['description' => 'The callback template for automated reviews. The value is a JSON string that can contain the following variables:'."\n" + ."\n" + .'- **{DomainName}**: The streaming domain.'."\n" + ."\n" + .'- **{AppName}**: The AppName of the live stream.'."\n" + ."\n" + .'- **{StreamName}**: The stream name.'."\n" + ."\n" + .'- **{Timestamp}**: The UNIX timestamp of the callback. Unit: seconds.'."\n" + ."\n" + .'- **{Result}**: The review result.', 'type' => 'string', 'required' => false, 'example' => '{"domain":{DomainName},"app":{AppName},"stream":{StreamName},"timestamp":{Timestamp},"result":{Result}}', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned results.'."\n", 'type' => 'object', 'properties' => [ - 'CertInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'CertInfo' => [ - 'description' => 'The information about the certificate.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'CertCaIsLegacy' => [ - 'description' => 'Indicates whether the SSL certificate is obsolete. Valid values:'."\n" - ."\n" - .'* **yes**'."\n" - .'* **no**'."\n", - 'type' => 'string', - 'example' => 'yes', - ], - 'CertExpireTime' => [ - 'description' => 'The time at which the certificate expires.'."\n", - 'type' => 'string', - 'example' => 'Nov 29 00:00:00 2016 GMT', - ], - 'CertExpired' => [ - 'description' => 'Indicates whether the SSL certificate is expired. Valid values:'."\n" - ."\n" - .'* **yes**'."\n" - .'* **no**'."\n", - 'type' => 'string', - 'example' => 'yes', - ], - 'CertStartTime' => [ - 'description' => 'The effective time of the certificate.'."\n", - 'type' => 'string', - 'example' => 'Nov 29 23:59:59 2017 GMT', - ], - 'CertSubjectCommonName' => [ - 'description' => 'The name of the SSL certificate owner.'."\n", - 'type' => 'string', - 'example' => 'owner', - ], - 'CertType' => [ - 'description' => 'The type of the certificate. Valid values: **RSA**, **DSA**, and **ECDSA**.'."\n", - 'type' => 'string', - 'example' => 'RSA', - ], - 'DomainList' => [ - 'description' => 'The list of domain names. If a value is returned, the value matches the SSL certificate. Multiple domain names are separated by commas (,).'."\n", - 'type' => 'string', - 'example' => 'example.com,aliyundoc.com', - ], - 'DomainNames' => [ - 'description' => 'The domain names (DNS fields) that match the SSL certificate. Multiple domain names are separated by commas (,).'."\n", - 'type' => 'string', - 'example' => '*.example.com,aliyundoc.com', - ], - 'Issuer' => [ - 'description' => 'The certificate authority (CA) that issued the SSL certificate.'."\n", - 'type' => 'string', - 'example' => 'C=US, O=Symantec Corporation, OU=Symantec Trust Network, OU=Domain Validated SSL, CN=Symantec Basic DV SSL CA - G1', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'ASAF2FDS-12SADSA-DDSAE3D-DSADCD4C-CDADS2D', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Certificate.FormatError', - 'errorMessage' => 'The format of the certificate is invalid.', - ], - [ - 'errorCode' => 'SSLPub.MissingParameter', - 'errorMessage' => 'The Cert parameter is required.', - ], - [ - 'errorCode' => 'Decode.Error', - 'errorMessage' => 'Error decoding the SSLPub certificate.', - ], - [ - 'errorCode' => 'Certificate.DecodeError', - 'errorMessage' => 'An error occurred while decoding the certificate.', - ], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'ConfigExisted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ['errorCode' => 'UnsafeCallback', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The callback address is not safe. Please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CertInfos\\": {\\n \\"CertInfo\\": [\\n {\\n \\"CertCaIsLegacy\\": \\"yes\\",\\n \\"CertExpireTime\\": \\"Nov 29 00:00:00 2016 GMT\\",\\n \\"CertExpired\\": \\"yes\\",\\n \\"CertStartTime\\": \\"Nov 29 23:59:59 2017 GMT\\",\\n \\"CertSubjectCommonName\\": \\"owner\\",\\n \\"CertType\\": \\"RSA\\",\\n \\"DomainList\\": \\"example.com,aliyundoc.com\\",\\n \\"DomainNames\\": \\"*.example.com,aliyundoc.com\\",\\n \\"Issuer\\": \\"C=US, O=Symantec Corporation, OU=Symantec Trust Network, OU=Domain Validated SSL, CN=Symantec Basic DV SSL CA - G1\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"ASAF2FDS-12SADSA-DDSAE3D-DSADCD4C-CDADS2D\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ASAF2FDS-12SADSA-DDSAE3D-DSADCD4C-CDADS2D\\n \\n Nov 29 00:00:00 2016 GMT\\n Nov 29 23:59:59 2017 GMT\\n RSA\\n owner\\n yes\\n *.example.com,aliyundoc.com\\n yes\\n C=US, O=Symantec Corporation, OU=Symantec Trust Network, OU=Domain Validated SSL, CN=Symantec Basic DV SSL CA - G1\\n example.com,aliyundoc.com\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainByCertificate', - 'description' => 'You can call this operation to query the accelerated domain names that match a certificate.'."\n" + 'title' => 'AddLiveAudioAuditNotifyConfig', + 'summary' => 'Adds a callback configuration for audio moderation.', + 'description' => '- The automated review service returns review results based on the configured callback template.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- The automated review feature is available only in some live centers. For supported regions, see [Service regions](~~193730~~).'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveHttpsDomainList' => [ - 'summary' => 'Queries the information about all certificates that you have configured.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => '## Format of the Result field'."\n" + ."\n" + .'Example'."\n" + ."\n" + .'```'."\n" + .'['."\n" + .' {'."\n" + .' "scene": "antispam",'."\n" + .' "label": "ad",'."\n" + .' "suggestion": "block",'."\n" + .' "rate": 99.91,'."\n" + .' "details": ['."\n" + .' {'."\n" + .' "startTime": 1571989513,'."\n" + .' "endTime": 1571989515,'."\n" + .' "text": "The Shangbala team on the third floor joins the fifth floor.",'."\n" + .' "label": "normal"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989515,'."\n" + .' "endTime": 1571989518,'."\n" + .' "text": "On, grilled fish and hot pot festival date, two Tengqing tycoons.",'."\n" + .' "label": "normal"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989520,'."\n" + .' "endTime": 1571989522,'."\n" + .' "text": "How many Shangbala members enjoy 39",'."\n" + .' "label": "normal"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989523,'."\n" + .' "endTime": 1571989526,'."\n" + .' "text": "Emperor cash single purchase minus 66 yuan.",'."\n" + .' "label": "normal"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989530,'."\n" + .' "endTime": 1571989533,'."\n" + .' "text": "For details about the grand prize, call 3398787.",'."\n" + .' "label": "ad"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989533,'."\n" + .' "endTime": 1571989534,'."\n" + .' "text": "Good news, it seems.",'."\n" + .' "label": "normal"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989538,'."\n" + .' "endTime": 1571989539,'."\n" + .' "text": "Carrying vehicle registration, 4 people.",'."\n" + .' "label": "normal"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989542,'."\n" + .' "endTime": 1571989543,'."\n" + .' "text": "The proxy has 10 minutes left.",'."\n" + .' "label": "normal"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989545,'."\n" + .' "endTime": 1571989547,'."\n" + .' "text": "CCB ETC witness no.",'."\n" + .' "label": "normal"'."\n" + .' },'."\n" + .' {'."\n" + .' "startTime": 1571989550,'."\n" + .' "endTime": 1571989552,'."\n" + .' "text": "Zhao Xinyuan, under Luliang City State-owned Investment Group.",'."\n" + .' "label": "normal"'."\n" + .' }'."\n" + .' ]'."\n" + .' }'."\n" + .']'."\n" + .'```', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAudioAuditNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAudioAuditNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","type":"json"}]', + ], + 'AddLiveCenterTransfer' => [ + 'summary' => 'Adds a live center stream relay configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', - 'abilityTreeCode' => '191821', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageNumber', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Valid values: **1 to 10000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - 'default' => '1', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Default value: **20**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - 'default' => '20', - ], + 'schema' => ['description' => 'The name of the live stream application. The AppName you enter must be the same as the AppName of the live stream to be relayed for the configuration to take effect. You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'testapp', 'title' => ''], ], [ - 'name' => 'Keyword', + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'teststream', 'title' => ''], + ], + [ + 'name' => 'DstUrl', + 'in' => 'query', + 'schema' => ['description' => 'The third-party live streaming address for relay. You can add up to one address.'."\n" + ."\n" + .'>The protocol of the destination address must be the same as the protocol of the live stream to be relayed. Only RTMP and SRT relay addresses are supported.', 'type' => 'string', 'required' => true, 'example' => 'rtmp://push.example2.aliyunlive.com/testapp1/teststream2', 'title' => ''], + ], + [ + 'name' => 'TransferArgs', 'in' => 'query', 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", + 'description' => 'The validity period of the relay. Valid values:'."\n" + ."\n" + .'- **always**: permanently effective.'."\n" + ."\n" + .'- **time**: effective within the specified time period.'."\n" + ."\n" + .'>If the value is **time**, **StartTime** and **EndTime** are required.', + 'enumValueTitles' => ['always' => 'Permanently effective', 'time' => 'Effective within the specified time period'], 'type' => 'string', - 'required' => false, - 'example' => 'demo.aliyun.com', + 'required' => true, + 'enum' => ['always', 'time'], + 'example' => 'always', + 'title' => '', ], ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time of the relay. The date format follows the ISO 8601 notation and uses UTC+0 time. The format is yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'required' => false, 'example' => '2017-12-21T10:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of the relay. The date format follows the ISO 8601 notation and uses UTC+0 time. The format is yyyy-MM-ddTHH:mm:ssZ.'."\n" + ."\n" + .'>The end time must be later than the start time.', 'type' => 'string', 'required' => false, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'CertInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'CertInfo' => [ - 'description' => 'The information about the certificates.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'CertCommonName' => [ - 'description' => 'The primary domain name of the certificate.'."\n", - 'type' => 'string', - 'example' => 'example.org', - ], - 'CertExpireTime' => [ - 'description' => 'The time when the certificate expires.'."\n", - 'type' => 'string', - 'example' => '2018-12-26 14:45:09', - ], - 'CertName' => [ - 'description' => 'The name of the certificate.'."\n", - 'type' => 'string', - 'example' => 'test', - ], - 'CertStartTime' => [ - 'description' => 'The time when the certificate became effective.'."\n", - 'type' => 'string', - 'example' => '2018-11-26 14:45:09', - ], - 'CertStatus' => [ - 'description' => 'The status of the certificate. Valid values:'."\n" - ."\n" - .'* **ok**: The certificate is working as expected.'."\n" - .'* **mismatch**: The certificate does not match the specified domain name.'."\n" - .'* **expired**: The certificate has expired.'."\n" - .'* **expire_soon**: The certificate will expire soon.'."\n", - 'type' => 'string', - 'example' => 'mismatch', - ], - 'CertType' => [ - 'description' => 'The type of the certificate. Valid values:'."\n" - ."\n" - .'* **cas**: a certificate that you purchased from Certificate Management Service'."\n" - .'* **upload**: a custom certificate that you uploaded'."\n", - 'type' => 'string', - 'example' => 'cas', - ], - 'CertUpdateTime' => [ - 'description' => 'The time when the certificate was updated.'."\n", - 'type' => 'string', - 'example' => '2019-01-08 18:33:16', - ], - 'DomainName' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'F5E8DF64-7175-4186-9B06-F002C0BBD0C5', - ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '16', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7908F2FF-44F8-120F-9FD6-85AE4B6C19EC', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'NoHttpsDomain', - 'errorMessage' => 'Your account doesn\'t have https domain.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'CenterTransfersStreamOverLimit', 'errorMessage' => 'CenterTransfers stream is over limit for this domainName.', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'CodeIllegalDuration', 'errorMessage' => 'param end_time is before start_time', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CertInfos\\": {\\n \\"CertInfo\\": [\\n {\\n \\"CertCommonName\\": \\"example.org\\",\\n \\"CertExpireTime\\": \\"2018-12-26 14:45:09\\",\\n \\"CertName\\": \\"test\\",\\n \\"CertStartTime\\": \\"2018-11-26 14:45:09\\",\\n \\"CertStatus\\": \\"mismatch\\",\\n \\"CertType\\": \\"cas\\",\\n \\"CertUpdateTime\\": \\"2019-01-08 18:33:16\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"F5E8DF64-7175-4186-9B06-F002C0BBD0C5\\",\\n \\"TotalCount\\": 16\\n}","errorExample":""},{"type":"xml","example":"\\n 16\\n F5E8DF64-7175-4186-9B06-F002C0BBD0C5\\n \\n 2018-11-26 14:45:09\\n 2018-12-26 14:45:09\\n 2019-01-08 18:33:16\\n cas\\n test\\n mismatch\\n example.com\\n example.org\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveHttpsDomainList', - 'description' => 'You can call this operation to query the information about all certificates that you have configured.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ModifyLiveDomainSchdmByProperty' => [ - 'summary' => 'Modifies the acceleration region of a domain name.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\"\\n}","type":"json"}]', + 'title' => 'Add live center stream relay configuration', + 'description' => 'The single-user QPS limit of this API is 100 calls per second. If the limit is exceeded, API calls will be throttled, which may affect your business. Please make calls appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveCenterTransfer'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveCenterTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'AddLiveDetectNotifyConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107191', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name for which you want to modify the acceleration region.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Property', + 'name' => 'NotifyUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The acceleration region that you want to set. {"coverage":"overseas"} specifies regions outside the Chinese mainland. Valid values of coverage:'."\n" - ."\n" - .'* domestic: regions in the Chinese mainland.'."\n" - .'* overseas: regions outside the Chinese mainland.'."\n" - .'* global: regions in and outside the Chinese mainland.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '{"coverage":"global"}', - ], + 'schema' => ['description' => 'The callback URL that is used to receive callback notifications about violations, such as pornographic content and politically sensitive content, detected in live streams.', 'type' => 'string', 'required' => true, 'example' => 'http://demo.aliyundoc.com/examplecallback.action', 'title' => ''], ], ], 'responses' => [ @@ -3861,179 +3254,166 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '15C66C7B-671A-4297-9187-2C4477247A74', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Schedule.NotFound', - 'errorMessage' => 'there is no schedule domain found by the targeted coverage value', - ], - [ - 'errorCode' => 'DomainTraffic.ExceedThreshold', - 'errorMessage' => 'not allowed to do this operation because the last day traffic exceeds the threshold', - ], - [ - 'errorCode' => 'Domain.BeianInvalid', - 'errorMessage' => 'not allowed to do this operation because the domain registration record invalid in China main land', - ], - [ - 'errorCode' => 'Schedule.ChangeFail', - 'errorMessage' => 'change domain failed', - ], - [ - 'errorCode' => 'LockFail', - 'errorMessage' => 'The domain name is being used by another operation, please try again later.', - ], + ['errorCode' => 'InvalidNotifyUrl.Malformed', 'errorMessage' => 'Specified NotifyUrl is invalid.', 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['errorCode' => 'InvalidNotifyUrl.Unsafe', 'errorMessage' => 'Specified NotifyUrl is not safe.', 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'InvalidParams', 'errorMessage' => 'Invalid Params.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"15C66C7B-671A-4297-9187-2C4477247A74\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 15C66C7B-671A-4297-9187-2C4477247A74\\n","errorExample":""}]', - 'title' => 'ModifyLiveDomainSchdmByProperty', - 'description' => '### [](#qps-)QPS limit'."\n" + 'title' => 'AddLiveDetectNotifyConfig', + 'summary' => 'Configures callbacks for video moderation results. As a result, a callback URL that is used to receive the callback notifications is added.', + 'description' => '- The automated review feature sends notifications about violations to the callback URL in real time. Then, you can manually review the content and take actions accordingly.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveUserTags' => [ - 'summary' => '获取直播用户标签', - 'methods' => [ - 'post', - 'get', + .'- Only some live centers support the automated review feature. For more information, see [Supported regions](~~193730~~).'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveDetectNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'AddLiveDomain' => [ + 'summary' => 'Adds a domain name to ApsaraVideo Live. This operation allows you to add only one domain name at a time.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'chargeType' => 'paid', + 'abilityTreeCode' => '106844', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'LiveDomainType', 'in' => 'query', 'schema' => [ + 'description' => 'The type of the domain name. Valid values:'."\n" + ."\n" + .'- **liveVideo**: streaming domain. This value is required if you set the DomainName parameter to a streaming domain.'."\n" + ."\n" + .'- **liveEdge**: ingest domain. This value is required if you set the DomainName parameter to an ingest domain.', 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + 'required' => true, + 'docRequired' => true, + 'enum' => ['liveVideo', 'liveEdge', 'liveGrtnPub', 'liveGrtnSub'], + 'example' => 'liveVideo', + 'title' => '', ], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '6B0256B6-2442-5BEF-B8D6-A0C28A801DFC', - ], - 'Tags' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tags.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The key of the tag.', - 'type' => 'string', - 'example' => 'key1', - ], - 'Value' => [ - 'description' => 'The value of the tag.', - 'type' => 'array', - 'items' => [ - 'description' => 'The value of the tag.', - 'type' => 'string', - 'example' => 'value1', - ], - ], - ], - ], - ], - ], - ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The ingest domain or streaming domain that you want to add. Wildcard domain names that start with a period (.) are supported.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], - ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6B0256B6-2442-5BEF-B8D6-A0C28A801DFC\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"key1\\",\\n \\"Value\\": [\\n \\"value1\\"\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 6B0256B6-2442-5BEF-B8D6-A0C28A801DFC\\n \\n key1\\n value1\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveUserTags', - ], - 'VerifyLiveDomainOwner' => [ - 'summary' => 'Verifies the ownership of a domain name.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'Region', + 'in' => 'query', + 'schema' => ['description' => 'The region in which the domain name resides. Valid values:'."\n" + ."\n" + .'- **cn-beijing**: China (Beijing)'."\n" + ."\n" + .'- **cn-shanghai**: China (Shanghai)'."\n" + ."\n" + .'- **cn-shenzhen**: China (Shenzhen)'."\n" + ."\n" + .'- **cn-qingdao**: China (Qingdao)'."\n" + ."\n" + .'- **ap-southeast-1**: Singapore'."\n" + ."\n" + .'- **eu-central-1**: Germany (Frankfurt)'."\n" + ."\n" + .'- **ap-northeast-1**: Japan (Tokyo)'."\n" + ."\n" + .'- **ap-southeast-5**: Indonesia (Jakarta)'."\n" + ."\n" + .'> Make sure that the settings of the Region and Scope parameters do not conflict with each other.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'cn-beijing', 'title' => ''], ], - ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107290', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'name' => 'CheckUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL that is used for health checks.', 'type' => 'string', 'required' => false, 'example' => 'http://demo.aliyundoc.com/status.html', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'Scope', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The edge group. This parameter is applicable to users of level 3 or higher in mainland China and users outside mainland China. Valid values:'."\n" + ."\n" + .'- **domestic**: mainland China. This is the default value.'."\n" + ."\n" + .'- **overseas**: outside mainland China.'."\n" + ."\n" + .'- **global**: regions in and outside mainland China.', 'type' => 'string', 'required' => false, 'example' => 'domestic', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'TopLevelDomain', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name for which you want to verify the ownership. You can specify only one domain name in each request.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The top-level domain name.', 'type' => 'string', 'required' => false, 'example' => 'learn.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'VerifyType', + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => ['description' => 'The ID of the resource group. For more information about resource groups, see [Resource groups](~~2381067~~).', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'rg-aekzw******'], + ], + [ + 'name' => 'Tag', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The verification method. Valid values:'."\n" - ."\n" - .'* dnsCheck: DNS record verification'."\n" - .'* fileCheck: file verification'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'dnsCheck', + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The key of the tag.', 'type' => 'string', 'required' => false, 'example' => 'TestKey', 'title' => ''], + 'Value' => ['description' => 'The value of the tag.', 'type' => 'string', 'required' => false, 'example' => 'TestValue'."\n", 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 21, + 'title' => '', + 'example' => '', ], ], ], @@ -4042,78 +3422,126 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Content' => [ - 'description' => 'The verification information.'."\n", - 'type' => 'string', - 'example' => 'verify_dffeb6610035dcb77b413******', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '1BA6D7CE-55F1-5926-8764-F8663473AD0D', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'DomainOwnerVerifyFail', - 'errorMessage' => 'Owner verification of the root domain failed.', - ], + ['errorCode' => 'InvalidDomainName.Malformed', 'errorMessage' => 'Specified DomainName is malformed.', 'description' => ''], + ['errorCode' => 'InvalidRegion.Malformed', 'errorMessage' => 'Specified Region is malformed.', 'description' => 'The specified area is invalid.'], + ['errorCode' => 'InvalidSource.Content.Malformed', 'errorMessage' => 'Specified source content is malformed.', 'description' => ''], + ['errorCode' => 'InvalidTypeContent.Mismatch', 'errorMessage' => 'Specified source type does not math the specified source content.', 'description' => ''], + ['errorCode' => 'MissingSource.Content', 'errorMessage' => 'Specified source content is mandatory for this action.', 'description' => ''], + ['errorCode' => 'MissingSource.Type', 'errorMessage' => 'Specified source type is mandatory for this action.', 'description' => ''], + ['errorCode' => 'InvalidSource.Type.Malformed', 'errorMessage' => 'Specified source type is malformed.', 'description' => ''], + ['errorCode' => 'InvalidSource.Priority.Malformed', 'errorMessage' => 'Specified source priority is malformed.', 'description' => ''], + ['errorCode' => 'InvalidScope.Malformed', 'errorMessage' => 'Specified Scope is malformed.', 'description' => ''], + ['errorCode' => 'SourceIp.Exceed', 'errorMessage' => 'The Certificate you provided is malformed!', 'description' => ''], + ['errorCode' => 'InvalidCertificate', 'errorMessage' => 'The Certificate you provided is malformed!', 'description' => ''], + ['errorCode' => 'InvalidCertificate.TooLong', 'errorMessage' => 'The Certificate you provided is over the max length!', 'description' => ''], + ['errorCode' => 'InnerAddDomainDenied', 'errorMessage' => 'Your account haven\'t bind aoneId, can not add domain.', 'description' => ''], + ['errorCode' => 'CheckSourceHealthFailed', 'errorMessage' => 'sources ip or source domain check health failed,please input right source.', 'description' => ''], + ['errorCode' => 'ExtensiveAndAllBothExist', 'errorMessage' => 'Extensive domain and the domain begins with \'all.\' can not exist at the same time.', 'description' => ''], + ['errorCode' => 'CdnTypeNotSupportExtensiveDomain', 'errorMessage' => 'Extensive domain not supported for this cdn type.', 'description' => ''], + ['errorCode' => 'ExtensiveAndSpecificDomainConflict', 'errorMessage' => 'Extensive domain and corresponding specific domain are mutually exclusive.', 'description' => 'Extensive domain and corresponding specific domain are mutually exclusive.'], + ['errorCode' => 'InvalidDomainNameLevel', 'errorMessage' => 'Domain name suffixed with alicdn.com only support third level.', 'description' => ''], + ['errorCode' => 'TopLevelDomain.NotFound', 'errorMessage' => 'TopLevelDomain is not exist.', 'description' => ''], + ['errorCode' => 'EntityNotExists.ResourceGroup', 'errorMessage' => 'The resource group does not exist.', 'description' => ''], + ['errorCode' => 'InvalidStatus.ResourceGroup', 'errorMessage' => 'It\'s now allowed to do this operation because of the current status of resource-group.', 'description' => ''], + ['errorCode' => 'NotInternationRealIdentity', 'errorMessage' => 'You need to do real name authentication when you use Chinese mainland resources.', 'description' => ''], + ['errorCode' => 'RecordCheckNotAvailable', 'errorMessage' => 'Please try again later.', 'description' => ''], + ['errorCode' => 'IcpBlack', 'errorMessage' => 'The domain is on the ICP blacklist.', 'description' => ''], + ['errorCode' => 'IspBlack', 'errorMessage' => 'The domain is on the ISP blacklist.', 'description' => ''], + ['errorCode' => 'DomainNotRecordedAliyun', 'errorMessage' => 'The domain not access Ali Cloud for the record please access.', 'description' => ''], + ['errorCode' => 'Abs.CheckUrl.Malformed', 'errorMessage' => 'The CheckUrl you provided is malformed!', 'description' => ''], + ['errorCode' => 'DomainOwnerVerifyFail', 'errorMessage' => 'Owner verification of the root domain failed.', 'description' => ''], + ['errorCode' => 'TopLevelDomain.Mismatch', 'errorMessage' => 'The specified TopLevelDomain does not match webSiteType.', 'description' => ''], + ['errorCode' => 'InvalidResourceGroupId.Malformed', 'errorMessage' => 'Specified ResourceGroupId is malformed.', 'description' => ''], + ['errorCode' => 'DomainReserved', 'errorMessage' => 'The root domain of your domain is reserved by another account.', 'description' => 'The root domain is added to other accounts.'], + ['errorCode' => 'ExceedLimit', 'errorMessage' => 'The number of domains has exceeded the limit.', 'description' => 'The number of domains has exceeded the limit.'], + ['errorCode' => 'LockFail', 'errorMessage' => 'Domain has been occupied.', 'description' => 'The domain name is currently in use. Please try again later.'], + ], + 403 => [ + ['errorCode' => 'AccountException', 'errorMessage' => 'Account exception. Please open ticket to make an appeal.', 'description' => ''], + ['errorCode' => 'EntityNotExist.ResourceGroup', 'errorMessage' => 'The resource group does not exist.', 'description' => 'The resource group does not exist.'], + ], + [ + ['errorCode' => 'InvalidUser', 'errorMessage' => 'The user\'s account is invalid.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Content\\": \\"verify_dffeb6610035dcb77b413******\\",\\n \\"RequestId\\": \\"1BA6D7CE-55F1-5926-8764-F8663473AD0D\\"\\n}","errorExample":""},{"type":"xml","example":"\\n verify_dffeb6610035dcb77b413******\\n 1BA6D7CE-55F1-5926-8764-F8663473AD0D\\n","errorExample":""}]', - 'title' => 'VerifyLiveDomainOwner', - 'description' => '### [](#qps-)QPS limit'."\n" + 'title' => 'AddLiveDomain', + 'description' => '- You must activate ApsaraVideo Live before you add a domain name. For more information, see [Activate ApsaraVideo Live](~~195292~~).'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeLiveVerifyContent' => [ - 'summary' => 'Queries the ownership verification content of a domain name.', - 'methods' => [ - 'post', - 'get', + .'- ApsaraVideo Live verifies the ownership of a new domain name that you add. After the verification is passed, the domain name is added to ApsaraVideo Live. ApsaraVideo Live allows you to use a Domain Name System (DNS) record or a verification file to verify the ownership of a domain name. For more information, see [Verify the ownership of a domain name](~~184466~~).'."\n" + ."\n" + .'- To use ApsaraVideo Live to ingest and play streams, you must add an ingest domain and a streaming domain. You can add only one domain name at a time.'."\n" + ."\n" + .'- After you add a domain name, you must configure a CNAME record for the domain name. For more information, see [Add a CNAME record](~~84929~~).'."\n" + ."\n" + .'- After you add an ingest domain and a streaming domain, you must associate the streaming domain with the ingest domain. For more information, see [Associate a streaming domain with an ingest domain](~~199338~~).'."\n" + ."\n" + .'> From February 19, 2019, domain names that are added by calling the AddLiveDomain operation do not support live center ingest. Domain names that are added by using Alibaba Cloud CDN also do not support live center ingest. When you call the AddLiveDomain operation, you can set the LiveDomainType parameter to liveEdge to add an ingest domain that uses edge ingest or set the LiveDomainType parameter to liveVideo to add a streaming domain. You can associate a streaming domain with an ingest domain by calling the AddLiveDomainMapping operation. Domain names added before February 19, 2019, for which live center ingest was configured, are not affected.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-10-24T06:13:17.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-09-25T07:00:46.000Z', 'description' => 'Error codes changed, Request parameters changed'], + ['createdAt' => '2023-05-09T08:02:40.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2022-12-22T09:03:34.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveDomain'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveDomain', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'AddLiveDomainMapping' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'operationType' => 'create', + 'abilityTreeCode' => '106845', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'PushDomain', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ingest domain. The type of the domain name is **liveEdge**.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'PullDomain', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name. You can specify only one domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain. The type of the domain name is **liveVideo**.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -4121,86 +3549,87 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Content' => [ - 'description' => 'The verification content.'."\n", - 'type' => 'string', - 'example' => 'verify_dffeb6610035dcb77b413******', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Content\\": \\"verify_dffeb6610035dcb77b413******\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', - 'title' => 'DescribeLiveVerifyContent', - 'description' => '## [](#)Usage notes'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidPushDomain', 'errorMessage' => 'The PushDomain should be liveEdge type.', 'description' => ''], + ['errorCode' => 'InvalidPullDomain', 'errorMessage' => 'The PullDomain should be liveVideo type.', 'description' => ''], + ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'AddLiveDomainMapping', + 'summary' => 'Creates the mapping between a streaming domain and an ingest domain.', + 'description' => 'Call the [AddLiveDomain](~~88327~~) operation to add a streaming domain and an ingest domain, and then call this operation to create the mapping between the two domain names.'."\n" ."\n" - .'* You can call this operation to query the ownership verification content of a single domain name.'."\n" - .'* You can call this operation up to 30 times per second per account.'."\n" - .'* When you call this operation, you need to specify a domain name as a request parameter.'."\n" - .'* After a successful call, the verification content and request ID are returned, which can be used for subsequent operations.'."\n", - ], - 'ChangeLiveDomainResourceGroup' => [ - 'summary' => 'Changes the resource group to which a domain name belongs. In this case, you move the domain name from the original resource group to another resource group.', - 'methods' => [ - 'post', - 'get', + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveDomainMapping'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveDomainMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'AddLiveDomainPlayMapping' => [ + 'summary' => 'Maps a sub-streaming domain to a main streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '235330', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '106846', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'PlayDomain', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain or streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The sub-streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'NewResourceGroupId', + 'name' => 'PullDomain', 'in' => 'query', - 'allowEmptyValue' => true, - 'schema' => [ - 'description' => 'The ID of the resource group to which the domain name is moved.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rg-****ke6uuxw****', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -4208,381 +3637,250 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******8F-F82F-10E2-BAE1-A036FD******', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => 'Your account does not open Live service yet', - ], - [ - 'errorCode' => 'LockFail', - 'errorMessage' => 'Domain has been occupied.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], ], - 403 => [ - [ - 'errorCode' => 'EntityNotExist.ResourceGroup', - 'errorMessage' => 'The resource group does not exist.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******8F-F82F-10E2-BAE1-A036FD******\\"\\n}","type":"json"}]', - 'title' => 'ChangeLiveDomainResourceGroup', - 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'SetLiveStreamPreloadTasks' => [ - 'summary' => 'Configures a prefetch task. You can specify multiple URLs to prefetch at a time.', - 'methods' => [ - 'post', - 'get', + 'title' => 'AddLiveDomainPlayMapping', + 'description' => 'Before you call this operation, you must add the main streaming domain and sub-streaming domain by calling [AddLiveDomain](~~88327~~).'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveDomainPlayMapping'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveDomainPlayMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'AddLiveMessageGroupBand' => [ + 'summary' => 'The AddLiveMessageGroupBand operation mutes users in a group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '235183', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID.', 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The group ID.', 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'PlayUrl', + 'name' => 'BannedUsers', 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The streaming URL. You can specify up to 100 streaming URLs in a request. Separate multiple streaming URLs with commas (,).'."\n", - 'type' => 'string', + 'description' => 'A list of users to mute. Separate multiple user IDs with a comma (,). You can specify a maximum of 30 users.', + 'type' => 'array', + 'items' => ['description' => 'The user to mute.', 'type' => 'string', 'required' => false, 'example' => 'uid1', 'title' => ''], 'required' => true, - 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'Area', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The acceleration region where you want to prefetch the live content. Valid values:'."\n" - ."\n" - .'* domestic: regions in the Chinese mainland.'."\n" - .'* overseas: regions outside the Chinese mainland.'."\n" - .'* global: regions in and outside the Chinese mainland.'."\n" - ."\n" - .'If you do not specify this parameter, the acceleration region configured for the domain name is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'domestic', - 'enum' => [ - 'domestic', - 'overseas', - 'global', - ], - ], - ], - [ - 'name' => 'PreloadedStartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of the prefetch task. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. Example: 2016-06-29T19:00:00Z. If you do not specify this parameter, the prefetch task runs for 1 hour by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T19:00:00Z', - ], - ], - [ - 'name' => 'PreloadedEndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of the prefetch task. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. Example: 2016-06-30T19:00:00Z. The interval between the start time and end time cannot exceed 6 hours.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-30T19:00:00Z', - ], + 'schema' => ['description' => 'The data center. This must be the same data center that you specified when you called the [CreateLiveMessageApp](~~2848162~~) operation.'."\n" + ."\n" + .'> Currently, this operation is supported in Shanghai (value: cn-shanghai) and Singapore (value: ap-southeast-1).', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'FailedURL' => [ - 'description' => 'The number of URLs for which the prefetch task configuration failed.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'PreloadTasksMessages' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'PreloadTasksMessage' => [ - 'description' => 'The details of the prefetch task.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Description' => [ - 'description' => 'Indicates whether the prefetch task is successful. Valid values:'."\n" - ."\n" - .'* Successfully'."\n" - .'* InternalError'."\n", - 'type' => 'string', - 'example' => 'Successfully', - ], - 'PlayUrl' => [ - 'description' => 'The streaming URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****', - ], - 'TaskId' => [ - 'description' => 'The ID of the prefetch task.'."\n", - 'type' => 'string', - 'example' => 'yourTaskId', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '36E0E523-E0C6-5D95-A465-A8EA2DCBA2A5', - ], - 'Status' => [ - 'description' => 'The status of the prefetch task. Valid values:'."\n" - ."\n" - .'* Success'."\n" - .'* Failed'."\n" - ."\n" - .'> Success is returned only if the prefetch task is configured for all specified streaming URLs.'."\n", - 'type' => 'string', - 'example' => 'Success', - ], - 'SuccessURL' => [ - 'description' => 'The number of URLs for which the prefetch task is successfully configured.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'TotalURL' => [ - 'description' => 'The total number of URLs.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not match the specified start time.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'Duration between StartTime and EndTime is too long.', - ], - [ - 'errorCode' => 'QuotaExceeded.PreloadTaskslimit', - 'errorMessage' => 'Exceed max task count limit', - ], - [ - 'errorCode' => 'NoSpecialConfiguration', - 'errorMessage' => 'no special configuration for domain name.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"FailedURL\\": 0,\\n \\"PreloadTasksMessages\\": {\\n \\"PreloadTasksMessage\\": [\\n {\\n \\"Description\\": \\"Successfully\\",\\n \\"PlayUrl\\": \\"rtmp://guide.aliyundoc.com/liveApp****/liveStream****\\",\\n \\"TaskId\\": \\"yourTaskId\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"36E0E523-E0C6-5D95-A465-A8EA2DCBA2A5\\",\\n \\"Status\\": \\"Success\\",\\n \\"SuccessURL\\": 1,\\n \\"TotalURL\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n 0\\n \\n Successfully\\n rtmp://guide.aliyundoc.com/liveApp****/liveStream****\\n yourTaskId\\n \\n 36E0E523-E0C6-5D95-A465-A8EA2DCBA2A5\\n Success\\n 1\\n 1\\n","errorExample":""}]', - 'title' => 'SetLiveStreamPreloadTasks', - 'description' => '* You can call this operation to specify multiple URLs to prefetch at a time. You can specify up to 100 URLs in a request.'."\n" - .'* URLs in the HTTP Live Steaming (HLS) format are not supported.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","type":"json"}]', + 'title' => 'AddLiveMessageGroupBand', + 'description' => 'Before you call this operation, you must call the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive message group.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveStreamPreloadTasks' => [ - 'summary' => 'Queries prefetch tasks in the last three days.', - 'methods' => [ - 'post', - 'get', + .'The queries per second (QPS) limit for this operation is 10 calls per second for each user. API calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:AddLiveMessageGroupBand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'AddLivePackageConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '191929', + 'abilityTreeNodes' => ['FEATUREliveJAENGU'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The live streaming domain name. This is the primary playback domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the prefetch task. The task ID is returned when you call the [SetLiveStreamPreloadTasks](~~2519938~~) operation to configure the prefetch task.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourTaskId', - ], + 'schema' => ['description' => 'The AppName must match the AppName in the ingest URL for the template to take effect. The AppName can be up to 255 characters in length and can contain digits, uppercase letters, lowercase letters, hyphens (-), and underscores (\\_). A hyphen or an underscore cannot be the first character. You can also set this parameter to a single asterisk (\\*) to match all AppNames.', 'type' => 'string', 'required' => true, 'example' => 'AppName', 'title' => ''], ], [ - 'name' => 'PlayUrl', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming URL. You can specify up to 100 streaming URLs in a request. Separate multiple streaming URLs with commas (,).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****', - ], + 'schema' => ['description' => 'The StreamName must match the StreamName in the ingest URL for the template to take effect. The StreamName can be up to 255 characters in length and can contain digits, uppercase letters, lowercase letters, hyphens (-), and underscores (\\_). A hyphen or an underscore cannot be the first character. You can also set this parameter to a single asterisk (\\*) to match all StreamNames.', 'type' => 'string', 'required' => true, 'example' => 'StreamName', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'Protocol', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: 1 to 100.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - 'default' => '20', - ], + 'schema' => ['description' => 'The live streaming protocol and container format. Valid values:'."\n" + ."\n" + .'- **HLS\\_CMAF**'."\n" + ."\n" + .'- **LLHLS\\_TS**'."\n" + .' (low latency)'."\n" + ."\n" + .'- **LLHLS\\_CMAF** (low latency)'."\n" + ."\n" + .'- **DASH\\_CMAF**'."\n" + ."\n" + .'- **HLSDASH\\_CMAF**', 'type' => 'string', 'required' => true, 'example' => 'HLS_CMAF', 'title' => ''], ], [ - 'name' => 'PageNum', + 'name' => 'SegmentNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The number of M3U8 segments for live streaming.'."\n" + ."\n" + .'- Valid values: 3 to 10.'."\n" + ."\n" + .'- Default value: 3.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '3', 'title' => ''], ], [ - 'name' => 'Status', + 'name' => 'SegmentDuration', 'in' => 'query', - 'schema' => [ - 'description' => 'The status of the prefetch task. Valid values:'."\n" - ."\n" - .'* complete'."\n" - .'* pending'."\n" - .'* preloading'."\n" - .'* failed'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'complete', - 'enum' => [ - 'complete', - 'pending', - 'preloading', - 'failed', - ], - ], + 'schema' => ['description' => 'The segment length, in seconds.'."\n" + ."\n" + .'- If you set Protocol to HLS\\_CMAF, the valid values are 1 to 10. The default value is 5.'."\n" + ."\n" + .'- If you set Protocol to LLHLS\\_\\*, the valid values are 1 to 2. The default value is 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'PartDuration', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. Example: 2016-06-29T19:00:00Z. You can query only data in the previous three days.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T19:00:00Z', - ], + 'schema' => ['description' => 'The length of the part segment, in milliseconds.'."\n" + ."\n" + .'- If SegmentDuration is 1 s, the valid values are 100 to 500. The default value is 350.'."\n" + ."\n" + .'- If SegmentDuration is 2 s, the valid values are 100 to 1000. The default value is 700.'."\n" + ."\n" + .'- This parameter is valid only when you set Protocol to LLHLS\\_\\*.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '350', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'IgnoreTranscode', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. Example: 2016-06-30T19:00:00Z. The interval between the start time and end time cannot exceed three days.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-30T19:00:00Z', - ], + 'schema' => ['description' => 'Specifies whether to ignore transcoded streams. Valid values:'."\n" + ."\n" + .'- **true** (default): Ignore transcoded streams.'."\n" + ."\n" + .'- **false**: Do not ignore transcoded streams.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], ], 'responses' => [ @@ -4590,160 +3888,65 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'PreloadTasks' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'PreloadTask' => [ - 'description' => 'The details of the prefetch task.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Area' => [ - 'description' => 'The acceleration region where the live content is prefetched. Valid values:'."\n" - ."\n" - .'* domestic: regions in the Chinese mainland.'."\n" - .'* overseas: regions outside the Chinese mainland.'."\n" - .'* global: regions in and outside the Chinese mainland.'."\n" - ."\n" - .'> If this parameter is left empty, the acceleration region configured for the domain name is returned.'."\n", - 'type' => 'string', - 'example' => 'domestic', - ], - 'CreateTime' => [ - 'description' => 'The time when the prefetch task was created.'."\n", - 'type' => 'string', - 'example' => '2016-06-29T19:00:00Z', - ], - 'Description' => [ - 'description' => 'Indicates whether the prefetch task is successful. Valid values:'."\n" - ."\n" - .'* Successfully'."\n" - .'* InternalError'."\n", - 'type' => 'string', - 'example' => 'Successfully', - ], - 'DomainName' => [ - 'description' => 'The streaming domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'PlayUrl' => [ - 'description' => 'The streaming URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****', - ], - 'PreloadedEndTime' => [ - 'description' => 'The time when the prefetch task ended.'."\n", - 'type' => 'string', - 'example' => '2016-06-30T19:00:00Z', - ], - 'PreloadedStartTime' => [ - 'description' => 'The time when the prefetch task started.'."\n", - 'type' => 'string', - 'example' => '2016-06-29T19:00:00Z', - ], - 'Process' => [ - 'description' => 'The progress of the prefetch task.'."\n", - 'type' => 'string', - 'example' => '100%', - ], - 'Status' => [ - 'description' => 'The status of the prefetch task. Valid values:'."\n" - ."\n" - .'* Success'."\n" - .'* Failed'."\n" - ."\n" - .'> Success is returned only if the prefetch task is configured for all streaming URLs.'."\n", - 'type' => 'string', - 'example' => 'Success', - ], - 'TaskId' => [ - 'description' => 'The ID of the prefetch task.'."\n", - 'type' => 'string', - 'example' => 'yourTaskId', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'E1564CBC-DCFE-5E1B-8B78-8DED9A39F334', - ], - 'TotalNum' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '05D00B48-DF50-5DC0-A07D-A250DFAE****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not match the specified start time.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'Duration between StartTime and EndTime is too long.', - ], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'InvalidParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is invalid, please check and try again.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'InvalidProtocol', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter Protocol is invalid, please check and try again.'], + ['errorCode' => 'InvalidSegmentNum', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SegmentNum is invalid, please check and try again.'], + ['errorCode' => 'InvalidSegmentDuration', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SegmentDuration is invalid, please check and try again.'], + ['errorCode' => 'InvalidPartDuration', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PartDuration is invalid, please check and try again.'], + ], + 409 => [ + ['errorCode' => 'ConfigConflicts', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration conflict, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalErr', 'errorMessage' => '%s, please try again.', 'description' => 'Internal error, please try again later.'], + ['errorCode' => 'DomainConfigFailed', 'errorMessage' => '%s, please try again later.', 'description' => 'Domain name configuration failed, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 2,\\n \\"PreloadTasks\\": {\\n \\"PreloadTask\\": [\\n {\\n \\"Area\\": \\"domestic\\",\\n \\"CreateTime\\": \\"2016-06-29T19:00:00Z\\",\\n \\"Description\\": \\"Successfully\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"PlayUrl\\": \\"rtmp://guide.aliyundoc.com/liveApp****/liveStream****\\",\\n \\"PreloadedEndTime\\": \\"2016-06-30T19:00:00Z\\",\\n \\"PreloadedStartTime\\": \\"2016-06-29T19:00:00Z\\",\\n \\"Process\\": \\"100%\\",\\n \\"Status\\": \\"Success\\",\\n \\"TaskId\\": \\"yourTaskId\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"E1564CBC-DCFE-5E1B-8B78-8DED9A39F334\\",\\n \\"TotalNum\\": 1,\\n \\"TotalPage\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 2\\n \\n domestic\\n 2016-06-29T19:00:00Z\\n Successfully\\n example.com\\n rtmp://guide.aliyundoc.com/liveApp****/liveStream****\\n 2016-06-30T19:00:00Z\\n 2016-06-29T19:00:00Z\\n 100%\\n Success\\n yourTaskId\\n \\n E1564CBC-DCFE-5E1B-8B78-8DED9A39F334\\n 1\\n 1\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamPreloadTasks', - 'description' => 'You can call this operation to query prefetch tasks in the last three days.'."\n" + 'title' => 'AddLivePackageConfig', + 'summary' => 'You can call the AddLivePackageConfig operation to add a live stream packaging configuration.', + 'description' => '- When you add a packaging configuration to a domain name for the first time, the related acceleration configurations for the playback domain name are also applied. The configurations take effect in 3 to 5 minutes.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- If the playback domain name is in a region outside China, such as Singapore, Germany, Japan, or Indonesia, high latency may occur. After you add the configuration, test it to ensure it works as expected.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'HotLiveRtcStream' => [ - 'summary' => 'Configures prefetch for a live stream that is ingested based on Real-Time Communication (RTC).', - 'methods' => [ - 'post', - 'get', + .'- After you add a live stream packaging configuration, you must restart the stream ingest for the configuration to take effect.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 300 calls per minute. If you exceed the limit, API calls are throttled. This may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLivePackageConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"05D00B48-DF50-5DC0-A07D-A250DFAE****\\"\\n}","type":"json"}]', + ], + 'AddLivePullStreamInfoConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -4751,464 +3954,178 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '142376', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain where the ingested stream will be hosted and distributed from.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'app', - ], + 'schema' => ['description' => 'The custom name of the application.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream that you want to prefetch.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'stream', - ], - ], - [ - 'name' => 'RegionCode', - 'in' => 'query', - 'schema' => [ - 'description' => 'The code of the region in which the live stream is prefetched. For more information, see the following tables that list available region codes.'."\n" - ."\n" - .'> Region codes include provincial codes for China and country codes for all countries.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ZHJ', - ], - ], - [ - 'name' => 'AudioMsid', - 'in' => 'query', - 'schema' => [ - 'description' => 'The audio MSID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rts audio', - ], + 'schema' => ['description' => 'The custom name of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'VideoMsid', + 'name' => 'SourceUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The video MSID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rts video', - ], + 'schema' => ['description' => 'The origin URL of the live stream. You can specify multiple URLs. Separate them with semicolons (;).'."\n" + ."\n" + .'> You can pull only live streams in the RTMP, FLV, HLS, and SRT formats.', 'type' => 'string', 'required' => true, 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****;rtmp://developer.aliyundoc.com/liveApp****/liveStream****', 'title' => ''], ], [ - 'name' => 'ConnectionTimeout', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The duration for which the prefetch connection is maintained. Unit: milliseconds. Default value: 0, which specifies that the prefetch connection is always maintained.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'The time when stream pulling starts. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], ], [ - 'name' => 'MediaTimeout', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The custom period after which a timeout event is triggered. Unit: milliseconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '100000', - ], + 'schema' => ['description' => 'The time when stream pulling ends.'."\n" + ."\n" + .'The time range specified by the StartTime and EndTime parameters cannot exceed seven days. The time must be later than the current time. Specify the value in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The request ID.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16BFE188-B193-4C3C-ADC5-79A7E31486EA', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'NoSpecialConfiguration', - 'errorMessage' => 'no special configuration for domain name.', - ], - [ - 'errorCode' => 'CodeRegionHasNoNode', - 'errorMessage' => 'this region has no corresponding node.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time or current time.', 'description' => ''], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'Duration between StartTime and EndTime is too long.', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'PullStreamOverLimit', 'errorMessage' => 'Pull stream is over limit for this domainName.', 'description' => ''], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16BFE188-B193-4C3C-ADC5-79A7E31486EA\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16BFE188-B193-4C3C-ADC5-79A7E31486EA\\n","errorExample":""}]', - 'title' => 'HotLiveRtcStream', - 'description' => '### [](#qps-)QPS limit'."\n" + 'title' => 'AddLivePullStreamInfoConfig', + 'summary' => 'Creates a scheduled stream pulling configuration, which includes parameters such as the origin URL, start time, and end time.', + 'description' => '- Before you call this operation, make sure that you understand the billing method and pricing of ApsaraVideo Live. For more information, see [](t1961174.xdita#).'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '### Region codes'."\n" - ."\n" - .'**Provincial codes for China**'."\n" - ."\n" - .'|Provincial division|Code|'."\n" - .'|---|---|'."\n" - .'|Beijing|BEJ|'."\n" - .'|Tianjin|TAJ|'."\n" - .'|Hebei|HEB|'."\n" - .'|Shanxi|SHX|'."\n" - .'|Nei Mongol|NMG|'."\n" - .'|Liaoning|LIA|'."\n" - .'|Jilin|JIL|'."\n" - .'|Heilongjiang|HLJ|'."\n" - .'|Shanghai|SHH|'."\n" - .'|Jiangsu|JSU|'."\n" - .'|Zhejiang|ZHJ|'."\n" - .'|Anhui|ANH|'."\n" - .'|Fujian|FUJ|'."\n" - .'|Jiangxi|JXI|'."\n" - .'|Shandong|SHD|'."\n" - .'|Henan|HEN|'."\n" - .'|Hubei|HUB|'."\n" - .'|Hunan|HUN|'."\n" - .'|Guangdong|GUD|'."\n" - .'|Guangxi|GXI|'."\n" - .'|Hainan|HAI|'."\n" - .'|Chongqing|CHQ|'."\n" - .'|Sichuan|SCH|'."\n" - .'|Guizhou|GUI|'."\n" - .'|Yunnan|YUN|'."\n" - .'|Xizang|TIB|'."\n" - .'|Shaanxi|SHA|'."\n" - .'|Gansu|GAN|'."\n" - .'|Qinghai|QIH|'."\n" - .'|Ningxia|NXA|'."\n" - .'|Xinjiang|XIN|'."\n" - .'|Taiwan|TAI|'."\n" - .'|Hong Kong|HKG|'."\n" - .'|Macao|MAC|'."\n" - ."\n" - .'**Country codes for all countries**'."\n" - ."\n" - .'|Country|Code|'."\n" - .'|---|---|'."\n" - .'|Papua New Guinea|PG|'."\n" - .'|Slovakia|SK|'."\n" - .'|Peru|PE|'."\n" - .'|Latvia|LV|'."\n" - .'|United Arab Emirates|AE|'."\n" - .'|Canada|CA|'."\n" - .'|Cuba|CU|'."\n" - .'|Mauritania|MR|'."\n" - .'|Japan|JP|'."\n" - .'|Armenia|AM|'."\n" - .'|Turkmenistan|TM|'."\n" - .'|Russia|RU|'."\n" - .'|Belarus|BY|'."\n" - .'|Guinea|GN|'."\n" - .'|Iraq|IQ|'."\n" - .'|Argentina|AR|'."\n" - .'|Chile|CL|'."\n" - .'|Eswatini|SZ|'."\n" - .'|Democratic Republic of the Congo|CD|'."\n" - .'|Belgium|BE|'."\n" - .'|Kazakhstan|KZ|'."\n" - .'|Serbia|RS|'."\n" - .'|Türkiye|TR|'."\n" - .'|Namibia|NA|'."\n" - .'|Lithuania|LT|'."\n" - .'|Puerto Rico|PR|'."\n" - .'|Republic of the Congo|CG|'."\n" - .'|New Caledonia|NC|'."\n" - .'|Morocco|MA|'."\n" - .'|Greenland|GL|'."\n" - .'|Kuwait|KW|'."\n" - .'|Liberia|LR|'."\n" - .'|Ukraine|UA|'."\n" - .'|Indonesia|ID|'."\n" - .'|Myanmar|MM|'."\n" - .'|Bolivia|BO|'."\n" - .'|Moldova|MD|'."\n" - .'|Greece|GR|'."\n" - .'|New Zealand|NZ|'."\n" - .'|Solomon Islands|SB|'."\n" - .'|Ethiopia|ET|'."\n" - .'|Fiji|FJ|'."\n" - .'|Yemen|YE|'."\n" - .'|Cyprus|CY|'."\n" - .'|Bosnia and Herzegovina|BA|'."\n" - .'|Eritrea|ER|'."\n" - .'|Germany|DE|'."\n" - .'|Pakistan|PK|'."\n" - .'|Central African Republic|CF|'."\n" - .'|Croatia|HR|'."\n" - .'|Egypt|EG|'."\n" - .'|Thailand|TH|'."\n" - .'|Costa Rica|CR|'."\n" - .'|Tanzania|TZ|'."\n" - .'|Laos|LA|'."\n" - .'|Libya|LY|'."\n" - .'|Tunisia|TN|'."\n" - .'|Poland|PL|'."\n" - .'|United Kingdom|GB|'."\n" - .'|Equatorial Guinea|GQ|'."\n" - .'|China|CN|'."\n" - .'|Iceland|IS|'."\n" - .'|Oman|OM|'."\n" - .'|Mongolia|MN|'."\n" - .'|Chad|TD|'."\n" - .'|United States|US|'."\n" - .'|Mexico|MX|'."\n" - .'|Kyrgyzstan|KG|'."\n" - .'|Suriname|SR|'."\n" - .'|India|IN|'."\n" - .'|Guinea-Bissau|GW|'."\n" - .'|Venezuela|VE|'."\n" - .'|Italy|IT|'."\n" - .'|Algeria|DZ|'."\n" - .'|Qatar|QA|'."\n" - .'|France|FR|'."\n" - .'|South Africa|ZA|'."\n" - .'|Norway|NO|'."\n" - .'|Portugal|PT|'."\n" - .'|Hungary|HU|'."\n" - .'|South Korea|KR|'."\n" - .'|Uzbekistan|UZ|'."\n" - .'|Burundi|BI|'."\n" - .'|Estonia|EE|'."\n" - .'|Bangladesh|BD|'."\n" - .'|Bhutan|BT|'."\n" - .'|Afghanistan|AF|'."\n" - .'|Switzerland|CH|'."\n" - .'|Belize|BZ|'."\n" - .'|Timor-Leste|TL|'."\n" - .'|Haiti|HT|'."\n" - .'|Togo|TG|'."\n" - .'|Albania|AL|'."\n" - .'|Cameroon|CM|'."\n" - .'|Nicaragua|NI|'."\n" - .'|Nigeria|NG|'."\n" - .'|Honduras|HN|'."\n" - .'|Burkina Faso|BF|'."\n" - .'|Mozambique|MZ|'."\n" - .'|Georgia|GE|'."\n" - .'|Vanuatu|VU|'."\n" - .'|Paraguay|PY|'."\n" - .'|Luxembourg|LU|'."\n" - .'|Lebanon|LB|'."\n" - .'|Uganda|UG|'."\n" - .'|Mali|ML|'."\n" - .'|Saudi Arabia|SA|'."\n" - .'|Palestine|PS|'."\n" - .'|Montenegro|ME|'."\n" - .'|Colombia|CO|'."\n" - .'|Philippines|PH|'."\n" - .'|Sweden|SE|'."\n" - .'|Finland|FI|'."\n" - .'|Kenya|KE|'."\n" - .'|Romania|RO|'."\n" - .'|Panama|PA|'."\n" - .'|Jordan|JO|'."\n" - .'|Rwanda|RW|'."\n" - .'|Lesotho|LS|'."\n" - .'|Macedonia|MK|'."\n" - .'|Zambia|ZM|'."\n" - .'|Syria|SY|'."\n" - .'|Spain|ES|'."\n" - .'|Ecuador|EC|'."\n" - .'|Gabon|GA|'."\n" - .'|Ireland|IE|'."\n" - .'|Dominican Republic|DO|'."\n" - .'|Ghana|GH|'."\n" - .'|Madagascar|MG|'."\n" - .'|Malaysia|MY|'."\n" - .'|Austria|AT|'."\n" - .'|Tajikistan|TJ|'."\n" - .'|Denmark|DK|'."\n" - .'|Uruguay|UY|'."\n" - .'|Cambodia|KH|'."\n" - .'|Senegal|SN|'."\n" - .'|El Salvador|SV|'."\n" - .'|Sierra Leone|SL|'."\n" - .'|Brunei|BN|'."\n" - .'|Western Sahara|EH|'."\n" - .'|Niger|NE|'."\n" - .'|Iran|IR|'."\n" - .'|Guyana|GY|'."\n" - .'|Angola|AO|'."\n" - .'|Botswana|BW|'."\n" - .'|Brazil|BR|'."\n" - .'|Australia|AU|'."\n" - .'|Côte d\'Ivoire|CI|'."\n" - .'|Czech Republic|CZ|'."\n" - .'|The Gambia|GM|'."\n" - .'|Benin|BJ|'."\n" - .'|Vietnam|VN|'."\n" - .'|Sudan|SD|'."\n" - .'|Netherlands|NL|'."\n" - .'|Djibouti|DJ|'."\n" - .'|Slovenia|SI|'."\n" - .'|Nepal|NP|'."\n" - .'|Zimbabwe|ZW|'."\n" - .'|Jamaica|JM|'."\n" - .'|Malawi|MW|'."\n" - .'|Azerbaijan|AZ|'."\n" - .'|Somalia|SO|'."\n" - .'|Israel|IL|'."\n" - .'|Falkland Islands (Islas Malvinas)|FK|'."\n" - .'|North Korea|KP|'."\n" - .'|Guatemala|GT|'."\n" - .'|Bahamas|BS|'."\n" - .'|Sri Lanka|LK|'."\n" - .'|Singapore|SG|'."\n" - .'|Bahrain|BH|', - ], - 'AddLivePullStreamInfoConfig' => [ - 'summary' => 'Creates a stream pulling configuration for a live stream, which includes parameters such as the origin URL, start time, and end time.', - 'methods' => [ - 'post', - 'get', + .'- Stream pulling refers to the process of pulling live streams from third-party URLs to a live center of ApsaraVideo Live for CDN acceleration.'."\n" + ."\n" + .'- This operation supports only scheduled stream pulling. You can specify a start time and an end time to pull a live stream during a specific time period.'."\n" + ."\n" + .'- The console supports both scheduled and triggered stream pulling. For more information, see [Configure stream pulling](~~199452~~).'."\n" + ."\n" + .'- You can specify custom values for the AppName and StreamName parameters. Streaming URLs are generated based on AppName and StreamName. You can use the [](t2020590.xdita#) to generate a streaming URL.'."\n" + ."\n" + .'- Each stream pulling configuration must be unique. The combination of DomainName, AppName, and StreamName can only be associated with one active configuration. Attempting to add a duplicate configuration will result in an error.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLivePullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","type":"json"}]', + ], + 'AddLiveRecordNotifyConfig' => [ + 'summary' => 'Adds a domain-level recording callback configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name used for stream pulling. It is the main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streamer streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'NotifyUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. This parameter is determined by you.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The callback URL for recording events and status callbacks.'."\n" + ."\n" + .'> The URL must start with `http://` or `https://`. For more information, see [Recording event callback](~~55016~~).', 'type' => 'string', 'required' => true, 'example' => 'http://demo.aliyundoc.com/examplecallback.action', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'NeedStatusNotify', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. This parameter is determined by you.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'Specifies whether recording task status callbacks are required. Valid values:'."\n" + ."\n" + .'- true: Required. If NeedStatusNotify is set to **true**, the response includes a recording status callback example.'."\n" + .'- false (default): Not required.', 'type' => 'boolean', 'required' => false, 'default' => 'false', 'example' => 'false', 'title' => ''], ], [ - 'name' => 'SourceUrl', + 'name' => 'OnDemandUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The origin URL of the live stream. You can specify multiple URLs. Separate them with semicolons (;).'."\n" - ."\n" - .'> You can pull only live streams in the Real-Time Messaging Protocol (RTMP), Flash Video (FLV), HTTP Live Streaming (HLS), and Secure Reliable Transport (SRT) formats.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****;rtmp://developer.aliyundoc.com/liveApp****/liveStream****', - ], + 'schema' => ['description' => 'The callback URL for on-demand recording.'."\n" + ."\n" + .'> The URL must start with `http://` or `https://`. For more information, see [On-demand recording callback](~~85910~~).', 'type' => 'string', 'required' => false, 'example' => 'http://learn.aliyundoc.com/ondemandcallback.action', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'NotifyReqAuth', 'in' => 'query', - 'schema' => [ - 'description' => 'The time when stream pulling starts.'."\n" - ."\n" - .'The time range specified by the StartTime and EndTime parameters cannot exceed seven days. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" + ."\n" + .'- true: Enabled.'."\n" + ."\n" + .'- false (default): Disabled.'."\n" + ."\n" + .'> When this parameter is set to true, the NotifyAuthKey parameter is required.', 'type' => 'boolean', 'required' => false, 'default' => 'false', 'example' => 'true', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'NotifyAuthKey', 'in' => 'query', - 'schema' => [ - 'description' => 'The time when stream pulling ends.'."\n" - ."\n" - .'The time range specified by the StartTime and EndTime parameters cannot exceed seven days. The time specified by the EndTime parameter must be later than the current time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', - ], + 'schema' => ['description' => 'The callback authentication key. The key must be 16 to 32 characters in length and can contain only letters and digits.'."\n" + .'> This parameter is required when the NotifyReqAuth parameter is set to true.', 'type' => 'string', 'required' => false, 'maxLength' => 64, 'minLength' => 16, 'example' => 'chenhuanxin249088', 'title' => ''], ], ], 'responses' => [ @@ -5216,414 +4133,371 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time or current time.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'Duration between StartTime and EndTime is too long.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'PullStreamOverLimit', - 'errorMessage' => 'Pull stream is over limit for this domainName.', - ], - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InvalidNotifyUrl.Malformed', 'errorMessage' => 'Specified NotifyUrl is invalid.', 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['errorCode' => 'InvalidNotifyUrl.Unsafe', 'errorMessage' => 'Specified NotifyUrl is not safe.', 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'InvalidOnDemandUrl.Malformed', 'errorMessage' => 'Specified OnDemandUrl is invalid.', 'description' => ''], + ['errorCode' => 'InvalidOnDemandUrl.Unsafe', 'errorMessage' => 'Specified OnDemandUrl is not safe.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\n","errorExample":""}]', - 'title' => 'AddLivePullStreamInfoConfig', - 'description' => '* Before you call this operation, make sure that you fully understand the billing method and pricing of stream pulling in ApsaraVideo Live. For more information, see [Billing of standard streaming](~~195284~~).'."\n" - .'* Stream pulling refers to the process of pulling live streams from third-party streaming URLs to a live center of ApsaraVideo Live for CDN acceleration.'."\n" - .'* You can call this operation only for regular stream pulling. That is, you can specify the start time and end time to pull live streams.'."\n" - .'* Regular stream pulling and triggered stream pulling are supported in the ApsaraVideo Live console. For more information, see [Configure stream pulling](~~199452~~).'."\n" - .'* You can specify custom values for the AppName and StreamName parameters. Streaming URLs that are generated vary based on different values of the AppName and StreamName parameters. You can use the [URL generator](~~197400~~) to generate a streaming URL.'."\n" - .'* A configuration is identified by the DomainName, AppName, and StreamName parameters all together. If you try to call this operation to add a configuration that has the same DomainName, AppName, and StreamName parameters as an existing configuration, an error indicating that the configuration already exists is returned.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + 'title' => 'Add domain-level recording callback configuration', + 'description' => 'Before calling this operation to add a domain-level recording callback configuration, query the live recording callback configuration first. To query the live recording callback configuration by using an API operation, see [Query live recording callback configuration](~~2847893~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The single-user QPS limit for this operation is 30 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLivePullStreamConfig' => [ - 'summary' => 'Queries the stream pulling configurations for a domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveRecordNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveRecordNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'AddLiveRecordVodConfig' => [ + 'summary' => 'Creates a live-to-VOD configuration to store recordings in ApsaraVideo VOD.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '106854', + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID. The example value `cn-shanghai` indicates the China (Shanghai) region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', - ], - 'LiveAppRecordList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveAppRecord' => [ - 'description' => 'Details about the stream pulling configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range for which the configurations were queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-05-20T01:33:00Z', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'SourceUrl' => [ - 'description' => 'The origin server of the live stream.'."\n", - 'type' => 'string', - 'example' => 'guide.aliyundoc.com', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which the configurations were queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-05-15T01:30:00Z', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'SourceUsing' => [ - 'description' => 'The live stream origin server that you are using.'."\n", - 'type' => 'string', - 'example' => 'guide.aliyundoc.com', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - ], - ], - ], - ], - ], - ], - ], + 'schema' => ['description' => 'The streaming domain.'."\n" + ."\n" + .'> Ensure ApsaraVideo VOD is activated in the same region as the streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the application that the stream belongs to. You can find this value on the [stream management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'testName', 'title' => ''], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name. You can find this value on the [stream management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'stream', 'title' => ''], ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"LiveAppRecordList\\": {\\n \\"LiveAppRecord\\": [\\n {\\n \\"EndTime\\": \\"2016-05-20T01:33:00Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"SourceUrl\\": \\"guide.aliyundoc.com\\",\\n \\"StartTime\\": \\"2016-05-15T01:30:00Z\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"SourceUsing\\": \\"guide.aliyundoc.com\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\nA3136B58-5876-4168-83CA-B562781981A0\\n\\n \\n guide.aliyundoc.com\\n liveStream****\\n 2016-05-20T01:33:00Z\\n example.com\\n 2016-05-15T01:30:00Z\\n guide.aliyundoc.com\\n liveApp****\\n \\n\\n","errorExample":"{\\n \\"LiveAppRecordList\\":{\\n \\"LiveAppRecord\\":[{\\n \\"AppName\\":\\"xxxx\\",\\n \\"DomainName\\":\\"live.aliyunlive.com\\",\\n \\"EndTime\\":\\"2016-05-20T01:33:00Z\\",\\n \\"SourceUrl\\":\\"http://test\\",\\n \\"StartTime\\":\\"2016-05-15T01:30:00Z\\",\\n \\"StreamName\\":\\"xxxxxx\\"\\n }]\\n },\\n \\"RequestId\\":\\"A3136B58-5876-4168-83CA-B562781981A0\\"\\n}"}]', - 'title' => 'DescribeLivePullStreamConfig', - 'description' => '##'."\n" - ."\n" - .'This operation is applicable to regular stream pulling. You can call this operation to query the regular stream pulling configurations for a domain name.'."\n" - ."\n" - .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLivePullStreamInfoConfig' => [ - 'summary' => 'Deletes a stream pulling configuration.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'VodTranscodeGroupId', + 'in' => 'query', + 'schema' => ['description' => '>This parameter is ignored if `RecordFormat` is specified.>'."\n" + .'The ID of the ApsaraVideo VOD transcoding template group for transcoding recorded videos.', 'type' => 'string', 'required' => false, 'example' => 'e2d796d3bb5fd8049d32bff62f94****', 'title' => ''], ], - ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'name' => 'CycleDuration', + 'in' => 'query', + 'schema' => ['description' => 'The cycle duration, in seconds. The default value is **3600**. The value must be between **300** and **21600**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '21600', 'minimum' => '300', 'example' => '300', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AutoCompose', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => '>This parameter is ignored if `RecordFormat` is specified.>'."\n" + .'Specifies whether to automatically merge files from multiple recording cycles into a single file after a live stream ends.'."\n" + ."\n" + .'A value of **ON** enables automatic merging. If enabled, you must also specify the `ComposeVodTranscodeGroupId` parameter. By default, automatic merging is disabled.', 'type' => 'string', 'required' => false, 'example' => 'ON', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'SpaceId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the VOD application space. You can obtain this ID from the **VOD console** or by calling an [API operation to query application information](~~454873~~). This parameter applies only when the VOD application space feature is enabled.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'app-1000000'], ], [ - 'name' => 'AppName', + 'name' => 'StorageLocation', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can call [DescribeLivePullStreamConfig](~~2847818~~l) operation to query the application name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The storage location.', 'type' => 'string', 'required' => false, 'example' => '****-tjptr2vatm.oss-cn-shanghai.aliyuncs.com', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'ComposeVodTranscodeGroupId', 'in' => 'query', + 'schema' => ['description' => '>This parameter is ignored if `RecordFormat` is specified.>'."\n" + .'The ID of the ApsaraVideo VOD transcoding template group for transcoding the merged video. This parameter is required if `AutoCompose` is set to `ON`.', 'type' => 'string', 'required' => false, 'example' => '*****', 'title' => ''], + ], + [ + 'name' => 'OnDemand', + 'in' => 'query', + 'schema' => ['description' => 'The recording trigger mode. Valid values:'."\n" + ."\n" + .'- **0** (Default): Automatic recording.'."\n" + ."\n" + .'- **1**: On-demand recording triggered by an HTTP callback.'."\n" + ."\n" + .'- **2**: On-demand recording triggered by ingest parameters.'."\n" + ."\n" + .'- **7**: Manual recording. Allows you to start and stop recording by calling the `RealTimeRecordCommand` operation.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'RecordContent', + 'in' => 'query', + 'schema' => ['description' => 'The recorded content. Valid values:'."\n" + ."\n" + .'- `raw` (Default): Records the source stream.'."\n" + ."\n" + .'- `transcode`: Records transcoded streams.'."\n" + ."\n" + .'To record both source and transcoded streams, provide a comma-separated list, for example, `raw,transcode`.'."\n" + ."\n" + .'> If this parameter is set to include `transcode`, you must specify at least one template in the `TranscodeTemplates` parameter.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'raw'], + ], + [ + 'name' => 'DelayTime', + 'in' => 'query', + 'schema' => ['description' => 'The stream interruption timeout, in seconds. If a stream interruption is shorter than this duration, recording continues in the same file. If the interruption is longer, a new file is created. Valid values: 15 to 21600.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '21600', 'minimum' => '15', 'default' => '180', 'title' => '', 'required' => false, 'example' => '180'], + ], + [ + 'name' => 'RecordFormat', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The name of the live stream. You can call [DescribeLivePullStreamConfig](~~2847818~~l) operation to query the stream name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Format' => ['description' => 'The recording format. Valid values:'."\n" + ."\n" + .'- `m3u8`'."\n" + ."\n" + .'- `flv`'."\n" + ."\n" + .'- `mp4`', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'm3u8'], + 'SliceDuration' => ['description' => 'The slice duration, in seconds.'."\n" + ."\n" + .'This parameter applies only to the `m3u8` format.'."\n" + ."\n" + .'The value must be between 5 and 30. The default is 30.', 'type' => 'integer', 'format' => 'int32', 'default' => '30', 'title' => '', 'required' => false, 'example' => '30'], + 'AutoCompose' => ['description' => 'Specifies whether to automatically merge recording files for this format after the stream ends. Valid values:'."\n" + ."\n" + .'- `ON`: Enables automatic merging.'."\n" + ."\n" + .'- `OFF`: Disables automatic merging.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ON'], + 'VideoProcess' => ['description' => 'The video source to process. Valid values:'."\n" + ."\n" + .'- `origin` (Default): The per-cycle recording files.'."\n" + ."\n" + .'- `compose`: The single video file composed from all cycles.'."\n" + ."\n" + .'To process both video sources, separate the values with a comma (,), for example, `origin,compose`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'origin'], + 'ProcessMethod' => ['description' => 'The video processing method. Valid values:'."\n" + ."\n" + .'- `transcode`: Uses a transcoding template group to process the video.'."\n" + ."\n" + .'- `workflow`: Uses a workflow to process the video.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'transcode'], + 'ProcessTemplateId' => ['description' => 'The ID of the transcoding template group or workflow.'."\n" + ."\n" + .'> The specified ID must match the `ProcessMethod`. For example, provide a transcoding template group ID if `ProcessMethod` is `transcode`, or a workflow ID if `ProcessMethod` is `workflow`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'e2d796d3bb5fd8049d32bff62f94****'], + 'Tags' => ['description' => 'The tags for video categorization.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'sports'], + ], + 'title' => '', + 'description' => 'The recording format configuration.', + 'required' => false, + 'example' => '', + ], + 'maxItems' => 3, + 'title' => '', + 'description' => 'A list of format-specific recording configurations.', + 'required' => false, + 'example' => '', + ], + ], + [ + 'name' => 'TranscodeTemplates', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'type' => 'array', + 'items' => ['description' => '- The name of the [transcoding template](~~45039~~). You can specify up to 10 templates.'."\n" + ."\n" + .'- If `RecordContent` is set to include `transcode`, you must specify at least one template.'."\n" + ."\n" + .'- To record all available transcoded streams, specify the wildcard character (`*`) as the value. For example, `TranscodeTemplates.1=*`.'."\n" + ."\n" + .'> The value `raw` is reserved and cannot be used.
The `N` in `TranscodeTemplates.N` is an index starting from 1 for each template. For example: `TranscodeTemplates.1=sd` and `TranscodeTemplates.2=hd`.
', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'sd'], + 'maxItems' => 10, + 'title' => '', + 'description' => 'A list of transcoding templates for recording transcoded streams.', + 'required' => false, + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The returned data.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'CommomLiveRcordConfigExisted', 'errorMessage' => 'Commom liverecord config has already exist.', 'description' => ''], + ['errorCode' => 'InvalidAutoCompose.Malformed', 'errorMessage' => 'Specified parameter AutoCompose is not valid.', 'description' => ''], + ['errorCode' => 'InvalidAutoComposeAndComposeVodTranscodeGroupId.Malformed', 'errorMessage' => 'Specified parameter AutoCompose and ComposeVodTranscodeGroupId is not valid, must both empty or input', 'description' => ''], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ], + 403 => [ + ['errorCode' => 'InvalidRegion.Conflict', 'errorMessage' => 'Specified parameter StorageLocation and Region is not match', 'description' => ''], + ], + [ + ['errorCode' => 'InvalidStorage.NotFound', 'errorMessage' => 'Specified parameter StorageLocation is not exist', 'description' => ''], + ['errorCode' => 'InvalidTemplateGroupId.NotFound', 'errorMessage' => 'Specified parameter vodTranscodeGroupId or composeVodTranscodeGroupId is not exist', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteLivePullStreamInfoConfig', - 'description' => 'This operation is applicable to regular stream pulling. You can call this operation to delete a configuration of regular stream pulling.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + 'title' => 'AddLiveRecordVodConfig', + 'description' => '- Storing recordings in ApsaraVideo for VOD triggers automatic operations like video merging and transcoding, which incur video processing fees within the service. For details, see [video editing billing](~~188310~~) and [video transcoding billing](~~188308~~). For FAQs on automatic merging and transcoding, see the [live-to-VOD FAQ](~~99726~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- Alibaba Finance Cloud accounts do not support the live-to-VOD feature.'."\n" + ."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The QPS limit for this API is 1,000 calls per minute per user. Exceeding this limit will cause API calls to be throttled, which can impact your business. To avoid throttling, call the API at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'SetLiveLazyPullStreamInfoConfig' => [ - 'summary' => 'Creates a configuration of triggered stream pulling.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'AddLiveRecordVodConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveRecordVodConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'AddLiveSnapshotDetectPornConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'required' => true, 'example' => 'testApp', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'OssEndpoint', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n" - ."\n" - .'> If you want to configure triggered stream pulling for all applications, set the value to **ali_all_app**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ali_all_app', - ], + 'schema' => ['description' => 'The endpoint of the Object Storage Service (OSS) bucket.'."\n" + ."\n" + .'After the review is complete, you can search for specific violations in the OSS console based on the callback information. You must configure the OSS endpoint in advance. For more information, see [Configure content moderation](~~199449~~).', 'type' => 'string', 'required' => true, 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], ], [ - 'name' => 'PullDomainName', + 'name' => 'OssBucket', 'in' => 'query', - 'schema' => [ - 'description' => 'The origin server address of the live stream. Separate multiple addresses with semicolons (;).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'guide.aliyundoc.com', - ], + 'schema' => ['description' => 'The name of the OSS bucket.'."\n" + ."\n" + .'After the review is complete, you can search for specific violations in the OSS console based on the callback information. You must create the OSS bucket in advance. For more information, see [Configure content moderation](~~199449~~).', 'type' => 'string', 'required' => true, 'example' => 'livebucket', 'title' => ''], ], [ - 'name' => 'PullAppName', + 'name' => 'OssObject', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application for back-to-origin stream pulling.'."\n" - ."\n" - .'> If you want to use the application specified in the streaming URL, leave this parameter empty.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'livePullApp****', - ], + 'schema' => ['description' => 'The name of the snapshot that stores violations such as pornographic content and politically sensitive content.', 'type' => 'string', 'required' => false, 'example' => 'record/{AppName}/{StreamName}/{Sequence}.jpg', 'title' => ''], ], [ - 'name' => 'TranscodeLazy', + 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to trigger stream pulling when the transcoded stream is played. The default value is **no**. Valid values:'."\n" - ."\n" - .'* **yes**'."\n" - .'* **no**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'no', - ], + 'schema' => ['description' => 'The interval at which snapshots are captured from the live stream. Valid values: **5 to 3600**. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '3600', 'minimum' => '5', 'example' => '10', 'title' => ''], ], [ - 'name' => 'PullProtocol', + 'name' => 'Scene', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The protocol for back-to-origin stream pulling. Valid values:'."\n" + 'description' => 'Scene list detection.', + 'type' => 'array', + 'items' => ['description' => 'The moderation scenario. Valid values:'."\n" ."\n" - .'* **rtmp**'."\n" - .'* **httpflv**'."\n" - .'* **hls**'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp', + .'- **porn**: pornography detection. This is the default value.'."\n" + ."\n" + .'- **terrorism**: terrorism detection'."\n" + ."\n" + .'- **ad**: ad violation detection'."\n" + ."\n" + .'- **live**: undesirable scene detection'."\n" + ."\n" + .'- **logo**: logo detection', 'type' => 'string', 'required' => false, 'example' => 'live', 'title' => ''], + 'required' => false, + 'example' => 'live', + 'maxItems' => 5, + 'title' => '', ], ], ], @@ -5632,351 +4506,283 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\n","errorExample":""}]', - 'title' => 'SetLiveLazyPullStreamInfoConfig', - 'description' => 'You can call this operation to configure triggered stream pulling. The configuration lets ApsaraVideo Live automatically pull live streams from the origin server when the origin server starts to play live streams.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidOssEndpoint.Malformed', 'errorMessage' => 'Specified parameter OssEndpoint is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.Malformed', 'errorMessage' => 'Specified parameter OssBucket is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssObject.Malformed', 'errorMessage' => 'Specified parameter OssObject is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.NotFound', 'errorMessage' => 'The parameter OssBucket does not exist.', 'description' => ''], + ['errorCode' => 'InvalidScenes', 'errorMessage' => 'Specified parameter Scene is not valid.', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ], + ], + 'title' => 'AddLiveSnapshotDetectPornConfig', + 'summary' => 'Adds a video moderation configuration for live streams in an application under a domain name.', + 'description' => '- The live streaming audit function identifies and reviews non-compliant sensitive content at the domain and App level, and promptly notifies users of such violations via callbacks. Users can then review the content and take appropriate actions.'."\n" ."\n" - .'> The IPv6 protocol is not supported.'."\n" + .'- Currently, only some live streaming centers support intelligent auditing. For a list of live streaming centers that support this feature, please refer to [Service Regions](~~193730~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS Limitation'."\n" ."\n" - .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The QPS limit for this API per user is 30 requests/second. Exceeding this limit will result in API throttling, which may impact your services. Please use the API judiciously. For more information, see [QPS Limitations](~~343507~~).', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'DescribeLiveLazyPullStreamConfig' => [ - 'summary' => 'Queries the configurations of triggered stream pulling for a streaming domain.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveSnapshotDetectPornConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'AddLiveSnapshotNotifyConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '160085', + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'www.yourdomain***.com', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'NotifyUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The callback URL. The URL must be valid, with a maximum length of 500 characters.', 'type' => 'string', 'required' => true, 'example' => 'http://callback.yourdomain***.com', 'title' => ''], + ], + [ + 'name' => 'NotifyReqAuth', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" + ."\n" + .'- **yes**: Enables'."\n" + ."\n" + .'- **no** (Default): Disables'."\n" + ."\n" + .'> If you set this parameter to yes, NotifyAuthKey is required.', 'type' => 'string', 'required' => false, 'example' => 'yes', 'title' => ''], + ], + [ + 'name' => 'NotifyAuthKey', + 'in' => 'query', + 'schema' => ['description' => 'The authentication key for the callback. The key must be 16 to 32 characters in length and contain only letters and digits.'."\n" + ."\n" + .'> This parameter is required if you set NotifyReqAuth to **yes**.', 'type' => 'string', 'required' => false, 'example' => 'yourkey', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The stream pulling configurations.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', - ], - 'LiveLazyPullConfigList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveLazyPullConfig' => [ - 'description' => 'The configurations of triggered stream pulling.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The configuration of triggered stream pulling.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'PullArgs' => [ - 'description' => 'The parameters of back-to-origin stream pulling.'."\n", - 'type' => 'string', - 'example' => 'k=v', - ], - 'PullAppName' => [ - 'description' => 'The name of the application for back-to-origin stream pulling. If the application specified in the streaming URL is used, this parameter is left empty.'."\n", - 'type' => 'string', - 'example' => 'livePullApp****', - ], - 'PullProtocol' => [ - 'description' => 'The protocol for back-to-origin stream pulling. Valid values:'."\n" - ."\n" - .'* **rtmp**'."\n" - .'* **httpflv**'."\n" - .'* **hls**'."\n", - 'type' => 'string', - 'example' => 'RTMP', - ], - 'PullDomainName' => [ - 'description' => 'The domain name for back-to-origin stream pulling.'."\n", - 'type' => 'string', - 'example' => 'guide.aliyundoc.com', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'TranscodeLazy' => [ - 'description' => 'Indicates whether stream pulling is triggered when the transcoded stream is played. Default value: **no**. Valid values:'."\n" - ."\n" - .'* **yes**'."\n" - .'* **no**'."\n", - 'type' => 'string', - 'example' => 'no', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"LiveLazyPullConfigList\\": {\\n \\"LiveLazyPullConfig\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"PullArgs\\": \\"k=v\\",\\n \\"PullAppName\\": \\"livePullApp****\\",\\n \\"PullProtocol\\": \\"RTMP\\",\\n \\"PullDomainName\\": \\"guide.aliyundoc.com\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"TranscodeLazy\\": \\"no\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n A3136B58-5876-4168-83CA-B562781981A0\\n \\n liveApp****\\n k=v\\n livePullApp****\\n RTMP\\n guide.aliyundoc.com\\n example.com\\n no\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveLazyPullStreamConfig', - 'description' => '##'."\n" - ."\n" - .'This operation is applicable to regular stream pulling. You can call this operation to query the configurations of regular stream pulling for a domain name.'."\n" - ."\n" - .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" - .'| Error code | Error message | Error message| Description|'."\n" - .'| ------------- |------------ | ----- | ----- |'."\n" - .'| Missing DomainName | DomainName is mandatory for this action.| 400 |One or more required parameters are not specified.|'."\n" - .'| InvalidDomain.NotFound |The domain provided does not exist in our records. |404 |The domain name is not found within your Alibaba Cloud account. |', - ], - 'DeleteLiveLazyPullStreamInfoConfig' => [ - 'summary' => 'Deletes a configuration of triggered stream pulling.', - 'methods' => [ - 'post', - 'get', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ], + 409 => [ + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'AddLiveSnapshotNotifyConfig', + 'summary' => 'Configures snapshot callbacks.', + 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveSnapshotNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveSnapshotNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'AddLiveStreamMerge' => [ + 'summary' => 'Call AddLiveStreamMerge to add a primary/backup stream merge configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '106856', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n" - ."\n" - .'> If you want to delete configurations of triggered stream pulling for all applications, set the value to **ali_all_app**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ali_all_app', - ], + 'schema' => ['description' => 'The AppName of the output stream. For the configuration to take effect, this AppName must match the one in the ingest URL. Wildcards (`*`) are not supported.', 'type' => 'string', 'required' => true, 'example' => 'app', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - ], - 'description' => '', - ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The StreamName of the output stream. For the configuration to take effect, this StreamName must match the one in the ingest URL. Wildcards (`*`) are not supported.', 'type' => 'string', 'required' => true, 'example' => 'StreamName', 'title' => ''], ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteLiveLazyPullStreamInfoConfig', - 'description' => 'This operation is application to triggered stream pulling. You can call this operation to delete a configuration of triggered stream pulling. If you set the AppName parameter to ali_all_app, configurations of triggered stream pulling for all applications under the domain name are deleted.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'UpdateLivePullStreamInfoConfig' => [ - 'summary' => 'Modifies the stream pulling settings of a live stream, including the origin URL, start time, and end time.', - 'methods' => [ - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'InAppName1', + 'in' => 'query', + 'schema' => ['description' => 'The AppName of the primary input stream. This value must match the AppName in the ingest URL for the primary stream.', 'type' => 'string', 'required' => true, 'example' => 'app1', 'title' => ''], ], - ], - 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'name' => 'InStreamName1', + 'in' => 'query', + 'schema' => ['description' => 'The StreamName of the primary input stream. This value must match the StreamName in the ingest URL for the primary stream.', 'type' => 'string', 'required' => true, 'example' => 'InStream1', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'InAppName2', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The AppName of the backup input stream. This value must match the AppName in the ingest URL for the backup stream.', 'type' => 'string', 'required' => true, 'example' => 'app2', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'InStreamName2', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name used for stream pulling. It is the main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The StreamName of the backup input stream. This value must match the StreamName in the ingest URL for the backup stream.', 'type' => 'string', 'required' => true, 'example' => 'stream2', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The start time of the stream merge.'."\n" + ."\n" + .'The time must be in UTC and specified in the ISO 8601 standard format: `yyyy-MM-ddTHH:mm:ssZ`.', 'type' => 'string', 'required' => true, 'example' => '2020-05-29T00:00:00Z', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The end time of the stream merge.'."\n" + ."\n" + .'The time must be in UTC and specified in the ISO 8601 standard format: `yyyy-MM-ddTHH:mm:ssZ`.'."\n" + ."\n" + .'> The interval between `StartTime` and `EndTime` cannot exceed 7 days.', 'type' => 'string', 'required' => true, 'example' => '2020-05-29T01:00:00Z', 'title' => ''], ], [ - 'name' => 'SourceUrl', + 'name' => 'Protocol', 'in' => 'query', - 'schema' => [ - 'description' => 'The complete URL of the origin server of the live stream. You can specify multiple URLs by separating them with semicolons (;).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****;rtmp://developer.aliyundoc.com/liveApp****/liveStream****', - ], + 'schema' => ['description' => 'The live stream protocol for the input streams. Valid values:'."\n" + ."\n" + .'- **rtmp** (Default)'."\n" + ."\n" + .'- **rtc**', 'type' => 'string', 'required' => false, 'example' => 'rtmp', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'LiveMerger', 'in' => 'query', - 'schema' => [ - 'description' => 'The time when stream pulling starts.'."\n" - ."\n" - .'The time range specified by the StartTime and EndTime parameters cannot exceed seven days. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The engine to use for stream merging.'."\n" + ."\n" + .'- `on`: The new liveswitch engine.'."\n" + ."\n" + .'- `off`: A legacy engine (such as rtmpr). This is the default.', 'type' => 'string', 'default' => 'off', 'required' => false, 'example' => 'off', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'MergeParameters', + 'in' => 'query', + 'schema' => ['description' => 'Parameters that define the failover conditions. A failover is triggered when one of the following conditions is met:'."\n" + ."\n" + .'1. An explicit stream disconnection occurs, such as an end-of-file (EOF) or network error.'."\n" + ."\n" + .'2. The stutter rate exceeds 60% in the last 5 seconds.'."\n" + ."\n" + .'3. A stream pulling timeout occurs if no frame data is received for 2 consecutive seconds.'."\n" + ."\n" + .'4. The average frame rate over the period specified by `ali_max_no_frame_timeout` drops below `ali_low_frame_rate_threshold`. This condition applies even if there is no stream disconnection or stuttering. If you set `ali_max_no_frame_timeout`, the timeout for Condition 3 is also updated to this value.'."\n" + ."\n" + .'5. If `block_all_jitter` is set to `1`, Conditions 2, 3, and 4 do not apply.'."\n" + ."\n" + .'- `ali_max_no_frame_timeout`: an integer from 2 to 10.
`ali_low_frame_rate_threshold`: an integer from 1 to 200.
`block_all_jitter`: `0` or `1`.

', 'type' => 'string', 'required' => false, 'example' => 'ali_low_frame_rate_threshold=10&ali_max_no_frame_timeout=5&block_all_jitter=0', 'title' => ''], + ], + [ + 'name' => 'SelectAppName', + 'in' => 'query', + 'schema' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], + ], + [ + 'name' => 'SelectStreamName', + 'in' => 'query', + 'schema' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], + ], + [ + 'name' => 'SwitchMode', 'in' => 'query', 'schema' => [ - 'description' => 'The time when stream pulling ends.'."\n" - ."\n" - .'The time range specified by the StartTime and EndTime parameters cannot exceed seven days. The time specified by the EndTime parameter must be later than the current time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', + 'enum' => ['manually', 'automatically'], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], @@ -5985,265 +4791,287 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', - ], + 'RequestId' => ['description' => 'The unique ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + 'Message' => ['description' => '- A message that indicates the result of the request. If the request fails, this message helps the caller identify the issue.'."\n" + ."\n" + .'- Valid values: OK, config invalid, degrade to no livemerger.', 'type' => 'string', 'example' => 'OK', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'Duration between StartTime and EndTime is too long.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified parameter StartTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified parameter EndTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'QuotaExceeded.Merge', 'errorMessage' => 'Exceed max merge count limit', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'Duration between StartTime and EndTime is too long.', 'description' => ''], + ['errorCode' => 'InvalidParam.CodeIllegalDuration', 'errorMessage' => '%s.', 'description' => 'The value of start time should be less than the value of end time .'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\n","errorExample":""}]', - 'title' => 'UpdateLivePullStreamInfoConfig', - 'description' => 'This operation is applicable to regular stream pulling. You can call this operation to modify the stream pulling settings of a live stream, including the origin URL, start time, and end time.'."\n" - ."\n" - .'> After this operation is complete, ApsaraVideo Live uses the updated settings for regular stream pulling. Make sure that the modification does not affect your business.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'DescribeLiveStreamsBlockList' => [ - 'summary' => 'Queries the live streams that are blacklisted under a domain name.', - 'methods' => [ - 'post', - 'get', + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'AddLiveStreamMerge', + 'description' => 'Exceeding the API limit of 100 QPS per account triggers throttling, which may disrupt your service. Please make calls reasonably.', + 'requestParamsDescription' => '> The values for AppName, InAppName1, and InAppName2 must be unique. Similarly, the values for StreamName, InStreamName1, and InStreamName2 must be unique.', + 'responseParamsDescription' => 'The message "config invalid, degrade to no livemerger" means the configuration for the new liveswitch engine is incomplete, causing an automatic downgrade to the legacy engine.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveStreamMerge'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveStreamMerge', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"Message\\": \\"OK\\"\\n}","type":"json"}]', + ], + 'AddLiveStreamTranscode' => [ + 'summary' => 'Calls AddLiveStreamTranscode to add transcoding configuration information.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID. When using SDK 2.0, set this parameter to the region ID that corresponds to the service registration endpoint. When using SDK 1.0, ignore this parameter.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageNum', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of the page to return. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - 'default' => '1', - ], + 'schema' => ['description' => 'The streaming domain of the streamer.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries to return on each page. Valid values: 1 to 3000. Default value: 2000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '3000', - 'minimum' => '1', - 'example' => '10', - 'default' => '2000', - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs.'."\n" + ."\n" + .'- The value of App must be the same as the AppName in the ingest URL for the transcoding template to take effect. The value can be up to 256 characters in length and can contain digits, letters, hyphens (-), and underscores (_).'."\n" + ."\n" + .'- App also supports a single asterisk (\\*) as the value, which matches any string including an empty string.'."\n" + ."\n" + .'> If a transcoding template with App set to a single asterisk (\\*) is configured: when a user pulls a transcoded stream, the system first matches the transcoding template whose App value is the same as the AppName in the ingest URL. If no such template exists, the system matches the transcoding template with App set to a single asterisk (\\*).', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'Template', + 'in' => 'query', + 'schema' => ['description' => 'The transcoding template. Valid values:'."\n" + ."\n" + .'- Standard quality templates:'."\n" + ."\n" + .' - **lld**: low definition.'."\n" + ."\n" + .' - **lsd**: standard definition.'."\n" + ."\n" + .' - **lhd**: high definition.'."\n" + ."\n" + .' - **lud**: ultra-high definition.'."\n" + .' '."\n" + .'- Narrowband HD™ transcoding templates:'."\n" + ."\n" + .' - **ld**: low definition.'."\n" + .' '."\n" + .' - **sd**: standard definition.'."\n" + .' '."\n" + .' - **hd**: high definition.'."\n" + .' '."\n" + .' - **ud**: ultra-high definition.', 'type' => 'string', 'required' => true, 'example' => 'lsd', 'title' => ''], + ], + [ + 'name' => 'EncryptParameters', + 'in' => 'query', + 'schema' => ['description' => 'The encryption configuration. JSON format. The fields are described as follows:'."\n" + ."\n" + .'- EncryptType: the encryption type. Set the value to **aliyun**.'."\n" + .'- KmsKeyID: the user KMS master key ID.'."\n" + .'- KmsKeyExpireInterval: the key rotation interval. Valid values: **60 to 3600**. Unit: seconds.', 'type' => 'string', 'required' => false, 'example' => '{"EncryptType": "aliyun", "KmsKeyID":"afce5722-81d2-43c3-9930-7601da11****","KmsKeyExpireInterval":"3600"}', 'title' => ''], + ], + [ + 'name' => 'Lazy', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable on-demand transcoding. Valid values:'."\n" + .'- **yes**: enables on-demand transcoding.'."\n" + .'- **no**: disables on-demand transcoding.', 'type' => 'string', 'required' => false, 'default' => 'yes', 'example' => 'yes', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The request ID.', 'type' => 'object', 'properties' => [ - 'PageNum' => [ - 'description' => 'The page number of the returned page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '9D855EC8-CF71-4615-B164-F7DFCB23B41D', - ], - 'TotalPage' => [ - 'description' => 'The total number of returned pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'PageSize' => [ - 'description' => 'The number of entries returned per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'TotalNum' => [ - 'description' => 'The total number of live stream URLs that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '11', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'StreamUrls' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'StreamUrl' => [ - 'description' => 'The complete URL of each live stream.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'example.com/liveApp****/liveStream****', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageNum\\": 2,\\n \\"RequestId\\": \\"9D855EC8-CF71-4615-B164-F7DFCB23B41D\\",\\n \\"TotalPage\\": 2,\\n \\"PageSize\\": 10,\\n \\"TotalNum\\": 11,\\n \\"DomainName\\": \\"example.com\\",\\n \\"StreamUrls\\": {\\n \\"StreamUrl\\": [\\n \\"example.com/liveApp****/liveStream****\\"\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2\\n 9D855EC8-CF71-4615-B164-F7DFCB23B41D\\n 2\\n 10\\n 11\\n example.com\\n example.com/liveApp****/liveStream****\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamsBlockList', - 'description' => 'The stream URLs refer to the URLs for playing in particular.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + 'title' => 'Add transcoding configuration information', + 'description' => '- Using the live stream transcoding feature incurs transcoding fees, which are calculated based on the transcoding standard, resolution specification, and total transcoding length. For billing rules, see [Live stream transcoding fees](~~90424~~).'."\n" ."\n" - .'## QPS limit'."\n" + .'- First obtain the user KMS master key ID through Key Management Service (KMS), and then invoke this operation to add default transcoding configuration information. Currently, this operation supports only two types of transcoding templates: standard quality templates and Narrowband HD™ transcoding templates.'."\n" ."\n" - .'A single user can perform a maximum of 50 queries per second (QPS). Throttling is triggered when the number of calls per second exceeds the QPS limit. The throttling may affect your business. Thus, we recommend that you observe the QPS limit on this operation. For more information about what a single user means and the QPS details, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live#topic-2136805).', + .'- Alibaba Cloud KMS provides default keys for server-side encryption of cloud services at no cost, and no instance purchase is required. However, if you need to build a custom application cryptographic solution, use the credential feature, or manage the key lifecycle, you must purchase a software or hardware key management instance. For billing details, see [Billing](~~600418~~).'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 30 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Invoke this operation appropriately.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamsControlHistory' => [ - 'summary' => 'Queries the operation history of live streams under a domain name or in an application.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveStreamTranscode'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'AddLiveStreamWatermark' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Type', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The type of the watermark. Valid value:'."\n" + ."\n" + .'- **0**: image.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '0', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'Name', 'in' => 'query', - 'schema' => [ - 'description' => 'The application name. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The name of the watermark template.', 'type' => 'string', 'required' => true, 'example' => 'livewatermark****', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'RefWidth', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The reference width of the video background, in pixels.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '1920', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'RefHeight', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> The time range specified by the StartTime and EndTime parameters cannot exceed seven days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', - ], + 'schema' => ['description' => 'The reference height of the video background, in pixels.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '1080', 'title' => ''], + ], + [ + 'name' => 'XOffset', + 'in' => 'query', + 'schema' => ['description' => 'The X-axis offset of the watermark, in pixels.'."\n" + ."\n" + .'> Relative to RefWidth. If OffsetCorner is TopLeft, XOffset is the horizontal distance between the top‑left corner of the watermark and the top‑left corner of the background video. Positive X points to the right.', 'type' => 'number', 'format' => 'float', 'required' => true, 'example' => '50.0', 'title' => ''], + ], + [ + 'name' => 'YOffset', + 'in' => 'query', + 'schema' => ['description' => 'The Y-axis offset of the watermark, in pixels.'."\n" + ."\n" + .'> Relative to RefHeight. If OffsetCorner is TopLeft, YOffset is the vertical distance between the top‑left corner of the watermark and the top‑left corner of the background video. Positive Y points downward.', 'type' => 'number', 'format' => 'float', 'required' => true, 'example' => '100.0', 'title' => ''], + ], + [ + 'name' => 'Height', + 'in' => 'query', + 'schema' => ['description' => 'The height of the watermark image, in pixels. This value is relative to `RefHeight` and will be scaled proportionally with the actual video resolution.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '200', 'title' => ''], + ], + [ + 'name' => 'Transparency', + 'in' => 'query', + 'schema' => ['description' => 'The opacity of the watermark. Value range: `0` (fully transparent) to `255` (fully opaque).', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '255', 'title' => ''], + ], + [ + 'name' => 'OffsetCorner', + 'in' => 'query', + 'schema' => ['description' => 'The anchor point for the watermark\'s position. Valid values:'."\n" + ."\n" + .'- TopLeft'."\n" + ."\n" + .'- TopRight'."\n" + ."\n" + .'- BottomLeft'."\n" + ."\n" + .'- BottomRight', 'type' => 'string', 'required' => true, 'example' => 'TopRight', 'title' => ''], + ], + [ + 'name' => 'PictureUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL of the watermark image.', 'type' => 'string', 'required' => true, 'example' => 'http://example.com', 'title' => ''], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => ['description' => 'A custom description for the watermark.', 'type' => 'string', 'required' => false, 'example' => 'my watermark', 'title' => ''], + ], + [ + 'name' => 'Domain', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => false, 'example' => 'example.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ @@ -6251,163 +5079,116 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '9C31856F-386D-4DB3-BE79-A0AA493D702A', - ], - 'ControlInfo' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveStreamControlInfo' => [ - 'description' => 'The operation records.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The operation record of the live stream.'."\n", - 'type' => 'object', - 'properties' => [ - 'ClientIP' => [ - 'description' => 'The IP address that is used by the client for live streaming.'."\n", - 'type' => 'string', - 'example' => '10.207.XX.XX', - ], - 'TimeStamp' => [ - 'description' => 'The time when the operation was performed. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T16:36:18Z', - ], - 'Action' => [ - 'description' => 'The name of the operation performed.'."\n", - 'type' => 'string', - 'example' => 'DescribeLiveStreamsControlHistory', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - ], - ], - ], - ], - ], + 'TemplateId' => ['description' => 'The ID of the watermark template.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b96****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified parameter StartTime is not valid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified parameter EndTime is not valid.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9C31856F-386D-4DB3-BE79-A0AA493D702A\\",\\n \\"ControlInfo\\": {\\n \\"LiveStreamControlInfo\\": [\\n {\\n \\"ClientIP\\": \\"10.207.XX.XX\\",\\n \\"TimeStamp\\": \\"2015-12-01T16:36:18Z\\",\\n \\"Action\\": \\"DescribeLiveStreamsControlHistory\\",\\n \\"StreamName\\": \\"liveStream****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n9C31856F-386D-4DB3-BE79-A0AA493D702A\\n\\n \\n DescribeLiveStreamsControlHistory\\n liveStream****\\n 10.207.XX.XX\\n 2015-12-01T16:36:18Z\\n \\n\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamsControlHistory', - 'description' => 'You can call this operation to query the operation history of live streams under a domain name or in an application. The operations include all API operations that were called on live streams.'."\n" + 'title' => 'AddLiveStreamWatermark', + 'summary' => 'Adds a watermark template.', + 'description' => '- This API creates a live stream watermark template, which defines the watermark\'s content, layout, and other properties.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- After you add a watermark template, you must call the [AddLiveStreamWatermarkRule](~~2848100~~) operation to create a rule that applies the template. The watermark appears on the stream after you restart the stream ingest.'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamBitRateData' => [ - 'summary' => 'Queries the frame rates and bitrates of a Real-Time Messaging Protocol (RTMP) stream within a specified time period. You can call this operation to query historical data.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveStreamWatermark'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveStreamWatermark', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"TemplateId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'AddLiveStreamWatermarkRule' => [ + 'summary' => 'Adds a watermark rule.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'Name', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The name of the custom rule.', 'type' => 'string', 'required' => true, 'example' => 'WatermarkRule****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-22T08:00:00Z', - ], + 'schema' => ['description' => 'The stream name. The following rules apply:'."\n" + ."\n" + .'- To match a specific stream, enter the full stream name. For example, liveStreamA.'."\n" + ."\n" + .'- You can use a wildcard match. The asterisk (`*`) matches all streams.'."\n" + ."\n" + .'- You can perform prefix and suffix matching.'."\n" + ."\n" + .'> * You can use only one asterisk (`*`). The asterisk must be at the beginning or end of the string. The matching items must be enclosed in parentheses (`()`) and separated by a vertical bar (`|`).'."\n" + .'>'."\n" + .'> * For example, `*(t1|t2)` matches all streams that end with `t1` or `t2`. `(abc|123)*` matches all streams that start with `abc` or `123`.', 'type' => 'string', 'required' => true, 'example' => 'liveStreamA', 'title' => ''], + ], + [ + 'name' => 'TemplateId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the watermark template.'."\n" + ."\n" + .'> Get the template ID from the response of the [AddLiveStreamWatermark](~~2848096~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => ['description' => 'The description of the custom rule.', 'type' => 'string', 'required' => false, 'example' => 'my rule', 'title' => ''], ], ], 'responses' => [ @@ -6415,601 +5196,453 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'FrameRateAndBitRateInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'FrameRateAndBitRateInfo' => [ - 'description' => 'The frame rates and bitrates of the live stream.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The frame rates and bitrates of the live stream.'."\n", - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The time when the data was collected. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-09-13T16:04:00Z', - ], - 'VideoFrameRate' => [ - 'description' => 'The video frame rate of the live stream. Unit: frames per second (FPS).'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '30', - ], - 'AudioFrameRate' => [ - 'description' => 'The audio frame rate of the live stream. Unit: FPS.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '100', - ], - 'StreamUrl' => [ - 'description' => 'The URL of the live stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://guide.aliyundoc.com/liveAppName****/liveSteamName****', - ], - 'BitRate' => [ - 'description' => 'The bitrate of the live stream. Unit: bit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '600', - ], - ], - ], - ], - ], - ], + 'RuleId' => ['description' => 'The ID of the watermark rule.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidAppName.Malformed', - 'errorMessage' => 'Specified AppName is malformed.', - ], - [ - 'errorCode' => 'InvalidStreamName.Malformed', - 'errorMessage' => 'Specified StreamName is malformed.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidTime.ValueNotSupported', - 'errorMessage' => 'StartTime or EndTime is miss match.', - ], - [ - 'errorCode' => 'InvalidStreamNumber.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"FrameRateAndBitRateInfos\\": {\\n \\"FrameRateAndBitRateInfo\\": [\\n {\\n \\"Time\\": \\"2016-09-13T16:04:00Z\\",\\n \\"VideoFrameRate\\": 30,\\n \\"AudioFrameRate\\": 100,\\n \\"StreamUrl\\": \\"rtmp://guide.aliyundoc.com/liveAppName****/liveSteamName****\\",\\n \\"BitRate\\": 600\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n \\n \\n 30\\n \\n 600\\n 100\\n rtmp://guide.aliyundoc.com/liveAppName****/liveSteamName****\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamBitRateData', - 'description' => 'This operation allows you to query the frame rates and bitrates of an RTMP stream within a specified time period. You can call this operation to query historical data.'."\n" + 'title' => 'AddLiveStreamWatermarkRule', + 'description' => 'After you add a watermark template by calling the [AddLiveStreamWatermark](~~2848096~~) operation, call this operation to create a rule that applies the template.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamsOnlineList' => [ - 'summary' => 'Queries the information about all active streams under a specified domain name or the active streams of an application under a specified domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveStreamWatermarkRule', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RuleId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'AddPlaylistItems' => [ + 'summary' => 'Adds items to a playlist.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', - 'abilityTreeCode' => '107103', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can specify only one live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'OnlyStream', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to return only specific parameters. Valid values:'."\n" - ."\n" - .'* **yes**: returns only the DomainName, AppName, StreamName, and PublishTime parameters.'."\n" - .'* **no**: returns all parameters. This is the default value.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'no', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: 1 to 3000. Default value: 2000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1500', - 'default' => '2000', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the value of the CasterId parameter that is returned.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** to view the name of the production studio.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the ID of the production studio.'."\n" + ."\n" + .'The production studio must have the following configurations:'."\n" + ."\n" + .'- **NormType**: **3**. You must create a lightweight carousel production studio. You can call the **CreateCaster** operation to create the studio.'."\n" + ."\n" + .'- **CasterTemplate**: lp\\_noTranscode.'."\n" + ."\n" + .'- **channelEnable**: 0.'."\n" + ."\n" + .'- **programEffect**: 1.', 'type' => 'string', 'required' => true, 'example' => '0e94d1f4-1a65-445c-9dcf-de8b3b8d****', 'title' => ''], ], [ - 'name' => 'PageNum', + 'name' => 'ProgramItems', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The list of playlist items. This is a JSON string. For more information, see **InputProgramItem**.', 'type' => 'string', 'required' => true, 'example' => '[{"ItemName":"item1","ResourceType":"vod","ResourceValue":"5f8809f2-3352-4d1f-a8f7-86f9429f****"}, {"ItemName": "item2","ResourceType": "vod","ResourceValue": "e7411c0b-dd98-4c61-a545-f8bfba6c****"}]', 'title' => ''], ], [ - 'name' => 'StreamType', + 'name' => 'ProgramId', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the streams to query. Valid values:'."\n" - ."\n" - .'* **all** (default): all streams'."\n" - .'* **raw**: source streams'."\n" - .'* **trans**: transcoded streams'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'all', - 'enum' => [ - 'all', - 'raw', - 'trans', - ], - ], + 'schema' => ['description' => 'The playlist ID. If you leave this parameter empty, a new playlist is created.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'QueryType', + 'name' => 'ProgramConfig', 'in' => 'query', - 'schema' => [ - 'description' => 'The mode in which stream names are matched. Valid values:'."\n" - ."\n" - .'* **fuzzy** (default): fuzzy match'."\n" - .'* **strict**: exact match'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'fuzzy', - 'enum' => [ - 'fuzzy', - 'strict', - ], - ], + 'schema' => ['description' => 'The playlist item configurations. If this is the first time you add items, pass this parameter for initialization. For more information, see **ProgramConfig**.', 'type' => 'string', 'required' => false, 'example' => '[{"RepeatNumber":"0","ProgramName":"my program"}]', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The information about active streams.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b9676b3', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'PageNum' => [ - 'description' => 'The page number of the returned page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries returned per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'TotalNum' => [ - 'description' => 'The total number of streams that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '11', - ], - 'OnlineInfo' => [ + 'Items' => [ + 'description' => 'The list of information about the added playlist items.', 'type' => 'object', - 'itemNode' => true, 'properties' => [ - 'LiveStreamOnlineInfo' => [ - 'description' => 'The information about the live streams that are being ingested.'."\n", + 'FailedItems' => [ + 'description' => 'The list of playlist items that failed to be added.', 'type' => 'array', 'items' => [ - 'description' => 'The information about the live stream that is being ingested.'."\n", 'type' => 'object', 'properties' => [ - 'AudioDataRate' => [ - 'description' => 'The audio bitrate of the live stream. Unit: Kbit/s.'."\n" - ."\n" - .'> This parameter can be returned after you submit a ticket for whitelist configuration. For more information about how to submit a ticket, see Contact us.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '600', - ], - 'FrameRate' => [ - 'description' => 'The frame rate. Unit: FPS.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '15', - ], - 'PublishUrl' => [ - 'description' => 'The complete URL that was used to ingest the stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://demo.aliyundoc.com/live/test****', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'AudioCodecId' => [ - 'description' => 'The ID of the audio codec.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'Height' => [ - 'description' => 'The height of the video resolution. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '720', - ], - 'VideoDataRate' => [ - 'description' => 'The video bitrate of the live stream. Unit: Kbit/s.'."\n" - ."\n" - .'> This parameter can be returned after you submit a ticket for whitelist configuration. For more information about how to submit a ticket, see Contact us.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '600', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'PublishDomain' => [ - 'description' => 'The ingest domain. If live center ingest was used, the streaming domain is returned.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'PublishTime' => [ - 'description' => 'The start time of stream ingest. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2021-08-09T02:37:59Z', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'PublishType' => [ - 'description' => 'The ingest type. Valid values:'."\n" - ."\n" - .'* **edge**: edge ingest.'."\n" - .'* **center**: live center ingest.'."\n", - 'type' => 'string', - 'example' => 'edge', - ], - 'VideoCodecId' => [ - 'description' => 'The ID of the video codec.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '7', - ], - 'Transcoded' => [ - 'description' => 'Indicates whether the stream was transcoded. Valid values:'."\n" - ."\n" - .'* **yes**'."\n" - .'* **no**'."\n", - 'type' => 'string', - 'example' => 'no', - ], - 'Width' => [ - 'description' => 'The width of the video resolution. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1280', - ], - 'ClientIp' => [ - 'description' => 'The IP address of the client for stream ingest.'."\n", - 'type' => 'string', - 'example' => '106.11.XX.XX', - ], - 'ServerIp' => [ - 'description' => 'The IP address of the ingest node.'."\n", - 'type' => 'string', - 'example' => '120.221.XX.XX', - ], + 'ItemId' => ['description' => 'The ID of the playlist item.', 'type' => 'string', 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', 'title' => ''], + 'ItemName' => ['description' => 'The name of the playlist item.', 'type' => 'string', 'example' => 'item1', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'SuccessItems' => [ + 'description' => 'The list of playlist items that were successfully added.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ItemId' => ['description' => 'The ID of the playlist item.', 'type' => 'string', 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', 'title' => ''], + 'ItemName' => ['description' => 'The name of the playlist item.', 'type' => 'string', 'example' => 'item2', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], + 'ProgramId' => ['description' => 'The playlist ID. You can use this ID as a request parameter to delete playlist items, query playlist items, edit a playlist, delete a playlist, query a playlist, start a playlist, or stop a playlist.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'QpsOverLimit', - 'errorMessage' => 'Qps is over limit for this domainName.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not match the specified start time.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'Duration between StartTime and EndTime is too long.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'PlayListIsEmpty', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Playlist is empty, please check and try again.'], + ['errorCode' => 'MissInputParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'InvalidProgramId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ProgramId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ], + 403 => [ + ['errorCode' => 'UserQuotaExceed', 'errorMessage' => 'Quota exceeded: %s.', 'description' => 'Quota exceeded: %s.'], + ], + [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b9676b3\\",\\n \\"TotalPage\\": 2,\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalNum\\": 11,\\n \\"OnlineInfo\\": {\\n \\"LiveStreamOnlineInfo\\": [\\n {\\n \\"AudioDataRate\\": 600,\\n \\"FrameRate\\": 15,\\n \\"PublishUrl\\": \\"rtmp://demo.aliyundoc.com/live/test****\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"AudioCodecId\\": 10,\\n \\"Height\\": 720,\\n \\"VideoDataRate\\": 600,\\n \\"DomainName\\": \\"example.com\\",\\n \\"PublishDomain\\": \\"demo.aliyundoc.com\\",\\n \\"PublishTime\\": \\"2021-08-09T02:37:59Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"PublishType\\": \\"edge\\",\\n \\"VideoCodecId\\": 7,\\n \\"Transcoded\\": \\"no\\",\\n \\"Width\\": 1280,\\n \\"ClientIp\\": \\"106.11.XX.XX\\",\\n \\"ServerIp\\": \\"120.221.XX.XX\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2\\n 1\\n 10\\n 5c6a2a0df228-4a64- af62-20e91b9676b3\\n 11\\n \\n 600\\n 15\\n rtmp://demo.aliyundoc.com/live/test****\\n liveStream****\\n 10\\n 720\\n 600\\n example.com\\n demo.aliyundoc.com\\n 2021-08-09T02:37:59Z\\n liveApp****\\n edge\\n 7\\n no\\n 1280\\n 106.11.XX.XX\\n 120.221.XX.XX\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamsOnlineList', - 'description' => 'You can call this operation to query the following types of streams.'."\n" + 'title' => 'AddPlaylistItems', + 'description' => 'After you create a production studio with a layout and components, you can call this operation to add items to a playlist. If a playlist does not exist, a new one is created. For more information about how to create a production studio by calling an API operation, see [Create a production studio](~~2848009~~).'."\n" ."\n" - .'* all: all streams.'."\n" - .'* raw: source streams.'."\n" - .'* trans: transcoded streams.'."\n" + .'## QPS limit'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'The queries per second (QPS) limit for this operation is 10 calls per second for each user. If you exceed the limit, API calls are throttled. This may impact your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => '### InputProgramItem'."\n" ."\n" - .'You can call this operation up to 10,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', + .'| Parameter | Example | Type | Description |'."\n" + .'| ------------- | ------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| ItemName | item1 | String | The name of the playlist item. |'."\n" + .'| ResourceType | vod | String | The resource type. Valid values: **vod**: an ApsaraVideo VOD resource. **url**: a third-party video resource. |'."\n" + .'| ResourceValue | 5f8809f2-3352-4d1f-a8f7-86f9429f**** | String | If ResourceType is set to vod, ResourceValue is the media asset ID. If ResourceType is set to URL, ResourceValue is the URL of the third-party video. |'."\n" + ."\n" + .'### ProgramConfig'."\n" + ."\n" + .'| Parameter | Example | Type | Description |'."\n" + .'| ------------ | --------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| RepeatNumber | 0 | Integer | The number of times to repeat playback after the item finishes. Valid values: **0** (default): Playback does not repeat. **-1**: Playback repeats in a loop. Other positive integers: The number of times to repeat playback. |'."\n" + .'| ProgramName | myprogram | String | The name of the playlist. |', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamsPublishList' => [ - 'summary' => 'Queries the stream ingest records of a domain name or an application or stream under a domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddPlaylistItems'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddPlaylistItems', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Items\\": {\\n \\"FailedItems\\": [\\n {\\n \\"ItemId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ItemName\\": \\"item1\\"\\n }\\n ],\\n \\"SuccessItems\\": [\\n {\\n \\"ItemId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ItemName\\": \\"item2\\"\\n }\\n ]\\n },\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'AddRtsLiveStreamTranscode' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', - 'abilityTreeCode' => '107105', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain or main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The AppName of the live stream. Requirements:'."\n" + ."\n" + .'- Supports letters, digits, underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'- Must start with a letter or a digit. A name longer than three characters is recommended.', 'type' => 'string', 'required' => true, 'example' => 'aliyun-test', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'Template', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The name of the custom transcoding template. Requirements:'."\n" + ."\n" + .'- Supports letters, digits, underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'- Must start with a letter or a digit. A name longer than three characters is recommended.'."\n" + ."\n" + .'> The name cannot be the same as that of a standard transcoding template.', 'type' => 'string', 'required' => true, 'example' => 'ld', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'TemplateType', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query.'."\n" - ."\n" - .'Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The type of the custom transcoding template. Valid values:'."\n" + ."\n" + .'- **h264**: custom H.264 standard transcoding.'."\n" + ."\n" + .'- **h264-nbhd**: custom H.264 Narrowband HD™ transcoding.'."\n" + ."\n" + .'- **h264-origin**: original quality H.264 standard transcoding. It preserves the parameters of the source video as closely as possible.'."\n" + ."\n" + .'- **audio**: audio-only transcoding. The output file contains only audio. If you set this parameter to audio, you must set AudioBitrate.'."\n" + ."\n" + .'> For video types, Height, Width, FPS, VideoBitrate, and DeleteBframe are required.', 'type' => 'string', 'required' => true, 'example' => 'h264', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'Height', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The time range specified by the StartTime and EndTime parameters cannot exceed 30 days.'."\n" - ."\n" - .'Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', - ], + 'schema' => ['description' => 'Output video height in pixels.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Required if you set TemplateType to h264, h264-nbhd, or h264-origin.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Requirements:'."\n" + ."\n" + .'- **Height ≥ 100**'."\n" + ."\n" + .'- **max(Height, Width) ≤ 2560**'."\n" + ."\n" + .'- **min(Height, Width) ≤ 1440**'."\n" + ."\n" + .'For example, a resolution of 1560 × 1560 (a square video) is invalid.'."\n" + ."\n" + .'> For h264-origin templates, the resolution can be up to 4K to retain the information of the source stream.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1280', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'Width', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: **1 to 3000**. Default value: **2000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1500', - 'default' => '2000', - ], + 'schema' => ['description' => 'Output video width in pixels.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Required if you set TemplateType to h264, h264-nbhd, or h264-origin.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Requirements:'."\n" + ."\n" + .'- **Width ≥ 100**'."\n" + ."\n" + .'- **max(Height, Width) ≤ 2560**'."\n" + ."\n" + .'- **min(Height, Width) ≤ 1440**'."\n" + ."\n" + .'For example, a resolution of 1560 × 1560 (a square video) is invalid.'."\n" + ."\n" + .'> For h264-origin templates, the resolution can be up to 4K to retain the information of the source stream.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '720', 'title' => ''], ], [ - 'name' => 'PageNumber', + 'name' => 'FPS', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The frame rate of the output video. Unit: frames per second (FPS). Valid values: 1 to **60**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Required if you set TemplateType to h264, h264-nbhd, or h264-origin.'."\n" + ."\n" + .'>', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''], ], [ - 'name' => 'StreamType', + 'name' => 'VideoBitrate', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the streams to query. Valid values:'."\n" - ."\n" - .'* An empty value****: source streams'."\n" - .'* **all**: all streams'."\n" - .'* **trans**: transcoded streams'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'all', - 'enum' => [ - 'all', - 'raw', - 'trans', - ], - ], + 'schema' => ['description' => 'The output video bitrate. Unit: kbps. Valid values: 1 to **6000**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Required if you set TemplateType to h264, h264-nbhd, or h264-origin.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'> The system tries to transcode the video at the specified bitrate. However, the actual bitrate may not be the same as the specified value, especially when the specified value is too high or too low.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2000', 'title' => ''], ], [ - 'name' => 'QueryType', + 'name' => 'AudioBitrate', 'in' => 'query', - 'schema' => [ - 'description' => 'The mode in which stream names are matched. Valid values:'."\n" - ."\n" - .'* **fuzzy** (default): fuzzy match'."\n" - .'* **strict**: exact match'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'fuzzy', - 'enum' => [ - 'fuzzy', - 'strict', - ], - ], + 'schema' => ['description' => 'The output audio bitrate. Unit: kbps. Valid values: 1 to **1000**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Required if you set TemplateType to audio.'."\n" + ."\n" + .'>', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '128', 'title' => ''], ], [ - 'name' => 'OrderBy', + 'name' => 'Gop', 'in' => 'query', - 'schema' => [ - 'description' => 'The sorting method. Valid values:'."\n" - ."\n" - .'* **stream_name_desc**: sorts the entries in descending order by stream name.'."\n" - .'* **stream_name_asc**: sorts the entries in ascending order by stream name.'."\n" - .'* **publish_time_desc**: sorts the entries in descending order by stream ingest time.'."\n" - .'* **publish_time_asc** (default): sorts the entries in ascending order by stream ingest time.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'publish_time_desc', - 'enum' => [ - 'stream_name_desc', - 'stream_name_asc', - 'publish_time_desc', - 'publish_time_asc', - ], - ], + 'schema' => ['description' => 'The Group of Pictures (GOP) size, which specifies the keyframe interval. Unit: seconds. Valid values: **1** to **3**.', 'type' => 'string', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'DeleteBframes', + 'in' => 'query', + 'schema' => ['description' => 'Controls whether to remove B-frames from the transcoded output video. Valid values:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Required if you set TemplateType to h264, h264-nbhd, or h264-origin.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- **true**: The transcoded video has no B-frames.'."\n" + ."\n" + .'- **false**: The transcoded video contains B-frames. This is the default value.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + ], + [ + 'name' => 'Opus', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to use the Opus codec for audio transcoding. This is mainly for compatibility with native WebRTC. Valid values:'."\n" + ."\n" + .'- **true**: Transcodes the audio to the Opus format.'."\n" + ."\n" + .'- **false**: Does not use the Opus format for transcoding. This is the default value.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'Profile', + 'in' => 'query', + 'schema' => ['description' => 'The video codec profile. A larger value indicates better video quality and higher resource consumption for encoding and decoding. Valid values:'."\n" + ."\n" + .'- **1**: baseline (for mobile devices).'."\n" + ."\n" + .'- **2**: main (for SD devices).'."\n" + ."\n" + .'- **3**: high (for HD devices).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'AudioProfile', + 'in' => 'query', + 'schema' => ['description' => 'The audio codec profile. Valid values:'."\n" + ."\n" + .'- **aac\\_low**'."\n" + ."\n" + .'- **aac\\_he**'."\n" + ."\n" + .'- **aac\\_he\\_v2**'."\n" + ."\n" + .'- **aac\\_ld**', 'type' => 'string', 'required' => false, 'example' => 'aac_low', 'title' => ''], + ], + [ + 'name' => 'AudioCodec', + 'in' => 'query', + 'schema' => ['description' => 'The audio codec. Valid values:'."\n" + ."\n" + .'- **aac**'."\n" + ."\n" + .'- **mp3**'."\n" + ."\n" + .'> To use the Opus codec, set the Opus parameter to true.', 'type' => 'string', 'required' => false, 'example' => 'aac', 'title' => ''], + ], + [ + 'name' => 'AudioRate', + 'in' => 'query', + 'schema' => ['description' => 'The audio sample rate. Valid values: **22050** to **96000**. Recommended: 44100. Unit: Hz.'."\n" + ."\n" + .'> If AudioProfile is set to aac\\_ld, the sample rate cannot exceed 44100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '44100', 'title' => ''], + ], + [ + 'name' => 'AudioChannelNum', + 'in' => 'query', + 'schema' => ['description' => 'The number of audio channels. Valid values:'."\n" + ."\n" + .'- **1**: mono.'."\n" + ."\n" + .'- **2**: stereo.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'Lazy', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable on-demand transcoding. Valid values:'."\n" + ."\n" + .'- **yes**: Transcoding only starts when the first viewer requests this transcoded stream.'."\n" + ."\n" + .'- **no**: Transcoding starts immediately after the stream is published.', 'type' => 'string', 'required' => false, 'example' => 'no', 'title' => ''], ], ], 'responses' => [ @@ -7017,191 +5650,65 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', - ], - 'TotalNum' => [ - 'description' => 'The total number of entries that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '11', - ], - 'PublishInfo' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveStreamPublishInfo' => [ - 'description' => 'The information about the stream ingest records.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'EdgeNodeAddr' => [ - 'description' => 'The IP address of the CDN point of presence (POP) to which the stream was ingested.'."\n", - 'type' => 'string', - 'example' => '10.175.XX.XX', - ], - 'PublishUrl' => [ - 'description' => 'The complete ingest URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://demo.aliyundoc.com/liveApp****/liveStream****', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'DomainName' => [ - 'description' => 'The ingest domain or main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'StopTime' => [ - 'description' => 'The time when the stream ingest was stopped. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-02T03:11:19Z', - ], - 'TranscodeId' => [ - 'description' => 'The ID of the transcoding template.'."\n" - ."\n" - .'> This parameter is not returned if the value of the Transcoded parameter is no.'."\n", - 'type' => 'string', - 'example' => 'ld', - ], - 'PublishDomain' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'PublishTime' => [ - 'description' => 'The time when the stream ingest was started. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-02T03:05:53Z', - ], - 'PublishType' => [ - 'description' => 'The type of the stream ingest. Valid values:'."\n" - ."\n" - .'* **edge**: edge ingest'."\n" - .'* **center**: live center ingest'."\n", - 'type' => 'string', - 'example' => 'edge', - ], - 'Transcoded' => [ - 'description' => 'Indicates whether the stream was a transcoded stream.'."\n", - 'type' => 'string', - 'example' => 'yes', - ], - 'ClientAddr' => [ - 'description' => 'The IP address of the client that ingested the live stream.'."\n", - 'type' => 'string', - 'example' => '10.175.XX.XX', - ], - 'StreamUrl' => [ - 'description' => 'The streaming URL.'."\n", - 'type' => 'string', - 'example' => 'http://example.com/liveApp****/liveStream****.flv', - ], - 'AliInnerErrorFlags' => [ - 'description' => 'Internal error', - 'type' => 'string', - 'example' => '3000001', - ], - ], - 'description' => '', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'QpsOverLimit', - 'errorMessage' => 'Qps is over limit for this domainName.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified parameter StartTime is not valid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified parameter EndTime is not valid.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not match the specified start time.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'Duration between StartTime and EndTime is too long.', - ], - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => 'Your account does not open Live service yet', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'TemplateLimit', 'errorMessage' => '%s Please check and try again later.', 'description' => 'The number of templates reached the upper limit.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"TotalPage\\": 2,\\n \\"PageNum\\": 2,\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\",\\n \\"TotalNum\\": 11,\\n \\"PublishInfo\\": {\\n \\"LiveStreamPublishInfo\\": [\\n {\\n \\"EdgeNodeAddr\\": \\"10.175.XX.XX\\",\\n \\"PublishUrl\\": \\"rtmp://demo.aliyundoc.com/liveApp****/liveStream****\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"StopTime\\": \\"2015-12-02T03:11:19Z\\",\\n \\"TranscodeId\\": \\"ld\\",\\n \\"PublishDomain\\": \\"demo.aliyundoc.com\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"PublishTime\\": \\"2015-12-02T03:05:53Z\\",\\n \\"PublishType\\": \\"edge\\",\\n \\"Transcoded\\": \\"yes\\",\\n \\"ClientAddr\\": \\"10.175.XX.XX\\",\\n \\"StreamUrl\\": \\"http://example.com/liveApp****/liveStream****.flv\\",\\n \\"AliInnerErrorFlags\\": \\"002\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n11\\n2\\n10\\n2\\n 40A4F36D-A7CC-473A-88E7-154F92242566\\n\\n \\n rtmp://demo.aliyundoc.com/liveApp****/liveStream****\\n 10.175.XX.XX\\n liveStream****\\n ld\\n example.com\\n 10.175.XX.XX\\n demo.aliyundoc.com\\n yes\\n 2015-12-02T03:05:53Z\\n edge\\n http://example.com/liveApp****/liveStream****.flv\\n 2015-12-02T03:11:19Z\\n liveApp****\\n \\n\\n","errorExample":"{\\n \\"PageNum\\":2,\\n \\"PageSize\\":10,\\n \\"PublishInfo\\":{\\n \\"LiveStreamPublishInfo\\":[{\\n \\"AppName\\":\\"xchen\\",\\n \\"ClientAddr\\":\\"10.175.60.33\\",\\n \\"DomainName\\":\\"test101.cdnpe.com\\",\\n \\"EdgeNodeAddr\\":\\"10.175.30.21\\",\\n \\"PublishDomain\\":\\"test101.cdnpe.com\\",\\n \\"PublishTime\\":\\"2015-12-02T03:05:53Z\\",\\n \\"PublishUrl\\":\\"rtmp://test101.cdnpe.com/xchen\\",\\n \\"StopTime\\":\\"2015-12-02T03:11:19Z\\",\\n \\"StreamName\\":\\"testxchen\\",\\n \\"StreamUrl\\":\\"rtmp://xxx/xxxx\\"\\n }]\\n },\\n \\"RequestId\\":\\"1C0E0C22-77B7-42AC-8212-AF99B2E0077F\\",\\n \\"TotalNum\\":11,\\n \\"TotalPage\\":2\\n}"}]', - 'title' => 'DescribeLiveStreamsPublishList', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'This operation allows you to query streams in the last 30 days. The information of active streams during the queried period is returned. This operation supports the following sorting methods.'."\n" + 'title' => 'AddRtsLiveStreamTranscode', + 'summary' => 'Adds a custom transcoding configuration for a streaming domain with Real-Time Streaming (RTS) enabled.', + 'description' => '## Usage notes'."\n" ."\n" - .'* stream_name_desc: sorts the entries in descending order by stream name.'."\n" - .'* stream_name_asc: sorts the entries in ascending order by stream name.'."\n" - .'* publish_time_desc: sorts the entries in descending order by stream ingest time.'."\n" - .'* publish_time_asc: sorts the entries in ascending order by stream ingest time.'."\n" + .'You can call this operation to add a custom RTS transcoding configuration. This operation supports only the following types of custom transcoding templates: h264, h264-nbhd, h264-origin, and audio.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 3 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. For more information, see [QPS limits](https://help.aliyun.com/document_detail/343507.html).', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'ForbidLiveStream' => [ - 'summary' => 'Disables a live stream. You can specify the time when the live stream is resumed.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '### Special error codes'."\n" + ."\n" + .'|Error code|Error message|HTTP status code|Description|'."\n" + .'|---|---|---|---|'."\n" + .'|InvalidDomain.NotFound|The domain provided does not exist in our records.|404|The error message returned because the specified domain name does not exist or does not belong to the current account.|'."\n" + .'|IllegalOperation|Illegal domain operate is not permitted.|403|The error message returned because the current operation is not supported. For example, the specified domain name is not a domain name in ApsaraVideo Live.|'."\n" + .'|InvalidParameters|Invalid parameters.|400|The error message returned because one or more parameters are invalid. For example, the height or bitrate is too large.|'."\n" + .'|ConfigAlreadyExists|Config has already exist.|400|The error message returned because the configuration already exists.|'."\n" + .'|InternalError|The request processing has failed due to some unknown error.|500|The error message returned because an unknown error occurred.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddRtsLiveStreamTranscode'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddRtsLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'AddShowIntoShowList' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -7209,100 +5716,137 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'high', + 'operationType' => 'create', + 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'showList', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'type' => 'string', + 'description' => 'The list of show resources to add. Each resource has its own parameters, such as showName and resourceUrl.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the show.', + 'type' => 'object', + 'properties' => [ + 'duration' => ['description' => 'The playback duration of a single show, in seconds.'."\n" + ."\n" + .'> You can set only one of the **RepeatTimes** and **Duration** parameters.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '20', 'title' => ''], + 'liveInputType' => ['description' => 'The custom type tag.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + 'repeatTimes' => ['description' => 'The number of times a single show is played in a loop. The default value is 0.'."\n" + ."\n" + .'> - You can set only one of the **RepeatTimes** and **Duration** parameters.'."\n" + ."\n" + .'- RepeatTimes specifies the number of repetitions. For example, a value of 0 means the show is played once (not repeated), and a value of 1 means the show is played twice (repeated once).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + 'resourceId' => ['description' => 'The ID of the VOD file.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'resourceType' => ['description' => 'The type of the media asset. Valid values:'."\n" + ."\n" + .'- live: live stream'."\n" + ."\n" + .'- vod: VOD asset'."\n" + ."\n" + .'- pic: image'."\n" + ."\n" + .'> * When using resources from ApsaraVideo VOD, prioritize resources from hosted buckets. Resources from your own buckets may expire. If you use resources from your own buckets, note their validity period.'."\n" + ."\n" + .'- Live stream files support live stream assets and third-party URLs.'."\n" + ."\n" + .'- VOD files support VOD assets, image assets, and third-party URLs.', 'type' => 'string', 'required' => false, 'example' => 'vod', 'title' => ''], + 'resourceUrl' => ['description' => 'The URL of the playback file.', 'type' => 'string', 'required' => false, 'example' => 'http://****/atestObject****.m3u8', 'title' => ''], + 'showName' => ['description' => 'The name of the show.', 'type' => 'string', 'required' => false, 'example' => 'liveShow****', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => false, - 'default' => 'cn-shanghai', + 'maxItems' => 10, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo LIVE console, go to the **ApsaraVideo LIVE console** > **Production Studio** > **Cloud Production Studio** page to view the name of the production studio.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the ID of the production studio.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'ShowName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The name of the show.', 'type' => 'string', 'required' => false, 'example' => 'liveShow****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'ResourceType', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the ingested stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The type of the media asset. Valid values:'."\n" + ."\n" + .'- live: live stream'."\n" + ."\n" + .'- vod: VOD asset'."\n" + ."\n" + .'- pic: image'."\n" + ."\n" + .'> * When using resources from ApsaraVideo VOD, prioritize resources from hosted buckets. Resources from your own buckets may expire. If you use resources from your own buckets, note their validity period. Live stream files support live stream assets and third-party URLs. VOD files support VOD assets, image assets, and third-party URLs.', 'type' => 'string', 'required' => false, 'example' => 'vod', 'title' => ''], ], [ - 'name' => 'LiveStreamType', + 'name' => 'ResourceUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether the live stream is ingested by a streamer or played by a viewer. Set the value to **publisher**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'publisher', - 'enum' => [ - 'publisher', - ], - ], + 'schema' => ['description' => 'The URL of the playback file.', 'type' => 'string', 'required' => false, 'example' => 'http://****/atestObject****.m3u8', 'title' => ''], ], [ - 'name' => 'Oneshot', + 'name' => 'ResourceId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to only interrupt the live stream without adding the ingest URL of the live stream to the blacklist. Valid values:'."\n" - ."\n" - .'* **yes**: interrupts the live stream but does not add the ingest URL of the live stream to the blacklist. This value is available only when the live stream is ingested or played in the upstream.'."\n" - .'* **no**: disables the live stream and adds the ingest URL of the live stream to the blacklist.'."\n" - ."\n" - .'> If you do not specify this parameter, the default value no is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', - 'enum' => [ - 'yes', - 'no', - ], - ], + 'schema' => ['description' => 'The ID of the VOD file.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'ResumeTime', + 'name' => 'Duration', 'in' => 'query', - 'schema' => [ - 'description' => 'The time when the live stream is resumed. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If you set the **Oneshot** parameter to **no** and do not specify this parameter, the live stream is disabled for six months by default.'."\n" - ."\n" - .'* If you specify this parameter, the live stream is resumed at the specified point in time.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-01T10:37:00Z', - ], + 'schema' => ['description' => 'The playback duration of a single show, in seconds.'."\n" + ."\n" + .'> You can set only one of the **RepeatTimes** and **Duration** parameters.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '20', 'title' => ''], + ], + [ + 'name' => 'RepeatTimes', + 'in' => 'query', + 'schema' => ['description' => 'The number of times a single show is played in a loop. The default value is 0.'."\n" + ."\n" + .'> - You can set only one of the **RepeatTimes** and **Duration** parameters. RepeatTimes specifies the number of repetitions. For example, -1 means the show is played in an infinite loop. 0 means the show is played once (not repeated). 1 means the show is played twice (repeated once).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'Spot', + 'in' => 'query', + 'schema' => ['description' => 'The position in the playlist where you want to insert the show. Positions are indexed from 0. By default, the show is added to the end of the current playlist.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'LiveInputType', + 'in' => 'query', + 'schema' => ['description' => 'The custom type tag.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'isBatchMode', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to add shows to the playlist in batches. Valid values:'."\n" + ."\n" + .'- true: adds shows in batches.'."\n" + ."\n" + .'- false: adds a single show.'."\n" + ."\n" + .'> If you do not specify this parameter or leave it empty, a single show is added.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], ], 'responses' => [ @@ -7310,62 +5854,137 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16BFE188-B193-4C3C-ADC5-79A7E31486EA', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '987DA143-A39C-5B5D-AF5B-3B07944A0036', 'title' => ''], + 'ShowId' => ['description' => 'The show ID.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'failedList' => ['description' => 'The list of resources that failed to be added and the reasons for the failures.', 'type' => 'string', 'example' => 'failedList[Show1, Show2...]', 'title' => ''], + 'successfulShowIds' => ['description' => 'The list of IDs of the shows that were successfully added.', 'type' => 'string', 'example' => 'f1933f16-5467-4308-b3a9-e8d451a90999,547436b8-c839-4469-a2c0-704c1ce5ce00', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidResumeTime.Malformed', - 'errorMessage' => 'Specified parameter ResumeTime is not valid.', - ], - [ - 'errorCode' => 'QuotaExceeded.Blacklist', - 'errorMessage' => 'Exceed max blacklist count limit', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidVodUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter VodUrl is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidShowList.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ShowList does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16BFE188-B193-4C3C-ADC5-79A7E31486EA\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16BFE188-B193-4C3C-ADC5-79A7E31486EA\\n","errorExample":""}]', - 'title' => 'ForbidLiveStream', - 'description' => 'You can call this operation to disable a live stream and specify the time when the live stream is resumed. If the time is not specified, you can call the [ResumeLiveStream](~~2847831~~) operation to resume the live stream. This operation supports only the live streams ingested by streamers.'."\n" + 'title' => 'AddShowIntoShowList', + 'summary' => 'Adds an episode to an episode list.', + 'description' => 'Before you call this operation, you must create a production studio in playlist mode and add video resources to the production studio. Then, you can call this operation to add shows from the production studio to the playlist. To create a production studio using an API, see [Create a production studio](~~2848009~~).'."\n" ."\n" - .'> '."\n" + .'You can add a maximum of 1,000 shows to a playlist.'."\n" ."\n" - .'* This operation disables a live stream by adding the stream to the blacklist. You can disable up to 10,000 live streams. If the limit is reached, you cannot disable any more live streams. Pay attention to the number of live streams that are disabled. You can call the [DescribeLiveStreamsBlockList](~~2847825~~) operation to query the number of live streams that are disabled.'."\n" + .'>'."\n" ."\n" - .'* An interrupted live stream is not added to the blacklist and does not occupy the quota.'."\n" + .'- When you use resources from ApsaraVideo VOD, prioritize resources from hosted buckets. Resources from your own buckets may expire. If you use resources from your own buckets, be aware of their validity period.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- When you add media resources to a production studio, prioritize resources from ApsaraVideo LIVE and ApsaraVideo VOD. If you add a resource from a third-party URL, playback may fail. Ensure that the resource is of high quality and is valid.'."\n" ."\n" - .'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ResumeLiveStream' => [ - 'summary' => 'Resumes the ingest of a live stream.', - 'methods' => [ - 'post', - 'get', + .'>'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. API calls that exceed this limit are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate to prevent throttling.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Sample code'."\n" + ."\n" + .' public static DefaultAcsClient initClient(String accessKeyId, String accessKeySecret) throws ClientException {'."\n" + .' String regionId = "cn-shanghai"; '."\n" + .' DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);'."\n" + .' DefaultAcsClient client = new DefaultAcsClient(profile);'."\n" + .' return client;'."\n" + .' }'."\n" + ."\n" + .' private static CommonResponse addShowIntoShowList(DefaultAcsClient client, String showName, String resourceId, String resourceUrl,'."\n" + .' String resourceType, Integer spot, Integer repeatTimes,'."\n" + .' String casterId, Long duration) throws ClientException {'."\n" + .' CommonRequest addShowIntoShowListRequest = new CommonRequest();'."\n" + .' addShowIntoShowListRequest.setSysDomain("live.aliyuncs.com");'."\n" + .' addShowIntoShowListRequest.setSysVersion("2016-11-01");'."\n" + .' addShowIntoShowListRequest.setSysAction("AddShowIntoShowList");'."\n" + ."\n\n" + .' '."\n" + .' if (casterId == null || resourceType == null) {'."\n" + .' return null;'."\n" + .' }'."\n" + .' if (resourceId == null && resourceUrl == null) {'."\n" + .' return null;'."\n" + .' }'."\n" + .' addShowIntoShowListRequest.putQueryParameter("CasterId", casterId);'."\n" + .' addShowIntoShowListRequest.putQueryParameter("ResourceType", resourceType);'."\n" + .' if (showName != null) {'."\n" + .' addShowIntoShowListRequest.putQueryParameter("ShowName", showName);'."\n" + .' }'."\n" + .' if (resourceUrl != null) {'."\n" + .' addShowIntoShowListRequest.putQueryParameter("ResourceUrl", resourceUrl);'."\n" + .' }'."\n" + .' if (resourceId != null) {'."\n" + .' addShowIntoShowListRequest.putQueryParameter("ResourceId", resourceId);'."\n" + .' }'."\n" + .' if (spot != null) {'."\n" + .' addShowIntoShowListRequest.putQueryParameter("Spot", spot.toString());'."\n" + .' }'."\n" + .' if (repeatTimes != null) {'."\n" + .' addShowIntoShowListRequest.putQueryParameter("RepeatTimes", repeatTimes.toString());'."\n" + .' }'."\n" + .' if (duration != null) {'."\n" + .' addShowIntoShowListRequest.putQueryParameter("Duration", duration.toString());'."\n" + .' }'."\n" + .' CommonResponse addShowIntoShowListResponse = client.getCommonResponse(addShowIntoShowListRequest);'."\n" + .' return addShowIntoShowListResponse;'."\n" + .' }'."\n" + ."\n\n" + .' public void addshows() throws ClientException {'."\n" + .' DefaultAcsClient client = initClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET);'."\n" + .' String[] resourceIds = new String[]{"698d2b23581f476ea71107703e647d1e", "9c97e83e211a435b9f797e4e20eeea27", "76c6addaa41c438985666a8a964fa5e5"};'."\n" + .' for (int i = 0; i < resourceIds.length; i++) {'."\n" + .' String showName = "ShowName#" + i;'."\n" + .' Integer repeatTimes = i;'."\n" + .' addShowIntoShowList(client, showName, resourceIds[i], null, "vod", null, repeatTimes, testCasterId, null);'."\n" + .' }'."\n" + .' }'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddShowIntoShowList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddShowIntoShowList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"987DA143-A39C-5B5D-AF5B-3B07944A0036\\",\\n \\"ShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"failedList\\": \\"failedList[Show1, Show2...]\\",\\n \\"successfulShowIds\\": \\"f1933f16-5467-4308-b3a9-e8d451a90999,547436b8-c839-4469-a2c0-704c1ce5ce00\\"\\n}","type":"json"}]', + ], + 'AddStudioLayout' => [ + 'summary' => 'Adds layout settings for a virtual production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -7373,56 +5992,96 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'LiveStreamType', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether the live stream is ingested by a streamer or played by a client. Set the value to **publisher**, which specifies that the live stream is ingested by a streamer.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'publisher', - 'enum' => [ - 'publisher', - ], - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Create a virtual production studio in advance. You can create a production studio in the console or by calling the [CreateCaster](~~69338~~) API operation. The production studio must be a virtual production studio.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- If you call the [CreateCaster](~~2848009~~) API operation to create a production studio, use the returned CasterId value.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** page. The name of the production studio in the list is its ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'LayoutName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can specify an asterisk (\\*) as the value to match all applications. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The name of the studio layout.', 'type' => 'string', 'example' => 'Test layout', 'required' => true, 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'LayoutType', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the ingested stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The type of the studio layout. Valid values:'."\n" + ."\n" + .'- **common**: A common layout. If you set LayoutType to common, you must also specify CommonConfig.'."\n" + ."\n" + .'- **studio**: A studio layout. If you set LayoutType to studio, you must also specify BgImageConfig and ScreenInputConfigList. The MediaInputConfigList parameter is optional.', 'type' => 'string', 'required' => true, 'example' => 'studio', 'title' => ''], + ], + [ + 'name' => 'CommonConfig', + 'in' => 'query', + 'schema' => ['description' => 'The configuration of the common layout. The value is a JSON string. For more information, see **CommonConfig**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required only when you set LayoutType to common.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => '{"ChannelId":"RV01" }', 'title' => ''], + ], + [ + 'name' => 'BgImageConfig', + 'in' => 'query', + 'schema' => ['description' => 'The configuration of the background resource. The value is a JSON string. For more information, see **BgImageConfig**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required only when you set LayoutType to studio.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => '{ "Id":"k12kj31****", "MaterialId":"f080575eb5f4427684fc0715159a****" }', 'title' => ''], + ], + [ + 'name' => 'ScreenInputConfigList', + 'in' => 'query', + 'schema' => ['description' => 'The settings for the chroma keying input. The value is a JSON string. For more information, see **ScreenInputConfig**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required only when you set LayoutType to studio.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => '[ { "Index":"1", "ChannelId":"RV01", "Color":"green", "PositionX":"0.1", "PositionY":"0.2", "HeightNormalized":"0.4" } ]', 'title' => ''], + ], + [ + 'name' => 'MediaInputConfigList', + 'in' => 'query', + 'schema' => ['description' => 'The settings for the multimedia input resource. The value is a JSON string. For more information, see **MediaInputConfig**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is valid and optional only when you set LayoutType to studio.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => '[ { "Id":"k12kj31****", "Index":"1", "ChannelId":"RV01", "FillMode":"none", "PositionRefer":"topLeft", "WidthNormalized":"0.4", "HeightNormalized":"0.4", "PositionNormalized":"[0.1, 0.2]" }, { "Id":"k12kj31****", "Index":"2", "ImageMaterialId":"lkajsdfsa8fd89asd8****", "FillMode":"none", "PositionRefer":"topLeft", "WidthNormalized":"0.6", "HeightNormalized":"0.4", "PositionNormalized":"[0.1, 0.2]" } ]', 'title' => ''], + ], + [ + 'name' => 'LayerOrderConfigList', + 'in' => 'query', + 'schema' => ['description' => 'The layer order settings. The value is a JSON string. For more information, see **LayerOrderConfig**. You can sort background materials and multimedia materials. Chroma keying layers are not supported. The earlier a material appears in the list, the lower its layer.', 'type' => 'string', 'required' => false, 'example' => '[ { "Type":"media", "Id":"k12kj31****" }, { "Type":"media", "Id":"k12kj31****" } ]', 'title' => ''], ], ], 'responses' => [ @@ -7430,81 +6089,179 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16BFE188-B193-4C3C-ADC5-79A7E31486EA', - ], + 'LayoutId' => ['description' => 'The layout ID. Use this ID to delete, modify, or query a virtual production studio layout.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16BFE188-B193-4C3C-ADC5-79A7E31486EA\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16BFE188-B193-4C3C-ADC5-79A7E31486EA\\n","errorExample":"{\\n \\"RequestId\\":\\"16BFE188-B193-4C3C-ADC5-79A7E31486EA\\"\\n}"}]', - 'title' => 'ResumeLiveStream', - 'description' => 'You can call this operation to resume the ingest of a stream. This operation supports only the live streams ingested by streamers.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidPositionNormalized.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PositionNormalized is invalid, please check and try again.'], + ['errorCode' => 'InvalidHeightOrWidthNormalized', 'errorMessage' => '%s, please check and try again later.', 'description' => 'HeightNormalized or WidthNormalized parameters are invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LayoutId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + 'title' => 'AddStudioLayout', + 'description' => 'You can call this operation to add layout settings for a virtual production studio. This operation supports both common and studio layouts.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', + .'The queries per second (QPS) limit for this operation is 10 per user. If you exceed this limit, your API calls are throttled. This may affect your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => '## CommonConfig'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| --------- | ------ | ------- | -------------------------------------------------------------- |'."\n" + .'| ChannelId | String | RV01 | The ID of the channel to which the video resource is attached. |'."\n" + ."\n" + .'## BgImageConfig'."\n" + ."\n" + .'> Specify only one of ImageUrl or MaterialId.'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| ---------- | ------ | -------------------------------- | --------------------------------------------- |'."\n" + .'| Id | String | k12kj31**** | The unique ID of the background material. |'."\n" + .'| ImageUrl | String | http://aliyundoc.com | The URL of the material. |'."\n" + .'| MaterialId | String | f080575eb5f4427684fc0715159a**** | The ID of the video on demand (VOD) material. |'."\n" + ."\n" + .'## ScreenInputConfig'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| ---------------- | ------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| Index | Integer | 1 | The number of the chroma keying source. This parameter is for display on the frontend and has no logical function. It must be a positive integer greater than 0. |'."\n" + .'| ChannelId | String | RV01 | The ID of the channel to which the video resource is attached. |'."\n" + .'| Color | String | green | The color for chroma keying. Valid values: **blue**: Blue screen background. **green**: Green screen background. **auto**: Automatic detection. **complex**: Real-scene chroma keying. |'."\n" + .'| PositionX | Float | 0.1 | The x-coordinate. The value must be in the range [0, 1]. The top-left corner is the reference point for the material\'s position. |'."\n" + .'| PositionY | Float | 0.2 | The y-coordinate. The value must be in the range [0, 1]. The top-left corner is the reference point for the material\'s position. |'."\n" + .'| HeightNormalized | Float | 0.4 | The normalized height. This is the ratio of the height of the keyed-out portrait to the height of the background. The value must be in the range [0, 1]. |'."\n" + ."\n" + .'## MediaInputConfig'."\n" + ."\n" + .'- If the multimedia material is a video source, specify ChannelId.'."\n" + ."\n" + .'- If the multimedia material is an image, specify ImageMaterialId.'."\n" + ."\n" + .'- ChannelId and ImageMaterialId are mutually exclusive. Specify only one.'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| ------------------ | ------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| Id | String | k12kj31**** | The unique ID of the multimedia material. |'."\n" + .'| Index | Integer | 1 | The number of the multimedia material. This parameter is for display on the frontend and has no logical function. It must be a positive integer greater than 0. |'."\n" + .'| ChannelId | String | RV01 | The ID of the channel to which the video resource is attached. |'."\n" + .'| ImageMaterialId | String | lkajsdfsa8fd89asd8**** | The ID of the VOD image material. |'."\n" + .'| FillMode | String | none | The fill type. Set this to **none**. |'."\n" + .'| PositionRefer | String | topLeft | The reference point for the material\'s position. Set this to **topLeft**. This indicates that the top-left corner is the reference point. |'."\n" + .'| WidthNormalized | Float | 0.4 | The normalized width of the material. This is the ratio of the width of the material to the width of the background. The value must be in the range [0, 1]. |'."\n" + .'| HeightNormalized | Float | 0.4 | The normalized height of the material. This is the ratio of the height of the material to the height of the background. The value must be in the range [0, 1]. |'."\n" + .'| PositionNormalized | Float | \\[0.1, 0.2] | The normalized position of the material\'s fill area [x, y]. The values of x and y must be in the range [0, 1]. For example, [0.1, 0.2] indicates a horizontal offset of 10% and a vertical offset of 20% from the top-left corner. |'."\n" + ."\n" + .'## LayerOrderConfig'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| ---- | ------ | ----------- | -------------------------------------------------------------------------------------------------------- |'."\n" + .'| Type | String | media | The type of the resource configuration. background: A background material. media: A multimedia material. |'."\n" + .'| Id | String | k12kj31**** | The unique ID of the resource. |', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainOnlineUserNum' => [ - 'summary' => 'Queries the number of online users at a specified point in time for all live streams under a specified domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddStudioLayout'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddStudioLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'translator' => 'manual', + ], + 'AddTrancodeSEI' => [ + 'summary' => 'Inserts Supplemental Enhancement Information (SEI) data into transcoded streams.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107024', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'QueryTime', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The point of time to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-12-27T13:09:21Z', - ], + 'schema' => ['description' => 'The AppName of the live stream. View AppNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream.'."\n" + ."\n" + .'> It must be the name of the source stream. This ensures that SEI is inserted into all transcoded streams.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'Text', + 'in' => 'query', + 'schema' => ['description' => 'The SEI text. Length limit: 4000 bytes.', 'type' => 'string', 'required' => true, 'example' => 'liveSei****', 'title' => ''], + ], + [ + 'name' => 'Pattern', + 'in' => 'query', + 'schema' => ['description' => 'Specifies the insertion pattern for the SEI.'."\n" + ."\n" + .'- **keyframe**: Inserts at every keyframe.'."\n" + ."\n" + .'- **frame**: Inserts at every single frame.', 'type' => 'string', 'required' => true, 'example' => 'keyframe', 'title' => ''], + ], + [ + 'name' => 'Repeat', + 'in' => 'query', + 'schema' => ['description' => 'The number of times to repeat the insertion. A value of -1 means infinite repetitions.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '-1', 'title' => ''], + ], + [ + 'name' => 'Delay', + 'in' => 'query', + 'schema' => ['description' => 'The delay in milliseconds before the SEI is inserted after the command is received.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '100', 'title' => ''], ], ], 'responses' => [ @@ -7512,574 +6269,409 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3A3A8C3D-F8B2-4FBF-9319-771A11B855FA', - ], - 'UserCount' => [ - 'description' => 'The total number of online users at the specified point in time for all the live streams under the main streaming domain.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'StreamCount' => [ - 'description' => 'The number of streams.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'OnlineUserInfo' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveStreamOnlineUserNumInfo' => [ - 'description' => 'The information about the streams.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'StreamName' => [ - 'description' => 'The name of the stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://example.com/test/liveStream****_3_1', - ], - 'Infos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Info' => [ - 'description' => 'The statistics on the stream.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'UserNumber' => [ - 'description' => 'The number of online users for the stream, which can be a source stream or transcoded stream.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'TranscodeTemplate' => [ - 'description' => 'The transcoding template. A value of origin indicates that the stream is a source stream.'."\n", - 'type' => 'string', - 'example' => 'origin', - ], - ], - 'description' => '', - ], - ], - ], - ], - ], - 'description' => '', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4E*****43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], - [ - 'errorCode' => 'InvalidQueryTime.Exceed', - 'errorMessage' => 'QueryTime exceed three month.', - ], - [ - 'errorCode' => 'InvalidQueryTime.Malformed', - 'errorMessage' => 'Specified QueryTime is malformed.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"3A3A8C3D-F8B2-4FBF-9319-771A11B855FA\\",\\n \\"UserCount\\": 1,\\n \\"StreamCount\\": 1,\\n \\"OnlineUserInfo\\": {\\n \\"LiveStreamOnlineUserNumInfo\\": [\\n {\\n \\"StreamName\\": \\"rtmp://example.com/test/liveStream****_3_1\\",\\n \\"Infos\\": {\\n \\"Info\\": [\\n {\\n \\"UserNumber\\": 1,\\n \\"TranscodeTemplate\\": \\"origin\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n1\\n\\n \\n rtmp://example.com/test/liveStream****_3_1\\n \\n \\n origin\\n 1\\n \\n \\n \\n\\n3A3A8C3D-F8B2-4FBF-9319-771A11B855FA\\n1\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainOnlineUserNum', - 'description' => 'You can call this operation to collect statistics on the number of online users for only Flash Video (FLV), Real-Time Streaming (RTS), and Real-Time Messaging Protocol (RTMP) streams, but not HTTP Live Streaming (HLS) streams. A delay exists in data collection and statistics. We recommend that you query the data of more than 5 minutes ago.'."\n" - ."\n" - .'> Use this operation to replace the deprecated DescribeLiveStreamOnlineUserNum operation.'."\n" + 'title' => 'AddTrancodeSEI', + 'description' => 'First, obtain the streaming domain. Then, call this operation to insert SEI into the transcoded streams. The stream name must be the same as the source stream to ensure that SEI is inserted into all transcoded streams.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 200 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 6,000 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainFrameRateAndBitRateData' => [ - 'summary' => 'Queries the frame rates and bitrates of all live streams under an ingest domain.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddTrancodeSEI', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4E*****43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'BanLiveMessageGroup' => [ + 'summary' => 'Call the BanLiveMessageGroup operation to mute a user.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '237378', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID.', 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The group ID.', 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'QueryTime', + 'name' => 'ExceptUsers', 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The point of time to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2019-02-21T08:00:00Z', + 'description' => 'The users who are exempt from the group-wide mute. Specify up to 30 users. Separate multiple user IDs with a comma (,).', + 'type' => 'array', + 'items' => ['description' => 'A user who is exempt from the group-wide mute.', 'type' => 'string', 'required' => false, 'example' => 'uid3', 'title' => ''], + 'required' => false, + 'title' => '', + 'example' => '', ], ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. This value must be the same as the data center that you specified when you called [CreateLiveMessageApp](~~2848162~~).'."\n" + ."\n" + .'> The supported data centers are China (Shanghai) (cn-shanghai) and Singapore (ap-southeast-1).', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response schema.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'C3F2C2C4-59BB-4B62-81FF-345BE557E3E3', - ], - 'FrameRateAndBitRateInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'FrameRateAndBitRateInfo' => [ - 'description' => 'The frame rates and bitrates of the live streams that were queried.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The frame rates and bitrate of the live stream.'."\n", - 'type' => 'object', - 'properties' => [ - 'VideoFrameRate' => [ - 'description' => 'The video frame rate of the live stream. Unit: frames per second (FPS).'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '24.9', - ], - 'StreamUrl' => [ - 'description' => 'The URL of the live stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://demo.aliyundoc.com/test/liveStream****_3_4', - ], - 'AudioFrameRate' => [ - 'description' => 'The audio frame rate of the live stream. Unit: FPS.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '42.9', - ], - 'BitRate' => [ - 'description' => 'The bitrate of the live stream. Unit: bit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '30693.96', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], - [ - 'errorCode' => 'InvalidQueryTime.Exceed', - 'errorMessage' => 'QueryTime exceed three month.', - ], - [ - 'errorCode' => 'InvalidQueryTime.Malformed', - 'errorMessage' => 'Specified QueryTime is malformed.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C3F2C2C4-59BB-4B62-81FF-345BE557E3E3\\",\\n \\"FrameRateAndBitRateInfos\\": {\\n \\"FrameRateAndBitRateInfo\\": [\\n {\\n \\"VideoFrameRate\\": 24.9,\\n \\"StreamUrl\\": \\"rtmp://demo.aliyundoc.com/test/liveStream****_3_4\\",\\n \\"AudioFrameRate\\": 42.9,\\n \\"BitRate\\": 30693.96\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n C3F2C2C4-59BB-4B62-81FF-345BE557E3E3\\n \\n \\n 24.9\\n 30693.96\\n 42.9\\n rtmp://demo.aliyundoc.com/test/liveStream****_3_4\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainFrameRateAndBitRateData', - 'description' => 'You can call this operation to query the real-time bitrates and frame rates of live streams, which helps you evaluate the stream ingest quality. A delay exists in data collection and statistics. We recommend that you query the data of more than 5 minutes ago.'."\n" - ."\n" - .'> Use this operation to replace the deprecated DescribeLiveStreamsFrameRateAndBitRateData operation.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","type":"json"}]', + 'title' => 'BanLiveMessageGroup', + 'description' => 'Before you call this operation, you must call [CreateLiveMessageGroup](~~2848163~~) to create an interactive message group.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveDomainLimit' => [ - 'summary' => 'Queries the maximum numbers of ingested and transcoded streams for a streaming domain.', - 'methods' => [ - 'post', - 'get', + .'Each user can call this operation up to 10 times per second. API calls that exceed this limit are throttled, which may impact your business. We recommend that you call this operation within this limit.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:BanLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'BatchDeleteLiveDomainConfigs' => [ + 'summary' => 'Deletes the configurations of multiple domain names at a time.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainNames', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ingest domain or streaming domain. Separate multiple domain names with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com,example.aliyundoc.com,example.com', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'FunctionNames', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The names of the features. Separate multiple features with commas (,). For more information, see **Features specified by the Functions parameter**.', 'type' => 'string', 'required' => true, 'example' => 'referer_white_list_set,ip_black_list_set', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', - ], - 'LiveDomainLimitList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveDomainLimit' => [ - 'description' => 'The limits.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The maximum allowed numbers of ingested streams, transcoded streams, and relayed streams under the streaming domain.'."\n", - 'type' => 'object', - 'properties' => [ - 'LimitTranscodeNum' => [ - 'description' => 'The maximum number of transcoded streams.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '50', - ], - 'CurrentTranscodeNum' => [ - 'description' => 'The current number of transcoded streams.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'LimitNum' => [ - 'description' => 'The maximum number of ingested streams.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '100', - ], - 'LimitTransferNum' => [ - 'description' => 'The maximum allowed number of streams relayed from the live center.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '50', - ], - 'CurrentNum' => [ - 'description' => 'The current number of ingested streams.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'CurrentTransferNum' => [ - 'description' => 'The current number of streams relayed from the live center.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'DomainName' => [ - 'description' => 'The name of the queried main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'Invalid%s.ValueNotSupported', 'errorMessage' => 'FunctionName [%s] is not supported.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562********\\",\\n \\"LiveDomainLimitList\\": {\\n \\"LiveDomainLimit\\": [\\n {\\n \\"LimitTranscodeNum\\": 50,\\n \\"CurrentTranscodeNum\\": 10,\\n \\"LimitNum\\": 100,\\n \\"LimitTransferNum\\": 50,\\n \\"CurrentNum\\": 10,\\n \\"CurrentTransferNum\\": 10,\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n A3136B58-5876-4168-83CA-B562781981A0\\n \\n 50\\n 10\\n 100\\n 50\\n 10\\n 10\\n example.com\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainLimit', - 'description' => 'This operation applies only to main streaming domains.'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'BatchDeleteLiveDomainConfigs', + 'description' => 'Obtain the domain names for which you want to delete the configurations, and then call this operation to delete the configurations of these domain domains at a time.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 5 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => '## Format of the FunctionNames parameter'."\n" + ."\n" + .'- Example: `[{"functionArgs":[{"argName":"domain_name","argValue":"developer.aliyundoc.com"}],"functionName":"set_req_host_header"}]`'."\n" + ."\n" + .'- Some features, such as filetype\\_based\\_ttl\\_set, support multiple configuration records. To update one of the configuration records, use configId to identify the record. Example: `[{"functionArgs":[{"argName":"file_type","argValue":"jpg"},{"argName":"ttl","argValue":"18"},{"argName":"weight","argValue":"30"}],"functionName":"filetype_based_ttl_set","configId":506***}]`'."\n" + ."\n" + .'## Features specified by the FunctionNames parameter'."\n" + ."\n" + .'| Feature | Attribute |'."\n" + .'| -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |'."\n" + .'| **referer_white_list_set**: specifies the Referer whitelist. | **refer_domain_allow_list**: the Referers to be added to the whitelist. Separate multiple Referers with commas (,).**allow_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**. |'."\n" + .'| **referer_black_list_set**: specifies the Referer blacklist. | **refer_domain_deny_list**: the Referers to be added to the blacklist. Separate multiple Referers with commas (,).**allow_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**. |'."\n" + .'| **filetype_based_ttl_set**: specifies the time period after which a file expires. | **ttl**: the cache duration. Unit: seconds. Valid values: 1 to 99999999 (more than three years).**file_type**: the file type. Separate multiple file types with commas (,).**weight**: the weight of the file type. Valid values: **1 to 99**. |'."\n" + .'| **path_based_ttl_set**: specifies the time period after which a directory expires. | **ttl**: the cache duration. Unit: seconds. Valid values: 1 to 99999999 (more than three years).**path**: the directory, which must start with a forward slash (/).**weight**: the weight of the directory. Valid values: **1 to 99**. |'."\n" + .'| **oss_auth**: authenticates access to an Object Storage Service (OSS) bucket. | **oss_bucket_id**: the path of your OSS bucket. |'."\n" + .'| **ip_black_list_set**: specifies the IP address blacklist. | **ip_list**: the IP addresses to be added to the blacklist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **ip_allow_list_set**: specifies the IP address whitelist. | **ip_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **ip_white_list_set**: specifies the IP address whitelist for rate limiting. | **ip_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **error_page**: redirects an error page to a specified page. | **error_code**: the error code.**rewrite_page**: the page to which the error page is redirected. |'."\n" + .'| **set_req_host_header**: modifies the Host header of back-to-origin requests. | **domain_name**: the Host header of back-to-origin requests. |'."\n" + .'| **set_hashkey_args**: ignores the specified URL parameters. | **hashkey_args**: the parameters to be reserved. Separate multiple parameters with commas (,).**disable**: specifies whether to ignore all parameters. Valid values: on and off. A value of on specifies that all parameters are ignored. A value of off specifies that none of the parameters are ignored. |'."\n" + .'| **aliauth**: configures Alibaba Cloud authentication. | **auth_type**: the authentication type. Valid values: **type_a** and **no_auth**. A value of type_a specifies that authentication type A is enabled. A value of no_auth specifies that authentication is disabled.**auth_key1**: the primary authentication key. The authentication key can contain letters and digits. We recommend that you set the authentication key to a value that is 8 to 32 characters in length.**auth_key2**: the secondary authentication key.**ali_auth_delta**: the custom buffer time for authentication. Unit: minutes. We recommend that you set the value to at least 1 minute.**auth_m3u8**: specifies whether to enable M3U8 rewrite. If you enable M3U8 rewrite, the system completes authentication for TS segments in an M3U8 playlist to prevent failures in accessing the TS segments. Valid values: **on** (default) and **off**. |'."\n" + .'| **remote_auth**: configures remote authentication for live streaming. | **enable**: specifies whether to enable remote authentication. This attribute is required. Valid values: on and off.**remote_auth_path**: the address of the authentication server. This attribute is required.**remote_auth_pattern**: the authentication mode. The following fields are available:- **param**: specifies whether to pass parameters in the ingest URL to the authentication server. Valid values: pass (default) and fail.- **args_white**: the parameter that you want to pass. Separate multiple parameters with commas (,).- **args_black**: the parameter that you do not want to pass. Separate multiple parameters with commas (,).- **code**: the HTTP status code. A value in the form of code=XXX is returned by the authentication server to ApsaraVideo Live upon successful authentication. Example: code=200. A value in the form of code=~XXX is returned by the authentication server to ApsaraVideo Live upon failed authentication. Example: code=~403.- **delta**: the timeout duration for authentication.- **retry**: the number of retries upon authentication timeout.- **timeout**: the action to perform upon authentication timeout. Valid values: **pass** and **fail**. **pass**: ApsaraVideo Live passes the request. **fail**: ApsaraVideo Live returns the HTTP status code 403 that indicates failure.- **async**: specifies whether to enable asynchronous authentication. Valid values: **on** and **off** (default). |'."\n" + .'| **set_resp_header**: configures a response header. To verify the configuration, you can check the response message in a browser. | **key**: the name of the response header. Valid values:**Content-Type** **Cache-Control** **Content-Disposition** **Content-Language** **Expires** **Access-Control-Allow-Origin** **Access-Control-Allow-Methods** **Access-Control-Allow-Headers** **Access-Control-Max-Age** **Access-Control-Expose-Headers** **value**: the content of the response header. If you want to delete the header, enter null. |'."\n" + .'| **https_force**: configures force redirect to HTTPS. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https_force and http_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature. |'."\n" + .'| **http_force**: configures force redirect to HTTP. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https_force and http_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature. |'."\n" + .'| **forward_scheme**: configures adaptive back-to-origin. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**.**scheme_origin**: the protocol of the origin. Valid values: http, https, and follow.**scheme_origin_port**: the port number of the origin. Valid values: 80, 443, and 80:443. |'."\n" + .'| **green_manager**: configures pornography detection. | **enable**: specifies whether to enable pornography detection. Valid values: **on** and **off**. |'."\n" + .'| **tmd_signature**: configures custom rate limiting rules. | **name**: the name of the rule, which must be globally unique.**path**: the uniform resource identifier (URI). You can specify duplicate URIs. However, you must verify their validity.**pathType**: the matching rule. Valid values: **0** and **1**. A value of 0 specifies a prefix match. A value of 1 specifies an exact match.**interval**: the interval at which data is monitored. Unit: seconds. The interval must be greater than or equal to 10 seconds.**count**: the number of visits from an IP address.**action**: the action to perform after the specified conditions are met. Valid values: **0** and **1**. A value of 0 specifies that access is blocked. A value of 1 specifies that bot detection is performed.**ttl**: the time period during which access is blocked. Unit: seconds. |'."\n" + .'| **l2_oss_key**: configures private key authentication for back-to-origin requests from L2 nodes to private OSS buckets. | **private_oss_auth**: specifies whether to authenticate access to a private OSS bucket. Valid values: **on** and **off**. |'."\n" + .'| **video_seek**: configures video seeking. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. |'."\n" + .'| **gzip**: configures Gzip compression. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. |'."\n" + .'| **tesla**: configures page optimization to accelerate access. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. |'."\n" + .'| **ali_ua**: configures User-Agent-based access control. | **ua**: the User-Agent.**type**: the type of the list. Valid values: **black** and **white**. |'."\n" + .'| **host_redirect**: configures URL rewrite. | **regex**: the URL to be rewritten. Example: ^/$.**replacement**: the destination URL. Example: /go/act/sale/tbzlsy.php.**flag**: the flag. Valid values: redirect and break. |'."\n" + .'| **ipv6**: configures IPv6. | **switch**: specifies whether to enable IPv6. This attribute is required. Valid values: **on** and **off**. If you want to disable this feature after this feature is enabled, deselect the feature in the console. Do not delete the configuration. Otherwise, the feature will still be enabled.**region**: the region in which you want to enable IPv6. Valid values: cn-beijing, cn-shanghai, cn-shenzhen, cn-qingdao, apsoutheast-1, eu-central-1, ap-northeast-1, and ap-southeast-5, which indicate China (Beijing), China (Shanghai), China (Shenzhen), China (Qingdao), Singapore, Germany (Frankfurt), Japan (Tokyo), and Indonesia (Jakarta), respectively. |'."\n" + .'| **ali_location**: configures region-based access control. | **location**: the regions.**type**: the type of the list. Valid values: **black** and **white**. |'."\n" + .'| **cc_defense**: configures protection against HTTP flood attacks. | **enable**: specifies whether to enable protection against HTTP flood attacks. Valid values: **on** and **off**. |'."\n" + .'| **alilive**: configures the live streaming settings. | **notify_url**: the URL for receiving notifications from ApsaraVideo Live.**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.**live_forbid_flv**: specifies whether to prohibit the playback of Flash Video (FLV) videos. Valid values: **on** and **off**.**live_forbid_rtmp**: specifies whether to prohibit the playback of Real-Time Messaging Protocol (RTMP) videos. Valid values: **on** and **off**.**live_forbid_hls**: specifies whether to prohibit the playback of HTTP Live Streaming (HLS) videos. Valid values: **on** and **off**. |'."\n" + .'| **ali_grtn**: specifies whether to connect to Global Realtime Transport Network (GRTN). | **grtn_rts_pub**: specifies whether to enable stream ingest over Real-Time Streaming (RTS). This attribute is applicable to ingest domains. Valid values: **on** and **off**.**grtn_rts_play**: specifies whether to enable streaming over RTS. This attribute is applicable to streaming domains. Valid values: **on** and **off**.**grtn_rts_transcode**: specifies whether to enable auto transcoding for RTS-based HTML5 playback. Valid values: **on** and **off**. |'."\n" + .'| **edge_function**: configures the edge function. | Required attributes:**rule**: the domain-specific language (DSL) rule.**pri**: the priority of the rule.**enable**: specifies whether to enable the rule. Valid values: **on** and **off**.Optional attributes:**name**: the name of the rule.**pos**: the position from which to execute the rule.**brk**: After the rule is hit, the rules after the specified position are skipped.**option**: the option.**grammar**: the grammar. Valid values: es2 and js. You can also leave this attribute empty.**jsmode**: the mode to manage the domain name whitelist in JavaScript. Valid values: **redirect** and **bypass**. |'."\n" + .'| **https_tls_version**: configures the Transport Layer Security (TLS) protocol versions. | **tls10**: specifies whether to enable TLS 1.0. Default value: **on**. Valid values: **on** and **off**.**tls11**: specifies whether to enable TLS 1.1. Default value: **on**. Valid values: **on** and **off**.**tls12**: specifies whether to enable TLS 1.2. Default value: **on**. Valid values: **on** and **off**.**tls13**: specifies whether to enable TLS 1.3. Default value: **on**. Valid values: **on** and **off**. |'."\n" + .'| **https_option** :configures HTTP settings. | **http2**: specifies whether to enable HTTP/2. Default value: **off**. Valid values: **on** and **off**.**live_http2**: specifies whether to enable live_http2. Default value: **off**. Valid values: **on** and **off**. |', 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" - .'| Error code | Error message | HTTP status code |Description|'."\n" - .'|--------|--------|--------|--------|'."\n" - .'|Missing DomainName|DomainName is mandatory for this action.|400|One or more required parameters are not specified. |'."\n" - .'|InvalidParam|Parameter invalid.|400|One or more specified parameters are invalid. |'."\n" - .'|InvalidDomain.NotFound|The domain provided does not exist in our records.|404|The domain name is not found within your Alibaba Cloud account. |', - ], - 'DescribeLiveStreamState' => [ - 'summary' => 'Queries the status of a stream in real time.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:BatchDeleteLiveDomainConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","type":"json"}]', + ], + 'BatchGetOnlineUsers' => [ + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain or ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the interactive messaging application.', 'type' => 'string', 'required' => true, 'example' => 'a494caec-***-695ef345db77', 'title' => ''], ], [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The message group ID.', 'type' => 'string', 'required' => true, 'example' => '23wcaec-***695ef', 'title' => ''], ], [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'name' => 'UserIds', + 'in' => 'formData', + 'schema' => ['description' => 'The list of user IDs. Separate multiple user IDs with commas (,). You can specify up to 20 user IDs.', 'type' => 'string', 'required' => true, 'example' => 'de1**a0,hu**9', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The returned parameters.', 'type' => 'object', 'properties' => [ - 'Type' => [ - 'description' => 'The mode of the stream. Valid values:'."\n" - ."\n" - .'* push: stream ingest'."\n" - .'* pull: triggered stream pulling'."\n", - 'type' => 'string', - 'example' => 'push', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CE6CD79D-0A98-1F22-A15F-FADA74DF2729', - ], - 'StreamState' => [ - 'description' => 'The status of the stream. Valid values:'."\n" - ."\n" - .'* online: The stream is being ingested.'."\n" - .'* offline: The stream is offline. This may be caused by failed or completed stream ingest. For the specific reason, check the stream ingest callback. This operation does not provide detailed information.'."\n", - 'type' => 'string', - 'example' => 'online', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'The returned result', + 'type' => 'object', + 'properties' => [ + 'OnlineUsers' => [ + 'description' => 'The array of objects', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'JoinTime' => ['description' => 'The UTC timestamp when the user joined the message group. Unit: milliseconds', 'type' => 'integer', 'format' => 'int64', 'example' => '12**45', 'title' => ''], + 'Online' => ['description' => 'Indicates whether the user is online. Valid values:'."\n" + ."\n" + .'- **true**: The user is online.'."\n" + ."\n" + .'- **false**: The user is offline.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'UserId' => ['description' => 'The user ID.', 'type' => 'string', 'example' => 'de1**a0', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + 403 => [ + ['errorCode' => 'Forbidden', 'errorMessage' => 'User not authorized to operate on the specified resource.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Type\\": \\"push\\",\\n \\"RequestId\\": \\"CE6CD79D-0A98-1F22-A15F-FADA74DF2729\\",\\n \\"StreamState\\": \\"online\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\nonline\\npush\\nCE6CD79D-0A98-1F22-A15F-FADA74DF2729\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamState', - 'description' => 'Obtain the streaming domain, and then call this operation to query the status of a stream in real time. If the stream is in the offline status, you can check the stream ingest callback to learn about the reason that causes the offline status. This operation does not provide detailed information.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'BatchGetOnlineUsers', + 'summary' => 'Queries whether one or more users are online based on their UIDs', + 'description' => '## Usage notes'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'This operation supports batch queries. You can query the online status of up to 20 users at a time.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveStreamMerge' => [ - 'summary' => 'Deletes an active mixed stream.', - 'methods' => [ - 'post', - 'get', + .'## QPS limits'."\n" + ."\n" + .'The single-user queries per second (QPS) limit for this operation is 100 times/second. If you exceed this limit, API calls will be throttled, which may affect your business. You should make API calls at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BatchGetOnlineUsers'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:BatchGetOnlineUsers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"OnlineUsers\\": [\\n {\\n \\"JoinTime\\": 0,\\n \\"Online\\": true,\\n \\"UserId\\": \\"de1**a0\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'BatchSetLiveDomainConfigs' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveBLHP6S', - ], + 'abilityTreeCode' => '106875', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', + 'name' => 'DomainNames', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application that generates the output stream. You can view the application name on the [Primary/Secondary Stream Mixing](~~606583~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'app', - ], + 'schema' => ['description' => 'The domain names that you want to batch configure. Supported domain names include ingest domains, main streaming domains, and sub-streaming domains. Separate multiple domain names with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com,example.aliyundoc.com,example.com', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'Functions', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the output stream. You can view the stream name on the [Primary/Secondary Stream Mixing](~~606583~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'StreamName', - ], + 'schema' => ['description' => 'The list of features.'."\n" + ."\n" + .'Some features, such as `filetype_based_ttl_set`, support multiple configuration records. To update one of the configuration records, use `configId` to identify the record. For more information, see **Format of the Functions parameter** and **Features specified by the Functions parameter**.', 'type' => 'string', 'required' => true, 'example' => ' [{"functionArgs":[{"argName":"file_type","argValue":"jpg"},{"argName":"ttl","argValue":"18"},{"argName":"weight","argValue":"30"}],"functionName":"filetype_based_ttl_set","configId":506***}]', 'title' => ''], ], ], 'responses' => [ @@ -8087,347 +6679,346 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB9*********', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'QuotaExceeded.Merge', - 'errorMessage' => 'Exceed max merge count limit', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], + ['errorCode' => 'InvalidFunctions.Malformed', 'errorMessage' => 'Specified Functions is malformed.', 'description' => ''], + ['errorCode' => 'InvalidFunctionArgs.Malformed', 'errorMessage' => 'The specified FunctionArgs is invalid.', 'description' => ''], + ['errorCode' => 'InvalidArgValue.Malformed', 'errorMessage' => 'Specified ArgValue is malformed.', 'description' => ''], + ['errorCode' => 'Invalid%s.ValueNotSupported', 'errorMessage' => 'FunctionName [%s] is not supported.', 'description' => ''], + ['errorCode' => 'Invalid%s.Malformed', 'errorMessage' => 'ArgValue [%s] is malformed.', 'description' => ''], + ['errorCode' => 'MissingParameter%s', 'errorMessage' => 'The specified value of ArgName[%s] is missing.', 'description' => ''], + ['errorCode' => 'FunctionMutex', 'errorMessage' => 'Function is mutex with other function.', 'description' => ''], + ['errorCode' => 'RewriteHostRely', 'errorMessage' => 'Domain name is configured as rewrite host by others.', 'description' => ''], + ['errorCode' => 'ConfigurationConflicts', 'errorMessage' => 'The staging environment has a configuration in effect and cannot modify the production environment configuration.', 'description' => 'The staging environment has a configuration in effect and cannot modify the production environment configuration.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'BatchSetLiveDomainConfigs', + 'summary' => 'Configures multiple domain names at a time.', + 'description' => 'Obtain the domain names that you want to configure, and then call this operation to configure the domain names in batches.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => '## Format of the Functions parameter'."\n" + ."\n" + .'- Example: `[{"functionArgs":[{"argName":"domain_name","argValue":"developer.aliyundoc.com"}],"functionName":"set_req_host_header"}]`'."\n" + ."\n" + .'- Some features, such as filetype\\_based\\_ttl\\_set, support multiple configuration records. To update one of the configuration records, use configId to identify the record. Example: `[{"functionArgs":[{"argName":"file_type","argValue":"jpg"},{"argName":"ttl","argValue":"18"},{"argName":"weight","argValue":"30"}],"functionName":"filetype_based_ttl_set","configId":506***}]`'."\n" + ."\n" + .'## Features specified by the Functions parameter'."\n" + ."\n" + .'| Feature | Attribute |'."\n" + .'| -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |'."\n" + .'| **referer_white_list_set**: specifies the Referer whitelist. | **refer_domain_allow_list**: the Referers to be added to the whitelist. Separate multiple Referers with commas (,).**allow_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**. |'."\n" + .'| **referer_black_list_set**: specifies the Referer blacklist. | **refer_domain_deny_list**: the Referers to be added to the blacklist. Separate multiple Referers with commas (,).**allow_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**. |'."\n" + .'| **filetype_based_ttl_set**: specifies the time period after which a file expires. | **ttl**: the cache duration. Unit: seconds. Valid values: 1 to 99999999 (more than three years).**file_type**: the file type. Separate multiple file types with commas (,).**weight**: the weight of the file type. Valid values: **1 to 99**. |'."\n" + .'| **path_based_ttl_set**: specifies the time period after which a directory expires. | **ttl**: the cache duration. Unit: seconds. Valid values: 1 to 99999999 (more than three years).**path**: the directory, which must start with a forward slash (/).**weight**: the weight of the directory. Valid values: **1 to 99**. |'."\n" + .'| **oss_auth**: authenticates access to an Object Storage Service (OSS) bucket. | **oss_bucket_id**: the path of your OSS bucket. |'."\n" + .'| **ip_black_list_set**: specifies the IP address blacklist. | **ip_list**: the IP addresses to be added to the blacklist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **ip_allow_list_set**: specifies the IP address whitelist. | **ip_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **ip_white_list_set**: specifies the IP address whitelist for rate limiting. | **ip_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **error_page**: redirects an error page to a specified page. | **error_code**: the error code.**rewrite_page**: the page to which the error page is redirected. |'."\n" + .'| **set_req_host_header**: modifies the Host header of back-to-origin requests. | **domain_name**: the Host header of back-to-origin requests. |'."\n" + .'| **set_hashkey_args**: ignores the specified URL parameters. | **hashkey_args**: the parameters to be reserved. Separate multiple parameters with commas (,).**disable**: specifies whether to ignore all parameters. Valid values: on and off. A value of on specifies that all parameters are ignored. A value of off specifies that none of the parameters are ignored. |'."\n" + .'| **aliauth**: configures Alibaba Cloud authentication. | **auth_type**: the authentication type. Valid values: **type_a** and **no_auth**. A value of type_a specifies that authentication type A is enabled. A value of no_auth specifies that authentication is disabled.**auth_key1**: the primary authentication key. The authentication key can contain letters and digits. We recommend that you set the authentication key to a value that is 8 to 32 characters in length.**auth_key2**: the secondary authentication key.**ali_auth_delta**: the custom buffer time for authentication. Unit: seconds. We recommend that you set the value to at least 60 seconds.**auth_m3u8**: specifies whether to enable M3U8 rewrite. If you enable M3U8 rewrite, the system completes authentication for TS segments in an M3U8 playlist to prevent failures in accessing the TS segments. Valid values: **on** (default) and **off**. |'."\n" + .'| **remote_auth**: configures remote authentication for live streaming. | **enable**: specifies whether to enable remote authentication. This attribute is required. Valid values: on and off.**remote_auth_path**: the address of the authentication server. This attribute is required.**remote_auth_pattern**: the authentication mode. The following fields are available:- **param**: specifies whether to pass parameters in the ingest URL to the authentication server. Valid values: pass (default) and fail.- **args_white**: the parameter that you want to pass. Separate multiple parameters with commas (,).- **args_black**: the parameter that you do not want to pass. Separate multiple parameters with commas (,).- **code**: the HTTP status code. A value in the form of code=XXX is returned by the authentication server to ApsaraVideo Live upon successful authentication. Example: code=200. A value in the form of code=~XXX is returned by the authentication server to ApsaraVideo Live upon failed authentication. Example: code=~403.- **delta**: the timeout duration for authentication.- **retry**: the number of retries upon authentication timeout.- **timeout**: the action to perform upon authentication timeout. Valid values: **pass** and **fail**. **pass**: ApsaraVideo Live passes the request. **fail**: ApsaraVideo Live returns the HTTP status code 403 that indicates failure.- **async**: specifies whether to enable asynchronous authentication. Valid values: **on** and **off** (default). |'."\n" + .'| **set_resp_header**: configures a response header. To verify the configuration, you can check the response message in a browser. | **key**: the name of the response header. Valid values:**Content-Type** **Cache-Control** **Content-Disposition** **Content-Language** **Expires** **Access-Control-Allow-Origin** **Access-Control-Allow-Methods** **Access-Control-Allow-Headers** **Access-Control-Max-Age** **Access-Control-Expose-Headers** **value**: the content of the response header. If you want to delete the header, enter null. |'."\n" + .'| **https_force**: configures force redirect to HTTPS. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https_force and http_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature. |'."\n" + .'| **http_force**: configures force redirect to HTTP. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https_force and http_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature. |'."\n" + .'| **forward_scheme**: configures adaptive back-to-origin. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**.**scheme_origin**: the protocol of the origin. Valid values: http, https, and follow.**scheme_origin_port**: the port number of the origin. Valid values: 80, 443, and 80:443. |'."\n" + .'| **green_manager**: configures pornography detection. | **enable**: specifies whether to enable pornography detection. Valid values: **on** and **off**. |'."\n" + .'| **tmd_signature**: configures custom rate limiting rules. | **name**: the name of the rule, which must be globally unique.**path**: the uniform resource identifier (URI). You can specify duplicate URIs. However, you must verify their validity.**pathType**: the matching rule. Valid values: **0** and **1**. A value of 0 specifies a prefix match. A value of 1 specifies an exact match.**interval**: the interval at which data is monitored. Unit: seconds. The interval must be greater than or equal to 10 seconds.**count**: the number of visits from an IP address.**action**: the action to perform after the specified conditions are met. Valid values: **0** and **1**. A value of 0 specifies that access is blocked. A value of 1 specifies that bot detection is performed.**ttl**: the time period during which access is blocked. Unit: seconds. |'."\n" + .'| **l2_oss_key**: configures private key authentication for back-to-origin requests from L2 nodes to private OSS buckets. | **private_oss_auth**: specifies whether to authenticate access to a private OSS bucket. Valid values: **on** and **off**. |'."\n" + .'| **video_seek**: configures video seeking. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. |'."\n" + .'| **gzip**: configures Gzip compression. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. |'."\n" + .'| **tesla**: configures page optimization to accelerate access. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. |'."\n" + .'| **ali_ua**: configures User-Agent-based access control. | **ua**: the User-Agent.**type**: the type of the list. Valid values: **black** and **white**. |'."\n" + .'| **host_redirect**: configures URL rewrite. | **regex**: the URL to be rewritten. Example: ^/$.**replacement**: the destination URL. Example: /go/act/sale/tbzlsy.php.**flag**: the flag. Valid values: redirect and break. |'."\n" + .'| **ipv6**: configures IPv6. | **switch**: specifies whether to enable IPv6. This attribute is required. Valid values: **on** and **off**. If you want to disable this feature after this feature is enabled, deselect the feature in the console. Do not delete the configuration. Otherwise, the feature will still be enabled.**region**: the region in which you want to enable IPv6. Valid values: cn-beijing, cn-shanghai, cn-shenzhen, cn-qingdao, apsoutheast-1, eu-central-1, ap-northeast-1, and ap-southeast-5, which indicate China (Beijing), China (Shanghai), China (Shenzhen), China (Qingdao), Singapore, Germany (Frankfurt), Japan (Tokyo), and Indonesia (Jakarta), respectively. |'."\n" + .'| **ali_location**: configures region-based access control. | **location**: the regions.**type**: the type of the list. Valid values: **black** and **white**. |'."\n" + .'| **cc_defense**: configures protection against HTTP flood attacks. | **enable**: specifies whether to enable protection against HTTP flood attacks. Valid values: **on** and **off**. |'."\n" + .'| **alilive**: configures the live streaming settings. | **notify_url**: the URL for receiving notifications from ApsaraVideo Live.**enable**: specifies whether to enable the feature. Valid values: **on** and **off**.**live_forbid_flv**: specifies whether to prohibit the playback of Flash Videos (FLVs). Valid values: **on** and **off**.**live_forbid_rtmp**: specifies whether to prohibit the playback of Real-Time Messaging Protocol (RTMP) videos. Valid values: **on** and **off**.**live_forbid_hls**: specifies whether to prohibit the playback of HTTP Live Streaming (HLS) videos. Valid values: **on** and **off**. |'."\n" + .'| **ali_grtn**: specifies whether to connect to Global Realtime Transport Network (GRTN). | **grtn_rts_pub**: specifies whether to enable stream ingest over Real-Time Streaming (RTS). This attribute is applicable to ingest domains. Valid values: **on** and **off**.**grtn_rts_play**: specifies whether to enable streaming over RTS. This attribute is applicable to streaming domains. Valid values: **on** and **off**.**grtn_rts_transcode**: specifies whether to enable auto transcoding for RTS-based HTML5 playback. Valid values: **on** and **off**. |'."\n" + .'| **edge_function**: configures the edge function. | Required attributes:**rule**: the domain-specific language (DSL) rule.**pri**: the priority of the rule.**enable**: specifies whether to enable the rule. Valid values: **on** and **off**.Optional attributes:**name**: the name of the rule.**pos**: the position from which to execute the rule.**brk**: After the rule is hit, the rules after the specified position are skipped.**option**: the option.**grammar**: the grammar. Valid values: es2 and js. You can also leave this attribute empty.**jsmode**: the mode to manage the domain name whitelist in JavaScript. Valid values: **redirect** and **bypass**. |'."\n" + .'| **https_tls_version**: configures the Transport Layer Security (TLS) protocol versions. | **tls10**: specifies whether to enable TLS 1.0. Default value: **on**. Valid values: **on** and **off**.**tls11**: specifies whether to enable TLS 1.1. Default value: **on**. Valid values: **on** and **off**.**tls12**: specifies whether to enable TLS 1.2. Default value: **on**. Valid values: **on** and **off**.**tls13**: specifies whether to enable TLS 1.3. Default value: **on**. Valid values: **on** and **off**. |'."\n" + .'| **https_option**: configures HTTP settings. | **http2**: specifies whether to enable HTTP/2. Default value: **off**. Valid values: **on** and **off**.**live_http2**: specifies whether to enable live_http2. Default value: **off**. Valid values: **on** and **off**. |', + 'extraInfo' => '| 错误代码 | 描述 | HTTP状态码 | 语义 |'."\n" + .'|---------------|---------------|---------|---------------|'."\n" + .'|InvalidFunctions.Malformed | Specified Functions is malformed. | 400 | 指定的Functions不合法。 |'."\n" + .'| InvalidFunctionName.ValueNotSupported | unctionName %s is not supported. | 400 | 不支持的FunctionName %s(%s为具体功能名)。|'."\n" + .'| InvalidArgName.ValueNotSupported | ArgName %s is not supported. | 400 | 不支持的ArgName %s(%s为具体参数名)。 |'."\n" + .'| InvalidArgValue.Malformed | Specified ArgValue is malformed. | 400 | 指定的ArgValue不合法。 |', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BatchSetLiveDomainConfigs'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:BatchSetLiveDomainConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB9*********\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteLiveStreamMerge', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","type":"json"}]', ], - 'AddLiveStreamMerge' => [ - 'summary' => 'Invoke AddLiveStreamMerge to add primary and backup stream merging configuration.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'CancelMuteAllGroupUser' => [ + 'summary' => 'Cancels the muting of a message group user.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106856', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive Messages application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'Group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application that generates the output stream. The value must be the same as the application name in the ingest URL of the output stream. Otherwise, the configuration does not take effect. You cannot set the value to an asterisk (\\*).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'app', - ], + 'name' => 'OperatorUserId', + 'in' => 'formData', + 'schema' => ['description' => 'User ID of the operator.'."\n" + ."\n" + .'> This parameter is required. The user must be the creator of the group.', 'type' => 'string', 'required' => false, 'example' => 'de1**a0', 'title' => ''], ], [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the output stream. The value must be the same as the stream name in the ingest URL of the output stream. Otherwise, the configuration does not take effect. You cannot set the value to an asterisk (\\*).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'StreamName', - ], + 'name' => 'BroadCastType', + 'in' => 'formData', + 'schema' => ['description' => 'System message diffusion type. Valid values:'."\n" + ."\n" + .'- 0: No diffusion.'."\n" + ."\n" + .'- 1: Diffusion to specified users.'."\n" + ."\n" + .'- 2: Diffusion to the group.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], ], - [ - 'name' => 'InAppName1', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the application that generates the input primary stream. The value must be the same as the application name that is specified in the ingest URL of the primary stream. Otherwise, the configuration does not take effect.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'app1', + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Actual return result of the service', + 'type' => 'object', + 'properties' => [ + 'Success' => ['description' => 'Indicates whether the cancellation was successful. Valid values:'."\n" + ."\n" + .'- true: Successful.'."\n" + ."\n" + .'- false: Unsuccessful.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], - [ - 'name' => 'InStreamName1', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the input primary stream. The value must be the same as the stream name that is specified in the ingest URL of the primary stream. Otherwise, the configuration does not take effect.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'InStream1', - ], + ], + 'title' => 'CancelMuteAllGroupUser', + 'description' => '## QPS limits'."\n" + ."\n" + .'The single-user QPS limit for this operation is 100 times/second. If this limit is exceeded, API calls will be throttled, which may affect your business. You should make API calls at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2023-04-04T06:09:59.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-09-27T09:18:31.000Z', 'description' => 'OpenAPI offline'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CancelMuteAllGroupUser'], ], + ], + 'ramActions' => [ [ - 'name' => 'InAppName2', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application that generates the input secondary stream. The value must be the same as the application name that is specified in the ingest URL of the secondary stream. Otherwise, the configuration does not take effect.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'app2', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:CancelMuteAllGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","type":"json"}]', + ], + 'CancelMuteGroupUser' => [ + 'summary' => 'Calls CancelMuteGroupUser to batch unmute members in a message group.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'InStreamName2', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the input secondary stream. The value must be the same as the stream name that is specified in the ingest URL of the secondary stream. Otherwise, the configuration does not take effect.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'stream2', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], + 'parameters' => [ [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of the stream mixing.'."\n" - ."\n" - .'Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2020-05-29T00:00:00Z', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive Messages application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of the stream mixing.'."\n" - ."\n" - .'Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> The interval between the start time and the end time must be within 7 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2020-05-29T01:00:00Z', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'Protocol', - 'in' => 'query', + 'name' => 'CancelMuteUserList', + 'in' => 'formData', + 'style' => 'simple', 'schema' => [ - 'description' => 'The streaming protocol. Valid values:'."\n" - ."\n" - .'* **rtmp**: This is the default value.'."\n" - .'* **rtc**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp', + 'description' => 'User ID group.', + 'type' => 'array', + 'items' => ['description' => 'List of user IDs to unmute.', 'type' => 'string', 'required' => false, 'example' => 'qu***,yu1***', 'title' => ''], + 'required' => true, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'LiveMerger', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'default' => 'off', - ], + 'name' => 'OperatorUserId', + 'in' => 'formData', + 'schema' => ['description' => 'Operator\'s user ID.'."\n" + ."\n" + .'> This parameter must be filled and the user must be the creator of the group.', 'type' => 'string', 'required' => false, 'example' => 'de1**a0', 'title' => ''], ], [ - 'name' => 'MergeParameters', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'name' => 'BroadCastType', + 'in' => 'formData', + 'schema' => ['description' => 'System message diffusion type, values:'."\n" + ."\n" + .'- 0 (default): No diffusion.'."\n" + .'- 1: Diffusion to specified users.'."\n" + .'- 2: Diffusion to the group.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], - 'Message' => [ - 'type' => 'string', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', + 'type' => 'object', + 'properties' => [ + 'Success' => ['description' => 'Whether unmuting is successful, values:'."\n" + ."\n" + .'- true: Successful.'."\n" + .'- false: Unsuccessful.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified parameter StartTime is not valid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified parameter EndTime is not valid.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'QuotaExceeded.Merge', - 'errorMessage' => 'Exceed max merge count limit', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'Duration between StartTime and EndTime is too long.', - ], - [ - 'errorCode' => 'InvalidParam.CodeIllegalDuration', - 'errorMessage' => '%s.', - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": false\\n }\\n}","type":"json"}]', + 'title' => 'CancelMuteGroupUser', + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second (QPS) per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can call the API properly to avoid this issue. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CancelMuteGroupUser'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:CancelMuteGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"Message\\": \\"OK\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'AddLiveStreamMerge', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '> Any two of the AppName, InAppName1, and InAppName2 parameters cannot have the same values. Any two of the StreamName, InStreamName1, and InStreamName2 parameters cannot have the same values.'."\n", ], - 'DescribeLiveStreamMerge' => [ - 'summary' => 'Invoke DescribeLiveStreamMerge to query the primary-standby stream merging configuration.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'ChangeLiveDomainResourceGroup' => [ + 'summary' => 'Moves a domain name in ApsaraVideo Live to a specified resource group.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveBLHP6S', - ], + 'abilityTreeCode' => '235330', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The ID of the region.', 'title' => '', 'example' => 'cn-shanghai'], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application that generates the output stream. You can view the application name on the [Primary/Secondary Stream Mixing Settings](~~606583~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'app', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the output stream. You can view the stream name on the [Primary/Secondary Stream Mixing Settings](~~606583~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'StreamName', - ], + 'schema' => ['description' => 'The ingest or streaming domain name.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'example.com'], ], [ - 'name' => 'Protocol', + 'name' => 'NewResourceGroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming protocol. Valid values:'."\n" - ."\n" - .'* **rtmp**: This is the default value.'."\n" - .'* **rtc**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp', - ], + 'allowEmptyValue' => true, + 'schema' => ['description' => 'The ID of the destination resource group.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'rg-****ke6uuxw****'], ], ], 'responses' => [ @@ -8435,400 +7026,302 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'LiveStreamMergeList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveStreamMerge' => [ - 'description' => 'Live stream information list.', - 'type' => 'array', - 'items' => [ - 'description' => 'Live streaming information list.', - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application that generates the output stream.'."\n", - 'type' => 'string', - 'example' => 'app', - ], - 'AppUsing' => [ - 'description' => 'The application that is being used.'."\n", - 'type' => 'string', - 'example' => 'app1', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'EndTime' => [ - 'description' => 'The end time of the stream mixing.'."\n", - 'type' => 'string', - 'example' => '2020-05-29T01:00:00Z', - ], - 'ExtraInAppStreams' => [ - 'description' => 'The names of the applications that generate the input additional streams other than the primary stream and secondary stream, and the names of these additional streams.'."\n", - 'type' => 'string', - 'example' => 'app3/stream3,app4/stream4,app5/stream5,…,appN/streamN', - ], - 'InAppName1' => [ - 'description' => 'The name of the application that generates the input primary stream.'."\n", - 'type' => 'string', - 'example' => 'app1', - ], - 'InAppName2' => [ - 'description' => 'The name of the application that generates the input secondary stream.'."\n", - 'type' => 'string', - 'example' => 'app2', - ], - 'InStreamName1' => [ - 'description' => 'The name of the input primary stream.'."\n", - 'type' => 'string', - 'example' => 'InStream1', - ], - 'InStreamName2' => [ - 'description' => 'The name of the input secondary stream.'."\n", - 'type' => 'string', - 'example' => 'stream2', - ], - 'Protocol' => [ - 'description' => 'The streaming protocol.'."\n", - 'type' => 'string', - 'example' => 'rtmp', - ], - 'StartTime' => [ - 'description' => 'The start time of the stream mixing.'."\n", - 'type' => 'string', - 'example' => '2020-05-29T00:00:00Z', - ], - 'StreamName' => [ - 'description' => 'The name of the output stream.'."\n", - 'type' => 'string', - 'example' => 'StreamName', - ], - 'StreamUsing' => [ - 'description' => 'The stream that is being used.'."\n", - 'type' => 'string', - 'example' => 'InStream1', - ], - 'LiveMerger' => [ - 'type' => 'string', - ], - 'MergeParameters' => [ - 'type' => 'string', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'title' => '', 'example' => '******8F-F82F-10E2-BAE1-A036FD******'], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'QuotaExceeded.Merge', - 'errorMessage' => 'Exceed max merge count limit', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => 'Your account does not open Live service yet', 'description' => 'Your account has not yet activated ApsaraVideo Live.'], + ['errorCode' => 'LockFail', 'errorMessage' => 'Domain has been occupied.', 'description' => 'The domain name is currently in use. Please try again later.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + 403 => [ + ['errorCode' => 'EntityNotExist.ResourceGroup', 'errorMessage' => 'The resource group does not exist.', 'description' => 'The resource group does not exist.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"LiveStreamMergeList\\": {\\n \\"LiveStreamMerge\\": [\\n {\\n \\"AppName\\": \\"app\\",\\n \\"AppUsing\\": \\"app1\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2020-05-29T01:00:00Z\\",\\n \\"ExtraInAppStreams\\": \\"app3/stream3,app4/stream4,app5/stream5,…,appN/streamN\\",\\n \\"InAppName1\\": \\"app1\\",\\n \\"InAppName2\\": \\"app2\\",\\n \\"InStreamName1\\": \\"InStream1\\",\\n \\"InStreamName2\\": \\"stream2\\",\\n \\"Protocol\\": \\"rtmp\\",\\n \\"StartTime\\": \\"2020-05-29T00:00:00Z\\",\\n \\"StreamName\\": \\"StreamName\\",\\n \\"StreamUsing\\": \\"InStream1\\",\\n \\"LiveMerger\\": \\"on\\",\\n \\"MergeParameters\\": \\"ali_low_frame_rate_threshold=10&ali_max_no_frame_timeout=5&block_all_jitter=0\\\\n\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n app\\n app1\\n example.com\\n 2020-05-29T01:00:00Z\\n app3/stream3,app4/stream4,app5/stream5,…,appN/streamN\\n app1\\n app2\\n InStream1\\n stream2\\n rtmp\\n 2020-05-29T00:00:00Z\\n StreamName\\n InStream1\\n \\n \\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamMerge', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveDelayConfig' => [ - 'summary' => 'Deletes a stream delay configuration.', - 'methods' => [ - 'post', - 'get', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ChangeLiveDomainResourceGroup', + 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ChangeLiveDomainResourceGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******8F-F82F-10E2-BAE1-A036FD******\\"\\n}","type":"json"}]', + ], + 'CheckLiveMessageUsersInGroup' => [ + 'summary' => 'Queries whether a user is in an interactive messaging group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveBP94ZY', - ], - ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The group ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'App', + 'name' => 'UserIds', 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can specify an asterisk (\\*) as the value to match all applications that belong to the domain name.'."\n", - 'type' => 'string', + 'title' => '', + 'description' => 'The list of users that you want to query.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The user ID. Separate multiple user IDs with commas (,). The number of users to query in each call can range from 1 to 10.'."\n", 'type' => 'string', 'required' => true, 'example' => 'uid', 'title' => ''], 'required' => true, - 'example' => 'liveApp****', + 'maxItems' => 10, + 'minItems' => 1, + 'example' => '', ], ], [ - 'name' => 'Stream', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can use the wildcard (\\*) to specify all streams of the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'F1F68D81-1543-1FE4-B56E-82200DD2****'], + 'Users' => [ + 'description' => 'The list of users queried.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'UserId' => ['description' => 'The ID of the user.'."\n", 'type' => 'string', 'example' => 'uid1', 'title' => ''], + 'Online' => ['description' => 'Indicates whether the user is in the group.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteLiveDelayConfig', - 'description' => 'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'UpdateLiveDelayConfig' => [ - 'summary' => 'Updates a stream delay configuration.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], - ], - 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveBP94ZY', + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'CheckLiveMessageUsersInGroup', + 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckLiveMessageUsersInGroup'], ], + ], + 'ramActions' => [ [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CheckLiveMessageUsersInGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F1F68D81-1543-1FE4-B56E-82200DD2****\\",\\n \\"Users\\": [\\n {\\n \\"UserId\\": \\"uid1\\",\\n \\"Online\\": false\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n F1F68D81-1543-1FE4-B56E-82200DD2****\\n \\n uid1\\n false\\n \\n","errorExample":""}]', + ], + 'CheckLiveMessageUsersOnline' => [ + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can specify an asterisk (\\*) as the value to match all applications that belong to the domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ [ - 'name' => 'Stream', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can use the wildcard (\\*) to specify all streams of the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'DelayTime', + 'name' => 'UserIds', 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The duration for which the playback of the live stream is delayed. The value must be an integer. Valid values: 16 to 3600. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'title' => '', + 'description' => 'The list of users that you want to query.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The user ID. Separate multiple user IDs with commas (,). The number of users to query in each call can range from 1 to 10.'."\n", 'type' => 'string', 'required' => false, 'example' => 'uid', 'title' => ''], 'required' => true, - 'example' => '60', + 'maxItems' => 10, + 'minItems' => 1, + 'example' => '', ], ], [ - 'name' => 'TaskTriggerMode', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The trigger mode. Valid values:'."\n" - ."\n" - .'* **PUBLISH_ONLY**: Stream delay can be triggered only by specifying the stream delay parameter in the ingest URL.'."\n" - .'* **CONFIG_ONLY**: Stream delay can be triggered only by the stream delay configuration.'."\n" - .'* **PUBLISH_CONFIG**: Stream delay can be triggered by the stream delay parameter in the ingest URL or the stream delay configuration. The stream delay parameter takes precedence over the stream delay configuration.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'PUBLISH_ONLY', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '178F572F-AECF-100B-937A-B8047B4D****'], + 'UserList' => [ + 'description' => 'The list of users queried.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Online' => ['description' => 'Indicates whether the user is online.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'UserId' => ['description' => 'The user ID.'."\n", 'type' => 'string', 'example' => 'uid1', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'UpdateLiveDelayConfig', - 'description' => '## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeLiveDelayConfig' => [ - 'summary' => 'Queries the information about a stream delay configuration.', - 'methods' => [ - 'post', - 'get', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'CheckLiveMessageUsersOnline', + 'summary' => 'Queries whether one or more specified users are online.', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckLiveMessageUsersOnline'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CheckLiveMessageUsersOnline', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"178F572F-AECF-100B-937A-B8047B4D****\\",\\n \\"UserList\\": [\\n {\\n \\"Online\\": false,\\n \\"UserId\\": \\"uid1\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 178F572F-AECF-100B-937A-B8047B4D****\\n \\n uid1\\n false\\n \\n","errorExample":""}]', + ], + 'CloseLiveShift' => [ + 'summary' => 'Disables time shifting for a domain name, or an application or a live stream under the domain name.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveBP94ZY', - ], + 'abilityTreeNodes' => ['FEATUREliveGDJYFA'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'App', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can specify an asterisk (\\*) as the value to match all applications under the domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The AppName of the live stream. You can specify an asterisk (\\*) to match all AppNames under the domain name. View AppNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'Stream', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can specify an asterisk (\\*) as the value to match all streams in the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The name of the live stream. You can use the wildcard (\\*) to specify all StreamNames under the AppName. View StreamNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ @@ -8836,123 +7329,101 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'App' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'DelayTime' => [ - 'description' => 'The duration for which the playback of the live stream is delayed.'."\n", - 'type' => 'string', - 'example' => '60', - ], - 'Domain' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', - ], - 'Stream' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'TaskTriggerMode' => [ - 'description' => 'The trigger mode. Valid values:'."\n" - ."\n" - .'* **PUBLISH_ONLY**: Stream delay can be triggered only by specifying the stream delay parameter in the ingest URL.'."\n" - .'* **CONFIG_ONLY**: Stream delay can be triggered only by the stream delay configuration.'."\n" - .'* **PUBLISH_CONFIG**: Stream delay can be triggered by the stream delay parameter in the ingest URL or the stream delay configuration. The stream delay parameter takes precedence over the stream delay configuration.'."\n", - 'type' => 'string', - 'example' => 'PUBLISH_ONLY', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ], + 404 => [ + ['errorCode' => 'InvalidDataNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Data does not exist, please check and try again.'], + ], + 409 => [ + ['errorCode' => 'InvalidStreamNum', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of streams is abnormal. Please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"App\\": \\"liveApp****\\",\\n \\"DelayTime\\": \\"60\\",\\n \\"Domain\\": \\"example.com\\",\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"Stream\\": \\"liveStream****\\",\\n \\"TaskTriggerMode\\": \\"PUBLISH_ONLY\\"\\n}","errorExample":""},{"type":"xml","example":"\\n example.com\\n A3136B58-5876-4168-83CA-B562781981A0\\n PUBLISH_ONLY\\n liveApp****\\n 60\\n liveStream****\\n","errorExample":""}]', - 'title' => 'DescribeLiveDelayConfig', - 'description' => '## [](#qps-)QPS limit'."\n" + 'title' => 'CloseLiveShift', + 'description' => '## QPS limits'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'ListLiveDelayConfig' => [ - 'summary' => 'Queries stream delay configurations.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '### 特殊错误码'."\n" + .'| 错误代码 | 描述 | HTTP 状态码 | 语义 |'."\n" + .'|------------|--------|---------|------|'."\n" + .'| InvalidParam | param error | 400 | 用户参数错误。 |'."\n" + .'| InvalidDataNotFound | data not found | 404 | 用户数据未找到。 |', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CloseLiveShift'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CloseLiveShift', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'CopyCaster' => [ + 'summary' => 'Duplicates a production studio and creates a new production studio instance.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveBP94ZY', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'CasterName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The name of the new production studio.', 'type' => 'string', 'required' => true, 'example' => 'caster001', 'title' => ''], ], [ - 'name' => 'PageNum', + 'name' => 'SrcCasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The ID of the production studio to copy.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, go to **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** to view the production studio name.'."\n" + ."\n" + .'> The name of a production studio on the Cloud Production Studio page is its production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'ClientToken', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: 5 to 30. Default value: 10.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + 'schema' => ['description' => 'A client-generated token that ensures the idempotence of the request.'."\n" + ."\n" + .'Generate a unique value for this parameter for each request. The token can contain a maximum of 64 ASCII characters.', 'type' => 'string', 'required' => true, 'example' => '53200b81-b761-4c10-842a-a0726d97****', 'title' => ''], ], ], 'responses' => [ @@ -8960,87 +7431,62 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'DelayConfigList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DelayConfig' => [ - 'description' => 'The stream delay configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'App' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'DelayTime' => [ - 'description' => 'The duration for which the playback of the live stream is delayed. Unit: seconds.'."\n", - 'type' => 'string', - 'example' => '60', - ], - 'Domain' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Stream' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'TaskTriggerMode' => [ - 'description' => 'The trigger mode. Valid values:'."\n" - ."\n" - .'* **PUBLISH_ONLY**: Stream delay can be triggered only by specifying the stream delay parameter in the ingest URL.'."\n" - .'* **CONFIG_ONLY**: Stream delay can be triggered only by the stream delay configuration.'."\n" - .'* **PUBLISH_CONFIG**: Stream delay can be triggered by the stream delay parameter in the ingest URL or the stream delay configuration. The stream delay parameter takes precedence over the stream delay configuration.'."\n", - 'type' => 'string', - 'example' => 'PUBLISH_ONLY', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', - ], - 'Total' => [ - 'description' => 'The number of stream delay configurations.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], + 'CasterId' => ['description' => 'The ID of the new production studio.', 'type' => 'string', 'example' => '1909f043-e3d3-49e9-82d6-4329ec4a****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ['errorCode' => 'CasterNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of casters exceeds the limit. Please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DelayConfigList\\": {\\n \\"DelayConfig\\": [\\n {\\n \\"App\\": \\"liveApp****\\",\\n \\"DelayTime\\": \\"60\\",\\n \\"Domain\\": \\"example.com\\",\\n \\"Stream\\": \\"liveStream****\\",\\n \\"TaskTriggerMode\\": \\"PUBLISH_ONLY\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"Total\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n liveApp****\\n 60\\n example.com\\n liveStream****\\n PUBLISH_ONLY\\n \\n \\n A3136B58-5876-4168-83CA-B562781981A0\\n 1\\n","errorExample":""}]', - 'title' => 'ListLiveDelayConfig', - 'description' => 'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'CreateLiveDelayConfig' => [ - 'summary' => 'Adds a stream delay configuration.', - 'methods' => [ - 'post', - 'get', + 'title' => 'CopyCaster', + 'description' => 'You can call this operation to copy a specified production studio, which creates a new production studio instance.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CopyCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"1909f043-e3d3-49e9-82d6-4329ec4a****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'CopyCasterSceneConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -9051,74 +7497,34 @@ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveBP94ZY', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can specify an asterisk (\\*) as the value to match all applications that belong to the domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Stream', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can use the wildcard (\\*) to specify all streams of the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page. The ID of the production studio is in the **Instance ID/Name** column.'."\n" + ."\n" + .'> The production studio name in the list on the Cloud Production Studio page of the ApsaraVideo Live console is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'DelayTime', + 'name' => 'FromSceneId', 'in' => 'query', - 'schema' => [ - 'description' => 'The duration for which the playback of the live stream is delayed. The value must be an integer. Valid values: 16 to 3600. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '60', - ], + 'schema' => ['description' => 'The ID of the source scene. The scene must be a PVW scene.', 'type' => 'string', 'required' => true, 'example' => 'f1a361f4-bee3-436d-ae6e-d38e6943****', 'title' => ''], ], [ - 'name' => 'TaskTriggerMode', + 'name' => 'ToSceneId', 'in' => 'query', - 'schema' => [ - 'description' => 'The trigger mode. Valid values:'."\n" - ."\n" - .'* **PUBLISH_ONLY**: Stream delay can be triggered only by specifying the stream delay parameter in the ingest URL.'."\n" - .'* **CONFIG_ONLY**: Stream delay can be triggered only by the stream delay configuration.'."\n" - .'* **PUBLISH_CONFIG**: Stream delay can be triggered by the stream delay parameter in the ingest URL or the stream delay configuration. The stream delay parameter takes precedence over the stream delay configuration.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'PUBLISH_ONLY', - ], + 'schema' => ['description' => 'The ID of the destination scene. The scene must be a PGM scene.', 'type' => 'string', 'required' => true, 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', 'title' => ''], ], ], 'responses' => [ @@ -9126,132 +7532,203 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A5****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidSceneId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is idle, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.ConfigError', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene configuration error, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'ResourceInChannel.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ], + 412 => [ + ['errorCode' => 'ResourceInChannel.PreConditionFailed', 'errorMessage' => '%s, please try again later.', 'description' => 'Resource pre-verification failed, please try again later.'], + ['errorCode' => 'ResourceInChannel.Invalid', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Resource and channel material address are inconsistent, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'CreateLiveDelayConfig', - 'description' => 'Stream delay is different from latency caused by streaming protocols. Stream delay is a feature that allows you to delay the playback of a live stream that is processed in the cloud.'."\n" + 'title' => 'CopyCasterSceneConfig', + 'summary' => 'Applies the configuration of a PVW scene to a PGM scene.', + 'description' => '- Production Studio is billed based on output specifications, transcoding specifications, and the duration of usage. For more information, see [Production studio pricing](~~64531~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- You can call this operation to copy the configuration from a source scene to a destination scene. You can only copy the configuration from a PVW scene to a PGM scene. A PVW scene is a preview scene, and a PGM scene is a program scene.'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'SetLiveStreamsNotifyUrlConfig' => [ - 'summary' => 'Configures stream ingest callbacks under an ingest domain.', - 'methods' => [ - 'post', - 'get', + .'- The PVW scene and the PGM scene must be in the same production studio.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. API calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CopyCasterSceneConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CopyCasterSceneConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A5****\\"\\n}","type":"json"}]', + ], + 'CreateCaster' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107234', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], - 'tenantRelevance' => 'tenant', + 'chargeType' => 'paid', + 'abilityTreeCode' => '106890', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-beijing', 'title' => ''], ], [ - 'name' => 'SwitchNotifyUrl', + 'name' => 'CasterName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + 'schema' => ['description' => 'The name of the production studio.', 'type' => 'string', 'required' => false, 'example' => 'liveCaster****', 'title' => ''], ], [ - 'name' => 'NotifyUrl', + 'name' => 'ClientToken', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL to which the stream ingest callbacks are sent.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://guide.aliyundoc.com/notify', - ], + 'schema' => ['description' => 'The client token that is used to ensure the idempotence of the request.'."\n" + ."\n" + .'Generate a token on your client and ensure that the token is unique among different requests. The token can be up to 64 ASCII characters in length.', 'type' => 'string', 'required' => true, 'maxLength' => 64, 'minLength' => 0, 'example' => '53200b81-b761-4c10-842a-a0726d97****', 'title' => ''], ], [ - 'name' => 'ExceptionNotifyUrl', + 'name' => 'NormType', 'in' => 'query', - 'schema' => [ - 'description' => 'Exception event callback URL.', - 'type' => 'string', - 'required' => false, - 'example' => 'https://4a7e5f08.r37.cpolar.top/live/Rsssd/call-back/streamStart', - ], + 'schema' => ['description' => 'The type of the production studio. Valid values:'."\n" + ."\n" + .''."\n" + ."\n" + .'- **1**: Standard.'."\n" + ."\n" + .'- **3**: Lightweight Carousel.'."\n" + ."\n" + .'- **4**: Virtual Studio.'."\n" + ."\n" + .'- **6**: Carousel (New Playlist).'."\n" + ."\n" + .''."\n" + ."\n" + .''."\n" + ."\n" + .'- **1**: Standard.'."\n" + ."\n" + .'- **6**: Carousel (New Playlist).'."\n" + ."\n" + .'', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '1', 'title' => ''], ], [ - 'name' => 'NotifyReqAuth', + 'name' => 'ChargeType', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" - ."\n" - .'* **yes**: enables callback authentication. If you set this parameter to **yes**, you must also specify the NotifyAuthKey parameter.'."\n" - .'* **no**: disables callback authentication.'."\n" - ."\n" - .'> If you do not specify this parameter, the default value **no** is used.'."\n" - ."\n" - .'For information about the authentication logic, see **Authentication for stream ingest callbacks**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', - 'default' => 'no', - 'enum' => [ - 'yes', - 'no', - ], - ], + 'schema' => ['description' => 'The billing method. Only **PostPaid** is supported. Valid values:'."\n" + ."\n" + .'- **PrePaid**: subscription (not supported).'."\n" + ."\n" + .'- **PostPaid**: pay-as-you-go.', 'type' => 'string', 'required' => true, 'example' => 'PostPaid', 'title' => ''], ], [ - 'name' => 'NotifyAuthKey', + 'name' => 'PurchaseTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The authentication key.'."\n" - ."\n" - .'> This parameter is required if you set the NotifyReqAuth parameter to **yes**.'."\n" - ."\n" - .'Value requirements:'."\n" - ."\n" - .'* The key must be 16 to 64 characters in length.'."\n" - .'* The key can contain letters and digits.'."\n", - 'type' => 'string', + 'schema' => ['description' => 'The purchase time of the production studio. The time is in the \\`yyyy-MM-ddTHH:mm:ssZ\\` format and is displayed in UTC.'."\n" + ."\n" + .'> This parameter is available only if you set **ChargeType** to **PrePaid**.', 'type' => 'string', 'required' => false, 'example' => '2017-08-20T12:10:10Z', 'title' => ''], + ], + [ + 'name' => 'ExpireTime', + 'in' => 'query', + 'schema' => ['description' => 'The expiration time of the production studio. The time is in the \\`yyyy-MM-ddTHH:mm:ssZ\\` format and is displayed in UTC.'."\n" + ."\n" + .'> This parameter is available only if you set **ChargeType** to **PrePaid**.', 'type' => 'string', 'required' => false, 'example' => '2017-08-22T12:10:10Z', 'title' => ''], + ], + [ + 'name' => 'CasterTemplate', + 'in' => 'query', + 'schema' => ['description' => 'The preset resolution of the production studio. This parameter is available only for the subscription billing method. Valid values:'."\n" + ."\n" + .'- **lp\\_ld**: low definition.'."\n" + ."\n" + .'- **lp\\_sd**: standard definition.'."\n" + ."\n" + .'- **lp\\_hd**: high definition.'."\n" + ."\n" + .'- **lp\\_ud**: ultra-high definition.'."\n" + ."\n" + .'- **lp\\_ld\\_v**: vertical low definition.'."\n" + ."\n" + .'- **lp\\_sd\\_v**: vertical standard definition.'."\n" + ."\n" + .'- **lp\\_hd\\_v**: vertical high definition.'."\n" + ."\n" + .'- **lp\\_ud\\_v**: vertical ultra-high definition.'."\n" + ."\n" + .'> If you use the pay-as-you-go billing method, call the [SetCasterConfig](~~60271~~) operation to set the resolution.', 'type' => 'string', 'required' => false, 'example' => 'lp_sd', 'title' => ''], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the resource group. For more information, see [What is a resource group?](~~2381067~~).', 'type' => 'string', 'required' => false, 'example' => 'rg-aekzw******', 'title' => ''], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key.', 'type' => 'string', 'required' => false, 'example' => 'TestKey', 'title' => ''], + 'Value' => ['description' => 'The tag value.', 'type' => 'string', 'required' => false, 'example' => 'TestValue', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => false, - 'example' => '123456', + 'maxItems' => 100, + 'title' => '', + 'example' => '', ], ], ], @@ -9260,170 +7737,86 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', - ], + 'CasterId' => ['description' => 'The ID of the production studio. You can use this ID as a request parameter to query stream URLs, start the production studio, add video resources, add layouts, query the layout list, add components, and add playlists.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'CodeGetMainPlaybackDomainError', - 'errorMessage' => 'Failed to obtain the main playback domain name.', - ], - [ - 'errorCode' => 'CodeNotPushDomain', - 'errorMessage' => 'The domain name is not a push domain name.', - ], + ['errorCode' => 'InvalidParameter.PurchaseTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PurchaseTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.ExpireTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ExpireTime is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidChargeType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidChargeType.PostSupport', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ChargeType only supports post-paid, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterTemplate is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.ChargeType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidPeriod.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid time interval, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + [ + ['errorCode' => 'CasterNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of casters exceeds the limit. Please check and try again.'], + ], + 403 => [ + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], + ], + [ + ['errorCode' => 'InvalidParameter.NormType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter NormType is invalid, please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 408 => [ + ['errorCode' => 'CreateCaster.Timeout', 'errorMessage' => '%s, please try again later.', 'description' => 'Call CreateCaster timed out, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t4C747C97-7ECD-4C61-8A92-67AD806331FF\\n\\t","errorExample":"{\\n \\"RequestId\\":\\"4C747C97-7ECD-4C61-8A92-67AD806331FF\\"\\n}"}]', - 'title' => 'SetLiveStreamsNotifyUrlConfig', - 'description' => '* You can call this operation to configure the callback URL and authentication information of an ingest domain.'."\n" - .'* If you configure callbacks for stream ingest status, you can receive callback notifications about successful or interrupted stream ingest in a timely manner. For more information, see [Format of stream ingest callbacks](~~54787~~).'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'CreateCaster', + 'summary' => 'Call the CreateCaster operation to create a production studio.', + 'description' => 'You must activate ApsaraVideo Live before you call this operation. For more information, see [Activate ApsaraVideo Live](~~60361~~). This operation supports the following types of production studios: Standard, Lightweight Carousel, Virtual Studio, and New Playlist (Carousel). This operation supports the following types of production studios: Standard and New Playlist (Carousel).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 10 calls per second for each user. If you exceed this limit, API calls are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'DescribeLiveStreamsNotifyUrlConfig' => [ - 'summary' => 'Queries the callback configuration for stream ingest under an ingest domain.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-09-27T02:16:13.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-08-21T03:33:21.000Z', 'description' => 'Error codes changed, Request parameters changed'], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107102', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateCaster'], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], + 'ramActions' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', - ], - 'LiveStreamsNotifyConfig' => [ - 'description' => 'The callback configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'DomainName' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'NotifyUrl' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://guide.aliyundoc.com/notify', - ], - 'ExceptionNotifyUrl' => [ - 'description' => 'Exception event callback URL.', - 'type' => 'string', - 'example' => 'https://4a7e5f08.r37.cpolar.top/live/Record/call-back/streamException', - ], - 'NotifyReqAuth' => [ - 'description' => 'Indicates whether callback authentication is enabled. Valid values:'."\n" - ."\n" - .'* yes'."\n" - .'* no'."\n", - 'type' => 'string', - 'example' => 'yes', - ], - 'NotifyAuthKey' => [ - 'description' => 'The authentication key.'."\n", - 'type' => 'string', - 'example' => '123456', - ], - ], - ], + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], ], - 'errorCodes' => [ - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\",\\n \\"LiveStreamsNotifyConfig\\": {\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"NotifyUrl\\": \\"http://guide.aliyundoc.com/notify\\",\\n \\"ExceptionNotifyUrl\\": \\"https://4a7e5f08.r37.cpolar.top/live/Record/call-back/streamException\\",\\n \\"NotifyReqAuth\\": \\"yes\\",\\n \\"NotifyAuthKey\\": \\"123456\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 40A4F36D-A7CC-473A-88E7-154F92242566\\n \\n yes\\n http://guide.aliyundoc.com/notify\\n 123456\\n demo.aliyundoc.com\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamsNotifyUrlConfig', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', ], - 'DeleteLiveStreamsNotifyUrlConfig' => [ - 'summary' => 'Deletes the callback configuration for stream ingest under an ingest domain.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'CreateCustomTemplate' => [ + 'summary' => 'Creates a custom stream mixing template.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -9431,32 +7824,30 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveI16NIW'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'DomainName', + 'name' => 'CustomTemplate', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The template configuration in JSON format. The value must be in the following format: {height:xxx,scale:xxx,gop:xxx,bframes:xxx,cdesc:xxx}. All fields are required. The call fails if any field is missing.'."\n" + ."\n" + .'> For more information about the parameters, see the **CustomTemplate details** table below.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => '{"height":"1060","scale":"[16:9]","gop":"60","bframes":"30","cdesc":"h264"}'], + ], + [ + 'name' => 'Template', + 'in' => 'query', + 'schema' => ['description' => 'The name of the template to add.'."\n" + ."\n" + .'> Record the template name after you create it. The name is required for subsequent operations, such as using, querying, and deleting the template.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'TestTemplate'], ], ], 'responses' => [ @@ -9464,429 +7855,395 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '0D715397-2E66-4AE1-694h-C546628AD145'], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t4C747C97-7ECD-4C61-8A92-67AD806331FF\\n","errorExample":"{\\n \\"RequestId\\":\\"4C747C97-7ECD-4C61-8A92-67AD806331FF\\"\\n}"}]', - 'title' => 'DeleteLiveStreamsNotifyUrlConfig', - 'description' => 'Obtain the ingest domain, and then call this operation to delete the callback configuration for stream ingest under the ingest domain.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'TemplateAlreadyExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Template already exists, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'CustomTemplateInvalid', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The custom template is invalid, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'CreateCustomTemplate', + 'description' => 'After you call this operation to create a custom template, record the template name. To use the custom template, set the MixStreamTemplate parameter to the template name when you call the [CreateMixStream](~~2848087~~) operation to create a stream mixing task.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', + .'The queries per second (QPS) limit for this operation is 10 for each user. API calls that exceed this limit are throttled, which can affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => '**CustomTemplate details**'."\n" + ."\n" + .'| Parameter | Type | Required | Description |'."\n" + .'| --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| height | String | Yes | The height of the output resolution. If scale is set to 16:9, the maximum resolution is 1920 × 1080. If scale is set to 4:3, the maximum resolution is 1440 × 1080. |'."\n" + .'| scale | String | Yes | The aspect ratio of the output resolution. Only string values are accepted. Valid values: \\[3:4] \\[4:3] \\[16:9] \\[9:16] |'."\n" + .'| bframes | String | Yes | The number of B-frames in the output stream. The value must be greater than 0 and less than 9. |'."\n" + .'| cdesc | String | Yes | The encoding format. Set the value to h264. |'."\n" + .'| gop | String | Yes | The Group of Pictures (GOP) interval. The value must be greater than 25 and less than 250. |', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamsNotifyRecords' => [ - 'summary' => 'Queries stream ingest callback records.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateCustomTemplate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0D715397-2E66-4AE1-694h-C546628AD145\\"\\n}","type":"json"}]', + ], + 'CreateEdgeTranscodeJob' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], - 'tenantRelevance' => 'tenant', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'push.example1.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'app', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'stream', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Status', + 'name' => 'ClusterId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to return the records of successful or failed callbacks. Valid values:'."\n" - ."\n" - .'* success'."\n" - .'* failed'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'success', - 'enum' => [ - 'success', - 'failed', - ], - ], + 'schema' => ['description' => 'The ID of the data center.', 'type' => 'string', 'required' => true, 'example' => '******3b-4d18-395c-8106-ff21a6******', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'Name', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> The start time must be in the last seven days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-10T08:00:00Z', - ], + 'schema' => ['description' => 'The job name. The name can contain Chinese characters, letters, digits, hyphens (-), and underscores (\\_). The name can be up to 255 characters in length.', 'type' => 'string', 'required' => true, 'example' => 'task1', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'TemplateId', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-10T09:00:00Z', - ], + 'schema' => ['description' => 'The template ID.', 'type' => 'string', 'required' => true, 'example' => '****96e8864746a0b6f3****', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'StreamInput', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Default value: 20. Maximum value: 500. Valid values: integers from 1 to 500.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - 'default' => '20', - ], + 'schema' => ['description' => 'The URL of the input stream.', 'type' => 'string', 'required' => true, 'example' => 'rtmp://mydomain/app/stream1', 'title' => ''], ], [ - 'name' => 'PageNumber', + 'name' => 'StreamOutput', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The URL of the output stream.', 'type' => 'string', 'required' => true, 'example' => 'rtmp://testdomain/app/stream2', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The stream ingest callback records.'."\n", 'type' => 'object', 'properties' => [ - 'NotifyRecordsInfo' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveStreamNotifyRecordsInfo' => [ - 'description' => 'The stream ingest callback records.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'NotifyType' => [ - 'description' => 'The event. Valid values:'."\n" - ."\n" - .'* publish: The stream ingest starts.'."\n" - .'* publish_done: The stream ingest is interrupted.'."\n", - 'type' => 'string', - 'example' => 'publish_done', - ], - 'Description' => [ - 'description' => 'The result of the request. If success is returned, the request is successful. If an error message is returned, the request failed.'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'stream', - ], - 'NotifyTime' => [ - 'description' => 'The time when the callback was invoked. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2022-10-19T19:09:28Z', - ], - 'DomainName' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'example' => 'push.example1.com', - ], - 'NotifyContent' => [ - 'description' => 'The callback content.'."\n", - 'type' => 'string', - 'example' => '{\\"action\\":\\"publish_done\\",\\"app\\":\\"push.example1.com\\"}', - ], - 'NotifyUrl' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://xx.xx.xx.xx/callbacks', - ], - 'NotifyResult' => [ - 'description' => 'The callback result. Valid values:'."\n" - ."\n" - .'* success'."\n" - .'* failed'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'app', - ], - 'NotifyResponse' => [ - 'type' => 'string', - ], - 'NotifyHeader' => [ - 'type' => 'string', - ], - ], - 'description' => '', - ], - ], - ], - ], - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'F675E4B4-125D-1533-901B-11A724644285', - ], - 'TotalNum' => [ - 'description' => 'The total number of entries that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], + 'JobId' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified parameter StartTime is not valid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified parameter EndTime is not valid.', - ], - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified EndTime does not match the specified StartTime.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'StartTime needs to be within the last 7 days.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], + ], + [ + ['errorCode' => 'TemplateNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The template does not exist. Please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"NotifyRecordsInfo\\": {\\n \\"LiveStreamNotifyRecordsInfo\\": [\\n {\\n \\"NotifyType\\": \\"publish_done\\",\\n \\"Description\\": \\"success\\",\\n \\"StreamName\\": \\"stream\\",\\n \\"NotifyTime\\": \\"2022-10-19T19:09:28Z\\",\\n \\"DomainName\\": \\"push.example1.com\\",\\n \\"NotifyContent\\": \\"{\\\\\\\\\\\\\\"action\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"publish_done\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"app\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"push.example1.com\\\\\\\\\\\\\\"}\\",\\n \\"NotifyUrl\\": \\"http://xx.xx.xx.xx/callbacks\\",\\n \\"NotifyResult\\": \\"success\\",\\n \\"AppName\\": \\"app\\",\\n \\"NotifyResponse\\": \\"{\\\\\\"Code\\\\\\":0,\\\\\\"Msg\\\\\\":\\\\\\"Success\\\\\\"}\\",\\n \\"NotifyHeader\\": \\"Host: 123456.cn-shanghai.example1.com\\\\nUser-Agent: Go-http-client/1.1\\\\nAccept-Encoding: gzip\\"\\n }\\n ]\\n },\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 20,\\n \\"RequestId\\": \\"F675E4B4-125D-1533-901B-11A724644285\\",\\n \\"TotalNum\\": 20,\\n \\"TotalPage\\": 20\\n}","errorExample":""},{"type":"xml","example":"\\n \\n app\\n success\\n push.example1.com\\n {\\\\\\"action\\\\\\":\\\\\\"publish_done\\\\\\",\\\\\\"app\\\\\\":\\\\\\"push.example1.com\\\\\\"}\\n success\\n 2022-10-19T19:09:28Z\\n publish_done\\n http://xx.xx.xx.xx/callbacks\\n stream\\n \\n 1\\n 20\\n F675E4B4-125D-1533-901B-11A724644285\\n 20\\n 20\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamsNotifyRecords', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveStreamBlock' => [ - 'summary' => 'Deletes a configuration of stream-level region blocking.', - 'methods' => [ - 'post', - 'get', + 'title' => 'CreateEdgeTranscodeJob', + 'summary' => 'Creates an edge transcoding job.', + 'description' => '- You can call this operation to create an edge transcoding job.'."\n" + ."\n" + .'- Before you call this operation, you must have permission to access the edge transcoding service.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 6,000 calls per minute for each user. If you exceed this limit, API calls are throttled, which can affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateEdgeTranscodeJob'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:CreateEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'CreateEventSub' => [ + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveOLG5VH', - ], + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID.', 'type' => 'string', 'required' => true, 'example' => '9qb1****', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['title' => '123333', 'description' => 'The channel ID. You can call the [ListEventSub](~~2628135~~) operation to query the channel ID.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- This parameter is required if you specify the Users.N parameter.'."\n" + ."\n" + .'- If you set this parameter to \\* or do not specify this parameter, all channels are subscribed to.'."\n" + ."\n" + .'- Each application ID allows only one all-channel subscription.', 'type' => 'string', 'required' => false, 'example' => '123333'], ], [ - 'name' => 'AppName', + 'name' => 'Users', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', + 'title' => '', + 'description' => 'The user whose events you want to subscribe to. If you leave this parameter empty, the events of all users in the channel are subscribed to, including the events of the streamer and viewers. Specify this parameter in the following format:'."\n" + ."\n" + .'```'."\n" + .'Users.1=****'."\n" + .'Users.2=****'."\n" + .'......'."\n" + .'```', + 'type' => 'array', + 'items' => ['description' => 'The user ID.', 'type' => 'string', 'required' => false, 'example' => 'user1', 'title' => ''], + 'required' => false, + 'maxItems' => 30, + 'example' => '', ], ], [ - 'name' => 'StreamName', + 'name' => 'Events', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', + 'title' => 'ChannelEvent, UserEvent', + 'description' => 'Subscribe to events.', + 'type' => 'array', + 'items' => ['description' => 'The type of the event. Valid values:'."\n" + ."\n" + .'- ChannelEvent: channel events.'."\n" + ."\n" + .'- UserEvent: user events in the channel.', 'type' => 'string', 'required' => true, 'example' => 'ChannelEvent', 'title' => ''], 'required' => true, - 'example' => 'liveStream****', + 'maxItems' => 5, + 'example' => '', ], ], + [ + 'name' => 'CallbackUrl', + 'in' => 'query', + 'schema' => ['title' => 'http://****.com/callback', 'description' => 'The callback URL. For more information about the content of the messages that are sent to the callback URL, see the Callback section in this topic.', 'type' => 'string', 'required' => true, 'example' => 'http://****.com/callback'], + ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'Description' => [ - 'description' => 'The result description. If the request was successful, ok is returned. If the request failed, the failure detail is returned.'."\n", - 'type' => 'string', - 'example' => 'ok', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B908FF89-B03C-4831-B55B-48D2A7DA0A68', - ], - 'Status' => [ - 'description' => 'The status. Valid values:'."\n" - ."\n" - .'* ok: The request was successful.'."\n" - .'* fail: The request failed.'."\n" - ."\n" - .'> If any parameter failed to be configured, the request failed.'."\n", - 'type' => 'string', - 'example' => 'ok', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '760bad53276431c499e30dc36f6b****'], + 'SubscribeId' => ['description' => 'The subscription ID.', 'type' => 'string', 'example' => 'ad53276431c****', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'QuotaLimitError', 'errorMessage' => '%s.', 'description' => 'For each AppId, a maximum of 20 subscriptions are allowed at the same time, and only one full channel subscription is allowed.'], + ['errorCode' => 'ErrorInvalidCallBackUrl', 'errorMessage' => '%s.', 'description' => 'The CallBackURL is invalid, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"ok\\",\\n \\"RequestId\\": \\"B908FF89-B03C-4831-B55B-48D2A7DA0A68\\",\\n \\"Status\\": \\"ok\\"\\n}","type":"json"}]', - 'title' => 'DeleteLiveStreamBlock', - 'description' => 'You can call this operation to delete a configuration of stream-level region blocking.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'CreateEventSub', + 'summary' => 'Creates a callback to subscribe to channel or user events.', + 'description' => 'You can call this operation to create a callback to subscribe to channel or user events. When you create a callback, you can configure parameters such as the callback URL and event type.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'SetLiveStreamBlock' => [ - 'summary' => 'Configures stream-level region blocking.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => '## CallBack'."\n" + ."\n" + .'Callback messages are sent to the callback URL that is specified by the CallbackUrl parameter. The following sample code provides an example:'."\n" + ."\n" + .'```'."\n" + .'Request:'."\n" + ."\n" + .'POST /callbackURL'."\n" + ."\n" + .'Body'."\n" + .'application/json'."\n" + ."\n" + .'{'."\n" + .' "MsgId": "Message ID",'."\n" + .' "MsgTimestamp": 12312324, // The UNIX timestamp when the message was sent.'."\n" + .' "SubscribeID": "Subscription ID",'."\n" + .' "AppId":"", // The ID of the application in which the message was generated.'."\n" + .' "ChannelID":"", // The ID of the channel in which the message was generated.'."\n" + .' "Contents": ['."\n" + .' {'."\n" + .' "Event": "UserEvent",// The type of the event that is subscribed to. In this case, the type is user event.'."\n" + .' "UserEvent": {'."\n" + .' "UserId": "80331631628*****", // The user ID.'."\n" + .' "EventTag": "Publish", // The event. Valid values: Join, Leave, Publish, Unpublish, and Roleupdate.'."\n" + .' "SessionId": "0dr15rrnhkz0jnvz6o8sxo0*****", // The ID of the session in which the event was generated.'."\n" + .' "Timestamp": 1609854786, // The UNIX timestamp when the event occurred.'."\n" + .' "Reason": 1, // The reason for joining or leaving the channel. This parameter is available only if the event is a Join event.'."\n" + .' "Role": 1, // The role of the user. The roles include streamer and viewer.'."\n" + .' "CurrentMedias":"1,2,3"// The types of the streams that were ingested by the user.'."\n" + .' }'."\n" + .' },'."\n" + .' {'."\n" + .' "Event": "ChannelEvent",// The type of the event that is subscribed to. In this case, the type is channel event.'."\n" + .' "ChannelEvent": {'."\n" + .' "ChannelId": "88888****",'."\n" + .' "EventTag": "Open", // The event. Valid values: Open and Close.'."\n" + .' "Timestamp": 1609854530 // The UNIX timestamp when the event occurred.'."\n" + .' }'."\n" + .' }'."\n" + .' ]'."\n" + .'}'."\n" + ."\n" + .'Response '."\n" + .'HTTP STATUS 200'."\n" + .'```'."\n" + ."\n" + .'## Parameters of a user event'."\n" + ."\n" + .'| Parameter | Type | Required | Description |'."\n" + .'| ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| UserId | string | Yes | The user ID. |'."\n" + .'| SessionId | string | Yes | The session ID. |'."\n" + .'| EventTag | string | Yes | The event. Valid values:Join: The user joined the channel.Leave: The user left the channel.PublishVideo: The user ingested a video stream.PublishAudio: The user ingested an audio stream.PublishScreen: The user ingested a stream for screen sharing.UnpublishVideo: The user stopped ingesting a video stream.UnpublishAudio: The user stopped ingesting an audio stream.UnpublishScreen: The user stopped ingesting a stream for screen sharing.Roleupdate: The role of the user was changed. |'."\n" + .'| Timestamp | number | Yes | The timestamp when the event occurred. |'."\n" + .'| Reason | integer | Yes | The reason for joining or leaving the channel. This parameter is available only if the event is a Join event. Valid values:1: The user joined or left the channel as needed.2: The user reconnected to join the channel again when the user was already in the channel.3: The user performed stream relay across channels.4: The user left the channel due to a timeout.5: The user started a new session and was forced to go offline in the current session.6: The user was kicked out of the channel.7: The channel was closed. |'."\n" + .'| Role | integer | Yes | The role of the user. Valid values:1: streamer2: viewer |'."\n" + .'| CurrentMedias | integer | Yes | The type of the stream. Valid values:1: audio2: video3: screen sharing |'."\n" + ."\n" + .'## Parameters of a channel event'."\n" + ."\n" + .'| Parameter | Type | Required | Description |'."\n" + .'| --------- | ------ | -------- | ----------------------------------------------------------------------------------- |'."\n" + .'| EventTag | string | Yes | The event. Valid values:Open: The channel was opened.Close: The channel was closed. |'."\n" + .'| Timestamp | number | Yes | The timestamp when the event occurred. |'."\n" + ."\n" + .'## Callback authentication'."\n" + ."\n" + .'By default, callback authentication is enabled. The following authentication logic applies:'."\n" + ."\n" + .'- When ApsaraVideo Live initiates a callback request, it includes the Ali-Rtc-Timestamp and Ali-Rtc-Signature headers in the HTTP or HTTPS request so that the callback message receiving server can authenticate the signature. The value of Ali-Rtc-Timestamp is calculated based on the following formula: Ali-Rtc-Signature=MD5SUM(MD5CONTENT). In the formula, MD5CONTENT is a string in the following format: Callback domain name|Ali-Rtc-Timestamp value|Authentication key. The callback domain name is the domain name in the callback URL. The authentication key is the AppKey of the application.'."\n" + ."\n" + .'- After receiving a callback message, the callback message receiving server concatenates the callback domain name, value of the Ali-Rtc-Timestamp header, and authentication key in the preceding format. The server calculates the MD5 value of the string to obtain an encrypted string. Then, the server compares the encrypted string with the value of the Ali-Rtc-Signature header in the HTTP or HTTPS request initiated by Real-Time Communication (RTC). If the two values are different, the request is invalid.'."\n" + ."\n" + .'## Callback retry'."\n" + ."\n" + .'After Alibaba Cloud initiates a callback request, the callback is considered successful only if the HTTP status code 200 is returned by your business server. If a callback fails, ApsaraVideo Live resends the callback request 7 times at intervals of 1 second, 2 seconds, 5 seconds, 10 seconds, 60 seconds, 120 seconds, and 300 seconds. A callback record is generated each time a callback request is resent.'."\n" + ."\n" + .'## Exception handling'."\n" + ."\n" + .'A keep-alive mechanism is implemented between clients that have joined a channel or started stream ingest and the Alibaba Cloud server. If the server does not receive heartbeat information from a client for 90 seconds, the server considers that the client timed out and the user left the channel and then fires callbacks. Heartbeats fail to be detected if a network disconnection occurs or the application accidentally exits.', + 'changeSet' => [ + ['createdAt' => '2023-11-21T09:21:45.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-11-21T05:55:02.000Z', 'description' => 'Error codes changed, Request parameters changed'], + ['createdAt' => '2023-08-31T01:48:03.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2023-08-04T10:33:43.000Z', 'description' => 'Request parameters changed, Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateEventSub'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:CreateEventSub', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"760bad53276431c499e30dc36f6b****\\",\\n \\"SubscribeId\\": \\"ad53276431c****\\"\\n}","type":"json"}]', + ], + 'CreateLiveAIStudio' => [ + 'summary' => 'Creates a lightweight virtual studio template.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -9894,415 +8251,308 @@ ], 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'high', + 'operationType' => 'create', + 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveOLG5VH', - ], + 'abilityTreeCode' => '250868', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'StudioName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The name of the virtual studio template. The name must be unique.', 'type' => 'string', 'required' => true, 'example' => 'stu02', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'Description', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", + 'description' => 'The custom description.', + 'enumValueTitles' => [], 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', + 'required' => false, + 'example' => 'template 1080', + 'title' => '', ], ], [ - 'name' => 'StreamName', + 'name' => 'Width', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The width of the preview screen. Unit: px.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1920', 'title' => ''], ], [ - 'name' => 'BlockType', + 'name' => 'Height', 'in' => 'query', - 'schema' => [ - 'description' => 'The blocking type. Valid values: blacklist and whitelist.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'blacklist', - 'enum' => [ - 'blacklist', - 'whitelist', - ], - ], + 'schema' => ['description' => 'The height of the preview screen. Unit: px.'."\n" + ."\n" + .'The width × height of the preview screen supports only the following specifications:'."\n" + ."\n" + .'- Landscape low definition 360P: 640 × 360'."\n" + .'- Portrait low definition 360P: 360 × 640'."\n" + .'- Landscape standard definition 480P: 854 × 480'."\n" + .'- Portrait standard definition 480P: 480 × 854'."\n" + .'- Landscape high definition 720P: 1280 × 720'."\n" + .'- Portrait high definition 720P: 720 × 1280'."\n" + .'- Landscape ultra-high definition 1080P: 1920 × 1080'."\n" + .'- Portrait ultra-high definition 1080P: 1080 × 1920.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1080', 'title' => ''], ], [ - 'name' => 'LocationList', + 'name' => 'BackgroundType', 'in' => 'query', 'schema' => [ - 'description' => 'The blocked region. If you specify multiple regions, such as CN and AS, separate them with commas (,).'."\n", + 'description' => 'The type of the background material. Valid values:'."\n" + .'- VOD: video-on-demand video.'."\n" + .'- PIC: image.'."\n" + .'- LIVE: live stream.', + 'enumValueTitles' => ['VOD' => 'video-on-demand video.', 'PIC' => 'image.', 'LIVE' => 'live stream.'], 'type' => 'string', - 'required' => true, - 'example' => 'CN', + 'required' => false, + 'enum' => ['VOD', 'LIVE', 'PIC'], + 'example' => 'VOD', + 'title' => '', ], ], [ - 'name' => 'ReleaseTime', + 'name' => 'BackgroundResourceId', 'in' => 'query', 'schema' => [ - 'description' => 'The time when the blocking ends. The time must be in UTC. If you do not specify this parameter, the blocking is valid for 7 days by default.'."\n", + 'description' => 'The video-on-demand resource ID of the background material. Obtain this value from the ApsaraVideo VOD console.', 'type' => 'string', + 'enum' => [], 'required' => false, - 'example' => '2016-06-29T19:00:00Z', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Description' => [ - 'description' => 'The result description.'."\n" - ."\n" - .'* If the request was successful, ok is returned.'."\n" - .'* If the request failed, the failure detail is returned.'."\n", - 'type' => 'string', - 'example' => 'ok', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3be7ade8-d907-483c-b24a-0dad4595beaf', - ], - 'Status' => [ - 'description' => 'The status. Valid values:'."\n" - ."\n" - .'* ok: The request was successful.'."\n" - .'* fail: The request failed.'."\n" - ."\n" - .'> If any parameter failed to be configured, the request failed.'."\n", - 'type' => 'string', - 'example' => 'ok', - ], - ], - 'description' => '', - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidReleaseTime.Malformed', - 'errorMessage' => 'Specified ReleaseTime is malformed.', - ], - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + 'example' => 'd0eb493192c771efba644531858c0102', + 'title' => '', ], ], - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"ok\\",\\n \\"RequestId\\": \\"3be7ade8-d907-483c-b24a-0dad4595beaf\\",\\n \\"Status\\": \\"ok\\"\\n}","type":"json"}]', - 'title' => 'SetLiveStreamBlock', - 'description' => 'You can configure up to 200 stream-level region blocking rules for a domain name. If there are rules in which the same application name and the same stream name are specified, the rule that is updated the most recently takes effect.'."\n" - ."\n" - .'### [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeStreamLocationBlock' => [ - 'summary' => 'Queries configurations of stream-level region blocking.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], - ], - 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'BackgroundResourceUrl', 'in' => 'query', 'schema' => [ + 'description' => 'The access URL of the background material. Specify either this parameter or the resource ID.', 'type' => 'string', + 'enum' => [], 'required' => false, - 'default' => 'cn-shanghai', + 'example' => 'https://xxx.com/1.mp4', + 'title' => '', ], ], [ - 'name' => 'DomainName', + 'name' => 'MediaType', 'in' => 'query', 'schema' => [ - 'description' => 'The streaming domain.'."\n", + 'description' => 'The type of the multimedia material. Valid values:'."\n" + .'- VOD: video-on-demand video.'."\n" + .'- PIC: image.'."\n" + .'- LIVE: live stream.', + 'enumValueTitles' => ['VOD' => 'video-on-demand video.', 'PIC' => 'image.', 'LIVE' => 'live stream.'], 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + 'required' => false, + 'enum' => ['VOD', 'LIVE', 'PIC'], + 'example' => 'VOD', + 'title' => '', ], ], [ - 'name' => 'AppName', + 'name' => 'MediaResourceId', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", + 'description' => 'The video-on-demand resource ID of the multimedia material. Obtain this value from the ApsaraVideo VOD console.', 'type' => 'string', + 'enum' => [], 'required' => false, - 'example' => 'liveApp****', + 'example' => 'd0eb493192c771efba644531858c0102', + 'title' => '', ], ], [ - 'name' => 'StreamName', + 'name' => 'MediaResourceUrl', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the live stream.'."\n", + 'description' => 'The access URL of the multimedia material. Specify either this parameter or the resource ID.', 'type' => 'string', + 'enum' => [], 'required' => false, - 'example' => 'stream', + 'example' => 'https://xxx.com/2.mp4', + 'title' => '', ], ], [ - 'name' => 'BlockType', + 'name' => 'MediaLayout', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The blocking type. Valid values:'."\n" - ."\n" - .'* blacklist'."\n" - .'* whitelist'."\n", - 'type' => 'string', + 'description' => 'The layout position information of the multimedia material.', + 'type' => 'object', + 'properties' => [ + 'PositionX' => ['description' => 'The x-coordinate of the position. Valid values: **0 to 1**. The position of the material is based on the upper-left corner as the reference point.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0', 'title' => ''], + 'PositionY' => ['description' => 'The y-coordinate of the position. Valid values: **0 to 1**. The position of the material is based on the upper-left corner as the reference point.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0', 'title' => ''], + 'HeightNormalized' => ['description' => 'The normalized height of the material, which is the ratio of the material height to the background height. Valid values: **0 to 1**.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.5', 'title' => ''], + ], 'required' => false, - 'example' => 'blacklist', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'PageSize', + 'name' => 'MattingType', 'in' => 'query', 'schema' => [ - 'description' => 'The number of entries per page. Valid values: integers from 1 to 100.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - 'default' => '20', + 'description' => 'The image matting type. Valid values:'."\n" + .'- green: green screen matting.'."\n" + .'- blue: blue screen matting.'."\n" + .'- complex: real-scene matting.', + 'enumValueTitles' => ['green' => 'image matting with a green screen.', 'blue' => 'blue screen matting.', 'complex' => 'real-scene matting.'], + 'type' => 'string', + 'required' => true, + 'enum' => ['green', 'blue', 'complex'], + 'example' => 'complex', + 'title' => '', ], ], [ - 'name' => 'PageNum', + 'name' => 'MattingLayout', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', + 'description' => 'The layout position information of the source stream after image matting.', + 'type' => 'object', + 'properties' => [ + 'PositionX' => ['description' => 'The x-coordinate of the position. Valid values: **0 to 1**. The position of the material is based on the upper-left corner as the reference point.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.3', 'title' => ''], + 'PositionY' => ['description' => 'The y-coordinate of the position. Valid values: **0 to 1**. The position of the material is based on the upper-left corner as the reference point.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.3', 'title' => ''], + 'HeightNormalized' => ['description' => 'The normalized height of the material, which is the ratio of the material height to the background height. Valid values: **0 to 1**.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.5', 'title' => ''], + ], + 'required' => true, + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'The response struct.', 'type' => 'object', 'properties' => [ - 'Count' => [ - 'description' => 'The total number of entries that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'C7C69682-7F88-40DD-A198-10D0309E439B', - ], - 'StreamBlockList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'StreamBlock' => [ - 'description' => 'The configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The details of the configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application in which the blocking applies.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'BlockType' => [ - 'description' => 'The blocking type. Valid values:'."\n" - ."\n" - .'* blacklist'."\n" - .'* whitelist'."\n", - 'type' => 'string', - 'example' => 'blacklist', - ], - 'DomainName' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'LocationList' => [ - 'description' => 'The blocked region. If multiple regions are specified, such as CN and AS, they are separated by commas (,).'."\n", - 'type' => 'string', - 'example' => 'CN', - ], - 'ReleaseTime' => [ - 'description' => 'The time when the blocking ends. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2023-08-13T09:27Z', - ], - 'Status' => [ - 'description' => 'The blocking status. Valid values: 0 (not started), 1 (blocking), 2 (successful), 3 (failed), 4 (expired), and 5 (deleting).'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'StreamName' => [ - 'description' => 'The name of the stream.'."\n", - 'type' => 'string', - 'example' => 'stream', - ], - 'UpdateTime' => [ - 'description' => 'The time when the configuration was last modified. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2023-08-14T09:27Z', - ], - ], - ], - ], - ], - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '17D7526C-69AD-5761-8037-071C27358345'], + 'StudioId' => ['title' => '', 'description' => 'The studio template ID.', 'type' => 'string', 'example' => '369ced1f-c33a-49e5-91da-bdaae3d6c1c2'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The live service is not enabled. Please check and try again.'], + ['errorCode' => 'InvalidParameter.PurchaseTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PurchaseTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.ExpireTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ExpireTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidChargeType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidChargeType.PostSupport', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ChargeType only supports post-paid, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterTemplate is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.ChargeType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidPeriod.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid time interval, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + [ + ['errorCode' => 'CasterNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of casters exceeds the limit. Please check and try again.'], + ], + 403 => [ + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], + ], + [ + ['errorCode' => 'InvalidParameter.NormType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter NormType is invalid, please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 408 => [ + ['errorCode' => 'CreateLiveAIStudio.Timeout', 'errorMessage' => '%s, please try again later.', 'description' => 'Call CreateLiveAIStudio timed out, please try again later.'], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Count\\": 2,\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 5,\\n \\"RequestId\\": \\"C7C69682-7F88-40DD-A198-10D0309E439B\\",\\n \\"StreamBlockList\\": {\\n \\"StreamBlock\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"BlockType\\": \\"blacklist\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"LocationList\\": \\"CN\\",\\n \\"ReleaseTime\\": \\"2023-08-13T09:27Z\\",\\n \\"Status\\": 0,\\n \\"StreamName\\": \\"stream\\",\\n \\"UpdateTime\\": \\"2023-08-14T09:27Z\\"\\n }\\n ]\\n },\\n \\"TotalPage\\": 1\\n}","type":"json"}]', - 'title' => 'DescribeStreamLocationBlock', - 'description' => 'Queries configurations of stream-level region blocking.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveShiftConfigs' => [ - 'summary' => 'Queries the time shifting configurations of a domain name.', - 'methods' => [ - 'post', - 'get', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"17D7526C-69AD-5761-8037-071C27358345\\",\\n \\"StudioId\\": \\"369ced1f-c33a-49e5-91da-bdaae3d6c1c2\\"\\n}","type":"json"}]', + 'title' => 'Create a virtual studio template', + 'description' => '>The lightweight virtual studio feature is in public preview. Each user can create up to 300 templates. The feature is free of charge during the public preview. After the public preview ends, standard fees will apply. The specific date will be announced separately.>.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveAIStudio'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveAIStudio', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'CreateLiveDelayConfig' => [ + 'summary' => 'Adds a stream delay configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveGDJYFA', - ], + 'abilityTreeNodes' => ['FEATUREliveBP94ZY'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region where the streaming domain resides.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'App', + 'in' => 'query', + 'schema' => ['description' => 'The AppName of the live stream. You can specify an asterisk (\\*) to match all AppNames under the domain name.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'Stream', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream. You can use the wildcard (\\*) to specify all StreamNames under the AppName.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'DelayTime', + 'in' => 'query', + 'schema' => ['description' => 'The duration for which the playback is delayed. The value must be an integer. Valid values: 16 to 3600. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '60', 'title' => ''], + ], + [ + 'name' => 'TaskTriggerMode', + 'in' => 'query', + 'schema' => ['description' => 'The trigger mode. Valid values:'."\n" + ."\n" + .'- **PUBLISH\\_ONLY**: Stream delay is triggered only by relevant parameters in the ingest URL.'."\n" + ."\n" + .'- **CONFIG\\_ONLY**: Stream delay is triggered only by the configuration. Parameters in the ingest URL are ignored.'."\n" + ."\n" + .'- **PUBLISH\\_CONFIG**: Stream delay is triggered by both the configuration and parameters in the ingest URL. Parameters in the ingest URL have a higher priority than the configuration.', 'type' => 'string', 'required' => true, 'example' => 'PUBLISH_ONLY', 'title' => ''], ], ], 'responses' => [ @@ -10310,367 +8560,355 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.', - 'type' => 'string', - 'example' => 'B49E6DDA-F413-422B-B58E-2FA23F286726', - ], - 'Content' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Config' => [ - 'description' => 'The time shifting configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => 'The application for which you configure time shifting.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'Vision' => [ - 'description' => 'The number of days for which the time shifting configurations are retained.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '7', - ], - 'DomainName' => [ - 'description' => 'The domain name for which you configure time shifting.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream for which you configure time shifting.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'IgnoreTranscode' => [ - 'description' => 'Whether to ignore time shift generation for the transcode stream.'."\n" - ."\n" - .'* true: Ignore time shifting generation.'."\n" - .'* false: Generate time shifting.'."\n" - ."\n" - .'The default value is true.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidDataNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 409 => [ - [ - 'errorCode' => 'InvalidStreamNum', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'Invalid parameter:%s.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B49E6DDA-F413-422B-B58E-2FA23F286726\\",\\n \\"Content\\": {\\n \\"Config\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"Vision\\": 7,\\n \\"DomainName\\": \\"example.com\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"IgnoreTranscode\\": true\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n B49E6DDA-F413-422B-B58E-2FA23F286726\\n \\n liveApp****\\n 7\\n example.com\\n liveStream****\\n true\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveShiftConfigs', - 'description' => 'This operation is applicable to the streaming domains.'."\n" - ."\n" - .'## QPS limit'."\n" + 'title' => 'CreateLiveDelayConfig', + 'description' => 'Stream delay differs from latency caused by streaming protocols. Stream delay is a feature that lets you delay the playback of a live stream processed in the cloud.'."\n" ."\n" - .'A single user can perform a maximum of 10 queries per second (QPS). Throttling is triggered when the number of calls per second exceeds the QPS limit. The throttling may affect your business. Thus, we recommend that you observe the QPS limit on this operation. For more information about what a single user means and the QPS details, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live#topic-2136805).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => '## Special error codes'."\n" + .'## QPS limits'."\n" ."\n" - .'| Error code | Error message | HTTP status code | Description |'."\n" - .'| ---------- | ------------- | ---------------- | ----------- |'."\n" - .'| InvalidParam | param error | 400 | The error message returned because one or more specified parameters are invalid. |'."\n" - .'| InvalidDataNotFound | data not found | 404 | The error message returned because user data cannot be found. |', - ], - 'OpenLiveShift' => [ - 'summary' => 'Enables time shifting for a domain name, or an application or a live stream under the domain name.', - 'methods' => [ - 'post', - 'get', + .'The queries per second (QPS) limit for this operation is 60 for each user. If you exceed the limit, API calls are throttled, which may affect your business. Call this operation within the specified limit.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveDelayConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'CreateLiveMessageApp' => [ + 'summary' => 'Creates an interactive messaging application.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'create', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveGDJYFA', - ], + 'chargeType' => 'free', + 'abilityTreeCode' => '198173', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The application name. It must be 2 to 16 characters in length.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'testApp'], ], [ - 'name' => 'AppName', + 'name' => 'AuditType', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can specify an asterisk (\\*) as the value to match all applications under the domain name. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', + 'title' => '', + 'description' => 'The content moderation method. Valid values:'."\n" + ."\n" + .'- 0 (default): disables content moderation.'."\n" + .'- 1: Built-in content moderation.'."\n" + .'- 2: Custom content moderation.', + 'type' => 'integer', + 'format' => 'int32', 'required' => false, - 'example' => 'liveApp****', + 'enum' => ['0', '1', '2'], + 'example' => '2', ], ], [ - 'name' => 'StreamName', + 'name' => 'AuditUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can specify an asterisk (\\*) as the value to match all streams in the application. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], + 'schema' => ['title' => '', 'description' => 'The URL for content moderation. This parameter is required if you set AuditType to 2. The URL must start with http\\:// or https\\:// and cannot contain a private IP address or a port number. For the format of custom content moderation, see the "Custom content moderation" section of this topic.', 'type' => 'string', 'required' => false, 'example' => 'http://demo.aliyundoc.com/exampleaudit'], ], [ - 'name' => 'Duration', + 'name' => 'EventCallbackUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The length of a TS segment for HTTP Live Streaming (HLS). Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '3', - ], + 'schema' => ['title' => '', 'description' => 'The callback URL for events such as client logon, logoff, joining a group, and leaving a group. If you leave this parameter empty, callbacks are disabled. The callback URL must start with http\\:// or https\\:// and cannot contain a private IP address or a port number. For the callback message format and authentication logic, see the "Event callbacks" and "Callback authentication" sections of this topic.', 'type' => 'string', 'required' => false, 'example' => 'http://demo.aliyundoc.com/examplecallback'], ], [ - 'name' => 'Vision', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The duration for which data is retained. Default value: 7. Unit: day.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + 'schema' => ['description' => 'The data center. Valid values:'."\n" + ."\n" + .'- cn-shanghai (default): the data center in the China (Shanghai) region.'."\n" + .'- ap-southeast-1: the data center in the Singapore region.'."\n" + ."\n" + .'> When you call other operations to manage the interactive messaging application, you must specify the same data center in which the application is created.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'IgnoreTranscode', + 'name' => 'MsgLifeCycle', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to disable time shifting for the transcoded stream. Valid values:'."\n" - ."\n" - .'* **true**: disables time shifting for the transcoded stream.'."\n" - .'* **false**: enables time shifting for the transcoded stream.'."\n" - ."\n" - .'Default value: true.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The retention period of group messages in the application. Valid values:'."\n" + ."\n" + .'- 0 (default): 30 days.'."\n" + .'- 1: 90 days.'."\n" + .'- 2: 180 days.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '1'], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The returned results.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '65EEDBEB-43FE-1E15-976F-3DDD753A****'], + 'AppId' => ['description' => 'The application ID. It can be used in subsequent operations, such as joining a group.', 'type' => 'string', 'title' => '', 'example' => 'demo'], + 'AppKey' => ['description' => 'The AppKey. It is used to perform authentication for various operations related to the application ID.', 'type' => 'string', 'title' => '', 'example' => '**********************************'], + 'AppSign' => ['description' => 'The application signature. It is required by the interactive messaging SDK.', 'type' => 'string', 'title' => '', 'example' => '**************************************************************************'], + 'DataCenter' => ['description' => 'The data center.', 'type' => 'string', 'title' => '', 'example' => 'cn-shanghai'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'ErrorInvalidAppName', 'errorMessage' => '%s.', 'description' => 'The AppName is invalid, please check and try again.'], + ['errorCode' => 'ErrorTooManyApps', 'errorMessage' => '%s.', 'description' => 'Under each account, up to 300 apps are allowed to be created at the same time.'], + ['errorCode' => 'ErrorInvalidEventCallbackUrl', 'errorMessage' => '%s.', 'description' => 'The EventCallbackUrl is invalid, please check and try again.'], + ['errorCode' => 'ErrorInvalidAuditUrl', 'errorMessage' => '%s.', 'description' => 'The AuditUrl is invalid, please check and try again.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidDataNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], - 409 => [ - [ - 'errorCode' => 'InvalidStreamNum', - 'errorMessage' => '%s, please check and try again later.', - ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'OpenLiveShift', - 'description' => 'You cannot configure time shifting and delayed transcoding at the same time.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"65EEDBEB-43FE-1E15-976F-3DDD753A****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppKey\\": \\"**********************************\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"DataCenter\\": \\"cn-shanghai\\"\\n}","type":"json"}]', + 'title' => 'CreateLiveMessageApp', + 'description' => '- When you call other operations to manage the interactive messaging application, you must specify the same data center in which the application was created.'."\n" + .'- You can create up to 300 interactive messaging applications in an Alibaba Cloud account.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'CloseLiveShift' => [ - 'summary' => 'Disables time shifting for a domain name, or an application or a live stream under the domain name.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you consider this limit when calling this operation.', + 'requestParamsDescription' => '### Custom content moderation'."\n" + ."\n" + .'- Request protocol: HTTP'."\n" + .'- Request method: POST'."\n" + .'- Sample request:'."\n" + ."\n" + .'```'."\n" + .'{'."\n" + .' "content": "testaudit"'."\n" + .'}'."\n" + .'```'."\n" + ."\n" + .'- Sample response:'."\n" + ."\n" + .'```'."\n" + .'{'."\n" + .' "pass": true,'."\n" + .' "reason":"****" | If the value of pass is true, the content passes the moderation. Otherwise, the content fails the moderation. The reason field describes the reason for failure.'."\n" + .'}'."\n" + .'```'."\n" + ."\n" + .'> HTTP status code 200 indicates success. If other HTTP status codes are returned, the service is considered unavailable and no content moderation is performed.'."\n" + ."\n" + .'### Event callbacks'."\n" + ."\n" + .'The HTTP or HTTPS request method is POST. The request body is a JSON string encoded in UTF-8. Sample event callback:'."\n" + ."\n" + .'```'."\n" + .'{'."\n" + .' "appid":"demo",'."\n" + .' "eves":[{'."\n" + .' "uid":"uid1",'."\n" + .' "sid":"sessionid",'."\n" + .' "events":[{'."\n" + .' "e": 3, | The event. Valid values: 1 (logon), 2 (logoff), 3 (joining a group), 4 (leaving a group), and 5 (reconnection)'."\n" + .' "r": 1, | The reason for logoff. This field is returned for only the logoff event. Valid values: 1 (normal call), 3 (timeout), and 4 (logon from another device).'."\n" + .' "g": "testgroup", | The group ID. This field is available for joining and leaving a group, but not for logon and logoff events.'."\n" + .' "gs":["testgroupid"] | The list of group IDs, which indicates the information about the groups that the client joins upon reconnection. This field is not returned for other events.'."\n" + .' }]'."\n" + .' }]'."\n" + .'}'."\n" + .'```'."\n" + ."\n" + .'> HTTP status code 200 indicates success. If other HTTP status codes are returned, the system tries to send the callback again.'."\n" + ."\n" + .'### Callback authentication'."\n" + ."\n" + .'When the service initiates a request, it includes the Ali-Live-Timestamp and Ali-Live-Signature fields as HTTP or HTTPS request headers, which are used by the callback receiving server for signature verification. The value of Ali-Live-Signature is calculated based on the following formula: Ali-Live-Signature = sha256(CONTENT), in which CONTENT = Callback domain name|Ali-Live-Timestamp value|Authentication key. The callback domain name is the domain name for which the callback URL is configured, and the authentication key is the AppKey that is generated when you create the application.', + 'changeSet' => [ + ['createdAt' => '2025-02-26T03:17:26.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-01-22T10:56:11.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-03-13T01:41:50.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-01-31T03:42:38.000Z', 'description' => 'Error codes changed, Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveMessageApp'], + ], ], - 'security' => [ + 'ramActions' => [ [ - 'AK' => [], + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveGDJYFA', + ], + 'CreateLiveMessageGroup' => [ + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ + [ + 'AK' => [], ], ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the group that you want to create. The group ID must be unique within your business. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'GroupName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can specify an asterisk (\\*) as the value to match all applications under the domain name. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['title' => '', 'description' => 'The name of the group. The name can be up to 128 bytes in length.'."\n", 'type' => 'string', 'required' => false, 'example' => 'mytestgroup'], ], [ - 'name' => 'StreamName', + 'name' => 'GroupInfo', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The additional information about the group. The value can be up to 32 KB in length.'."\n", 'type' => 'string', 'required' => false, 'example' => 'testgroupinfo'], + ], + [ + 'name' => 'Administrators', 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The name of the live stream. You can specify an asterisk (\\*) as the value to match all streams in the application. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', + 'title' => '', + 'description' => 'The list of administrators.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The ID of the administrator. The ID can be up to 64 bytes in length and can contain letters and digits. Separate multiple administrator IDs with commas (,). You can specify up to three administrator IDs.'."\n", 'type' => 'string', 'required' => false, 'example' => 'uid1', 'title' => ''], 'required' => false, - 'example' => 'liveStream****', + 'maxItems' => 3, + 'example' => '', ], ], + [ + 'name' => 'CreatorId', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The ID of the group creator. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", 'type' => 'string', 'required' => false, 'example' => 'uid1'], + ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2593195~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'A8C7B033-B339-1A58-B0E0-7B9197BA****'], + 'GroupId' => ['description' => 'The ID of the group created.'."\n", 'type' => 'string', 'example' => 'grouptest', 'title' => ''], + 'AlreadyExists' => ['title' => '', 'description' => 'Indicates whether the group already exists.'."\n", 'type' => 'boolean', 'example' => 'true'], + 'AlreadyDelete' => ['description' => 'Indicates whether the group is deleted. If the group existed and is deleted, the group ID is unavailable. We recommend that you create a new group.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'ErrorTooManyGroups', 'errorMessage' => '%s.', 'description' => 'For each AppId, a maximum of 5000 groups are allowed to be created at the same time.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidDataNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], - 409 => [ - [ - 'errorCode' => 'InvalidStreamNum', - 'errorMessage' => '%s, please check and try again later.', - ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\r\\n","errorExample":""}]', - 'title' => 'CloseLiveShift', - 'description' => 'Obtain the streaming domain, and then call this operation to disable time shifting for the streaming domain or an application or a live stream under the streaming domain.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'CreateLiveMessageGroup', + 'summary' => 'Creates an interactive messaging group.', + 'description' => '* Before you call this operation, make sure that you have called the [CreateLiveMessageApp](~~2848162~~) operation to create an interactive messaging application.'."\n" + .'* You can create up to 5,000 interactive messaging groups in an interactive messaging application.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'AddLiveStreamTranscode' => [ - 'summary' => 'Adds transcoding configurations for a streaming domain.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2024-01-31T03:35:28.000Z', 'description' => 'Error codes changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A8C7B033-B339-1A58-B0E0-7B9197BA****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"AlreadyExists\\": true,\\n \\"AlreadyDelete\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n A8C7B033-B339-1A58-B0E0-7B9197BA****\\n grouptest\\n true\\n true\\n","errorExample":""}]', + ], + 'CreateLivePrivateLine' => [ + 'summary' => 'Creates a Global Accelerator (GA) instance and binds it to an acceleration circuit.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -10681,493 +8919,432 @@ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'App', + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The application name.', 'type' => 'string', 'required' => true, 'example' => 'live', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => true, 'example' => 'testStream', 'title' => ''], + ], + [ + 'name' => 'VideoCenter', + 'in' => 'query', + 'schema' => ['description' => 'The live center. Valid values are cn-beijing, cn-shanghai, cn-shenzhen, cn-qingdao, ap-northeast-1, ap-southeast-5, eu-central-1, ap-southeast-1, and ap-south-1. These values represent the live centers located in Beijing, Shanghai, Shenzhen, Qingdao, Japan, Indonesia, Germany, and Singapore.', 'type' => 'string', 'required' => true, 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'AccelerationType', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n" + 'description' => 'The acceleration type. Valid values:'."\n" ."\n" - .'* The transcoding template takes effect only if the value of this parameter is the same as the application name that is specified in the ingest URL. The name can be up to 256 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_).'."\n" - .'* You can also set this parameter to an asterisk (\\*). Asterisks (\\*) can match any string, including an empty string.'."\n" + .'- play: streaming acceleration.'."\n" ."\n" - .'> If you configure a transcoding template for which App is set to an asterisk (\\*), the transcoding template is used only if no transcoding template for which App is set to the same value as AppName in the ingest URL exists.'."\n", + .'- publish: stream ingest acceleration.', 'type' => 'string', 'required' => true, - 'example' => 'liveApp****', - ], + 'enum' => ['play', 'publish'], + 'example' => 'play', + 'title' => '', + ], ], [ - 'name' => 'Template', + 'name' => 'AccelerationArea', + 'in' => 'query', + 'schema' => ['description' => 'The acceleration area.', 'type' => 'string', 'required' => true, 'example' => 'ap-southeast-1', 'title' => ''], + ], + [ + 'name' => 'Reuse', 'in' => 'query', 'schema' => [ - 'description' => 'The transcoding template. Valid values:'."\n" - ."\n" - .'* Standard transcoding template:'."\n" + 'description' => 'Specifies whether to reuse an existing acceleration instance. Valid values:'."\n" ."\n" - .' * **lld**: low definition'."\n" - .' * **lsd**: standard definition'."\n" - .' * **lhd**: high definition'."\n" - .' * **lud**: ultra-high definition'."\n" + .'- yes: Reuse an existing acceleration instance.'."\n" ."\n" - .'* Narrowband HD™ transcoding template:'."\n" - ."\n" - .' * **ld**: low definition'."\n" - .' * **sd**: standard definition'."\n" - .' * **hd**: high definition'."\n" - .' * **ud**: ultra-high definition'."\n", + .'- no: Create a new acceleration instance.', 'type' => 'string', 'required' => true, - 'example' => 'lsd', + 'enum' => ['yes', 'no'], + 'example' => 'no', + 'title' => '', ], ], [ - 'name' => 'EncryptParameters', + 'name' => 'MaxBandwidth', 'in' => 'query', - 'schema' => [ - 'description' => 'The encryption configuration. The value is a JSON string. The following fields are included in the syntax:'."\n" - ."\n" - .'* EncryptType: the type of the encryption. Set the value to **aliyun**.'."\n" - .'* KmsKeyID: the ID of the CMK in KMS.'."\n" - .'* KmsKeyExpireInterval: the validity period of the CMK. Valid values: **60 to 3600**. Unit: seconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"EncryptType": "aliyun", "KmsKeyID":"afce5722-81d2-43c3-9930-7601da11****","KmsKeyExpireInterval":"3600"}', - ], + 'schema' => ['description' => 'The maximum bandwidth for acceleration. Unit: Mbps. This parameter is required if you set Reuse to no.', 'type' => 'string', 'required' => false, 'example' => '200', 'title' => ''], ], [ - 'name' => 'Lazy', + 'name' => 'InstanceId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to use the load-on-demand mechanism for transcoding. Default value: **yes**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', - 'default' => 'yes', - ], + 'schema' => ['description' => 'The ID of the acceleration instance that you want to reuse. This parameter is required if you set Reuse to yes.', 'type' => 'string', 'required' => false, 'example' => 'ga-bp1iovsdpf01ym9su****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The returned data.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7908F2FF-44F8-120F-9FD6-85AE4B6C****', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'NoSpecialConfiguration', 'errorMessage' => 'no special configuration for acceleration_area.', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'HasNoPermission', 'errorMessage' => 'You do not have permission to create accelerator.', 'description' => ''], + ['errorCode' => 'PostPayNotOpen', 'errorMessage' => 'The Accelerator PostPay service is not open.', 'description' => ''], + ['errorCode' => 'TryAgain', 'errorMessage' => 'Create SLR first and please try again.', 'description' => ''], + ['errorCode' => 'HasNoPermisionToCreateSLR', 'errorMessage' => 'You do not have ram:CreateServiceLinkedRole to create SLR.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n\\t 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\r\\n","errorExample":""}]', - 'title' => 'AddLiveStreamTranscode', - 'description' => 'You must obtain the customer master key (CMK) in Key Management Service (KMS) before you call this operation to add transcoding configurations. Only standard transcoding templates and Narrowband HD™ transcoding templates are supported for this operation.'."\n" + 'title' => 'CreateLivePrivateLine', + 'description' => '- You can call this operation to create a Global Accelerator instance and attach it to a live stream channel. You must specify the start and end points of the acceleration at the stream level.'."\n" + ."\n" + .'- The template takes effect only if the AppName and StreamName match the corresponding names in the streaming URL.'."\n" ."\n" .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddCustomLiveStreamTranscode' => [ - 'summary' => 'Adds a custom transcoding configuration for a streaming domain.', - 'methods' => [ - 'post', - 'get', + .'The queries per second (QPS) limit for this operation is 50 per user. Calls that exceed this limit are throttled, which can affect your business. We recommend that you call this operation within this limit.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLivePrivateLine'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLivePrivateLine', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85AE4B6C****\\"\\n}","type":"json"}]', + ], + 'CreateLivePullToPush' => [ + 'summary' => 'Call CreateLivePullToPush to create a pull-to-push task.', + 'methods' => ['get', 'post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106833', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeCode' => '240052', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'Region ID.', 'type' => 'string', 'default' => 'cn-shanghai', 'required' => false, 'example' => 'cn-beijing', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'Region', 'in' => 'query', 'schema' => [ - 'description' => 'The main streaming domain.'."\n", + 'description' => 'Specifies the region where the task is launched. Valid values:'."\n" + ."\n" + .'- ap-southeast-1 (Singapore)'."\n" + .'- ap-southeast-5 (Indonesia)'."\n" + .'- cn-beijing (Beijing)'."\n" + .'- cn-shanghai (Shanghai)'."\n" + .'- cn-shenzhen (Shenzhen)', + 'enumValueTitles' => ['cn-shenzhen' => 'Shenzhen', 'cn-qingdao' => 'Qingdao', 'preregion' => 'Pre-release', 'cn-beijing' => 'Beijing', 'cn-shanghai' => 'Shanghai', 'ap-southeast-1' => 'Singapore', 'eu-central-1' => 'Germany - Frankfurt', 'ap-northeast-1' => 'Japan - Tokyo', 'ap-southeast-5' => 'Indonesia', 'me-central-1' => 'Saudi Arabia - Riyadh'], 'type' => 'string', 'required' => true, - 'example' => 'example.com', + 'enum' => ['ap-northeast-1', 'ap-southeast-1', 'ap-southeast-5', 'eu-central-1', 'me-central-1', 'cn-beijing', 'cn-shanghai', 'cn-shenzhen', 'cn-qingdao', 'preregion'], + 'example' => 'cn-shanghai', + 'title' => '', ], ], [ - 'name' => 'App', + 'name' => 'TaskName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'Task name, used to support fuzzy query. Default value: "".', 'type' => 'string', 'required' => false, 'example' => 'test', 'title' => ''], ], [ - 'name' => 'KmsKeyID', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the customer master key (CMK) that you created in Key Management Service (KMS).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'afce5722-81d2-43c3-9930-7601da11****', - ], + 'schema' => ['description' => 'Task start time.'."\n" + ."\n" + .'> - Format: yyyy-MM-ddTHH:mm:ssZ (UTC time).', 'type' => 'string', 'required' => true, 'example' => '2024-08-26T10:30:00Z', 'title' => ''], ], [ - 'name' => 'KmsUID', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of your KMS account.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '25346073170691****', - ], + 'schema' => ['description' => 'Task end time.'."\n" + ."\n" + .'> - Format: yyyy-MM-ddTHH:mm:ssZ (UTC time).'."\n" + .'> - EndTime must be later than StartTime.'."\n" + .'> - EndTime must be later than the current time.', 'type' => 'string', 'required' => true, 'example' => '2024-08-27T14:30:00Z', 'title' => ''], ], [ - 'name' => 'KmsKeyExpireInterval', + 'name' => 'SourceType', 'in' => 'query', 'schema' => [ - 'description' => 'The rotation period of the CMK. Valid values: 60 to 3600. Unit: seconds.'."\n", + 'description' => 'Source stream type. Valid values:'."\n" + ."\n" + .'- live: live stream.'."\n" + .'- vod: ApsaraVideo VOD resource.'."\n" + .'- url: third-party video file resource.', + 'enumValueTitles' => ['vod' => 'ApsaraVideo VOD resource', 'live' => 'Live stream', 'url' => 'Third-party video file resource'], 'type' => 'string', - 'required' => false, - 'example' => '3600', + 'required' => true, + 'enum' => ['live', 'vod', 'url'], + 'example' => 'live', + 'title' => '', ], ], [ - 'name' => 'Template', + 'name' => 'SourceProtocol', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the custom transcoding template.'."\n" + 'description' => 'Source stream protocol name.'."\n" ."\n" - .'> The name can contain digits, letters, and hyphens (-), and must start with a letter or digit. The name must be different from the names of any default transcoding templates.'."\n", + .'Valid values:'."\n" + .'- rtmp'."\n" + .'- srt'."\n" + .'- http-flv'."\n" + .'- hls'."\n" + .'> This parameter is **required only when the SourceType parameter is set to live**, and is invalid when the value is vod or url.', 'type' => 'string', - 'required' => true, - 'example' => 'LiveCusTranscode****', + 'enum' => [], + 'required' => false, + 'example' => 'rtmp', + 'title' => '', ], ], [ - 'name' => 'TemplateType', + 'name' => 'SourceUrls', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The type of the custom transcoding template. Valid values:'."\n" + 'description' => 'List of source stream URL addresses.'."\n" ."\n" - .'* **h264**: custom H.264 standard transcoding.'."\n" - .'* **h264-nbhd**: custom H.264 Narrowband HD™ transcoding.'."\n" - .'* **h265**: custom H.265 standard transcoding.'."\n" - .'* **h265-nbhd**: custom H.265 Narrowband HD™ transcoding.'."\n" - .'* **audio**: audio-only transcoding.'."\n" + .'> - For the live type, only one complete live playback URL is supported.'."\n" + .'> - For the vod and url types, a maximum of 30 URLs can be specified.'."\n" + .'> - The live type supports: rtmp, srt, and http-flv protocols.'."\n" + .'> - For the vod type, specify ApsaraVideo VOD media asset IDs.'."\n" + .'> - The url type supports: mp4 and http-flv protocols.', + 'type' => 'array', + 'items' => ['description' => 'Source stream URL address.'."\n" ."\n" - .'> If you set **TemplateType** to **h264**, **h264-nbhd**, **h265**, or **h265-nbhd**, the **Height**, **Width**, **FPS**, and **VideoBitrate** parameters are required.'."\n", - 'type' => 'string', + .'> - For the live type, only one complete live playback URL is supported.'."\n" + .'> - For the vod and url types, a maximum of 30 URLs can be specified.'."\n" + .'> - The live type supports: rtmp, srt, and http-flv protocols.'."\n" + .'> - For the vod type, specify ApsaraVideo VOD media asset IDs.'."\n" + .'> - The url type supports: mp4 and http-flv protocols.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434', 'title' => ''], 'required' => true, - 'example' => 'h264', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'Height', + 'name' => 'DstUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The height of the output video. Unit: pixel. Valid values:'."\n" - ."\n" - .'The value must comply with all the following rules:'."\n" - ."\n" - .'* **Height ≥ 100**: The height of the video is greater than or equal to 100 pixels.'."\n" - .'* **max(Height,Width) ≤ 2560**: The width or height of the video, whichever is greater, cannot exceed 2,560 pixels.'."\n" - .'* **min(Height,Width) ≤ 1440**: The width or height of the video, whichever is smaller, cannot exceed 1,440 pixels.'."\n" - ."\n" - .'> The resolution of the output video that is transcoded by using the H.265 Narrowband HD™ transcoding template cannot exceed 1280 × 720 pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '720', - ], + 'schema' => ['description' => 'Destination URL address for pushing the stream.'."\n" + ."\n" + .'> - The rtmp protocol is supported.'."\n" + .'> - Maximum length is 2000 characters.', 'type' => 'string', 'required' => true, 'example' => 'rtmp://pushtest.********.aliyunlive.com/pulltest493/pulltest-w434', 'title' => ''], ], [ - 'name' => 'Width', + 'name' => 'RepeatNumber', 'in' => 'query', 'schema' => [ - 'description' => 'The width of the output video. Unit: pixel. Valid values:'."\n" + 'description' => 'Number of times to repeat playback after the initial playback is complete. Valid values:'."\n" ."\n" - .'The value must comply with all the following rules:'."\n" + .'- 0 (default): no repeat playback.'."\n" + .'- -1: loop indefinitely.'."\n" + .'- Other positive integers: number of times to repeat playback after the initial playback is complete.'."\n" ."\n" - .'* **Width ≥ 100**: The width of the video is greater than or equal to 100 pixels.'."\n" - .'* **max(Height,Width) ≤ 2560**: The width or height of the video, whichever is greater, cannot exceed 2,560 pixels.'."\n" - .'* **min(Height,Width) ≤ 1440**: The width or height of the video, whichever is smaller, cannot exceed 1,440 pixels.'."\n" - ."\n" - .'> The resolution of the output video that is transcoded by using the H.265 Narrowband HD™ transcoding template cannot exceed 1280 × 720 pixels.'."\n", + .'> This parameter applies only to VOD or third-party video streams.', 'type' => 'integer', 'format' => 'int32', + 'default' => '0', + 'enum' => [], 'required' => false, - 'example' => '576', + 'example' => '0', + 'title' => '', ], ], [ - 'name' => 'FPS', + 'name' => 'FileIndex', 'in' => 'query', - 'schema' => [ - 'description' => 'The frame rate of the output video. Unit: frames per second (FPS). Valid values: **1 to 60**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '30', - ], + 'schema' => ['description' => 'File index. Starts playback from the nth file.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], ], [ - 'name' => 'VideoBitrate', + 'name' => 'Offset', 'in' => 'query', - 'schema' => [ - 'description' => 'The bitrate of the output video. Unit: Kbit/s. Valid values: **1 to 6000**.'."\n" - ."\n" - .'> The bitrate of the output video may not be the same as the value that you specify, but is as close to the value as possible, especially when the value is excessively large or small.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '720', - ], + 'schema' => ['description' => 'Start offset. The offset value from the beginning of the video file. Unit: seconds. Valid values: greater than 0.'."\n" + ."\n" + .'> - Indicates the position to start reading from, relative to the first frame (applies to the first video).'."\n" + .'> - This parameter applies only to VOD or third-party video streams.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], ], [ - 'name' => 'AudioBitrate', + 'name' => 'CallbackUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The bitrate of the output audio. Unit: Kbit/s. Valid values: **1 to 1000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '512', - ], + 'schema' => ['description' => 'HTTP callback URL. Default value: empty.'."\n" + ."\n" + .'> - The URL that receives task-related callbacks.'."\n" + .'> - Maximum length is 2000 characters.'."\n" + .'> - If this parameter is not specified, no task event callbacks will be sent.', 'type' => 'string', 'required' => false, 'example' => 'https://callback*****.com', 'title' => ''], ], [ - 'name' => 'Gop', + 'name' => 'RetryInterval', 'in' => 'query', - 'schema' => [ - 'description' => 'The Group of Picture (GOP) size of the video. Unit: frames or seconds.'."\n" - ."\n" - .'* Unit: frames. Valid values: **1 to 3000**.'."\n" - .'* Unit: seconds. Valid value: **1 to 20**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'Retry interval, in seconds. Valid values: [60, 300]. Default value: 60 seconds.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '300', 'minimum' => '60', 'default' => '60', 'required' => false, 'example' => '60', 'title' => ''], ], [ - 'name' => 'Profile', + 'name' => 'RetryCount', 'in' => 'query', - 'schema' => [ - 'description' => 'The video encoding profile. The profile defines a set of parameters that are used to encode a video. In most cases, a greater value indicates better image quality and higher resource consumption. Valid values:'."\n" - ."\n" - .'* **1**: baseline. This value is suitable for mobile devices.'."\n" - .'* **2**: main. This value is suitable for standard-definition devices.'."\n" - .'* **3**: high. This value is suitable for high-definition devices.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'Number of retries. Default value: 3.', 'type' => 'integer', 'format' => 'int32', 'default' => '3', 'required' => false, 'example' => '3', 'title' => ''], ], - [ - 'name' => 'AudioProfile', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The audio encoding profile. Valid values:'."\n" - ."\n" - .'* **aac_low**'."\n" - .'* **aac_he**'."\n" - .'* **aac_he_v2**'."\n" - .'* **aac_ld**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'aac_low', + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68*****'], + 'RetCode' => ['description' => 'Return code.'."\n" + ."\n" + .'> - "0" is returned under normal conditions.'."\n" + .'> - For abnormal conditions, refer to the error code list below.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'Description' => ['description' => 'Error description.', 'type' => 'string', 'example' => 'OK', 'title' => ''], + 'TaskId' => ['description' => 'Task ID.', 'type' => 'string', 'example' => 'fd245384-4067-4f91-9d75-9666a6bc9****', 'title' => ''], + ], + 'example' => '', ], ], - [ - 'name' => 'AudioCodec', - 'in' => 'query', - 'schema' => [ - 'description' => 'The audio encoding format. Valid values:'."\n" - ."\n" - .'* **AAC**'."\n" - .'* **MP3**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'AAC', - ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'InvalidParam.CodeIllegalDuration', 'errorMessage' => '%s.', 'description' => 'The value of start time should be less than the value of end time .'], + ['errorCode' => 'CodeInvalidAliUid', 'errorMessage' => 'This aliuid does not have a live domain name.', 'description' => 'This aluid does not have a live domain name.'], + ['errorCode' => 'CodeNotEnoughResource', 'errorMessage' => 'Exceeded configuration limits or insufficient resources.', 'description' => 'Exceeded configuration limits or insufficient resources'], + ['errorCode' => 'CodeConfigAlreadyExists', 'errorMessage' => 'Code Config Already Exists', 'description' => ''], ], - [ - 'name' => 'AudioRate', - 'in' => 'query', - 'schema' => [ - 'description' => 'The audio sampling rate. Valid values: **22050 to 96000**.'."\n" - ."\n\n" - .'>If you set AudioProfile to **aac_ld**, the audio sampling rate cannot exceed 44100.>', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '96000', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], - [ - 'name' => 'AudioChannelNum', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of sound channels. Valid values:'."\n" - ."\n" - .'* **1**: mono.'."\n" - .'* **2**: binaural.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68*****\\",\\n \\"RetCode\\": 0,\\n \\"Description\\": \\"OK\\",\\n \\"TaskId\\": \\"fd245384-4067-4f91-9d75-9666a6bc9****\\"\\n}","type":"json"}]', + 'title' => 'Create a pull-to-push task', + 'description' => '>Pull-to-push is a paid feature. Billing officially starts from 00:00 on December 5, 2025.>'."\n" + .'- For pricing details, see [Pull-to-push pricing](~~2997901~~).'."\n" + .'- Call this operation to create a pull-to-push task.'."\n" + .'- Supports creating live stream pull tasks and VOD pull tasks.'."\n" + .'- After a task is created, it starts running at the specified start time and automatically stops and is deleted at the specified end time.'."\n" + .'- The push destination URL specified in the task must not be used by other tasks. Otherwise, multiple tasks pushing to the same URL simultaneously will cause push failures.'."\n" + .'- Pull-to-push callback events include task running status change callbacks and task exit callbacks. For more information, see [Pull-to-push event callbacks](~~2846768~~).'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls will be throttled, which may affect your business. Please call this operation appropriately.', + 'changeSet' => [ + ['createdAt' => '2025-05-06T02:10:32.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2025-04-27T08:03:58.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLivePullToPush'], ], + ], + 'ramActions' => [ [ - 'name' => 'Lazy', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to use the load-on-demand mechanism for transcoding. Valid values: yes and no. Default value: **yes**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + ], + 'CreateLiveRealTimeLogDelivery' => [ + 'summary' => 'Configures real-time log delivery for a domain name.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'EncryptParameters', - 'in' => 'query', - 'schema' => [ - 'description' => 'Encryption configuration. In JSON format, the fields are explained as follows:'."\n" - .'- **EncryptType**: Encryption type. Fixed value is aliyun.'."\n" - .'- **KmsKeyID**: User KMS master key ID.'."\n" - .'- **KmsKeyExpireInterval**: Key rotation period. Range: 60~3600, unit: seconds.'."\n" - .'> If the EncryptParameters is configured, the KmsKeyID, KmsUID, and KmsKeyExpireInterval parameters cannot be empty', - 'type' => 'string', - 'required' => false, - 'example' => '{"EncryptType": "aliyun", "KmsKeyID":"afce5722-81d2-43c3-9930-7601da11****","KmsKeyExpireInterval":"3600"}', - ], + 'AK' => [], ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATURElive066BXV'], + ], + 'parameters' => [ [ - 'name' => 'ResWithSource', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The source-based resolution settings. This parameter takes precedence over other resolution settings. The following fields must be included:'."\n" - ."\n" - .'* **Type**: You can set this field to short, long, or screen. short specifies that the resolution of the output video is adapted to the shorter side, long specifies that the resolution of the output video is adapted to the longer side, and screen specifies that the output video has an adaptive resolution.'."\n" - ."\n" - .'* **Value**:'."\n" - ."\n" - .' * Set this field to 360, 480, 540, 720, or 1080 if the Type field is set to short.'."\n" - .' * Set this field to 640, 848, 960, 1280, or 1920 if the Type field is set to long.'."\n" - .' * Set this field to 640\\*360, 848\\*480, 960\\*540, 1280\\*720, or 1920\\*1080 if the Type field is set to screen.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"Type":"short","Value":"1080"}', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'FpsWithSource', + 'name' => 'Project', 'in' => 'query', - 'schema' => [ - 'description' => 'The source-based frame rate settings. This parameter takes precedence over other frame rate settings. The following fields must be included:'."\n" - ."\n" - .'* **UpLimit**: the maximum frame rate. Valid values: an integer from 1 to 60. The value must be greater than the minimum frame rate.'."\n" - .'* **LowerLimit**: the minimum frame rate. Valid values: an integer from 1 to 60. The value must be smaller than the maximum frame rate.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"UpLimit":60,"LowerLimit":1}', - ], + 'schema' => ['description' => 'The name of the Simple Log Service (SLS) project for real-time log delivery.', 'type' => 'string', 'required' => true, 'example' => 'test_project', 'title' => ''], ], [ - 'name' => 'BitrateWithSource', + 'name' => 'Logstore', 'in' => 'query', - 'schema' => [ - 'description' => 'The source-based bitrate settings. This parameter takes precedence over other bitrate settings. The following fields must be included:'."\n" - ."\n" - .'* **UpLimit**: the maximum bitrate limit. Valid values: an integer from 128 to 10000. The value must be greater than the minimum bitrate.'."\n" - .'* **LowerLimit int** : the minimum bitrate rate. Valid values: an integer from 128 to 10000. The value must be smaller than the maximum bitrate.'."\n" - .'* **Factor**: The ratio of the output bitrate to the source bitrate. Valid values: 0.1 to 1. The value is accurate to one decimal place. A value of 1 indicates that the output video has the same bitrate as the source video.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"UpLimit":2500,"LowerLimit":800,"Factor":1}', - ], + 'schema' => ['description' => 'The name of the Logstore in SLS.', 'type' => 'string', 'required' => true, 'example' => 'test_logstore', 'title' => ''], ], [ - 'name' => 'ExtWithSource', + 'name' => 'Region', 'in' => 'query', - 'schema' => [ - 'description' => 'Other source-based settings, including the following fields:'."\n" - ."\n" - .'* **KeyFrameOpen**: specifies whether to use the key frames of the source video. Valid values: yes or no.'."\n" - .'* **Copyts**: specifies whether to use the presentation time stamp (PTS) of the source video. Valid values: yes or no.'."\n" - .'* **SeiMode**: specifies whether to pass through supplemental enhancement information (SEI) messages. Valid values: 0, 1, and 2, where 0 specifies that no SEI messages are passed through, 1 specifies that part of SEI messages are passed through, and 2 specifies that all SEI messages are passed through.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"KeyFrameOpen":"yes","Copyts":"yes","SeiMode":1}', - ], + 'schema' => ['description' => 'The region where the SLS project is located.', 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou', 'title' => ''], ], [ - 'name' => 'DeInterlaced', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - ], + 'schema' => ['description' => 'The streaming domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -11175,351 +9352,295 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'F32C57AA-7BF8-49AE-A2CC-9F42390F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'TemplateLimit', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'LogstoreNotExist', 'errorMessage' => 'Logstore does not exist', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'AddCustomLiveStreamTranscode', - 'description' => 'This operation supports the following types of custom transcoding templates:'."\n" + 'title' => 'CreateLiveRealTimeLogDelivery', + 'description' => 'You can call this operation to create a real-time log delivery task for a streaming domain.'."\n" ."\n" - .'* h264: H.264'."\n" - .'* h264-nbhd: H.264 Narrowband HD™'."\n" - .'* h265: H.265'."\n" - .'* h265-nbhd: H.265 Narrowband HD™'."\n" - .'* audio: audio-only'."\n" + .'Currently, real-time log delivery is supported only for streaming domains. To deliver real-time logs for ingest domains, [submit a ticket](https://workorder.console.aliyun.com/console.htm#/ticket/add?productCode=live\\&commonQuestionId=4545\\&isSmart=true\\&iatraceid=1608439120675-2a5c48de0b84805313c708\\&channel=selfservice). Currently, real-time log delivery is supported only for streaming domains. To deliver real-time logs for ingest domains, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'The queries per second (QPS) limit for this operation is 6,000 calls per minute per user. API calls that exceed this limit are throttled. To prevent your business from being affected, call this operation within the limit.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddRtsLiveStreamTranscode' => [ - 'summary' => 'Creates a Real-Time Streaming (RTS) transcoding configuration for a streaming domain.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '## Special error codes'."\n" + ."\n" + .'|HTTP status code|Error code|Description|'."\n" + .'|---|---|---|'."\n" + .'|403|Unauthorized|The error message returned because you are not authorized to use Log Service.|'."\n" + .'|404|LogstoreNotExist|The error message returned because the specified Logstore is not found.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveRealTimeLogDelivery'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveRealTimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"F32C57AA-7BF8-49AE-A2CC-9F42390F****\\"\\n}","type":"json"}]', + ], + 'CreateLiveStreamMonitor' => [ + 'summary' => 'Creates a monitoring session.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeCode' => '106895', + 'abilityTreeNodes' => ['FEATUREliveSM955S'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'MonitorName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The name of the monitoring session.', 'type' => 'string', 'required' => true, 'example' => 'liveMonitor****', 'title' => ''], ], [ - 'name' => 'App', + 'name' => 'OutputTemplate', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. Value requirements:'."\n" - ."\n" - .'* The name can contain letters, digits, underscores (\\_), and hyphens (-).'."\n" - .'* We recommend that you specify a name that is more than three characters in length. The name must start with a letter or digit.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'aliyun-test', - ], + 'schema' => ['description' => 'The output template for the monitoring session. Valid values:'."\n" + ."\n" + .'- **lp\\_ld**: low definition.'."\n" + ."\n" + .'- **lp\\_sd**: standard definition.'."\n" + ."\n" + .'- **lp\\_hd**: high definition.'."\n" + ."\n" + .'- **lp\\_ud**: ultra-high definition.', 'type' => 'string', 'required' => true, 'example' => 'lp_ud', 'title' => ''], ], [ - 'name' => 'Template', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the transcoding template. Value requirements:'."\n" - ."\n" - .'* The name can contain letters, digits, underscores (\\_), and hyphens (-).'."\n" - .'* We recommend that you specify a name that is more than three characters in length. The name must start with a letter or digit.'."\n" - ."\n" - .'> The name cannot be the same as that of a default transcoding template.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ld', - ], + 'schema' => ['description' => 'The domain name to monitor.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'TemplateType', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the transcoding template.'."\n" - ."\n" - .'If you set this parameter to h264, h264-nbhd, or h264-origin, you must also specify the Height, Width, FPS, VideoBitrate, and DeleteBframes parameters. Valid values:'."\n" - ."\n" - .'* **h264**: H.264 standard transcoding template.'."\n" - .'* **h264-nbhd**: H.264 Narrowband HD™ transcoding template.'."\n" - .'* **h264-origin**: H.264 original quality template. If you use this type of template, the same transcoding parameters of the video source are retained by default.'."\n" - .'* **audio**: audio-only transcoding template. If you use this type of template, images are removed from the video source and an audio-only stream is generated. In addition, you must also specify the AudioBitrate parameter.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'h264', - ], + 'schema' => ['description' => 'The application name for the output stream of the monitoring session. You can specify a custom name. If you do not specify this parameter, **monitor** is used as the application name.', 'type' => 'string', 'required' => false, 'example' => 'monitor****', 'title' => ''], ], [ - 'name' => 'Height', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'The height of the output video. Unit: pixels.'."\n" - ."\n" - .'> This parameter is required if you set the TemplateType parameter to h264, h264-nbhd, or h264-origin.'."\n" - ."\n" - .'The value must comply with the following rules:****'."\n" - ."\n" - .'* **Height ≥ 100**: The height of the video is no less than 100 pixels.'."\n" - .'* **max(Height,Width) ≤ 2560**: The width or height of the video, whichever is greater, cannot exceed 2,560 pixels.'."\n" - .'* **min(Height,Width) ≤ 1440**: The width or height of the video, whichever is smaller, cannot exceed 1,440 pixels.'."\n" - ."\n" - .'For example, a resolution of 1560 × 1560 pixels is invalid.'."\n" - ."\n" - .'> An original quality template needs to retain the source information. Therefore, the video resolution cannot exceed 4K.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1280', - ], + 'schema' => ['description' => 'The name of the output stream for the monitoring session. If you do not specify this parameter, the system generates a random name.', 'type' => 'string', 'required' => false, 'example' => 'monitorStream****', 'title' => ''], ], [ - 'name' => 'Width', + 'name' => 'InputList', 'in' => 'query', - 'schema' => [ - 'description' => 'The width of the output video. Unit: pixels.'."\n" - ."\n" - .'> This parameter is required if you set the TemplateType parameter to h264, h264-nbhd, or h264-origin.'."\n" - ."\n" - .'The value must comply with the following rules:'."\n" - ."\n" - .'* **Width ≥ 100**: The width of the video is no less than 100 pixels.'."\n" - .'* **max(Height,Width) ≤ 2560**: The width or height of the video, whichever is greater, cannot exceed 2,560 pixels.'."\n" - .'* **min(Height,Width) ≤ 1440**: The width or height of the video, whichever is smaller, cannot exceed 1,440 pixels.'."\n" - ."\n" - .'For example, a resolution of 1560 × 1560 pixels is invalid.'."\n" - ."\n" - .'> An original quality template needs to retain the source information. Therefore, the video resolution cannot exceed 4K.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '720', - ], + 'schema' => ['description' => 'The list of input streams to monitor. For more information, see the **InputConfig** table below.', 'type' => 'string', 'required' => true, 'example' => 'InputConfig', 'title' => ''], ], [ - 'name' => 'FPS', + 'name' => 'MonitorConfig', 'in' => 'query', - 'schema' => [ - 'description' => 'The frame rate of the output video. Unit: FPS. Valid values: **1** to **60**.'."\n" - ."\n" - .'> This parameter is required if you set the TemplateType parameter to h264, h264-nbhd, or h264-origin.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '30', - ], + 'schema' => ['description' => 'The alert threshold settings for monitoring. The value must be a JSON string. For more information, see the MonitorConfig table below.', 'type' => 'string', 'required' => false, 'example' => '"{\\"fpsLowThres\\": 0.6,\\"brLowThres\\": 1.1,\\"eofDurationThresSec\\": 10}"', 'title' => ''], ], [ - 'name' => 'VideoBitrate', + 'name' => 'CallbackUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The bitrate of the output video. Unit: Kbit/s. Valid values: **1** to **6000**.'."\n" - ."\n" - .'> This parameter is required if you set the TemplateType parameter to h264, h264-nbhd, or h264-origin.'."\n" - ."\n" - .'> The bitrate of the output video is as close to the value that you specify as possible, but not exactly the same as the value, especially when the value is excessively large or small.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2000', - ], + 'schema' => ['description' => 'The webhook address. HTTP and HTTPS are supported.', 'type' => 'string', 'required' => false, 'example' => 'http://guide.aliyundoc.com/notify', 'title' => ''], ], [ - 'name' => 'AudioBitrate', + 'name' => 'DingTalkWebHookUrl', 'in' => 'query', + 'schema' => ['description' => 'The webhook URL of the DingTalk chatbot. To receive alert notifications, configure a DingTalk chatbot and enter its webhook URL, which can be in HTTP or HTTPS format. For more information, see [Custom robot access](https://open.dingtalk.com/document/robots/custom-robot-access).'."\n" + ."\n" + .'> Set the custom keyword for the DingTalk chatbot to "Alerting". Otherwise, you cannot receive messages.', 'type' => 'string', 'required' => false, 'example' => 'https://oapi.dingtalk.com/robot/send?access_token=7a7d404056eee1f2fd944ace9bcfc361dc6448583e1d3d3baa****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The bitrate of the output audio. Unit: Kbit/s. Valid values: **1** to **1000**.'."\n" - ."\n" - .'> This parameter is required if you set the TemplateType parameter to audio.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '128', + 'type' => 'object', + 'properties' => [ + 'MonitorId' => ['description' => 'The ID of the monitoring session.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'StreamMonitorExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The monitoring room already exists, please check and try again.'], + ], [ - 'name' => 'Gop', - 'in' => 'query', - 'schema' => [ - 'description' => 'The group of pictures (GOP) size of the output video. This parameter is used to specify the keyframe interval. Unit: seconds. Valid values: **1** to **3**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'CreateLiveStreamMonitor', + 'description' => 'Call this operation to create a monitoring session. Ensure that the required parameters are configured.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per second. If you exceed the limit, your API calls are throttled. This may affect your business. Plan your API calls accordingly.', + 'requestParamsDescription' => '**InputConfig**'."\n" + ."\n" + .'| Name | Type | Description | Example value |'."\n" + .'| ------------ | ------------ | -------------------------------------------------- | ------------------------------------- |'."\n" + .'| Index | Integer | The index. This parameter is used by the frontend. | 1 |'."\n" + .'| LayoutId | Integer | The layout ID. The value must start from 1. | 1 |'."\n" + .'| StreamName | String | The display name of the monitored stream. | monitorStream**** |'."\n" + .'| InputUrl | String | The URL of the input stream. | demo.aliyundoc.com |'."\n" + .'| LayoutConfig | LayoutConfig | The layout settings. | See the **LayoutConfig** table below. |'."\n" + .'| PlayConfig | PlayConfig | The playback configuration. | See the **PlayConfig** table below. |'."\n" + ."\n" + .'**LayoutConfig**'."\n" + ."\n" + .'| Name | Type | Description | Example value |'."\n" + .'| ------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |'."\n" + .'| FillMode | String | The fill mode. Set this parameter to `none` for the frontend. | none |'."\n" + .'| PositionRefer | String | The reference point for the element\'s position. Valid values: `topLeft` (top-left), `topRight` (top-right), `bottomLeft` (bottom-left), and `bottomRight` (bottom-right). | topLeft |'."\n" + .'| PositionNormalized | Float | The normalized position of the layer\'s padding area, in the `[x,y]` format. The values of x and y range from 0 to 1. For example, `[0.1,0.1]` indicates a horizontal offset of 10% and a vertical offset of 10% from the top-left corner. | \\[0.1, 0.1] |'."\n" + .'| SizeNormalized | Float | The normalized size of the layer, in the `[w,h]` format. The values of w and h range from 0 to 1. Both width and height are normalized. For example, `[0.2,0.3]` indicates a width of 20% and a height of 30%. | \\[0.2, 0.3] |'."\n" + ."\n" + .'**PlayConfig**'."\n" + ."\n" + .'| Name | Type | Description | Example value |'."\n" + .'| ---------- | ----- | ------------------------------------------------------------------------- | ------------- |'."\n" + .'| VolumeRate | Float | The volume. The value can be from 0 to 1, accurate to two decimal places. | 0.50 |'."\n" + ."\n" + .'**MonitorConfig**'."\n" + ."\n" + .'| Name | Type | Description | Example value |'."\n" + .'| ------------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |'."\n" + .'| fpsLowThres | Float | The alert threshold for the video frame rate. This threshold is a coefficient. The value can be from (0.0, 1.0]. The default value is 0.7. An alert is triggered if the video frame rate of the monitored stream is less than (the alert threshold × the original frame rate of the live stream). | 0.7 |'."\n" + .'| brHighThres | Float | The alert threshold for the audio and video bitrate. This threshold is a coefficient. The value can be from (0.0, 100]. The default value is 1.0. An alert is triggered if the audio and video bitrate of the monitored stream is greater than (the alert threshold × the original bitrate of the live stream). | 1.0 |'."\n" + .'| eofDurationThresSec | Float | The threshold for the duration of a stream interruption before an alert is triggered. Unit: seconds. The value can be from (0, 65535]. The default value is 0. - After a stream is interrupted, the connection remains active. The system uses an internal packet-receiving timeout of 5 seconds to detect the interruption. If you set this parameter to a value less than or equal to 5 seconds, the actual detection time is 5 seconds. If you set this parameter to a value greater than 5 seconds, the actual detection time is the value you set. The first 5 seconds of this period are for the internal timeout, and the rest is the time the system waits for the stream to recover. - If the stream recovers before the timeout period ends, no alert is triggered. If you change the monitoring address before the stream times out, the system stops detecting timeouts and triggering alerts for the previous stream. | 10 |', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-09-04T07:12:49.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveStreamMonitor'], ], + ], + 'ramActions' => [ [ - 'name' => 'DeleteBframes', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to remove B-frames during transcoding. Valid values:'."\n" - ."\n" - .'> This parameter is required if you set the TemplateType parameter to h264, h264-nbhd, or h264-origin.'."\n" - ."\n" - .'* **true**: removes B-frames.'."\n" - .'* **false**: retains B-frames. This is the default value.'."\n" - ."\n" - .'> If you do not specify this parameter, the default value **false** is used.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveStreamMonitor', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MonitorId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'CreateLiveStreamRecordIndexFiles' => [ + 'summary' => 'Creates an M3U8 manifest for a specified time range.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '106896', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'Opus', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to transcode audio to the Opus format to be compatible with native WebRTC. Valid values:'."\n" - ."\n" - .'* **true**: transcodes audio to the Opus format.'."\n" - .'* **false**: does not transcode audio to the Opus format.'."\n" - ."\n" - .'> If you do not specify this parameter, the default value **false** is used.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Profile', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The codec profile. The video codec profile determines how ApsaraVideo Live performs codec on the video. In normal cases, a greater value indicates a higher image quality and requires more codec resources. Valid values:'."\n" - ."\n" - .'* **1**: baseline, which is suitable for mobile devices.'."\n" - .'* **2**: main, which is suitable for standard-definition devices.'."\n" - .'* **3**: high, which is suitable for high-definition devices.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The AppName of the live stream. The template takes effect only when this name matches the AppName in the ingest URL. Use `*` to match all application names.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'AudioProfile', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The audio codec profile. Valid values:'."\n" - ."\n" - .'* **aac_low**'."\n" - .'* **aac_he**'."\n" - .'* **aac_he_v2**'."\n" - .'* **aac_ld**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'aac_low', - ], + 'schema' => ['description' => 'The stream name. The template takes effect only when this name matches the StreamName in the ingest URL. Use `*` to match all stream names.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'AudioCodec', + 'name' => 'OssEndpoint', 'in' => 'query', - 'schema' => [ - 'description' => 'The audio encoder. Valid values:'."\n" - ."\n" - .'* **aac**'."\n" - .'* **mp3**'."\n" - ."\n" - .'> If you want to use the Opus encoding format, set the Opus parameter to true.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'aac', - ], + 'schema' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'required' => true, 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], ], [ - 'name' => 'AudioRate', + 'name' => 'OssBucket', 'in' => 'query', - 'schema' => [ - 'description' => 'The audio sampling rate. Valid values: **22050 to 96000**. The value 44100 is commonly used. Unit: Hz.'."\n" - ."\n" - .'> If you set the AudioProfile parameter to aac_ld, the audio sampling rate cannot exceed 44,100 Hz.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '44100', - ], + 'schema' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'required' => true, 'example' => 'liveBucket****', 'title' => ''], ], [ - 'name' => 'AudioChannelNum', + 'name' => 'OssObject', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of sound channels. Valid values:'."\n" - ."\n" - .'* **1**: mono'."\n" - .'* **2**: stereo'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The path and file name for the recording file in OSS.', 'type' => 'string', 'required' => true, 'example' => '{AppName}/{StreamName}/{Date}/{Hour}/{Minute}_{Second}.m3u8', 'title' => ''], ], [ - 'name' => 'Lazy', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to trigger transcoding only when a stream is pulled. Valid values:'."\n" - ."\n" - .'* **yes**: triggers transcoding only when a stream is pulled.'."\n" - .'* **no**: triggers transcoding whenever a stream is ingested, no matter whether the stream is pulled.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'no', - ], + 'schema' => ['description' => 'The start time for the manifest. TS segments uploaded after this time will be included. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time for the manifest. TS segments uploaded before this time will be included. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTimeIncluded', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to include an extra TS segment to cover the EndTime. If set to true, the created manifest will fully cover the StartTime to EndTime range.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], ], 'responses' => [ @@ -11527,939 +9648,945 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '550439A3-F8EC-4CA2-BB62-B9DB43EEEF30', 'title' => ''], + 'RecordInfo' => [ + 'description' => 'The recording information.', + 'type' => 'object', + 'properties' => [ + 'RecordUrl' => ['description' => 'The URL of the manifest.', 'type' => 'string', 'example' => 'http://*****/atestObject.m3u8', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'CreateTime' => ['description' => 'The creation time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2016-05-27T09:40:56Z', 'title' => ''], + 'RecordId' => ['description' => 'The ID of the manifest.', 'type' => 'string', 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', 'title' => ''], + 'Height' => ['description' => 'The video height.', 'type' => 'integer', 'format' => 'int32', 'example' => '480', 'title' => ''], + 'OssBucket' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'DomainName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'OssObject' => ['description' => 'The path and file name of the recording file in OSS.', 'type' => 'string', 'example' => 'liveObject****.m3u8', 'title' => ''], + 'EndTime' => ['description' => 'The end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2015-12-01T07:40:00Z', 'title' => ''], + 'AppName' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'StartTime' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2015-12-01T07:36:00Z', 'title' => ''], + 'Width' => ['description' => 'The video width.', 'type' => 'integer', 'format' => 'int32', 'example' => '640', 'title' => ''], + 'Duration' => ['description' => 'The recording duration. Unit: seconds.', 'type' => 'number', 'format' => 'float', 'example' => '20', 'title' => ''], + 'OssEndpoint' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'TemplateLimit', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidStartTime.Mismatch', 'errorMessage' => 'Specified StartTime does not math the current time.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidParams', 'errorMessage' => 'invalid params', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidOssEndpoint.Malformed', 'errorMessage' => 'Specified OssEndpoint is malformed.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.Malformed', 'errorMessage' => 'Specified OssBucket is malformed.', 'description' => 'Invalid value of OSSBucket. Check whether the OSSBucket parameter that you specified is correct.'], + ['errorCode' => 'InvalidOssObject.Malformed', 'errorMessage' => 'Specified OssObject is malformed.', 'description' => ''], + ['errorCode' => 'InvalidStream.NotFound', 'errorMessage' => 'Speicified stream does not exist.', 'description' => ''], + ['errorCode' => 'InvalidConfig.Changed', 'errorMessage' => 'The oss bucket info between StartTime and EndTime has changed.', 'description' => 'ossbucket start end time has changed.'], + ['errorCode' => 'NoRecordContent', 'errorMessage' => 'The record content between StartTime and EndTime is empty.', 'description' => ''], + ['errorCode' => 'RecordContentExceed', 'errorMessage' => 'The record content between StartTime and EndTime is exceeded, please narrow down the range.', 'description' => ''], + ['errorCode' => 'OperationNotSupport', 'errorMessage' => 'The Operation is not support for flv/mp4 format or live to vod record.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'InvalidBucket.NotFound', 'errorMessage' => 'The bucket does not belong to you.', 'description' => 'the specified bucket does not belong to the current user.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\r\\n","errorExample":""}]', - 'title' => 'AddRtsLiveStreamTranscode', - 'description' => 'You can call this operation to add an RTS transcoding configuration. This operation supports four template types: h264, h264-nbhd, h264-origin, and audio.'."\n" + 'title' => 'CreateLiveStreamRecordIndexFiles', + 'description' => 'You must have Object Storage Service (OSS) configured. For more information, see [Configure OSS](~~84932~~). ApsaraVideo Live can record live streams in the M3U8 format and store TS segments in OSS. This API generates an M3U8 manifest by performing real-time clipping of recorded TS segments.'."\n" + ."\n" + .'> - To create a manifest, the live stream must have been active during the specified period. The operation will fail if the stream was not active or if the stream name is incorrect.'."\n" + .'>'."\n" + .'> - Make sure that the DomainName, AppName, and StreamName are correct. Otherwise, an InvalidStream.NotFound error is returned.'."\n" + .'>'."\n" + .'> - The time interval between StartTime and EndTime must be at least the duration of one TS segment (default is 30 seconds).'."\n" + .'>'."\n" + .'> - EndTime must be later than StartTime, and the interval cannot exceed 4 days.'."\n" + .'>'."\n" + .'> - TS segment information is retained in the system for only 3 months. You can only create M3U8 manifests for recordings within the last 3 months.'."\n" + .'>'."\n" + .'> - TS segment files are stored in OSS. Their retention period is determined by your OSS lifecycle rules. For details, see [Set lifecycle rules](~~31904~~).'."\n" + .'>'."\n" + .'> - Metadata for created M3U8 manifests is retained in the system for 6 months. You can only query information about manifests created within this period.'."\n" + .'>'."\n" + .'> - M3U8 manifests are stored in OSS. Their retention period is determined by your OSS lifecycle rules.'."\n" + .'>'."\n" + .'> - If the M3U8 manifest and TS files are stored in different buckets, the TS paths within the M3U8 manifest will be absolute HTTP URLs.'."\n" ."\n" .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).', + .'You can call this operation up to 45 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => '### Special error codes'."\n" - ."\n" - .'|Error code|Error message|HTTP status code|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|InvalidDomain.NotFound|The domain provided does not exist in our records.|404|The error message returned because the specified domain name does not exist or does not belong to the current account.|'."\n" - .'|IllegalOperation|Illegal domain operate is not permitted.|403|The error message returned because the current operation is not supported. For example, the specified domain name is not a domain name in ApsaraVideo Live.|'."\n" - .'|InvalidParameters|Invalid parameters.|400|The error message returned because one or more parameters are invalid. For example, the height or bitrate is too large.|'."\n" - .'|ConfigAlreadyExists|Config has already exist.|400|The error message returned because the configuration already exists.|'."\n" - .'|InternalError|The request processing has failed due to some unknown error.|500|The error message returned because an unknown error occurred.|', - ], - 'UpdateCustomLiveStreamTranscode' => [ - 'summary' => 'Updates a custom transcoding configuration.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-01-10T11:01:20.000Z', 'description' => 'Request parameters changed, Response parameters changed'], ], - 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '206837', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveStreamRecordIndexFiles'], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'Streamer domain name, unmodifiable.', - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], + 'ramActions' => [ [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the stream belongs, and it cannot be modified.', - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveStreamRecordIndexFiles', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"550439A3-F8EC-4CA2-BB62-B9DB43EEEF30\\",\\n \\"RecordInfo\\": {\\n \\"RecordUrl\\": \\"http://*****/atestObject.m3u8\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"CreateTime\\": \\"2016-05-27T09:40:56Z\\",\\n \\"RecordId\\": \\"c4d7f0a4-b506-43f9-8de3-07732c3f****\\",\\n \\"Height\\": 480,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssObject\\": \\"liveObject****.m3u8\\",\\n \\"EndTime\\": \\"2015-12-01T07:40:00Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"StartTime\\": \\"2015-12-01T07:36:00Z\\",\\n \\"Width\\": 640,\\n \\"Duration\\": 20,\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\"\\n }\\n}","type":"json"}]', + ], + 'CreateMessageApp' => [ + 'summary' => 'You can call CreateMessageApp to create an interactive message application.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Template', - 'in' => 'query', - 'schema' => [ - 'description' => 'Custom name of the transcoding template, not modifiable.', - 'type' => 'string', - 'required' => true, - 'example' => 'LiveCusTranscode****', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'create'], + 'parameters' => [ [ - 'name' => 'TemplateType', - 'in' => 'query', - 'schema' => [ - 'description' => 'Custom transcoding template type, unmodifiable.', - 'type' => 'string', - 'required' => true, - 'example' => 'h264', - ], + 'name' => 'AppName', + 'in' => 'formData', + 'schema' => ['description' => 'The name of the interactive message application. The length must be 2 to 16 characters.', 'type' => 'string', 'required' => true, 'example' => 'test', 'title' => ''], ], [ - 'name' => 'Height', - 'in' => 'query', + 'name' => 'AppConfig', + 'in' => 'formData', + 'style' => 'json', 'schema' => [ - 'description' => 'Video transcoding height. Unit: pixels. The value must meet the following three conditions:'."\n" - .' - Height ≥ 100: The height of the video must be no less than 100 pixels.'."\n" - .' - max(Height, Width) ≤ 2560: The larger of the video\'s width and height cannot exceed 2560.'."\n" - .' - min(Height, Width) ≤ 1440: The smaller of the video\'s width and height cannot exceed 1440.'."\n" - .' > For 265 narrowband HD templates, the maximum resolution is 1280×720.', - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'The application configuration.', + 'type' => 'object', 'required' => false, - 'example' => '720', + 'additionalProperties' => ['type' => 'string', 'description' => 'The configuration information of the application, which is user-defined content.', 'example' => '"appAlias":"localApp"', 'title' => ''], + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'Width', - 'in' => 'query', + 'name' => 'Extension', + 'in' => 'formData', + 'style' => 'json', 'schema' => [ - 'description' => 'Video transcoding width. Unit: pixels. The value must meet the following three conditions: '."\n" - .'- Width ≥ 100: The video width must be no less than 100 pixels. '."\n" - .'- max(Height, Width) ≤ 2560: The larger of the video\'s height and width cannot exceed 2560. '."\n" - .'- min(Height, Width) ≤ 1440: The smaller of the video\'s height and width cannot exceed 1440.'."\n" - .'> For 265 narrowband HD templates, the maximum resolution is 1280×720.', - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'The extension field.', + 'type' => 'object', 'required' => false, - 'example' => '576', + 'additionalProperties' => ['type' => 'string', 'description' => 'The extension field that is passed as needed for additional application properties to be recorded.', 'example' => 'test001', 'title' => ''], + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'FPS', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'Transcode video frame rate. Unit: FPS, value range: 1 to 60.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '30', + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'The returned result.', + 'type' => 'object', + 'properties' => [ + 'AppId' => ['title' => '', 'description' => 'The ID of the interactive message application.', 'type' => 'string', 'example' => 'VKL3***'], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], - [ - 'name' => 'VideoBitrate', - 'in' => 'query', - 'schema' => [ - 'description' => 'Video transcoding bitrate. Unit: kbps, value range: 1 to 6000.'."\n" - .'> The actual bitrate of the transcoded video will try to be as close as possible to the one you set, but it cannot be guaranteed to be exactly the same, especially when the set bitrate is too high or too low.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '720', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"AppId\\": \\"VKL3***\\"\\n }\\n}","type":"json"}]', + 'title' => 'CreateMessageApp', + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second (QPS) per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can call this API at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateMessageApp'], ], + ], + 'ramActions' => [ [ - 'name' => 'AudioBitrate', - 'in' => 'query', - 'schema' => [ - 'description' => 'Audio transcoding bitrate. Unit: kbps, value range: 1 to 1000.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '512', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + ], + 'CreateMessageGroup' => [ + 'summary' => 'Creates a message group.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Gop', - 'in' => 'query', - 'schema' => [ - 'description' => 'Video GOP (Group of Pictures), supports units in frames or seconds. When the unit is frames, the value should be {number}; when the unit is seconds, the value should be {number}s. '."\n" - .'- For frames, the range is 1 to 3000. '."\n" - .'- For seconds, the range is 1 to 20s.', - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'create'], + 'parameters' => [ [ - 'name' => 'Profile', - 'in' => 'query', - 'schema' => [ - 'description' => 'Encoding level. A set of specific encoding features supported by the video, generally, the higher the value, the better the picture quality, but also the higher the resources consumed for encoding and decoding. Values: '."\n" - .'- 1: baseline (suitable for mobile devices).'."\n" - .' - 2: main (suitable for standard resolution devices). '."\n" - .'- 3: high (suitable for high-resolution devices).', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the interactive messaging application.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'a494caec-***-695ef345db77'], ], [ - 'name' => 'AudioProfile', - 'in' => 'query', - 'schema' => [ - 'description' => 'Audio encoding. Values: '."\n" - .'- aac_low'."\n" - .' - aac_he'."\n" - .' - aac_he_v2 '."\n" - .'- aac_ld', - 'type' => 'string', - 'required' => false, - 'example' => 'aac_low', - ], + 'name' => 'CreatorId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the creator. The ID can be up to 36 characters in length and can contain only letters and digits.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'as****hs'], ], [ - 'name' => 'AudioCodec', - 'in' => 'query', + 'name' => 'Extension', + 'in' => 'formData', + 'style' => 'json', 'schema' => [ - 'description' => 'Audio encoding format. Values: '."\n" - .'- aac '."\n" - .'- mp3', - 'type' => 'string', + 'description' => 'The extended field.', + 'type' => 'object', 'required' => false, - 'example' => 'aac', + 'additionalProperties' => ['type' => 'string', 'description' => 'The extended field. Specify an additional parameter as needed.', 'title' => '', 'example' => 'test001'], + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'AudioRate', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'Audio sampling rate. Values: 22050, 32000, 44100, 48000, 96000. Unit: Hz.'."\n" - .'> If **AudioProfile** is set to **aac_ld**, the sampling rate must not exceed 44100.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '96000', + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'The returned result.', + 'type' => 'object', + 'properties' => [ + 'Extension' => ['description' => 'The extended field.', 'type' => 'object', 'title' => '', 'example' => 'test001'], + 'GroupId' => ['title' => '', 'description' => 'The ID of the message group.', 'type' => 'string', 'example' => 'AE35-****-T95F'], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Extension\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"GroupId\\": \\"AE35-****-T95F\\"\\n }\\n}","type":"json"}]', + 'title' => 'CreateMessageGroup', + 'description' => '## QPS limits'."\n" + ."\n" + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. Consider this limit when calling this operation. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2022-09-08T15:22:52.000Z', 'description' => 'OpenAPI offline'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateMessageGroup'], + ], + ], + 'ramActions' => [ [ - 'name' => 'AudioChannelNum', - 'in' => 'query', - 'schema' => [ - 'description' => 'Number of audio channels. Values: '."\n" - .'- 1: Mono. '."\n" - .'- 2: Stereo.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + ], + 'CreateMixStream' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Lazy', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable triggered transcoding. Valid values:'."\n" - ."\n" - .'* **yes**: enables triggered transcoding.'."\n" - .'* **no**: disables triggered transcoding.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', - ], + 'AK' => [], ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveI16NIW'], + ], + 'parameters' => [ [ - 'name' => 'EncryptParameters', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'Encryption configuration. JSON format, with the following fields: '."\n" - .'- EncryptType: Type of encryption. Fixed value is aliyun.'."\n" - .' - KmsKeyID: User\'s KMS master key ID. '."\n" - .'- KmsKeyExpireInterval: Key rotation period. Value range: 60~3600, unit: seconds.'."\n" - .'> When using DRM encryption, KmsKeyID cannot be modified.', - 'type' => 'string', - 'required' => false, - 'example' => '{"EncryptType": "aliyun", "KmsKeyID":"afce5722-81d2-43c3-9930-7601da11****","KmsKeyExpireInterval":"3600"}', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'ResWithSource', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The source-based resolution settings. This parameter takes precedence over other resolution settings. The following fields must be included:'."\n" - ."\n" - .'* **Type**: You can set this field to short, long, or screen. short specifies that the resolution of the output video is adapted to the shorter side, long specifies that the resolution of the output video is adapted to the longer side, and screen specifies that the output video has an adaptive resolution.'."\n" - ."\n" - .'* **Value**:'."\n" - ."\n" - .' * Set this field to 360, 480, 540, 720, or 1080 if the Type field is set to short.'."\n" - .' * Set this field to 640, 848, 960, 1280, or 1920 if the Type field is set to long.'."\n" - .' * Set this field to 640\\*360, 848\\*480, 960\\*540, 1280\\*720, or 1920\\*1080 if the Type field is set to screen.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{\\"Type\\":\\"short\\",\\"Value\\":\\"1080\\"}', - ], + 'schema' => ['description' => 'The primary streaming domain.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Currently, only domain names in the China (Shanghai) and China (Beijing) regions are supported.'."\n" + ."\n" + .'', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'example.com'], ], [ - 'name' => 'FpsWithSource', + 'name' => 'LayoutId', 'in' => 'query', - 'schema' => [ - 'description' => 'The source-based frame rate settings. This parameter takes precedence over other frame rate settings. The following fields must be included:'."\n" - ."\n" - .'* **UpLimit**: the maximum frame rate. Set this field to an integer from 1 to 60. The value must be greater than the minimum frame rate.'."\n" - .'* **LowerLimit**: the minimum frame rate. Set this field to an integer from 1 to 60. The value must be smaller than the maximum frame rate.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{\\"UpLimit\\":60,\\"LowerLimit\\":1}', - ], + 'schema' => ['description' => 'The layout ID. Valid values:'."\n" + ."\n" + .'- **MixStreamLayout-1-1**'."\n" + .'- **MixStreamLayout-2-1**'."\n" + .'- **MixStreamLayout-2-2**'."\n" + .'- **MixStreamLayout-2-3**'."\n" + .'- **MixStreamLayout-3-1**'."\n" + .'- **MixStreamLayout-3-2**'."\n" + .'- **MixStreamLayout-4-1**'."\n" + .'- **USERDEFINED** (If you do not use a preset layout, set this parameter to **USERDEFINED**.)'."\n" + ."\n" + .'> For more information, see [Preset stream mix layouts](~~199359~~).', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'MixStreamLayout-1-1'], ], [ - 'name' => 'BitrateWithSource', + 'name' => 'InputStreamList', 'in' => 'query', - 'schema' => [ - 'description' => 'The source-based bitrate settings. This parameter takes precedence over other bitrate settings. The following fields must be included:'."\n" - ."\n" - .'* **UpLimit**: the maximum bitrate. Set this field to an integer from 128 to 10000. The value must be greater than the minimum bitrate.'."\n" - .'* **LowerLimit**: the minimum bitrate. Set this field to an integer from 128 to 10000. The value must be smaller than the maximum bitrate.'."\n" - .'* **Factor**: the ratio of the output bitrate to the source bitrate. Valid values: 0.1 to 1. The value is accurate to one decimal place. A value of 1 indicates that the output video has the same bitrate as the source video.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{\\"UpLimit\\":2500,\\"LowerLimit\\":800,\\"Factor\\":1}', - ], + 'schema' => ['description' => 'The list of input streams. This is a JSON array.'."\n" + ."\n" + .'For more information, see **InputStreamConfig** below.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => '[{"LayoutChildId":1,"ResourceType":"live","ResourceValue":"rtmp://example.net/live/f2139ec2b8d6a191068cd****ea9064d?auth_key=1600947017-0-0-0b5645fe35d21a65ab92b394bd4d****","LayoutConfig":{"FillMode":"fit","PositionRefer":"topLeft","FillPositionNormalized":[0,0],"FillSizeNormalized":[1,1]}}]'], ], [ - 'name' => 'ExtWithSource', + 'name' => 'OutputConfig', 'in' => 'query', - 'schema' => [ - 'description' => 'Other source-based settings. The following fields are included:'."\n" - ."\n" - .'* **KeyFrameOpen**: Valid values: yes and no.'."\n" - .'* **Copyts**: Valid values: yes and no.'."\n" - .'* **SeiMode**: Valid values: 0, 1, and 2. 0 specifies that no supplemental enhancement information (SEI) messages are passed through, 1 specifies that part of SEI messages are passed through, and 2 specifies that all SEI messages are passed through.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{\\"KeyFrameOpen\\":\\"yes\\",\\"Copyts\\":\\"yes\\",\\"SeiMode\\":1}', - ], + 'schema' => ['description' => 'The output configuration. This is a JSON string.'."\n" + ."\n" + .'For more information, see **OutputConfig** below.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => '{"AppName":"liveApp****","StreamName":"9a78fb3f5c508be0122746f677a3****","MixStreamTemplate":"lp_hd_v","ExpireDuration":"86400"}'], ], [ - 'name' => 'DeInterlaced', + 'name' => 'CallbackConfig', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - ], + 'schema' => ['description' => 'The webhook address. This is a JSON array. When an event occurs, the live service sends an HTTP POST request to this address. The request body contains the event details.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => '{"CallbackUrl":"http://aliyundoc.com"}'], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'Request ID.', - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'MixStreamId' => ['description' => 'The ID of the stream mix task. Use this ID to query or delete the task.', 'type' => 'string', 'title' => '', 'example' => '5b2a046e-74d7-385e-253f-8a5b87e4****'], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '0D715397-2E66-4AE1-694h-C546628AD145'], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'TemplateLimit', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'MixStreamAlreadyExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The confluence task already exists, please check and try again.'], + ['errorCode' => 'MixStreamNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The confluous task does not exist. Please check and try again.'], + ['errorCode' => 'UserQuotaExceed', 'errorMessage' => 'Quota exceeded: %s.', 'description' => 'Quota exceeded: %s.'], + ], + [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'UpdateCustomLiveStreamTranscode', - 'description' => 'This operation supports the following types of custom transcoding templates:'."\n" + 'title' => 'CreateMixStream', + 'summary' => 'Creates a stream mixing task.', + 'description' => '>'."\n" ."\n" - .'* h264: custom H.264 standard transcoding.'."\n" - .'* h264-nbhd: custom H.264 Narrowband HD™ transcoding.'."\n" - .'* h265: custom H.265 standard transcoding.'."\n" - .'* h265-nbhd: custom H.265 Narrowband HD™ transcoding.'."\n" - .'* audio: audio-only transcoding.'."\n" + .'Cloud stream mixing is a paid feature. This feature is in public preview and is currently free of charge. Standard fees will apply after the public preview period. The end date of the public preview will be announced at a later date.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .''."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account.'."\n", - 'translator' => 'machine', - ], - 'UpdateLiveStreamTranscode' => [ - 'summary' => 'Updates a default transcoding configuration.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation to create a stream mixing task. This operation supports both preset and custom layouts.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'A single user can make up to 10 queries per second (QPS). Calls that exceed this limit are throttled. Throttling may affect your business operations. We recommend that you plan your calls accordingly.', + 'requestParamsDescription' => '### InputStreamConfig'."\n" + ."\n" + .'| Name | Type | Description |'."\n" + .'| ------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |'."\n" + .'| ResourceType | String | The resource type. **live**: A live streaming URL. **url**: A file streaming URL. |'."\n" + .'| ResourceValue | String | The resource URL. If ResourceType is set to live, this is a live streaming URL. The URL can use the RTMP, FLV, or HLS protocol. The Alibaba Real-Time Communication (ARTC) protocol is not supported. If ResourceType is set to url, this is a file streaming URL. |'."\n" + .'| LayoutChildId | String | The ID of the layout pane. This ID also determines the stacking order (z-order) of the streams. |'."\n" + .'| LayoutConfig | LayoutConfig\\[] | A JSON array that specifies the position, fill mode, and other layout information. This parameter is not required if you use a preset layout. If you set this parameter, the preset layout information corresponding to LayoutChildId is ignored. |'."\n" + ."\n" + .'### LayoutConfig'."\n" + ."\n" + .'| Name | Type | Required | Description |'."\n" + .'| ---------------------- | ------------------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| FillSizeNormalized | JSON array of floating-point numbers | Yes | The size of the area to fill for this layer element. \\[w,h]: The values of w and h range from 0 to 1. The width and height are normalized. For example, \\[0.2,0.3] indicates that the width is 20% of the total width and the height is 30% of the total height. |'."\n" + .'| FillPositionNormalized | Array of floating-point numbers | Yes | The normalized position of the fill area for this layer element. \\[x,y]: The values of x and y range from 0 to 1. For example, \\[0.1,0.1] indicates a horizontal offset of 10% and a vertical offset of 10% from the top-left corner. |'."\n" + .'| PositionRefer | String | No | The reference point for the element\'s position coordinates. Set this parameter to topLeft. This value indicates the top-left corner. |'."\n" + .'| FillMode | String | No | The fill mode for the element. **none**: No fill. **fit**: Scales the stream to fit the pane. The longest edge reaches the border, and black bars may be added to the shorter edge. **fill**: Scales the stream proportionally based on the larger of the width or height ratio, and then crops the stream to fill the entire pane. Set this parameter to fit. |'."\n" + ."\n" + .'### OutputConfig'."\n" + ."\n" + .'| Name | Type | Required | Description |'."\n" + .'| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |'."\n" + .'| AppName | String | Yes | The name of the output application. Special characters such as # and ? are not supported. |'."\n" + .'| StreamName | String | Yes | The name of the output stream. Special characters such as # and ? are not supported. |'."\n" + .'| MixStreamTemplate | String | Yes | The ID of the output stream mix template. Pass only the template ID, such as lp\\_ld. Valid values: lp\\_ld (resolution: 640 × 360), lp\\_sd (resolution: 854 × 480), lp\\_hd (resolution: 1280 × 720), lp\\_ud (resolution: 1920 × 1080), lp\\_ld\\_v (resolution: 640 × 360), lp\\_sd\\_v (resolution: 854 × 480), lp\\_hd\\_v (resolution: 1280 × 720), lp\\_ud\\_v (resolution: 1920 × 1080) , lp\\_ld\\_v\\_optm (resolution: 640 × 360), lp\\_sd\\_v\\_optm (resolution: 854 × 480), lp\\_hd\\_v\\_optm (resolution: 1280 × 720), lp\\_ud\\_v\\_optm (resolution: 1920 × 1080). \\_v indicates a vertical screen template. \\_optm indicates a low-latency template. The values in parentheses indicate the resolution of the template. |'."\n" + .'| ExpireDuration | Long | No | The expiration time of the task. Unit: seconds. Valid values: **1** to **31536000** (one year). If you do not set this parameter, the task expires and is deleted after seven days. |', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Example callbacks for stream mixing'."\n" + ."\n" + .'* The stream mixing task is created.'."\n" + ."\n" + .''."\n" + ."\n" + .' {'."\n" + .' "EventMessage":'."\n" + .' {'."\n" + .' "StreamName":"liveStream****",// The name of the output stream.'."\n" + .' "Message":"",'."\n" + .' "DomainName":"example.com",'."\n" + .' "MixstreamId":"5b2a046e-74d7-385e-253f-8a5b87e4****",// The ID of the stream mixing task.'."\n" + .' "Code":"Success",'."\n" + .' "AppName":"liveApp****"// The name of the application that generates the output stream.'."\n" + .' },'."\n" + .' "EventType":"MixstreamStartCallback",'."\n" + .' "MessageMd5":"7c7b1d9480ae892lkasjdflkasjbd****",'."\n" + .' "CasterId":""}'."\n" + ."\n" + .'* The stream mixing task failed to be created.'."\n" + ."\n" + .''."\n" + ."\n" + .' {"EventMessage":'."\n" + .' {'."\n" + .' "StreamName":"liveStream****",'."\n" + .' "Message":"MixStreamAlreadyExist",'."\n" + .' "DomainName":"example.com",'."\n" + .' "Code":"Error",'."\n" + .' "AppName":"liveApp****"'."\n" + .' },'."\n" + .' "EventType":"MixstreamStartCallback",'."\n" + .' "MessageMd5":"7c7b1d9480ae892lkasjdflkasjbd****",'."\n" + .' "CasterId":""'."\n" + .' }'."\n" + ."\n" + .'### SDK example'."\n" + ."\n" + .'For more information, see [Sample code of stream mixing](https://help.aliyun.com/document_detail/199362.html).'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateMixStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MixStreamId\\": \\"5b2a046e-74d7-385e-253f-8a5b87e4****\\",\\n \\"RequestId\\": \\"0D715397-2E66-4AE1-694h-C546628AD145\\"\\n}","type":"json"}]', + ], + 'CreateRTCWhipStreamAddress' => [ + 'summary' => 'Creates a WHIP ingest URL for an ARTC channel.', + 'path' => '', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '206836', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - 'FEATUREliveHVN9B2', - ], + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'ClientToken', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'allowEmptyValue' => false, + 'schema' => ['description' => 'An idempotency token used to prevent duplicate requests. It is not recommended to use this parameter for this API.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '58E73333-xxxx-xxxx-xxxx'], ], [ - 'name' => 'Domain', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'Streamer domain name, not modifiable.', - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The application ID.', 'type' => 'string', 'required' => true, 'maxLength' => 64, 'minLength' => 1, 'pattern' => '^[0-9a-zA-Z_-]+$', 'title' => '', 'example' => '6a0**6dcc-xxxx-xxxx-xxxx-e**e3exxxxxx '], ], [ - 'name' => 'App', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the stream belongs, and it cannot be modified.', - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The ID of the channel to join.', 'type' => 'string', 'required' => true, 'maxLength' => 64, 'minLength' => 1, 'pattern' => '^[0-9a-zA-Z_-]+$', 'title' => '', 'example' => ' ch00000****001'], ], [ - 'name' => 'Template', + 'name' => 'UserId', 'in' => 'query', - 'schema' => [ - 'description' => 'Transcoding template, not modifiable.', - 'type' => 'string', - 'required' => true, - 'example' => 'lsd', - ], + 'schema' => ['description' => 'The user ID. The user ID must be unique among all users in the channel.', 'type' => 'string', 'required' => true, 'maxLength' => 64, 'minLength' => 1, 'pattern' => '^[0-9a-zA-Z_-]+$', 'title' => '', 'example' => 'zb0000****0001'], ], [ - 'name' => 'EncryptParameters', + 'name' => 'DisplayName', 'in' => 'query', - 'schema' => [ - 'description' => 'The encryption configuration. The value is a JSON string. The following fields are included in the syntax:'."\n" - ."\n" - .'* EncryptType: the type of the encryption. Set the value to **aliyun**.'."\n" - .'* KmsKeyID: the ID of the CMK in KMS.'."\n" - .'* KmsKeyExpireInterval: the validity period of the CMK. Valid values: **60 to 3600**. Unit: seconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"EncryptType": "aliyun", "KmsKeyID":"afce5722-81d2-43c3-9930-7601da11****","KmsKeyExpireInterval":"3600"}', - ], + 'schema' => ['description' => 'The display name of the user in the channel.'."\n" + ."\n" + .'> Supports characters such as Chinese. It is recommended to keep the name under 32 bytes in size.', 'type' => 'string', 'example' => 'John', 'required' => true, 'maxLength' => 40, 'minLength' => 1, 'title' => ''], ], [ - 'name' => 'Lazy', + 'name' => 'ExpireTime', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable triggered transcoding. Valid values:'."\n" - ."\n" - .'* **yes**: enables triggered transcoding.'."\n" - .'* **no**: disables triggered transcoding.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', - 'default' => 'yes', - ], + 'schema' => ['description' => 'The validity period of the ingest URL. Unit: seconds. The default value is 43200.'."\n" + ."\n" + .'> If an active stream exceeds this duration, it will not be affected. However, attempting to start a *new* stream with the expired URL will fail.', 'type' => 'integer', 'format' => 'int32', 'example' => '43200', 'default' => '43200', 'required' => false, 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'Request ID.', - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '58E7**D4-xxxx-xxxx-xxxx-6B5**6Cxxxxx'], + 'WhipAddress' => ['description' => 'The WHIP URL.', 'type' => 'string', 'title' => '', 'example' => 'https://xxxxxx.media-sh.xxxxx.com/xxxxxxxxxxxx/3723a3xxxxxxxxx223c606b***5f7a2bc7c56ea5cdd0xxxxe?auth_key=17495xxxxx-xxxx-0-f013003067c78c4053f9cd0xxxxxxx&qqzr=H4sIAAAAAAAC_6pWSlayUkrOMxxxxxxrPyCxQ0lFKQTCLlKyUjM2Nj**NDQ1TEy2Mjc3xxxxxxxxxxqRYAAAD__xxxxx__xxxxxxxx'], ], + 'description' => 'Schema of Response', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'UpdateLiveStreamTranscode', - 'description' => 'You must obtain the customer master key (CMK) in Key Management Service (KMS) before you call this operation to update a transcoding configuration. Only standard transcoding templates and Narrowband HD™ transcoding templates are supported for this operation.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'CreateRTCWhipStreamAddress', + 'description' => '## Use with OBS Studio'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'1. Call the CreateRTCWhipStreamAddress API to generate a WHIP ingest URL (WhipAddress) for an ARTC channel.'."\n" ."\n" - .'You can call this operation up to 30 times per second per account.'."\n", - 'translator' => 'machine', - ], - 'UpdateRtsLiveStreamTranscode' => [ - 'summary' => 'Updates a custom Real-Time Streaming (RTS) transcoding configuration.', - 'methods' => [ - 'post', - 'get', + .'2. Use OBS Studio to ingest streams over the WHIP protocol.'."\n" + ."\n" + .' - Launch OBS Studio.'."\n" + ."\n" + .' - IFrom the menu bar, select **File** > **Settings**.'."\n" + ."\n" + .' - On the Settings page, select **Stream**, configure the following information, and then click **OK**.'."\n" + ."\n" + .' | Parameter | Description |'."\n" + .' | ------------ | ---------------------------------------------------- |'."\n" + .' | Service | Select **WHIP**. |'."\n" + .' | Server | Use the `WhipAddress` URL generated by the API call. |'."\n" + .' | Bearer Token | Leave this field empty. |'."\n" + ."\n" + .' ![](https://img.alicdn.com/imgextra/i3/O1CN01xaAEK61umh8yP8NFe_!!6000000006080-2-tps-1746-685.png)'."\n" + ."\n" + .'3. Once you start streaming from OBS, other users can join the same ARTC channel to watch the stream.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 40 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CreateRTCWhipStreamAddress', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"58E7**D4-xxxx-xxxx-xxxx-6B5**6Cxxxxx\\",\\n \\"WhipAddress\\": \\"https://xxxxxx.media-sh.xxxxx.com/xxxxxxxxxxxx/3723a3xxxxxxxxx223c606b***5f7a2bc7c56ea5cdd0xxxxe?auth_key=17495xxxxx-xxxx-0-f013003067c78c4053f9cd0xxxxxxx&qqzr=H4sIAAAAAAAC_6pWSlayUkrOMxxxxxxrPyCxQ0lFKQTCLlKyUjM2Nj**NDQ1TEy2Mjc3xxxxxxxxxxqRYAAAD__xxxxx__xxxxxxxx\\"\\n}","type":"json"}]', + 'translator' => 'manual', + ], + 'CreateRoomRealTimeStreamAddress' => [ + 'summary' => 'Creates a Real-Time Messaging Protocol (RTMP) ingest URL for a channel.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeCode' => '198619', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the ARTC application. You can specify only one application ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain, which cannot be modified.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the channel. You can specify only one ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'yourChannelId'], ], [ - 'name' => 'App', + 'name' => 'UserId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs, which cannot be modified.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'aliyun-test', - ], + 'schema' => ['description' => 'The ID of the user who ingests the stream over RTMP. The user ID must be different from IDs of other users in the channel. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'maxLength' => 64, 'minLength' => 1, 'title' => '', 'example' => 'rtmp-uuid'], ], [ - 'name' => 'Template', + 'name' => 'DisplayName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the custom transcoding template, which cannot be modified.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ld', - ], + 'schema' => ['description' => 'The name of the RTMP stream. The name can be up to 40 characters in length.', 'type' => 'string', 'required' => true, 'maxLength' => 40, 'minLength' => 1, 'title' => '', 'example' => 'rtmp-dname'], ], [ - 'name' => 'TemplateType', + 'name' => 'ExpireTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the custom transcoding template, which cannot be modified.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'h264', - ], + 'schema' => ['description' => 'The validity period of the RTMP URL. Unit: seconds. The default value is 36,000 seconds, which is 10 hours.', 'type' => 'integer', 'format' => 'int32', 'example' => '43200', 'default' => '43200', 'title' => '', 'required' => false], ], - [ - 'name' => 'Height', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The height of the output video. Unit: pixel.'."\n" - ."\n" - .'The value must comply with the following rules:'."\n" - ."\n" - .'* Height ≥ 100: The height of the video is at least 100 pixels.'."\n" - .'* max(Height,Width) ≤ 2560: The larger of the width and height of the video cannot exceed 2,560 pixels.'."\n" - .'* min(Height,Width) ≤ 1440: The smaller of the width and height of the video cannot exceed 1,440 pixels. For example, a resolution of 1560 × 1560 pixels is invalid.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter is required when the TemplateType parameter is set to h264, h264-nbhd, or h264-origin.'."\n" - ."\n" - .'* If the TemplateType parameter is set to h264-origin, the highest resolution supported is 4K.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1280', + 'title' => 'Schema of Response', + 'description' => 'The response parameters.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'F8DB7E25-6A35-161A-AA41-B7A658AF****'], + 'RtmpAddress' => ['description' => 'The RTMP ingest URL.', 'type' => 'string', 'example' => 'rtmp://rtcpush****.rtmp.alivecdn.com/rtcdev****/H4sIAAAA****_6pWSlayUipJLS5R0lEqRTBTEMwiJSul1CRTMxNjsyQTM****-PUZCMz8yTDZLNkAwMDA6M0I0ulWgA****__wEAAP__a_e7YkkAAAA?auth_key=1700492701-6e33-0-c6d7e3a93dc2dbe3af42f6259ccd****', 'title' => ''], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], [ - 'name' => 'Width', - 'in' => 'query', - 'schema' => [ - 'description' => 'The width of the output video. Unit: pixel.'."\n" - ."\n" - .'The value must comply with the following rules:'."\n" - ."\n" - .'* Width ≥ 100: The width of the video is at least 100 pixels.'."\n" - .'* max(Height,Width) ≤ 2560: The larger of the width and height of the video cannot exceed 2,560 pixels.'."\n" - .'* min(Height,Width) ≤ 1440: The smaller of the width and height of the video cannot exceed 1,440 pixels. For example, a resolution of 1560 × 1560 pixels is invalid.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter is required when the TemplateType parameter is set to h264, h264-nbhd, or h264-origin.'."\n" - ."\n" - .'* If the TemplateType parameter is set to h264-origin, the highest resolution supported is 4K.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '720', + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'CreateRoomRealTimeStreamAddress', + 'description' => '### [](#)Usage notes'."\n" + ."\n" + .'To use the interactive streaming feature, you must use ApsaraVideo Real-time Communication (ARTC) SDK to join a channel and ingest streams over Real-Time Communication (RTC). In specific scenarios, you can ingest streams over Real-Time Messaging Protocol (RTMP) by using tools such as Open Broadcaster Software (OBS). Then, ApsaraVideo Live automatically converts the RTMP streams to RTC streams and distributes the RTC streams to viewers. You can call this operation to generate an ingest URL in the RTMP format. After you ingest RTMP streams, ApsaraVideo Live automatically converts the streams to RTC streams. Do not call this operation if you require only regular live streaming. To quickly ingest RTMP streams and start live streaming, see [Get started with ApsaraVideo Live](~~198676~~).'."\n" + ."\n" + .'## [](#)Procedure'."\n" + ."\n" + .'1. Call this operation to generate an ingest URL in the RTMP format.'."\n" + ."\n" + .'2. Ingest a stream by using the ingest URL. Other users in the channel can watch the stream.'."\n" + ."\n" + .'3. Stop ingesting the stream. Other users in the channel see that the user who ingested the stream leaves the channel.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- You can repeat Steps 2 and 3 within the validity period of the ingest URL.'."\n" + ."\n" + .'- We recommend that you call the [DescribeChannelParticipants](~~610801~~) operation to query online users in the channel at regular intervals. This way, you can check whether the user who ingests the stream is still in the channel. If the user who ingests the stream is not in the channel, the stream may be interrupted. In this case, we recommend that you stop ingesting the stream and perform Step 2.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateRoomRealTimeStreamAddress'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CreateRoomRealTimeStreamAddress', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"F8DB7E25-6A35-161A-AA41-B7A658AF****\\",\\n \\"RtmpAddress\\": \\"rtmp://rtcpush****.rtmp.alivecdn.com/rtcdev****/H4sIAAAA****_6pWSlayUipJLS5R0lEqRTBTEMwiJSul1CRTMxNjsyQTM****-PUZCMz8yTDZLNkAwMDA6M0I0ulWgA****__wEAAP__a_e7YkkAAAA?auth_key=1700492701-6e33-0-c6d7e3a93dc2dbe3af42f6259ccd****\\"\\n}","type":"json"}]', + ], + 'CreateRtcAsrTask' => [ + 'summary' => 'Creates a real-time subtitle task to transcribe an audio stream into text in real time.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'FPS', + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '219527', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR', 'FEATUREliveY7SMJ1'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The frame rate of the output video. Unit: frames per second (FPS). Valid values: 1 to 60.'."\n" - ."\n" - .'> This parameter is required when the TemplateType parameter is set to h264, h264-nbhd, or h264-origin.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '30', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'VideoBitrate', + 'name' => 'Mode', 'in' => 'query', 'schema' => [ - 'description' => 'The bitrate of the output video. Unit: Kbit/s. Valid values: 1 to 6000.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter is required when the TemplateType parameter is set to h264, h264-nbhd, or h264-origin.'."\n" - ."\n" - .'* The bitrate of the output video is as close to the value that you specify as possible, but not the same as the value, especially when the value is excessively large or small.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2000', + 'description' => 'The stream mode. Valid values: live and rtc. The value live indicates a standard live stream such as RTMP.', + 'enumValueTitles' => ['rtc' => 'rtc mode.', 'live' => 'live mode.'], + 'type' => 'string', + 'required' => true, + 'enum' => ['rtc', 'live'], + 'example' => 'live', + 'title' => '', ], ], [ - 'name' => 'AudioBitrate', + 'name' => 'SDKAppID', 'in' => 'query', - 'schema' => [ - 'description' => 'The bitrate of the output audio. Unit: Kbit/s. Valid values: 1 to 1000.'."\n" - ."\n" - .'> This parameter is required if you set the TemplateType parameter to audio.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '128', - ], + 'schema' => ['description' => 'The ApsaraVideo Real-time Communication application ID.'."\n" + .'> This parameter is required when Mode is set to rtc. Otherwise, this parameter does not take effect.', 'type' => 'string', 'required' => false, 'example' => 'appId', 'title' => ''], ], [ - 'name' => 'Gop', + 'name' => 'ChannelID', 'in' => 'query', - 'schema' => [ - 'description' => 'The group of pictures (GOP) of the output video. This parameter is used to specify the keyframe interval. Unit: seconds. Valid values: 1 to 3.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The channel ID.'."\n" + .'> This parameter is required when Mode is set to rtc. Otherwise, this parameter does not take effect.', 'type' => 'string', 'required' => false, 'example' => 'channelId', 'title' => ''], ], [ - 'name' => 'DeleteBframes', + 'name' => 'RtcUserId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to remove B frames during transcoding. Valid values:'."\n" - ."\n" - .'* true: Remove B frames.'."\n" - .'* false (default): Retain B frames.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter is required when the TemplateType parameter is set to h264, h264-nbhd, or h264-origin.'."\n" - ."\n" - .'* If this parameter is not specified, the default value false is used.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => 'The stream ingest user ID.'."\n" + .'> This parameter is required when Mode is set to rtc. Only one value can be specified. Otherwise, this parameter does not take effect.', 'type' => 'string', 'required' => false, 'example' => 'user1', 'title' => ''], ], [ - 'name' => 'Opus', + 'name' => 'StreamURL', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to transcode streams to the Opus format to be compatible with native WebRTC. Valid values:'."\n" - ."\n" - .'* true: Transcode streams to the Opus format.'."\n" - .'* false: Do not transcode streams to the Opus format.'."\n" - ."\n" - .'> If this parameter is not specified, the default value false is used.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The streaming URL.'."\n" + .'> This parameter is required when Mode is set to live. Otherwise, this parameter does not take effect.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://xxx', 'title' => ''], ], [ - 'name' => 'Profile', + 'name' => 'Language', 'in' => 'query', - 'schema' => [ - 'description' => 'The video encoding profile. The profile defines a set of parameters that are used to encode a video. In most cases, a greater value indicates better image quality and higher resource consumption. Valid values:'."\n" - ."\n" - .'* **1**: baseline. This value is suitable for mobile devices.'."\n" - .'* **2**: main. This value is suitable for standard-definition devices.'."\n" - .'* **3**: high. This value is suitable for high-definition devices.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The language of the source audio. Valid values:'."\n" + .'- ja: Japanese.'."\n" + .'- yue: Cantonese.'."\n" + .'- fspk: Chinese-English free speech.'."\n" + .'- en: English.'."\n" + .'- cn: Chinese.', 'type' => 'string', 'required' => true, 'example' => 'cn', 'title' => ''], ], [ - 'name' => 'AudioProfile', + 'name' => 'CallbackURL', 'in' => 'query', - 'schema' => [ - 'description' => 'The audio codec profile. Valid values:'."\n" - ."\n" - .'* aac_low'."\n" - .'* aac_he'."\n" - .'* aac_he_v2'."\n" - .'* aac_ld'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'aac_low', - ], + 'schema' => ['description' => 'The callback URL.', 'type' => 'string', 'required' => true, 'example' => 'http://xxx.com', 'title' => ''], ], [ - 'name' => 'AudioCodec', + 'name' => 'AuthKey', 'in' => 'query', - 'schema' => [ - 'description' => 'The audio encoder. Valid values:'."\n" - ."\n" - .'* aac'."\n" - .'* mp3'."\n" - ."\n" - .'> To use the Opus encoder, you need only to set the Opus parameter to true.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'aac', - ], + 'schema' => ['description' => 'The authentication key used to generate the MD5 signature for callback information.'."\n" + .'> Two authentication fields are added to the request header during callback: "SIG-TIME" indicates the current timestamp, and "ASR-SIG" indicates the MD5 authentication field. The "ASR-SIG" field is generated by the rule md5(`${SIG-TIME}/${callbackurl}/${authKey}`).', 'type' => 'string', 'required' => false, 'example' => 'abcd', 'title' => ''], ], [ - 'name' => 'AudioRate', + 'name' => 'TranslateEnabled', 'in' => 'query', - 'schema' => [ - 'description' => 'The audio sampling rate. Valid values: 22050, 32000, 44100, 48000, and 96000. 44100 is commonly used. Unit: Hz.'."\n" - ."\n" - .'> If the value of the AudioProfile parameter is aac_ld, the audio sampling rate cannot exceed 44,100.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '44100', - ], + 'schema' => ['description' => 'Specifies whether to enable translation.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], [ - 'name' => 'AudioChannelNum', + 'name' => 'TargetLanguages', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of sound channels. Valid values:'."\n" - ."\n" - .'* **1**: mono'."\n" - .'* **2**: stereo'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The target translation language. Valid values:'."\n" + .'- cn: Chinese.'."\n" + .'- en: English.'."\n" + .'- ja: Japanese.', 'type' => 'string', 'required' => false, 'example' => 'en', 'title' => ''], ], [ - 'name' => 'Lazy', + 'name' => 'AutoTerminateEnabled', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable triggered transcoding. Valid values:'."\n" - ."\n" - .'* **yes**: enables triggered transcoding.'."\n" - .'* **no**: disables triggered transcoding.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'no', - ], + 'schema' => ['description' => 'Specifies whether to automatically close the task when the stream disconnection exceeds the maximum delay. Default value: false.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'AutoTerminateDelay', + 'in' => 'query', + 'schema' => ['description' => 'The automatic stream disconnection delay, in seconds. Valid values: 1 to 10.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '5', 'title' => ''], + ], + [ + 'name' => 'ReportInterval', + 'in' => 'query', + 'schema' => ['description' => 'The callback reporting interval, in milliseconds. Valid values: -1 to 500.'."\n" + .'- -1: Does not accept intermediate results. Only full-sentence callbacks are accepted.'."\n" + .'- 0 or not set: Reports callback results in real time.'."\n" + .'- <=500 milliseconds: Reports callback results at periodic intervals.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '5', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The request ID.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'Description' => ['description' => 'The result description. The value success indicates a successful operation. An error message is returned if a fault occurs.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'RequestId' => ['description' => 'The gateway request ID.', 'type' => 'string', 'example' => '7FF5417D-06E9-5A2C-9A70-581F6149E6C1', 'title' => ''], + 'RetCode' => ['description' => 'The status code. A value of 2000 indicates success. Other values indicate exceptions.', 'type' => 'integer', 'format' => 'int64', 'example' => '2000', 'title' => ''], + 'TaskId' => ['description' => 'The generated task ID.', 'type' => 'string', 'example' => 'asr-a6ac15e0-9118-4b4c-9e64-306163a0****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'TemplateLimit', - 'errorMessage' => '%s Please check and try again later.', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"success\\",\\n \\"RequestId\\": \\"7FF5417D-06E9-5A2C-9A70-581F6149E6C1\\",\\n \\"RetCode\\": 2000,\\n \\"TaskId\\": \\"asr-a6ac15e0-9118-4b4c-9e64-306163a0****\\"\\n}","type":"json"}]', + 'title' => 'Create real-time speech-to-text or translation', + 'description' => 'This operation is currently in maintenance mode. Use intelligent workflows to implement this capability. For more information, see [Intelligent workflow configuration](~~2985843~~).'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 20 calls per second. If this limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => '## Callback example'."\n" + .'The JSON-formatted data is placed in the request body and sent as an HTTP POST request to the specified CallbackUrl. For more information about the callback parameter Content and the callback process, see [Interaction process and implementation](~~2609586~~). Example:'."\n" + .'```'."\n" + .'{'."\n" + .' "task_id": "asr-cf8c70d7-3b8d-496c-98f8-4785******",'."\n" + .' "sdk_app_id": "",'."\n" + .' "channel_id": "",'."\n" + .' "rtc_user_id": "",'."\n" + .' "callback_time_stamp": 1723433155645,'."\n" + .' "language": "cn",'."\n" + .' "content": "{\\"header\\":{\\"nls_task_id\\":\\"af95c5cc332549f689f3153bc9******\\",\\"task_key\\":\\"tl_2977564_17234*****\\",\\"namespace\\":\\"SpeechTranscriber\\",\\"name\\":\\"TranscriptionResultChanged\\",\\"task_id\\":\\"413937911b874146b5796******\\",\\"message_id\\":\\"abfc9e9994e748a38499e1******\\",\\"status_text\\":\\"Success.\\",\\"status\\":20000000},\\"payload\\":{\\"result\\":\\"在这里与各位相聚\\",\\"confidence\\":0.0,\\"words\\":[{\\"startTime\\":0,\\"text\\":\\"在这\\",\\"endTime\\":510},{\\"startTime\\":510,\\"text\\":\\"里与\\",\\"endTime\\":1020},{\\"startTime\\":1020,\\"text\\":\\"各位\\",\\"endTime\\":1530},{\\"startTime\\":1530,\\"text\\":\\"相聚\\",\\"endTime\\":2040}],\\"index\\":0,\\"time\\":2040,\\"fixed_result\\":\\"\\",\\"unfixed_result\\":\\"\\",\\"status\\":0}}"'."\n" + .' }'."\n" + .'```.', + 'changeSet' => [ + ['createdAt' => '2024-08-12T06:04:19.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateRtcAsrTask'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateRtcAsrTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'UpdateRtsLiveStreamTranscode', - 'description' => 'This operation supports the following types of custom transcoding templates: h264, h264-nbhd, h264-origin, and audio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account.'."\n", ], - 'DeleteLiveStreamTranscode' => [ - 'summary' => 'Deletes a transcoding configuration.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'CreateRtcMPUEventSub' => [ + 'summary' => 'Creates an event subscription for stream mixing and relaying.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeCode' => '219222', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'Domain', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the application to subscribe to.'."\n" + .'> The application ID can contain uppercase and lowercase letters, digits, underscores, and hyphens (-), with a maximum of 64 characters.', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], ], [ - 'name' => 'App', + 'name' => 'ChannelIds', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The channel IDs of the stream mixing tasks for which you want to receive callbacks. You can specify multiple channel IDs separated by commas (,).'."\n" + .'>- If you leave this parameter empty, callbacks for all stream mixing and relaying tasks under the specified AppId are received by default.'."\n" + .'- When you specify multiple channel IDs, duplicate channel IDs are not allowed. You can specify up to 20 channel IDs at a time.'."\n" + .'- Each channel ID can contain uppercase and lowercase letters, digits, underscores, and hyphens (-), with a maximum of 64 characters.', 'type' => 'string', 'required' => false, 'example' => 'yourChannelIds', 'title' => ''], ], [ - 'name' => 'Template', + 'name' => 'CallbackUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The transcoding template ID. Valid values:'."\n" - ."\n" - .'* Standard transcoding:'."\n" - ."\n" - .' * lld: low definition'."\n" - .' * lsd: standard definition'."\n" - .' * lhd: high definition'."\n" - .' * lud : ultra-high definition'."\n" - ."\n" - .'* Narrowband HD™ transcoding:'."\n" - ."\n" - .' * ld: low definition'."\n" - .' * sd: standard definition'."\n" - .' * hd: high definition'."\n" - .' * ud: ultra-high definition'."\n" - ."\n" - .'* Custom transcoding: a custom ID'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'lld', - ], + 'schema' => ['description' => 'The callback URL. For the URL format, refer to the callback content specifications below.'."\n" + .'> The callback URL protocol must be HTTP or HTTPS. The URL can contain only the following characters: a-z, A-Z, 0-9, -, _, ?, %, =, #, ., /, and +. The URL cannot exceed 2,083 characters.', 'type' => 'string', 'required' => true, 'example' => 'http://****.com/callback', 'title' => ''], ], ], 'responses' => [ @@ -12467,328 +10594,251 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + 'SubId' => ['description' => 'The subscription ID.', 'type' => 'string', 'example' => 'Sub-******9799B2C4500******', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'DeleteLiveStreamTranscode', - 'description' => 'Standard transcoding templates, Narrowband HD™ transcoding templates, and custom transcoding templates are supported for this operation.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"SubId\\": \\"Sub-******9799B2C4500******\\"\\n}","type":"json"}]', + 'title' => 'Create a stream mixing and relaying event subscription', + 'description' => 'Creates an event subscription for stream mixing and relaying. When you create a subscription, you can configure parameters such as the callback URL, the application to subscribe to, and channel information.'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 50 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => '## Callback content example'."\n" + .'The callback content is sent to your business server as an **HTTP/HTTPS POST** request. The character encoding is **UTF-8**, and the request body is a **JSON** structure. The callback is considered successful when your business server responds with an **HTTP status code of 200**. The following is an example of the callback content:'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'> To determine whether stream mixing and relaying is working properly, use both the callback notifications and the online stream status provided by the corresponding CDN provider.'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveStreamTranscodeInfo' => [ - 'summary' => 'Queries the transcoding configurations of a streaming domain.', - 'methods' => [ - 'post', - 'get', + .'```'."\n" + .'{'."\n" + .' "EventType": 1,'."\n" + .' "MsgId": "42bba8b5-94ab-468c-9dae-9b501dd****",'."\n" + .' "AppId": "rtcdev",'."\n" + .' "SubId": "Sub-9799B2C45009799B2*****",'."\n" + .' "TaskId": "mpucallbacktest",'."\n" + .' "CallbackTs": 1712656430476,'."\n" + .' "Payload": {'."\n" + .' "DstUrl": "rtmp://domain/app/stream?auth",'."\n" + .' "EventTs": 1712656430384,'."\n" + .' "EventCode": 1,'."\n" + .' "ErrorCode": 0,'."\n" + .' "ErrorMessage": ""'."\n" + .' }'."\n" + .'}'."\n" + .'```'."\n" + ."\n" + .'### Callback information'."\n" + .'The callback header contains the following fields:'."\n" + ."\n" + .'| Field | Description |'."\n" + .'| ------ | ----- |'."\n" + .'| Content-Type | The data type. Fixed value: application/json. |'."\n" + .'| Ali-Rtc-Timestamp | The timestamp. |'."\n" + .'| Ali-Rtc-Signature | The signature value. |'."\n" + ."\n" + .'The callback body contains the following fields:'."\n" + .'| Field | Type | Description | Example |'."\n" + .'| ------ | ----- | ----- | -----|'."\n" + .'| EventType | Integer | The callback event type. For stream mixing and relaying callbacks, this is a fixed value: 1. | 1 |'."\n" + .'| MsgId | String | The callback ID that uniquely identifies this callback. | \\*\\*\\*\\*\\*973C-4529-A334\\*\\*\\*\\*\\* |'."\n" + .'| AppId | String | The ID of the subscribed application. | yourAppId |'."\n" + .'| SubId | String | The subscription ID. | Sub-\\*\\*\\*\\*\\*\\*9799B2C4500\\*\\*\\*\\*\\*\\* |'."\n" + .'| TaskId | String | The relay task ID. | yourTaskId |'."\n" + .'| CallbackTs | Integer | The timestamp in milliseconds when the callback request is initiated. | 1712656430476 |'."\n" + .'| Payload | JSON Object | The callback event information. | - |'."\n" + ."\n" + .'* Callback event information (Payload)'."\n" + ."\n" + .'| Field | Type | Description | Example |'."\n" + .'| ------ | ----- | ----- | -----|'."\n" + .'| DstUrl | String | The destination URL for relaying. | rtmp://domain/app/stream?auth |'."\n" + .'| EventTs | Integer | The timestamp in milliseconds when the callback event occurs. | 1712656430384 |'."\n" + .'| EventCode | Integer | The callback event code. | 1 |'."\n" + .'| ErrorCode | Integer | The error code of the callback event. | 10001 |'."\n" + .' | ErrorMessage | String | The error reason of the callback event. | rtmp server init failed |'."\n" + ."\n" + .'## Callback event codes'."\n" + .'| Field | Value | Description | Callback frequency |'."\n" + .'| ------ | ----- | ----- | -----|'."\n" + .'| MPU_STATE_PREPARING | 0 | The relay task is created and triggered. | Called back only once. |'."\n" + .'| MPU_STATE_ESTABLISHING | 1 | The relay task is establishing a connection. | Called back every 5 seconds. |'."\n" + .'| MPU_STATE_RUNNING | 2 | The relay task is running. | Called back only once. |'."\n" + .'| MPU_STATE_RECOVERING | 3 | The relay task is interrupted and recovering. | Called back every 5 seconds. |'."\n" + .'| MPU_STATE_TERMINATED | 4 | The relay task has ended, including normal stop, startup failure, or abnormal exit. The specific reason is indicated by ErrorCode and ErrorMessage. | Called back only once. |'."\n" + ."\n" + .'The following figure shows an example of the state transition for callback events:'."\n" + .'![](https://img.alicdn.com/imgextra/i2/O1CN01XYVSiA1oERjKdEOgt_!!6000000005193-0-tps-1277-328.jpg)'."\n" + .'**Note:** '."\n" + .'1. Callback messages may arrive at your business server out of order. You can sort events by EventTs in the Payload. If you only care about the latest state of a callback event, you can ignore subsequently arriving expired events.'."\n" + .'2. For stream mixing and relaying tasks created by calling [CreateMixStreamRelayTask (new)](~~2848199~~), the task automatically stops after all users leave the room for a period of time. An MPU_STATE_TERMINATED callback is sent when the task stops.'."\n" + .'3. Callback configurations affect only incremental tasks, not existing tasks. Specifically:'."\n" + ."\n" + .' a. Tasks that are already started before the callback configuration is enabled do not send callbacks.'."\n" + ."\n" + .' b. Tasks that are started after the callback configuration is enabled send callbacks.'."\n" + ."\n" + .' c. Tasks that are already started before the callback configuration is deleted continue to send callbacks until the tasks end.'."\n" + ."\n" + .' d. Tasks that are started after the callback configuration is deleted do not send callbacks.'."\n" + ."\n" + .'### Callback error codes'."\n" + .'When a relay task ends, the ErrorCode and ErrorMessage indicate the reason for the termination.'."\n" + ."\n" + .'| Error code | Error message | Description |'."\n" + .'| ------ | ----- | ----- |'."\n" + .'| 0 | | The task stopped normally. |'."\n" + .'| 10001 | rtmp server init failed | Connection establishment failed. The task ended abnormally. |'."\n" + .'| 10002 | rtmp server internal error | An internal server error occurred. The task ended abnormally. |'."\n" + .'| 10003 | task idle timeout | The task ended because it was idle for too long. |'."\n" + ."\n" + .'## Callback authentication'."\n" + .'Callback event authentication is enabled by default. The authentication logic is as follows:'."\n" + .'- When Alibaba Cloud ApsaraVideo Live initiates a callback request, the HTTP(S) request header contains the Ali-Rtc-Timestamp and Ali-Rtc-Signature fields for the callback message receiving server to perform signature authentication. The Ali-Rtc-Signature value is calculated as follows: Ali-Rtc-Signature=MD5SUM(MD5CONTENT), where MD5CONTENT=Callback URL|Ali-Rtc-Timestamp value|Authentication Key. The callback URL is the complete callback URL that you configured. The authentication key is the AppKey generated when you created the AppId.'."\n" + .'- When the callback message receiving server receives a callback message, it concatenates the callback URL, the Ali-Rtc-Timestamp value, and the authentication key, calculates the MD5 value to obtain an encrypted string, and then compares the encrypted string with the Ali-Rtc-Signature field value in the HTTP(S) request header sent by the Real-Time Communication service. If the values do not match, the request is invalid.'."\n" + .'## Callback exception retry'."\n" + .'When Alibaba Cloud initiates a callback request, the callback is considered successful only when your business server responds with an HTTP status code of 200. If the callback fails, Alibaba Cloud retries 7 times at intervals of 1 second, 2 seconds, 5 seconds, 10 seconds, 1 minute, 2 minutes, and 5 minutes. Each retry generates a corresponding callback record.', + 'changeSet' => [ + ['createdAt' => '2024-07-04T06:14:37.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateRtcMPUEventSub'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateRtcMPUEventSub', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DeleteCaster' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'chargeType' => 'paid', + 'abilityTreeCode' => '106904', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainTranscodeName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'myapp', - ], + 'schema' => ['description' => 'The ID of the production studio. Make sure that you specify the correct CasterId.'."\n" + ."\n" + .'- If you created a production studio by calling the [CreateCaster](~~2848009~~) operation, obtain the CasterId from the response.'."\n" + ."\n" + .'- If you created a production studio in the ApsaraVideo Live console, go to the **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> On the Cloud Production Studio page, the name of a production studio in the list is its ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '62136AE6-7793-45ED-B14A-60D19A9486D3', - ], - 'DomainTranscodeList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DomainTranscodeInfo' => [ - 'description' => 'The transcoding configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The transcoding configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'TranscodeApp' => [ - 'description' => 'The application name.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'TranscodeTemplate' => [ - 'description' => 'The transcoding template ID. Valid values:'."\n" - ."\n" - .'* **Standard transcoding**:'."\n" - ."\n" - .' * **lld**: low definition'."\n" - .' * **lsd**: standard definition'."\n" - .' * **lhd**: high definition'."\n" - .' * **lud**: ultra-high definition'."\n" - ."\n" - .'* **Narrowband HD™ transcoding**:'."\n" - ."\n" - .' * **ld**: low definition'."\n" - .' * **sd**: standard definition'."\n" - .' * **hd**: high definition'."\n" - .' * **ud**: ultra-high definition'."\n", - 'type' => 'string', - 'example' => 'lld', - ], - 'IsLazy' => [ - 'description' => 'Indicates whether forcible transcoding is used. Valid values:'."\n" - ."\n" - .'* **true**: Delayed transcoding is used.'."\n" - .'* **false**: Forcible transcoding is used.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'TranscodeName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'CustomTranscodeParameters' => [ - 'description' => 'The custom transcoding configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'BitrateWithSource' => [ - 'description' => 'The source-based bitrate settings.'."\n", - 'type' => 'object', - 'example' => '{\\"UpLimit\\":2500,\\"LowerLimit\\":800,\\"Factor\\":1}', - ], - 'VideoProfile' => [ - 'description' => 'The video encoding profile. Valid values:'."\n" - ."\n" - .'* **baseline**: suitable for mobile devices.'."\n" - .'* **main**: suitable for standard-definition devices.'."\n" - .'* **high**: suitable for high-definition devices.'."\n", - 'type' => 'string', - 'example' => 'high', - ], - 'AudioBitrate' => [ - 'description' => 'The bitrate of the output audio. Unit: Kbit/s. Valid values: **1 to 1000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '64', - ], - 'Height' => [ - 'description' => 'The height of the output video.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1200', - ], - 'RtsFlag' => [ - 'description' => 'The Real-Time Transcoding (RTS) flag. Fixed value: **true**.'."\n" - ."\n" - .'> This parameter is returned only if RTS is used for transcoding.'."\n", - 'type' => 'string', - 'example' => 'true', - ], - 'TemplateType' => [ - 'description' => 'The type of the custom transcoding template. Valid values:'."\n" - ."\n" - .'* **h264**: custom H.264 standard transcoding'."\n" - .'* **h264-nbhd**: custom H.264 Narrowband HD™ transcoding'."\n" - .'* **h265**: custom H.265 standard transcoding'."\n" - .'* **h265-nbhd**: custom H.265 Narrowband HD™ transcoding'."\n" - .'* **audio**: audio-only transcoding'."\n", - 'type' => 'string', - 'example' => 'h264', - ], - 'Bframes' => [ - 'description' => 'Indicates whether B-frame removal is enabled. Fixed value: **0**.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'ExtWithSource' => [ - 'description' => 'Other source-based settings.'."\n", - 'type' => 'object', - 'example' => '{\\"KeyFrameOpen\\":\\"yes\\",\\"Copyts\\":\\"yes\\",\\"SeiMode\\":1}', - ], - 'AudioRate' => [ - 'description' => 'The audio sampling rate. Valid values: **22050 to 96000**.'."\n" - ."\n" - .'> If the value of AudioProfile is **aac_ld**, the audio sampling rate cannot exceed 44100.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '44100', - ], - 'FpsWithSource' => [ - 'description' => 'The source-based frame rate settings.'."\n", - 'type' => 'object', - 'example' => '{\\"UpLimit\\":60,\\"LowerLimit\\":1}', - ], - 'AudioCodec' => [ - 'description' => 'The audio encoding format.'."\n", - 'type' => 'string', - 'example' => 'ACC', - ], - 'FPS' => [ - 'description' => 'The frame rate of the output video. Unit: frames per second (FPS).'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '15', - ], - 'Gop' => [ - 'description' => 'The group of pictures (GOP) size of the output video. Unit: frames. Valid values: **1 to 3000**.'."\n", - 'type' => 'string', - 'example' => '10', - ], - 'Width' => [ - 'description' => 'The width of the output video.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1000', - ], - 'VideoBitrate' => [ - 'description' => 'The bitrate of the output video. Unit: Kbit/s.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3000', - ], - 'AudioChannelNum' => [ - 'description' => 'The number of sound channels. Valid values:'."\n" - ."\n" - .'* **1**: mono'."\n" - .'* **2**: binaural'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'AudioProfile' => [ - 'description' => 'The audio encoding profile. Valid values:'."\n" - ."\n" - .'* **aac_low**'."\n" - .'* **aac_he**'."\n" - .'* **aac_he_v2**'."\n" - .'* **aac_ld**'."\n", - 'type' => 'string', - 'example' => 'aac_low', - ], - 'ResWithSource' => [ - 'description' => 'The source-based resolution settings.'."\n", - 'type' => 'object', - 'example' => '{\\"Type\\":\\"short\\",\\"Value\\":\\"1080\\"}', - ], - 'DeInterlaced' => [ - 'type' => 'boolean', - ], - ], - ], - 'EncryptParameters' => [ - 'description' => 'The encryption settings.'."\n", - 'type' => 'object', - 'properties' => [ - 'EncryptType' => [ - 'description' => 'The type of encryption. Fixed value: **aliyun**.'."\n", - 'type' => 'string', - 'example' => 'aliyun', - ], - 'KmsKeyID' => [ - 'description' => 'The ID of the customer master key (CMK) in Key Management Service (KMS).'."\n", - 'type' => 'string', - 'example' => 'afce5722-81d2-43c3-9930-7601da11****', - ], - 'KmsKeyExpireInterval' => [ - 'description' => 'The rotation period of the CMK. Valid values: **60 to 3600**. Unit: seconds.'."\n", - 'type' => 'string', - 'example' => '3600', - ], - ], - ], - ], - ], - ], - ], - ], + 'CasterId' => ['description' => 'The ID of the production studio. This ID is used as a request parameter to add video resources, layouts, components, and program lists, or to query the layout list.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvaildCaster.Delete', 'errorMessage' => 'Caster can not be deleted when ChargeType is Prepaid', 'description' => ''], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Caster status is inuse, please check and try again later.'], + ], + 403 => [ + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], + ], + [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"62136AE6-7793-45ED-B14A-60D19A9486D3\\",\\n \\"DomainTranscodeList\\": {\\n \\"DomainTranscodeInfo\\": [\\n {\\n \\"TranscodeApp\\": \\"liveApp****\\",\\n \\"TranscodeTemplate\\": \\"lld\\",\\n \\"IsLazy\\": true,\\n \\"TranscodeName\\": \\"example.com\\",\\n \\"CustomTranscodeParameters\\": {\\n \\"BitrateWithSource\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"VideoProfile\\": \\"high\\",\\n \\"AudioBitrate\\": 64,\\n \\"Height\\": 1200,\\n \\"RtsFlag\\": \\"true\\",\\n \\"TemplateType\\": \\"h264\\",\\n \\"Bframes\\": \\"0\\",\\n \\"ExtWithSource\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"AudioRate\\": 44100,\\n \\"FpsWithSource\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"AudioCodec\\": \\"ACC\\",\\n \\"FPS\\": 15,\\n \\"Gop\\": \\"10\\",\\n \\"Width\\": 1000,\\n \\"VideoBitrate\\": 3000,\\n \\"AudioChannelNum\\": 2,\\n \\"AudioProfile\\": \\"aac_low\\",\\n \\"ResWithSource\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"DeInterlaced\\": true\\n },\\n \\"EncryptParameters\\": {\\n \\"EncryptType\\": \\"aliyun\\",\\n \\"KmsKeyID\\": \\"afce5722-81d2-43c3-9930-7601da11****\\",\\n \\"KmsKeyExpireInterval\\": \\"3600\\"\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 62136AE6-7793-45ED-B14A-60D19A9486D3\\n \\n liveApp****\\n lld\\n true\\n example.com\\n \\n high\\n 64\\n 1200\\n true\\n h264\\n 0\\n 44100\\n ACC\\n 15\\n 10\\n 1000\\n 3000\\n 2\\n aac_low\\n \\n \\n aliyun\\n afce5722-81d2-43c3-9930-7601da11****\\n 3600\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamTranscodeInfo', - 'description' => 'Obtain the main streaming domain, and then call this operation to query the transcoding configurations.'."\n" + 'title' => 'DeleteCaster', + 'summary' => 'Deletes a production studio.', + 'description' => '- A production studio must be shut down before you can delete it. Otherwise, the operation fails.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- When you delete a production studio, its associated scenes, components, and layouts are also deleted.'."\n" + ."\n" + .'- You cannot recover a deleted production studio.'."\n" + ."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 10 for each user. Calls that exceed this limit are throttled, which can affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddTrancodeSEI' => [ - 'summary' => 'Inserts supplemental enhancement information (SEI) to transcoded streams.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-08-21T03:33:21.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCaster'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteCasterComponent' => [ + 'summary' => 'Deletes a component from a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -12796,99 +10846,32 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n" - ."\n" - .'> The value of this parameter must be the name of the source stream. This way, the SEI is inserted to all the transcoded streams.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'Text', - 'in' => 'query', - 'schema' => [ - 'description' => 'The SEI text. It can be up to 4,000 bytes in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveSei****', - ], - ], - [ - 'name' => 'Pattern', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to append the SEI to each keyframe or frame. Valid values:'."\n" - ."\n" - .'* **keyframe**'."\n" - .'* **frame**'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'keyframe', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Repeat', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of times that the SEI is repeatedly inserted. A value of -1 specifies infinite times.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '-1', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, find the ID on the **Cloud Production Studio** page. In the ApsaraVideo Live console, choose **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'Delay', + 'name' => 'ComponentId', 'in' => 'query', - 'schema' => [ - 'description' => 'The time period after which the SEI is inserted after the request is received. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '100', - ], + 'schema' => ['description' => 'The component ID. If you add a component to the production studio by calling the [AddCasterComponent](~~2848030~~) operation, use the ComponentId value that is returned in the response.', 'type' => 'string', 'required' => true, 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], ], ], 'responses' => [ @@ -12896,376 +10879,374 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4E*****43-CB92E68F4CD8', - ], + 'CasterId' => ['description' => 'The ID of the production studio. This ID can be used in subsequent API calls to query the component list, add a program, or modify a component of the production studio.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880****', 'title' => ''], + 'ComponentId' => ['description' => 'The component ID. This ID can be used in subsequent API calls to query or modify the component.', 'type' => 'string', 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4E*****43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4E*****43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'AddTrancodeSEI', - 'description' => 'Obtain the streaming domain, and then call this operation to insert SEI to the transcoded streams. Make sure that the stream name is the name of the source stream. This way, the SEI is inserted to all the transcoded streams.'."\n" + 'title' => 'DeleteCasterComponent', + 'description' => 'Call the [CreateCaster](~~2848009~~) operation to create a production studio. You can then call this operation to delete a component from the production studio.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'This operation is limited to 10 queries per second (QPS) per user. Calls that exceed this limit are throttled, which may affect your business. We recommend that you plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddLiveRecordVodConfig' => [ - 'summary' => 'Adds a Live-to-VOD configuration to store recordings in the media library of ApsaraVideo VOD.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCasterComponent'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterComponent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880****\\",\\n \\"ComponentId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteCasterEpisode' => [ + 'summary' => 'Deletes an episode from a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106854', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n" - ."\n" - .'> Make sure that ApsaraVideo VOD is activated in the same region as the live center of the streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The production studio ID.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value from the response.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The production studio name on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'EpisodeId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testName', - ], + 'schema' => ['description' => 'The episode ID. If you added the episode by calling the [AddCasterEpisode](~~2848068~~) operation, use the EpisodeId value from the response.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf932738****', 'title' => ''], ], - [ - 'name' => 'StreamName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'stream', + 'type' => 'object', + 'properties' => [ + 'CasterId' => ['description' => 'The production studio ID. You can use this ID as a request parameter to modify the episode.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'EpisodeId' => ['description' => 'The episode ID. You can use this ID as a request parameter to modify the episode.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf932738****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'VodTranscodeGroupId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the transcoding template group in ApsaraVideo VOD.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'e2d796d3bb5fd8049d32bff62f94****', - ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectStartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['errorCode' => 'IncorrectEpisodeStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The current status of the program is not operational, please check and try again.'], ], [ - 'name' => 'CycleDuration', - 'in' => 'query', - 'schema' => [ - 'description' => 'The recording cycle. Unit: seconds. Valid values: **300 to 21600**. Default value: **3600**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '21600', - 'minimum' => '300', - 'example' => '300', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidEpisode.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Episode does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], + ], + 'title' => 'DeleteCasterEpisode', + 'description' => 'Before you call this operation, you must obtain the production studio ID and the episode ID.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 4. API calls that exceed this limit are throttled, which may impact your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'AutoCompose', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable automatic merging. If you set the value to **ON**, automatic merging is enabled and the ComposeVodTranscodeGroupId parameter is required. If you do not specify this parameter, automatic merging is disabled.'."\n" - ."\n" - .'> If you enable automatic merging, the VOD files that are created from live streams are automatically merged by using the editing and production feature of ApsaraVideo VOD. For information about the billing of the feature, see [Billing of value-added services](~~188310~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'ON', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterEpisode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"EpisodeId\\": \\"a2b8e671-2fe5-4642-a2ec-bf932738****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteCasterEpisodeGroup' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'StorageLocation', - 'in' => 'query', - 'schema' => [ - 'description' => 'The storage location.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '****-tjptr2vatm.oss-cn-shanghai.aliyuncs.com', - ], + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ [ - 'name' => 'ComposeVodTranscodeGroupId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the transcoding template group in ApsaraVideo VOD that is used to transcode the video file. The video file is generated by merging the VOD files created from live streams.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter is required if you set the AutoCompose parameter to ON.'."\n" - ."\n" - .'* For more information about automatic merging and transcoding, see [FAQ about Live-to-VOD](~~99726~~).'."\n" - ."\n" - .'* For information about the billing of transcoding in ApsaraVideo VOD, see [Billing of basic services](~~188308~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '*****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'OnDemand', + 'name' => 'ProgramId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable on-demand recording. Valid values:'."\n" - ."\n" - .'* **0** (default): disables on-demand recording.'."\n" - .'* **1**: enables on-demand recording.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'The ID of the episode list. To obtain the ID, call the [AddCasterEpisodeGroup](~~2848071~~) operation and find the value of the ProgramId parameter in the response.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf932738****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The request ID.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'CommomLiveRcordConfigExisted', - 'errorMessage' => 'Commom liverecord config has already exist.', - ], - [ - 'errorCode' => 'InvalidAutoCompose.Malformed', - 'errorMessage' => 'Specified parameter AutoCompose is not valid.', - ], - [ - 'errorCode' => 'InvalidAutoComposeAndComposeVodTranscodeGroupId.Malformed', - 'errorMessage' => 'Specified parameter AutoCompose and ComposeVodTranscodeGroupId is not valid, must both empty or input', - ], - ], - 403 => [ - [ - 'errorCode' => 'InvalidRegion.Conflict', - 'errorMessage' => 'Specified parameter StorageLocation and Region is not match', - ], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], [ - [ - 'errorCode' => 'InvalidStorage.NotFound', - 'errorMessage' => 'Specified parameter StorageLocation is not exist', - ], - [ - 'errorCode' => 'InvalidTemplateGroupId.NotFound', - 'errorMessage' => 'Specified parameter vodTranscodeGroupId or composeVodTranscodeGroupId is not exist', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n} "}]', - 'title' => 'AddLiveRecordVodConfig', - 'description' => 'You can call this operation to configure the Live-to-VOD feature to store recordings in the media library of ApsaraVideo VOD.'."\n" - ."\n" - .'> You cannot configure the Live-to-VOD feature by using a Finance Cloud account.'."\n" + 'title' => 'DeleteCasterEpisodeGroup', + 'summary' => 'Deletes an episode list in a production studio.', + 'description' => 'First, call the [AddCasterEpisodeGroup](~~2848071~~) operation to add an episode list to a production studio. You can then call this operation to delete the episode list.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 4 per user. API calls that exceed this limit are throttled, which may affect your business. Call this operation within the specified limit.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UpdateLiveRecordVodConfig' => [ - 'summary' => 'Updates a Live-to-VOD configuration.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCasterEpisodeGroup'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterEpisodeGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'DeleteCasterLayout' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '181113', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you call the [CreateCaster](~~2848009~~) operation to create a production studio, obtain the CasterId from the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The ID of the production studio is its name in the list on the Cloud Production Studio page.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'LayoutId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testName', - ], + 'schema' => ['description' => 'The layout ID. If you call the [AddCasterLayout](~~2848025~~) operation to add a layout to the production studio, obtain the LayoutId from the response.', 'type' => 'string', 'required' => true, 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], ], - [ - 'name' => 'StreamName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'stream', + 'type' => 'object', + 'properties' => [ + 'CasterId' => ['description' => 'The ID of the production studio. Use this ID to modify a layout, query layouts, add a component, or query components.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'LayoutId' => ['description' => 'The layout ID. Use this ID to query the list of layouts for the production studio.', 'type' => 'string', 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidLayoutId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The LayoutId is invalid, please check and try again.'], + ], [ - 'name' => 'VodTranscodeGroupId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the transcoding template group in ApsaraVideo VOD.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'e2d796d3bb5fd8049d32bff62f94****', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], + ], + 'title' => 'DeleteCasterLayout', + 'summary' => 'Deletes a layout in a production studio.', + 'description' => 'Call the [CreateCaster](~~2848009~~) operation to create a production studio. You can then call this operation to delete a layout in the production studio.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'This operation is limited to 10 queries per second (QPS) for each user. API calls that exceed this limit are throttled, which may affect your business. Call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'CycleDuration', - 'in' => 'query', - 'schema' => [ - 'description' => 'The recording cycle. Unit: seconds. Valid values: **300 to 21600**. Default value: **3600**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '21600', - 'minimum' => '300', - 'example' => '300', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'DeleteCasterProgram' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'AutoCompose', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable automatic merging. Valid values:'."\n" - ."\n" - .'* **ON**: enables automatic merging. If you set this parameter to ON, you must also specify the ComposeVodTranscodeGroupId parameter.'."\n" - .'* **OFF**: disables automatic merging.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'OFF', - ], + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ [ - 'name' => 'ComposeVodTranscodeGroupId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the transcoding template group in ApsaraVideo VOD that is used to transcode the video file. The video file is generated by merging the VOD files created from live streams.'."\n" - ."\n" - .'> To query transcoding template groups, call the [ListTranscodeTemplateGroup](~~454928~~) operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '*****', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'OnDemand', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable on-demand recording. Valid values:'."\n" - ."\n" - .'* **0** (default): disables on-demand recording.'."\n" - .'* **1**: enables on-demand recording by using the HTTP callback method.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of a production studio in the list on the Cloud Production Studio page is its ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], ], 'responses' => [ @@ -13273,72 +11254,64 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '61C96B9A-F203-4EC5-8E43-CB92E68F67DF', - ], + 'CasterId' => ['description' => 'The ID of the production studio. You can use this ID as a request parameter when you add, delete, or modify episodes for the production studio.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'CommomLiveRcordConfigExisted', - 'errorMessage' => 'Commom liverecord config has already exist.', - ], - [ - 'errorCode' => 'InvalidAutoCompose.Malformed', - 'errorMessage' => 'Specified parameter AutoCompose is not valid.', - ], - [ - 'errorCode' => 'InvalidAutoComposeAndComposeVodTranscodeGroupId.Malformed', - 'errorMessage' => 'Specified parameter AutoCompose and ComposeVodTranscodeGroupId is not valid, must both empty or input', - ], - ], - 403 => [ - [ - 'errorCode' => 'InvalidRegion.Conflict', - 'errorMessage' => 'Specified parameter StorageLocation and Region is not match', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], ], [ - [ - 'errorCode' => 'InvalidStorage.NotFound', - 'errorMessage' => 'Specified parameter StorageLocation is not exist', - ], - [ - 'errorCode' => 'InvalidTemplateGroupId.NotFound', - 'errorMessage' => 'Specified parameter vodTranscodeGroupId or composeVodTranscodeGroupId is not exist', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"61C96B9A-F203-4EC5-8E43-CB92E68F67DF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 61C96B9A-F203-4EC5-8E43-CB92E68F67DF\\n","errorExample":""}]', - 'title' => 'UpdateLiveRecordVodConfig', - 'description' => 'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveRecordVodConfig' => [ - 'summary' => 'Deletes a Live-to-VOD configuration.', - 'methods' => [ - 'post', - 'get', + 'title' => 'DeleteCasterProgram', + 'summary' => 'Deletes the episode list for carousel playback in a production studio.', + 'description' => 'First, call the [CreateCaster](~~2848009~~) operation to create a production studio. Then, call this operation to delete the program of the production studio.'."\n" + ."\n" + .'## Usage limits'."\n" + ."\n" + .'You can call this operation up to 4 queries per second (QPS) per account. If you exceed this limit, API calls are throttled. This can affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCasterProgram'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterProgram', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'DeleteCasterSceneConfig' => [ + 'summary' => 'Deletes the scene configuration of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -13349,49 +11322,40 @@ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The production studio ID.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value from the response.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, go to the **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studios** page to view the ID.'."\n" + ."\n" + .'> On the Cloud Production Studios page, the name of the production studio is its ID.', 'type' => 'string', 'required' => true, 'example' => 'b4810848-bcf9-4aef-bd4a-e6bba2d9****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'SceneId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The scene ID.', 'type' => 'string', 'required' => true, 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'Type', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The type of scene configuration to delete. Valid values:'."\n" + ."\n" + .'- **Component**: The component configuration.'."\n" + ."\n" + .'- **Layout**: The layout configuration.'."\n" + ."\n" + .'- **All**: Both the component and layout configurations.', 'type' => 'string', 'required' => true, 'example' => 'Component', 'title' => ''], ], ], 'responses' => [ @@ -13399,124 +11363,102 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB9*********', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IncorrectSceneStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene is on, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidSceneId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.ConfigError', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene configuration error, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is idle, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidVideo.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The video resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], + ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'DeleteLiveRecordVodConfig', - 'description' => 'Obtain the main streaming domain, and then call this operation to delete a Live-to-VOD configuration.'."\n" + 'title' => 'DeleteCasterSceneConfig', + 'description' => 'This operation deletes the scene configuration of a production studio. You can delete the component configuration, the layout configuration, or both.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. If you exceed this limit, your calls are throttled, which may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveRecordVodConfigs' => [ - 'summary' => 'Queries Live-to-VOD configurations.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterSceneConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB9*********\\"\\n}","type":"json"}]', + ], + 'DeleteCasterVideoResource' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageNum', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value from the response.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, find the ID on the Cloud Production Studio page. The navigation path is **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> You can find the ID of the production studio in the Instance ID/Name column.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'ResourceId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Default value: **10**. Valid values: **5 to 100**.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'maximum' => '100', - 'minimum' => '5', - 'example' => '10', - 'default' => '10', - ], + 'schema' => ['description' => 'The resource ID. If you added the video resource by calling the [AddCasterVideoResource](~~2848020~~) operation, use the ResourceId value from the response.', 'type' => 'string', 'required' => true, 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', 'title' => ''], ], ], 'responses' => [ @@ -13524,414 +11466,169 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5056369B-D337-499E-B8B7-B761BD37B08A', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'Total' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'string', - 'example' => '100', - ], - 'LiveRecordVodConfigs' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveRecordVodConfig' => [ - 'description' => 'The configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'StorageLocation' => [ - 'description' => 'The storage location.'."\n", - 'type' => 'string', - 'example' => '****-tjptr2vatm.oss-cn-shanghai.aliyuncs.com', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'AutoCompose' => [ - 'description' => 'Indicates whether automatic merging is enabled. Valid values:'."\n" - ."\n" - .'* **ON**'."\n" - .'* **OFF**'."\n", - 'type' => 'string', - 'example' => 'ON', - ], - 'OnDemand' => [ - 'description' => 'Indicates whether on-demand recording is enabled. Valid values:'."\n" - ."\n" - .'* **0** (default): On-demand recording is disabled.'."\n" - .'* **1**: On-demand recording is enabled by using the HTTP callback method.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'CreateTime' => [ - 'description' => 'The time when the live stream was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T17:37:00Z', - ], - 'VodTranscodeGroupId' => [ - 'description' => 'The ID of the transcoding template group in ApsaraVideo VOD.'."\n", - 'type' => 'string', - 'example' => 'e2d796d3bb5fd8049d32bff62f94****', - ], - 'CycleDuration' => [ - 'description' => 'The recording cycle. Unit: seconds. Default value: **3600**. Valid values: **300 to 21600**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '360', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'ComposeVodTranscodeGroupId' => [ - 'description' => 'The ID of the transcoding template group that was used to automatically merge the VOD files created from the live streams.'."\n" - ."\n" - .'> This parameter is returned if the value of the AutoCompose parameter is ON.'."\n", - 'type' => 'string', - 'example' => 'dadfcaadde****', - ], - ], - 'description' => '', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122C*******', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageNum\\": 1,\\n \\"RequestId\\": \\"5056369B-D337-499E-B8B7-B761BD37B08A\\",\\n \\"PageSize\\": 1,\\n \\"Total\\": \\"100\\",\\n \\"LiveRecordVodConfigs\\": {\\n \\"LiveRecordVodConfig\\": [\\n {\\n \\"StorageLocation\\": \\"****-tjptr2vatm.oss-cn-shanghai.aliyuncs.com\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"AutoCompose\\": \\"ON\\",\\n \\"OnDemand\\": 0,\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"CreateTime\\": \\"2015-12-01T17:37:00Z\\",\\n \\"VodTranscodeGroupId\\": \\"e2d796d3bb5fd8049d32bff62f94****\\",\\n \\"CycleDuration\\": 360,\\n \\"DomainName\\": \\"example.com\\",\\n \\"ComposeVodTranscodeGroupId\\": \\"dadfcaadde****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 5056369B-D337-499E-B8B7-B761BD37B08A\\n 1\\n 100\\n \\n \\n ****-tjptr2vatm.oss-cn-shanghai.aliyuncs.com\\n liveApp****\\n ON\\n 0\\n liveStream****\\n 2015-12-01T17:37:00Z\\n e2d796d3bb5fd8049d32bff62f94****\\n 360\\n example.com\\n dadfcaadde****\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveRecordVodConfigs', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'Obtain the streaming domain, and then call this operation to query the Live-to-VOD configurations.'."\n" + 'title' => 'DeleteCasterVideoResource', + 'summary' => 'Removes an input source from a production studio.', + 'description' => 'You must first call the [CreateCaster](~~2848009~~) operation to create a production studio. You can then call this operation to remove a video resource from the production studio.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 1,000 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'The limit for this operation is 10 queries per second (QPS) per user. Calls that exceed this limit are throttled, which may impact your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddLiveAppRecordConfig' => [ - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCasterVideoResource'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterVideoResource', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122C*******\\"\\n}","type":"json"}]', + ], + 'DeleteChannel' => [ + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], + 'operationType' => 'write', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'none', + 'abilityTreeCode' => '169448', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.', - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the application. Only one ID is supported.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'eo85****'], ], [ - 'name' => 'AppName', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. If you want to match all applications, specify an asterisk (\\*) as the value.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The ID of the channel. Only one ID is supported.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'testid'], ], - [ - 'name' => 'OssEndpoint', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The endpoint of the OSS bucket. '."\n" - .'To store live stream recordings in OSS, you need to create an OSS bucket in advance. For more information, see Configure OSS.', - 'type' => 'string', - 'required' => true, - 'example' => 'learn.developer.aliyundoc.com', + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8'], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => '400', 'errorMessage' => 'InvalidInput', 'description' => ''], + ], [ - 'name' => 'OssBucket', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the OSS bucket where live streaming recording files are stored. To store recorded files in OSS, you need to create an OSS bucket in advance. For creation method, please refer to [Configure OSS](~~84932~~).', - 'type' => 'string', - 'required' => true, - 'example' => 'liveBucket****', - ], + ['errorCode' => '401', 'errorMessage' => 'InvalidAuth', 'description' => ''], + ], + 404 => [ + ['errorCode' => '404', 'errorMessage' => 'AppOrChannelNotExists', 'description' => ''], ], + 500 => [ + ['errorCode' => '500', 'errorMessage' => 'ServerError, Check App And Channel Exists,Retry', 'description' => ''], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DeleteChannel', + 'summary' => 'This operation closes a channel and removes all current members. The channel can be reused later.', + 'description' => 'This API is limited to 100 queries per second (QPS) for each user. If you exceed the limit, API calls are throttled. This may impact your business. We recommend that you call this API at a reasonable rate.', + 'changeSet' => [ + ['createdAt' => '2023-08-31T01:48:03.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteChannel'], + ], + ], + 'ramActions' => [ [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'Stream broadcast name.', - 'type' => 'string', - 'required' => false, - 'example' => 'teststream', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'Start time of the recording. Format: yyyy-MM-ddTHH:mm:ssZ (UTC time).'."\n" - .'> The set time must be within 7 days of the actual streaming start time, and is only valid for stream-level recording (when StreamName is not empty).', - 'type' => 'string', - 'required' => false, - 'example' => '2018-04-10T09:57:21Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'Recording end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC time).'."\n" - .'> The difference between EndTime and StartTime should not exceed 7 days; if it does, it will be calculated as 7 days. This is only valid for stream-level recording (when StreamName is not empty).', - 'type' => 'string', - 'required' => false, - 'example' => '2018-04-16T09:57:21Z', - ], - ], - [ - 'name' => 'OnDemand', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable on-demand recording. Valid values:'."\n" - ."\n" - .'* **0**: disables on-demand recording.'."\n" - .'* **1**: enables on-demand recording by using the HTTP callback method.'."\n" - .'* **2**: enables on-demand recording by parsing the stream ingest parameters.'."\n" - .'* **7**: By default, ApsaraVideo Live does not automatically record live streams. You can call the [RealTimeRecordCommand](~~2847882~~) operation to manually start or stop recording.'."\n" - ."\n" - .'> If you set the OnDemand parameter to **1**, you need to call the [AddLiveRecordNotifyConfig](~~2847891~~) operation to configure the OnDemandUrl parameter. Otherwise, ApsaraVideo Live does not perform on-demand recording.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - ], - [ - 'name' => 'DelayTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'Duration for stream concatenation. If the live streaming interruption exceeds the set concatenation duration, a new file will be generated. The concatenation duration can be set between 15 to 21600 seconds.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '180', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DeleteChannel', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live:*:{#accountId}:rtc/{#AppId}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","type":"json"}]', + ], + 'DeleteCustomTemplate' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'RecordFormat', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The recording details.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'SliceDuration' => [ - 'description' => 'The duration of a single segment. Unit: seconds.'."\n" - ."\n" - .'> This parameter takes effect only if you set the RecordFormat.N.Format parameter to m3u8 or cmaf.'."\n" - ."\n" - .'If you do not specify this parameter, the default value 30 seconds is used. Valid values: 5 to 30.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '30', - ], - 'SliceOssObjectPrefix' => [ - 'description' => 'The naming format of a segment.'."\n" - ."\n" - .'> This parameter is required only if you set the RecordFormat.N.Format parameter to m3u8 or cmaf.'."\n" - ."\n" - .'* By default, the duration of a segment is 30 seconds. The segment name must be less than 256 bytes in length and can contain the {AppName}, {StreamName}, {UnixTimestamp}, and {Sequence} variables.'."\n" - .'* The segment name must contain the {UnixTimestamp} and {Sequence} variables.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}', - ], - 'CycleDuration' => [ - 'description' => 'The recording cycle. Unit: seconds. If you do not specify this parameter, the default value 6 hours is used.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If a live stream is interrupted during a recording cycle but is resumed within the interruption duration threshold, the stream is recorded in the same recording before and after the interruption.'."\n" - ."\n" - .'* If a live stream is interrupted for longer than the interruption duration threshold, a new recording is generated.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - 'OssObjectPrefix' => [ - 'description' => 'The naming format of a recording to store in OSS.'."\n" - ."\n" - .'* The name must be less than 256 bytes in length and can contain the {AppName}, {StreamName}, {Sequence}, {StartTime}, {EndTime}, {EscapedStartTime}, and {EscapedEndTime} variables.'."\n" - .'* The name must contain the {StartTime} and {EndTime} variables or the {EscapedStartTime} and {EscapedEndTime} variables.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'record/{AppName}/{StreamName}/{Sequence}_{EscapedStartTime}_{EscapedEndTime}', - ], - 'Format' => [ - 'description' => 'The recording format. Supported formats include M3U8, FLV, MP4, and CMAF. Valid values:'."\n" - ."\n" - .'> You need to specify at lease one of the RecordFormat and TranscodeRecordFormat parameters. If you set this parameter to m3u8 or cmaf, you must also specify the RecordFormat.N.SliceOssObjectPrefix and RecordFormat.N.SliceDuration parameters.'."\n" - ."\n" - .'* m3u8'."\n" - .'* flv'."\n" - .'* mp4'."\n" - .'* cmaf'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'm3u8', - ], - ], - 'required' => false, - 'description' => '', - ], - 'required' => false, - 'maxItems' => 3, - ], + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '106913', + 'abilityTreeNodes' => ['FEATUREliveI16NIW'], + ], + 'parameters' => [ [ - 'name' => 'TranscodeRecordFormat', + 'name' => 'RegionId', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The transcoded stream recording details.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'SliceDuration' => [ - 'description' => 'The duration of a single segment in a transcoded stream recording. Unit: seconds.'."\n" - ."\n" - .'> This parameter takes effect only if you set the TranscodeRecordFormat.N.Format parameter to m3u8 or cmaf.'."\n" - ."\n" - .'If you do not specify this parameter, the default value 30 seconds is used. Valid values: 5 to 30.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '30', - ], - 'SliceOssObjectPrefix' => [ - 'description' => 'The naming format of a segment in a transcoded stream recording.'."\n" - ."\n" - .'> This parameter is required only if you set the TranscodeRecordFormat.N.Format parameter to m3u8 or cmaf.'."\n" - ."\n" - .'* By default, the duration of a segment is 30 seconds. The segment name must be less than 256 bytes in length and can contain the {AppName}, {StreamName}, {UnixTimestamp}, and {Sequence} variables.'."\n" - .'* The segment name must contain the {UnixTimestamp} and {Sequence} variables.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}', - ], - 'CycleDuration' => [ - 'description' => 'The transcoded stream recording cycle. Unit: seconds. If you do not specify this parameter, the default value 6 hours is used.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '21600', - ], - 'OssObjectPrefix' => [ - 'description' => 'The naming format of a transcoded stream recording to store in OSS.'."\n" - ."\n" - .'* The name must be less than 256 bytes in length and can contain the {AppName}, {StreamName}, {Sequence}, {StartTime}, {EndTime}, {EscapedStartTime}, and {EscapedEndTime} variables.'."\n" - .'* The name must contain the {StartTime} and {EndTime} variables or the {EscapedStartTime} and {EscapedEndTime} variables.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'record/{AppName}/{StreamName}/{Sequence}_{EscapedStartTime}_{EscapedEndTime}', - ], - 'Format' => [ - 'description' => 'The transcoded stream recording format. Supported formats include M3U8, FLV, MP4, and CMAF. Valid values:'."\n" - ."\n" - .'> If you set this parameter to m3u8 or cmaf, you must also specify the TranscodeRecordFormat.N.SliceOssObjectPrefix and TranscodeRecordFormat.N.SliceDuration parameters.'."\n" - ."\n" - .'* m3u8'."\n" - .'* flv'."\n" - .'* mp4'."\n" - .'* cmaf'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'm3u8', - ], - ], - 'required' => false, - 'description' => '', - ], - 'required' => false, - 'maxItems' => 3, - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'TranscodeTemplates', + 'name' => 'Template', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'Transcoding stream recording template group.', - 'type' => 'array', - 'items' => [ - 'description' => '- Transcoding stream recording [transcoding templates](~~45039~~), allowing multiple settings, up to 10. '."\n" - .'- When setting TranscodeRecordFormat.N.xxx configuration, at least one TranscodeTemplates must be set. '."\n" - .'- To record multiple or all transcoded streams, set TranscodeTemplates.1 to *****. '."\n" - .'>TranscodeTemplates does not allow inputting `raw`, which is a reserved identifier.
RepeatList signifies the N in TranscodeTemplates.N, interpretable as incrementally setting multiple configurations, e.g., TranscodeTemplates.1=sd, TranscodeTemplates.2=hd.', - 'type' => 'string', - 'required' => false, - 'example' => 'sd', - ], - 'required' => false, - 'example' => 'sd', - 'maxItems' => 10, - ], + 'schema' => ['description' => 'The name of the template to delete.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'TestTemplate'], ], ], 'responses' => [ @@ -13939,130 +11636,60 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => 'BC1E78D3-FA8B-4457-DEE2-6093E1232254'], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidOssEndpoint.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidOssBucket.Malformed', - 'errorMessage' => 'Specified parameter OssBucket is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.NotFound', - 'errorMessage' => 'The parameter OssBucket does not exist.', - ], - [ - 'errorCode' => 'InvalidFormat.Malformed', - 'errorMessage' => 'Specified parameter Format is not valid.', - ], - [ - 'errorCode' => 'InvalidCycleDuration.Malformed', - 'errorMessage' => 'Specified CycleDuration Format is not valid.', - ], - [ - 'errorCode' => 'InvalidSliceDuration.Malformed', - 'errorMessage' => 'Specified SliceDuration Format is not valid.', - ], - [ - 'errorCode' => 'InvalidTemplateLength.Malformed', - 'errorMessage' => 'Specified record template length is not valid.', - ], - [ - 'errorCode' => 'InvalidTemplate.ForbidRaw', - 'errorMessage' => 'Template named raw is Forbidden.', - ], - [ - 'errorCode' => 'MissingTemplate', - 'errorMessage' => 'Template is mandatory for this action.', - ], - [ - 'errorCode' => 'MissingOssObjectPrefix', - 'errorMessage' => 'OssObjectPrefix is mandatory for this action.', - ], - [ - 'errorCode' => 'MissingSliceOssObjectPrefix', - 'errorMessage' => 'SliceOssObjectPrefix is mandatory for this action.', - ], - [ - 'errorCode' => 'InvalidOssObjectPrefix.Malformed', - 'errorMessage' => 'Specified parameter OssObjectPrefix is not valid.', - ], - [ - 'errorCode' => 'InvalidSliceOssObjectPrefix.Malformed', - 'errorMessage' => 'Specified parameter SliceOssObjectPrefix is not valid.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'InvalidFormat.IllegalOperation', - 'errorMessage' => 'Specified parameter Format can not be multiple.', - ], - [ - 'errorCode' => 'InvalidDelayTime', - 'errorMessage' => 'Specified Delaytime is invalid.', - ], - [ - 'errorCode' => 'Live2Vod.ConfigAlreadyExists', - 'errorMessage' => 'Had live2vod record config already.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified EndTime does not math the specified StartTime or current time.', - ], - [ - 'errorCode' => 'InvalidStartTime.Mismatch', - 'errorMessage' => 'Specified StartTime does not math the current time.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'CustomTemplateInvalid', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The custom template is invalid, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'AddLiveAppRecordConfig', - 'summary' => 'Configure APP recording, with output saved to OSS.', - 'description' => 'The live stream recording feature allows you to record a live stream and stores the recordings in a specified location. You can view the recordings whenever you want to. Recordings that are stored in OSS support multiple formats, such as Transport Stream (TS), MP4, Flash Video (FLV), and Common Media Application Format (CMAF). You can use different recording policies, including automatic recording, on-demand recording, and manual recording. By calling this operation, you can configure the recording template. For more information about live stream recording, see [Live stream recording](~~199357~~).'."\n" - ."\n" - .'A configuration is identified by the DomainName, AppName, and StreamName parameters all together. If you try to call this operation to add a configuration that has the same DomainName, AppName, and StreamName parameters as an existing configuration, an error indicating that the configuration already exists is returned.'."\n" + 'title' => 'DeleteCustomTemplate', + 'summary' => 'Deletes a custom stream mixing template.', + 'description' => 'Obtain the name of the custom stream mixing template to delete, and then call this operation.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 10 times per second per user. If you exceed this limit, your API calls are throttled. This may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => '# Considerations:'."\n" - ."\n" - .'- ApsaraVideo Live supports triggered stream pulling. If the streaming URL for a domain name is used for playback, ApsaraVideo Live is automatically triggered to pull live streams. If no live streams are played, ApsaraVideo Live does not pull live streams from the origin. In this case, automatic recording, on-demand recording, and manual recording are also disabled.', - ], - 'RealTimeRecordCommand' => [ - 'summary' => 'Controls recordings manually on demand. For example, you can call this operation to start or stop recording at a specific point in time.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCustomTemplate', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"BC1E78D3-FA8B-4457-DEE2-6093E1232254\\"\\n}","type":"json"}]', + ], + 'DeleteEdgeTranscodeJob' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -14070,69 +11697,26 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'delete', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Command', - 'in' => 'query', - 'schema' => [ - 'description' => 'The action to be performed. Valid values:'."\n" - ."\n" - .'* **start**: forcibly starts recording.'."\n" - .'* **stop**: forcibly stops recording. If the live stream is interrupted for longer than a specific latency, a recording is generated.'."\n" - .'* **cancel_delay**: resets the latency for stream interruption and completely stops recording. If the recording task is stopped when you perform this action, a recording is generated.'."\n" - .'* **restart**: forcibly restarts recording. If the live stream is being recorded when you perform this action, a recording is generated.'."\n" - ."\n" - .'> **stop** forcibly stops recording. By default, a recording is generated after 180 seconds. **cancel_delay** resets the latency for stream interruption from 180 seconds to 0 seconds. This means that a recording is generated immediately.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'start', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'ClusterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The data center ID.', 'type' => 'string', 'required' => true, 'example' => '******3b-4d18-395c-8106-ff21a6******', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'JobId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. Make sure that you specify the correct stream name. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'required' => true, 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], ], ], 'responses' => [ @@ -14140,307 +11724,182 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'CodeConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], - 409 => [ - [ - 'errorCode' => 'StreamNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'TaskAlreadyStarted', - 'errorMessage' => '%s, please do not start again.', - ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + [ + ['errorCode' => 'JobNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Task does not exist, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'RealTimeRecordCommand', - 'description' => '* Before you call this operation, make sure that you fully understand the billing method and pricing of live stream recording in ApsaraVideo Live. For more information, see [Billing of live stream recording](~~195287~~).'."\n" - .'* If a live stream is being automatically or manually recorded, you can call this operation to stop recording the live stream.'."\n" - .'* If you call this operation to start recording a live stream while it is being recorded, a TaskAlreadyStarted error is returned, indicating that the task has been started.'."\n" - .'* If a live stream that you manually record is interrupted, the recording stops.'."\n" - .'* If automatic recording is not configured for the live stream, ApsaraVideo Live does not automatically record the live stream after it is resumed.'."\n" + 'title' => 'DeleteEdgeTranscodeJob', + 'summary' => 'Deletes an edge transcoding job.', + 'description' => '- This operation deletes an edge transcoding job.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- You must have permission to access the edge transcoding service to call this operation.'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'UpdateLiveAppRecordConfig' => [ - 'summary' => 'Updates a recording configuration for an application. The recordings are stored in Object Storage Service (OSS).', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 6,000 calls per minute. If you exceed this limit, your API calls are throttled, which may affect your business. Call this operation at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteEdgeTranscodeJob'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'DeleteEventSub' => [ + 'summary' => 'Deletes a callback that is used to subscribe to channel or user events.'."\n", + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the application.'."\n", 'type' => 'string', 'required' => true, 'example' => '9qb1****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'SubscribeId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The subscription ID. You can obtain the ID from the response to the [CreateEventSub](~~2848209~~) operation.'."\n", 'type' => 'string', 'required' => true, 'example' => 'ad53276431c****', 'title' => ''], ], - [ - 'name' => 'OssEndpoint', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The endpoint of the Object Storage Service (OSS) bucket.'."\n" - ."\n" - .'To store live stream recordings in OSS, you need to create an OSS bucket in advance. For more information, see [Configure OSS](~~84932~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'learn.developer.aliyundoc.com', + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '760bad53276431c499e30dc36f6b26be'], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'teststream', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"760bad53276431c499e30dc36f6b26be\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 760bad53276431c499e30dc36f6b26be\\n","errorExample":""}]', + 'title' => 'DeleteEventSub', + 'description' => 'Before you call this operation, make sure that you have called the [CreateEventSubscribe](~~2848209~~) operation to create a callback that is used to subscribe to channel or user events.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2023-11-21T05:55:02.000Z', 'description' => 'Error codes changed, Request parameters changed, Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteEventSub'], ], + ], + 'ramActions' => [ [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The recording start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> The start time must be within seven days after the stream ingest starts. This parameter takes effect only for the live stream specified by the StreamName parameter. If the StreamName parameter is not specified, this parameter does not take effect.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-04-10T09:57:21Z', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DeleteEventSub', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live:*:{#accountId}:rtc/{#AppId}'], + ], ], ], + ], + ], + 'DeleteLiveAIProduceRules' => [ + 'summary' => 'Deletes caption rules.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The recording end time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> The time range that is specified by the EndTime and StartTime parameters must be less than or equal to seven days. If the value exceeds seven days, ApsaraVideo Live considers seven days as the time range. This parameter takes effect only for the live stream specified by the StreamName parameter. If the StreamName parameter is not specified, this parameter does not take effect.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-04-16T09:57:21Z', - ], + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '219079', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ [ - 'name' => 'OnDemand', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable on-demand recording. Valid values:'."\n" - ."\n" - .'* **0**: disables on-demand recording.'."\n" - .'* **1**: enables on-demand recording by using the HTTP callback method.'."\n" - .'* **2**: enables on-demand recording by parsing the stream ingest parameters.'."\n" - .'* **7**: By default, ApsaraVideo Live does not automatically record live streams. You can call the [RealTimeRecordCommand](~~2847882~~) operation to manually start or stop recording.'."\n" - ."\n" - .'> If you set the OnDemand parameter to **1**, you need to call the [AddLiveRecordNotifyConfig](~~2847891~~) operation to configure the OnDemandUrl parameter. Otherwise, ApsaraVideo Live does not perform on-demand recording.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DelayTime', + 'name' => 'RulesId', 'in' => 'query', - 'schema' => [ - 'description' => 'The interruption duration for merge. If the stream interruption duration exceeds the specified duration, a new recording is generated. The value of this parameter ranges from 15 to 21600 seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '180', - ], + 'allowEmptyValue' => false, + 'schema' => ['description' => 'The ID of the caption rule.', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => '445409ec-7eaa-461d -8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'RecordFormat', + 'name' => 'SuffixName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The recording details.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'CycleDuration' => [ - 'description' => 'The recording cycle. Unit: seconds If you do not specify this parameter, the default value 6 hours is used.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If a live stream is interrupted during a recording cycle but is resumed within the interruption duration threshold, the stream is recorded in the same recording before and after the interruption.'."\n" - ."\n" - .'* If a live stream is interrupted for longer than the interruption duration threshold, a new recording is generated.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - 'Format' => [ - 'description' => 'The recording format. Supported formats include M3U8, Flash Video (FLV), MP4, and Common Media Application Format (CMAF). Valid values:'."\n" - ."\n" - .'> You need to specify at lease one of the RecordFormat and TranscodeRecordFormat parameters. If you set this parameter to m3u8 or cmaf, you must also specify the RecordFormat.N.SliceOssObjectPrefix and RecordFormat.N.SliceDuration parameters.'."\n" - ."\n" - .'* m3u8'."\n" - .'* flv'."\n" - .'* mp4'."\n" - .'* cmaf'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'm3u8', - ], - 'SliceDuration' => [ - 'description' => 'The duration of a single segment. Unit: seconds'."\n" - ."\n" - .'> This parameter takes effect only if you set the RecordFormat.N.Format parameter to m3u8 or cmaf.'."\n" - ."\n" - .'If you do not specify this parameter, the default value 30 seconds is used. Valid values: 5 to 30.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '30', - ], - ], - 'required' => false, - 'description' => '', - ], - 'required' => false, - 'maxItems' => 3, - ], + 'schema' => ['description' => 'The caption suffix.'."\n" + ."\n" + .'> Set this parameter to the value of SubtitleName that you specified for the caption template.', 'type' => 'string', 'required' => false, 'example' => 'et', 'title' => ''], ], [ - 'name' => 'TranscodeRecordFormat', + 'name' => 'Domain', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The transcoded stream recording details.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'CycleDuration' => [ - 'description' => 'The transcoded stream recording cycle. Unit: seconds If you do not specify this parameter, the default value 6 hours is used.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '21600', - ], - 'Format' => [ - 'description' => 'The format of the transcoded stream recording. Supported formats include M3U8, FLV, MP4, and CMAF. Valid values:'."\n" - ."\n" - .'> If you set this parameter to m3u8 or cmaf, you must also specify the TranscodeRecordFormat.N.SliceOssObjectPrefix and TranscodeRecordFormat.N.SliceDuration parameters.'."\n" - ."\n" - .'* m3u8'."\n" - .'* flv'."\n" - .'* mp4'."\n" - .'* cmaf'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'm3u8', - ], - 'SliceDuration' => [ - 'description' => 'The duration of a single segment in the transcoded stream recording. Unit: seconds.'."\n" - ."\n" - .'> This parameter takes effect only if you set the TranscodeRecordFormat.N.Format parameter to m3u8 or cmaf.'."\n" - ."\n" - .'If you do not specify this parameter, the default value 30 seconds is used. Valid values: 5 to 30.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '30', - ], - ], - 'required' => false, - 'description' => '', - ], - 'required' => false, - 'maxItems' => 3, - ], + 'schema' => ['description' => 'The primary playback domain name.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'TranscodeTemplates', + 'name' => 'App', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The transcoding template group details.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '* The [transcoding template](~~45039~~) of the transcoded stream. You can configure up to 10 transcoding templates at a time.'."\n" - .'* If you specify the TranscodeRecordFormat.N.xxx parameters, configure at least one transcoding template.'."\n" - .'* If you want to record multiple or all transcoded streams, set TranscodeTemplates.1 to \\*\\*\\*\\*\\*.'."\n" - ."\n" - .'> You cannot set the TranscodeTemplates parameter to `raw`, which is a reserved identifier.\\'."\n" - .'RepeatList is expressed as N in TranscodeTemplates.N, which means multiple templates are configured. Examples: TranscodeTemplates.1=sd and TranscodeTemplates.2=hd.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sd', - ], - 'required' => false, - 'maxItems' => 10, - ], + 'schema' => ['description' => 'The name of the live streaming application.', 'type' => 'string', 'required' => true, 'example' => 'AppName', 'title' => ''], ], ], 'responses' => [ @@ -14448,482 +11907,362 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b96****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidOssBucket.Malformed', - 'errorMessage' => 'Specified parameter OssBucket is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.NotFound', - 'errorMessage' => 'The parameter OssBucket does not exist.', - ], - [ - 'errorCode' => 'InvalidFormat.Malformed', - 'errorMessage' => 'Specified parameter Format is not valid.', - ], - [ - 'errorCode' => 'InvalidCycleDuration.Malformed', - 'errorMessage' => 'Specified CycleDuration Format is not valid.', - ], - [ - 'errorCode' => 'InvalidSliceDuration.Malformed', - 'errorMessage' => 'Specified SliceDuration Format is not valid.', - ], - [ - 'errorCode' => 'InvalidTemplateLength.Malformed', - 'errorMessage' => 'Specified record template length is not valid.', - ], - [ - 'errorCode' => 'InvalidTemplate.ForbidRaw', - 'errorMessage' => 'Template named raw is Forbidden.', - ], - [ - 'errorCode' => 'MissingTemplate', - 'errorMessage' => 'Template is mandatory for this action.', - ], - [ - 'errorCode' => 'MissingOssObjectPrefix', - 'errorMessage' => 'OssObjectPrefix is mandatory for this action.', - ], - [ - 'errorCode' => 'MissingSliceOssObjectPrefix', - 'errorMessage' => 'SliceOssObjectPrefix is mandatory for this action.', - ], - [ - 'errorCode' => 'InvalidOssObjectPrefix.Malformed', - 'errorMessage' => 'Specified parameter OssObjectPrefix is not valid.', - ], - [ - 'errorCode' => 'InvalidSliceOssObjectPrefix.Malformed', - 'errorMessage' => 'Specified parameter SliceOssObjectPrefix is not valid.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'InvalidFormat.IllegalOperation', - 'errorMessage' => 'Specified parameter Format can not be multiple.', - ], - [ - 'errorCode' => 'InvalidDelayTime', - 'errorMessage' => 'Specified Delaytime is invalid.', - ], - [ - 'errorCode' => 'Live2Vod.ConfigAlreadyExists', - 'errorMessage' => 'Had live2vod record config already.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified EndTime does not math the specified StartTime or current time.', - ], - [ - 'errorCode' => 'InvalidStartTime.Mismatch', - 'errorMessage' => 'Specified StartTime does not math the current time.', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => 'Ram Permission is forbidden.', - ], - [ - 'errorCode' => 'InvalidOssEndpoint.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'IncorrectSubtitleStatus.%s', 'errorMessage' => '%s.', 'description' => 'Abnormal subtitle template status'], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', - 'title' => 'UpdateLiveAppRecordConfig', - 'description' => 'Obtain the main streaming domain, and then call this operation to update a recording configuration.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b96****\\"\\n}","type":"json"}]', + 'title' => 'DeleteLiveAIProduceRules', + 'description' => 'This operation deletes the specified caption rules.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'>'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveAppRecordConfig' => [ - 'summary' => 'Deletes a recording configuration at the application level.', - 'methods' => [ - 'post', - 'get', + .'The real-time caption feature is in invitational preview. Each user can add a maximum of 300 caption templates.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries-per-second (QPS) limit for this operation is 60 calls per second for each user. If you exceed the limit, API calls are throttled. This may affect your business. Call this operation at a reasonable rate.', + 'changeSet' => [ + ['createdAt' => '2024-10-14T03:46:55.000Z', 'description' => 'Request parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAIProduceRules'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAIProduceRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DeleteLiveAIStudio' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeCode' => '239775', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'StudioId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The ID of the template. The ID is returned by the CreateLiveAIStudio operation.', 'type' => 'string', 'required' => true, 'example' => '369ced1f-c33a-49e5-91da-bdaae3d6c1c2', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '6EBD1AC4-C34D-4AE1-963E-B688A228BE31', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => '40A4F36D-A7CC-473A-88E7-154F92242566'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidRegion', - 'errorMessage' => 'The current region does not support this operation.', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => 'Ram Permission is forbidden.', - ], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The live service is not enabled. Please check and try again.'], + ['errorCode' => 'InvalidParameter.PurchaseTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PurchaseTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'InvalidParameter.ExpireTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ExpireTime is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidChargeType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidChargeType.PostSupport', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ChargeType only supports post-paid, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterTemplate is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.ChargeType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidPeriod.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid time interval, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['errorCode' => 'IncorrectStudioStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Studio is in use, please check and try again.'], + ], + [ + ['errorCode' => 'CasterNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of casters exceeds the limit. Please check and try again.'], + ], + 403 => [ + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], + ], + [ + ['errorCode' => 'InvalidParameter.NormType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter NormType is invalid, please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 408 => [ + ['errorCode' => 'DeleteLiveAIStudio.Timeout', 'errorMessage' => '%s, please try again later.', 'description' => 'Call DeleteLiveAIStudio timed out, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\n\\t","errorExample":"{\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"}]', - 'title' => 'DeleteLiveAppRecordConfig', - 'description' => 'Obtain the main streaming domain, and then call this operation to delete a recording configuration at the application level.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DeleteLiveAIStudio', + 'summary' => 'Deletes a virtual studio template.', + 'description' => 'Before you delete a virtual studio template, you must detach all associated rules. Otherwise, an error is reported.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'>'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveStreamRecordIndexFiles' => [ - 'summary' => 'Deletes live stream recordings.', - 'methods' => [ - 'post', - 'get', + .'The lightweight virtual studio feature is in invitational preview. Each user can add a maximum of 300 templates.'."\n" + ."\n" + .'>', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAIStudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"40A4F36D-A7CC-473A-88E7-154F92242566\\"\\n}","type":"json"}]', + ], + 'DeleteLiveAISubtitle' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeCode' => '218856', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'RecordId', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The index file IDs.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the index file. You can specify up to 20 IDs.'."\n" - ."\n" - .'> You can call the [DescribeLiveStreamRecordIndexFiles](~~2847890~~) operation to query the IDs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', - ], - 'required' => true, - 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', - 'maxItems' => 20, - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'SubtitleId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'allowEmptyValue' => false, + 'schema' => ['description' => 'The ID of the caption template.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'RemoveFile', + 'name' => 'SubtitleName', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to delete the corresponding file in Object Storage Service (OSS) synchronously. Valid values:'."\n" - ."\n" - .'* **true**: The corresponding file in OSS is deleted.'."\n" - .'* **false**: The corresponding file in OSS is not deleted.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'true', - ], + 'allowEmptyValue' => true, + 'schema' => ['description' => 'The name of the caption template. The name can contain only digits, letters, and hyphens (-). A hyphen cannot be the first character.', 'type' => 'string', 'required' => false, 'example' => 'sub01', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The details.'."\n", 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => 'The status code. A return value of 500 indicates an error. For details, see the Error codes section of this topic.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], - 'Message' => [ - 'description' => 'The status description. A return value of 500 indicates an error. For details, see the Error codes section of this topic.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], - 'RecordDeleteInfoList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RecordDeleteInfo' => [ - 'description' => 'The deletion information.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The deletion information.'."\n", - 'type' => 'object', - 'properties' => [ - 'Message' => [ - 'description' => 'The processing result of each file indicated by the file ID. Valid values:'."\n" - ."\n" - .'* **OK**: The file has been deleted.'."\n" - .'* **AccessDenied**: Access to the file has been denied.'."\n" - .'* **FileNotFound**: The file fails to be found.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], - 'RecordId' => [ - 'description' => 'The ID of the index file that is used to locate the live stream recording files to be deleted.'."\n", - 'type' => 'string', - 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f**', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '939D19EE-59A0-18E9-B458-*****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => 'Failed to parse given parameters.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DeleteLiveAISubtitle', + 'summary' => 'Deletes a specified subtitle template.', + 'description' => 'You can call this operation to delete a specified caption template for a live stream.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'The real-time caption feature is in invitational preview. Each user can add up to 300 caption templates.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 60 calls per second for each user. API calls that exceed this limit are throttled, which may affect your business. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2024-12-04T05:54:29.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAISubtitle'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAISubtitle', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Code\\": \\"OK\\",\\n \\"Message\\": \\"OK\\",\\n \\"RecordDeleteInfoList\\": {\\n \\"RecordDeleteInfo\\": [\\n {\\n \\"Message\\": \\"OK\\",\\n \\"RecordId\\": \\"c4d7f0a4-b506-43f9-8de3-07732c3f**\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"939D19EE-59A0-18E9-B458-*****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n OK\\n OK\\n \\n OK\\n c4d7f0a4-b506-43f9-8de3-07732c3f**\\n \\n 939D19EE-59A0-18E9-B458-*****\\n","errorExample":""}]', - 'title' => 'DeleteLiveStreamRecordIndexFiles', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', ], - 'DescribeLiveRecordConfig' => [ - 'summary' => 'Queries all recording configurations of an application for a streaming domain.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DeleteLiveAppRecordConfig' => [ + 'summary' => 'Deletes a recording configuration at the AppName level.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ 'name' => 'StreamName', 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '6EBD1AC4-C34D-4AE1-963E-B688A228BE31', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidRegion', 'errorMessage' => 'The current region does not support this operation.', 'description' => 'The current region does not support this operation.'], + ['errorCode' => 'Forbidden', 'errorMessage' => 'Ram Permission is forbidden.', 'description' => ''], + ], + ], + 'title' => 'DeleteLiveAppRecordConfig', + 'description' => 'Obtain the main streaming domain, then call this operation to delete a recording configuration at the AppName level.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAppRecordConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'PageNum', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAppRecordConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}","type":"json"}]', + ], + 'DeleteLiveAppSnapshotConfig' => [ + 'summary' => 'Deletes the snapshot configuration for live streams in an application. The deletion takes effect after you restart stream ingest.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], + ], + 'parameters' => [ [ - 'name' => 'PageSize', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: **5 to 30**. Default value: **10**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '5', - 'example' => '5', - 'default' => '10', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Order', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The order in which the entries are sorted based on creation time. Valid values:'."\n" - ."\n" - .'* **asc** (default): ascending order'."\n" - .'* **desc**: descending order'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'asc', - 'default' => 'asc', - 'enum' => [ - 'asc', - 'desc', - ], - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], ], 'responses' => [ @@ -14931,307 +12270,170 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5056369B-D337-499E-B8B7-B761BD37B08A', - ], - 'Order' => [ - 'description' => 'The sorting order of recording configurations by creation time.'."\n", - 'type' => 'string', - 'example' => 'desc', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'TotalNum' => [ - 'description' => 'The total number of recording configurations that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '12', - ], - 'LiveAppRecordList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveAppRecord' => [ - 'description' => 'The list of recording configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The recording configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'EndTime' => [ - 'description' => 'The end time of the recording. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-11-08T03:49:18Z', - ], - 'StartTime' => [ - 'description' => 'The start time of the recording. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-11-08T02:49:18Z', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'DelayTime' => [ - 'description' => 'The maximum interruption duration of the live stream. If the actual interruption duration exceeds the threshold, a new recording is generated. Valid values: 15 to 21600. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '180', - ], - 'CreateTime' => [ - 'description' => 'The time when the recording configuration was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-05-20T09:33:38Z', - ], - 'OnDemond' => [ - 'description' => 'The configuration of on-demand recording. Valid values:'."\n" - ."\n" - .'* **0**: disables on-demand recording.'."\n" - .'* **1**: enables on-demand recording that is triggered by HTTP callbacks.'."\n" - .'* **2**: enables on-demand recording that is triggered by stream ingest parameters.'."\n" - .'* **7**: enables on-demand recording by calling the [RealTimeRecordCommand](~~85907~~) operation to manually start or stop recording.'."\n" - ."\n" - .'> If you set OnDemand to **1**, you must call the [AddLiveRecordNotifyConfig](~~51831~~) operation to configure OnDemandUrl. Otherwise, the configuration of on-demand recording is invalid.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'OssBucket' => [ - 'description' => 'The name of the Object Storage Service (OSS) bucket in which the recordings are stored.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'DomainName' => [ - 'description' => 'The name of the main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'OssEndpoint' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'cn-oss-****.aliyuncs.com', - ], - 'RecordFormatList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RecordFormat' => [ - 'description' => 'The recording formats of original streams.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'SliceDuration' => [ - 'description' => 'The duration of a segment file. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '30', - ], - 'CycleDuration' => [ - 'description' => 'The duration of a recording file. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3600', - ], - 'SliceOssObjectPrefix' => [ - 'description' => 'The naming format of a segment file.'."\n", - 'type' => 'string', - 'example' => 'record/{liveApp****}/{liveStream****}/{UnixTimestamp}', - ], - 'OssObjectPrefix' => [ - 'description' => 'The naming format of a recording file.'."\n", - 'type' => 'string', - 'example' => 'record/{liveApp****}/{liveStream****}', - ], - 'Format' => [ - 'description' => 'The format of recording files.'."\n", - 'type' => 'string', - 'example' => 'M3U8', - ], - ], - ], - ], - ], - ], - 'TranscodeRecordFormatList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RecordFormat' => [ - 'description' => 'The recording formats of transcoded streams.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'SliceDuration' => [ - 'description' => 'The duration of a segment file. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '30', - ], - 'CycleDuration' => [ - 'description' => 'The duration of a recording file. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3600', - ], - 'SliceOssObjectPrefix' => [ - 'description' => 'The naming format of a segment file.'."\n", - 'type' => 'string', - 'example' => 'record/{liveApp****}/{liveStream****}/{UnixTimestamp}', - ], - 'OssObjectPrefix' => [ - 'description' => 'The naming format of a recording file.'."\n", - 'type' => 'string', - 'example' => 'record/{liveApp****}/{liveStream****}', - ], - 'Format' => [ - 'description' => 'The format of recording files.'."\n", - 'type' => 'string', - 'example' => 'M3U8', - ], - ], - ], - ], - ], - ], - 'TranscodeTemplates' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Templates' => [ - 'description' => 'The transcoding templates.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The transcoding template used by the recorded stream. If all transcoded streams are recorded, \\["\\*"] is returned.'."\n", - 'type' => 'string', - 'example' => '["sd","hd"]', - ], - ], - ], - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageNum\\": 5,\\n \\"RequestId\\": \\"5056369B-D337-499E-B8B7-B761BD37B08A\\",\\n \\"Order\\": \\"desc\\",\\n \\"TotalPage\\": 20,\\n \\"PageSize\\": 10,\\n \\"TotalNum\\": 12,\\n \\"LiveAppRecordList\\": {\\n \\"LiveAppRecord\\": [\\n {\\n \\"EndTime\\": \\"2018-11-08T03:49:18Z\\",\\n \\"StartTime\\": \\"2018-11-08T02:49:18Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"DelayTime\\": 180,\\n \\"CreateTime\\": \\"2016-05-20T09:33:38Z\\",\\n \\"OnDemond\\": 0,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"RecordFormatList\\": {\\n \\"RecordFormat\\": [\\n {\\n \\"SliceDuration\\": 30,\\n \\"CycleDuration\\": 3600,\\n \\"SliceOssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}/{UnixTimestamp}\\",\\n \\"OssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}\\",\\n \\"Format\\": \\"M3U8\\"\\n }\\n ]\\n },\\n \\"TranscodeRecordFormatList\\": {\\n \\"RecordFormat\\": [\\n {\\n \\"SliceDuration\\": 30,\\n \\"CycleDuration\\": 3600,\\n \\"SliceOssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}/{UnixTimestamp}\\",\\n \\"OssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}\\",\\n \\"Format\\": \\"M3U8\\"\\n }\\n ]\\n },\\n \\"TranscodeTemplates\\": {\\n \\"Templates\\": [\\n \\"[\\\\\\"sd\\\\\\",\\\\\\"hd\\\\\\"]\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\ndesc\\n12\\n20\\n10\\n5\\n5056369B-D337-499E-B8B7-B761BD37B08A\\n\\n \\n liveStream****\\n 2018-11-08T03:49:18Z\\n cn-oss-****.aliyuncs.com\\n example.com\\n 2016-05-20T09:33:38Z\\n 2018-11-08T02:49:18Z\\n liveBucket****\\n 0\\n liveApp****\\n \\n \\n M3U8\\n record/{liveApp****}/{liveStream****}/{UnixTimestamp}\\n 3600\\n 30\\n record/{liveApp****}/{liveStream****}\\n \\n \\n \\n \\n M3U8\\n record/{liveApp****}/{liveStream****}/{UnixTimestamp}\\n 3600\\n 30\\n record/{liveApp****}/{liveStream****}\\n \\n \\n \\n [\\"sd\\",\\"hd\\"]\\n \\n \\n\\n","errorExample":"{\\n \\"LiveAppRecordList\\":{\\n \\"LiveAppRecord\\":[{\\n \\"AppName\\":\\"aliyuntest\\",\\n \\"CreateTime\\":\\"2016-05-20T09:33:38Z\\",\\n \\"DomainName\\":\\"xxxxx\\",\\n \\"FormatList\\":{\\n \\"Format\\":[{\\n \\"Name\\":\\"m3u8\\",\\n \\"OssObjectPrefix\\":\\"xxx\\",\\n \\"SliceOssObjectPrefix\\":\\"xxx\\"\\n }]\\n },\\n \\"OssBucket\\":\\"chimang.bucket\\",\\n \\"OssEndpoint\\":\\"oss-cn-hangzhou.aliyuncs.com\\"\\n }]\\n },\\n \\"RequestId\\":\\"5056369B-D337-499E-B8B7-B761BD37B08A\\"\\n}"}]', - 'title' => 'DescribeLiveRecordConfig', - 'description' => 'Obtain the main streaming domain, and then call this operation to query the recording configurations of all applications under the main streaming domain.'."\n" + 'title' => 'DeleteLiveAppSnapshotConfig', + 'description' => 'You can call this operation to delete the snapshot configuration for live streams in an application. The deletion takes effect after you restart stream ingest.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamRecordContent' => [ - 'summary' => 'Queries the recordings of a live stream.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAppSnapshotConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAppSnapshotConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteLiveAudioAuditConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The operation that you want to perform. Set the value to **DescribeLiveStreamRecordContent**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The AppName of the live stream.'."\n" + ."\n" + .'> Set AppName to an asterisk (\\*) to match all AppNames under the domain.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ 'name' => 'StreamName', 'in' => 'query', + 'schema' => ['description' => 'The stream name.'."\n" + ."\n" + .'> Set StreamName to an asterisk (\\*) to match all streams in the AppName.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E******', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'ConfigExisted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'DeleteLiveAudioAuditConfig', + 'summary' => 'Deletes an audio moderation configuration.', + 'description' => '- You can call this operation to delete the automated audio review configuration for a specified streaming domain.'."\n" + ."\n" + .'- The automated review feature is available only in specific regions. For supported regions, see [Service regions](~~193730~~).'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAudioAuditConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAudioAuditConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E******\\"\\n}","type":"json"}]', + ], + 'DeleteLiveAudioAuditNotifyConfig' => [ + 'summary' => 'Deletes the callback configuration for automated audio review from a streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '106923', + 'abilityTreeNodes' => ['FEATUREliveG4SX14', 'FEATUREliveUTGSNT'], + ], + 'parameters' => [ [ - 'name' => 'EndTime', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. You can only query the recordings in the last 6 months. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -15239,101 +12441,58 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The end of the time range to query. The time range that is specified by the StartTime and EndTime parameters cannot exceed 4 days. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'example' => '62136AE6-7793-45ED-B14A-60D19A9486D3', - ], - 'RecordContentInfoList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RecordContentInfo' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'EndTime' => [ - 'description' => 'The recordings.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T07:46:00Z', - ], - 'StartTime' => [ - 'description' => 'The end of the time range for which the recordings were queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T07:36:00Z', - ], - 'Duration' => [ - 'description' => 'The beginning of the time range for which the recordings were queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '10', - ], - 'OssBucket' => [ - 'description' => 'The recording length. Unit: seconds.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'OssObjectPrefix' => [ - 'description' => 'The name of the Object Storage Service (OSS) bucket.'."\n", - 'type' => 'string', - 'example' => 'record/{Date}/{UnixTimestamp}_{Sequence}', - ], - 'OssEndpoint' => [ - 'description' => 'The naming rule of recordings in OSS.'."\n", - 'type' => 'string', - 'example' => 'cn-oss-****.aliyuncs.com', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.Mismatch', - 'errorMessage' => 'Specified StartTime does not math the current time.', - ], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'ConfigExisted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"62136AE6-7793-45ED-B14A-60D19A9486D3\\",\\n \\"RecordContentInfoList\\": {\\n \\"RecordContentInfo\\": [\\n {\\n \\"EndTime\\": \\"2015-12-01T07:46:00Z\\",\\n \\"StartTime\\": \\"2015-12-01T07:36:00Z\\",\\n \\"Duration\\": 10,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"OssObjectPrefix\\": \\"record/{Date}/{UnixTimestamp}_{Sequence}\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n62136AE6-7793-45ED-B14A-60D19A9486D3\\n\\n \\n 2015-12-01T07:46:00Z\\n cn-oss-****.aliyuncs.com\\n 2015-12-01T07:36:00Z\\n liveBucket****\\n 10\\n record/{Date}/{UnixTimestamp}_{Sequence}\\n \\n\\n","errorExample":"{\\n \\"RecordContentInfoList\\":{\\n \\"RecordContentInfo\\":[{\\n \\"Duration\\":14638.0,\\n \\"EndTime\\":\\"2016-05-25T09:41:09Z\\",\\n \\"OssBucket\\":\\"livevideo-test\\",\\n \\"OssEndpoint\\":\\"oss-cn-hangzhou.aliyuncs.com\\",\\n \\"OssObjectPrefix\\":\\"record/{Date}/{UnixTimestamp}_{Sequence}\\",\\n \\"StartTime\\":\\"2016-05-25T05:37:11Z\\"\\n }]\\n },\\n \\"RequestId\\":\\"62136AE6-7793-45ED-B14A-60D19A9486D3\\"\\n}"}]', - 'title' => 'DescribeLiveStreamRecordContent', - 'description' => 'Obtain the main streaming domain, and then call this operation to query the recordings of the live stream.'."\n" + 'title' => 'DeleteLiveAudioAuditNotifyConfig', + 'description' => 'Only some live centers support automated review. For supported regions, see [Service regions](~~193730~~).'."\n" ."\n" - .'## QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live).', + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'CreateLiveStreamRecordIndexFiles' => [ - 'summary' => 'Creates an M3U8 index file for a recording in a specified time period.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAudioAuditNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAudioAuditNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","type":"json"}]', + ], + 'DeleteLiveCenterTransfer' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -15341,104 +12500,119 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106896', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'example.com'], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. If you want to match all applications, specify an asterisk (\\*) as the value.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The name of the application. The value must be the same as that of the live stream that you want to relay. View AppName on the [Stream Management](t2019924.xdita#).', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'testapp'], ], [ 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. The value of this parameter must be the same as the stream name in the ingest URL. Otherwise, the configuration does not take effect. If you want to match all streams, specify an asterisk (\\*) as the value.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The name of the live stream. View StreamName on the [Stream Management](t2019924.xdita#) page.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'teststream'], ], [ - 'name' => 'OssEndpoint', + 'name' => 'DstUrl', 'in' => 'query', + 'schema' => ['description' => 'The third-party URL to which the live stream is relayed.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'rtmp://push.example2.aliyundoc.com/testapp1/teststream2'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-oss-****.aliyuncs.com', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '7908F2FF-44F8-120F-9FD6-85A******'], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], + ], + ], + 'title' => 'DeleteLiveCenterTransfer', + 'summary' => 'Deletes a live center stream relay configuration.', + 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveCenterTransfer'], + ], + ], + 'ramActions' => [ [ - 'name' => 'OssBucket', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the OSS bucket.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveBucket****', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveCenterTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - [ - 'name' => 'OssObject', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the recording that is stored in OSS.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '{AppName}/{StreamName}/{Date}/{Hour}/{Minute}_{Second}.m3u8', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85A******\\"\\n}","type":"json"}]', + ], + 'DeleteLiveDelayConfig' => [ + 'summary' => 'Deletes a stream delay configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveBP94ZY'], + ], + 'parameters' => [ [ - 'name' => 'StartTime', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of the index file. TS segments that are uploaded after the start time are included in the index file. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of the index file. TS segments that are uploaded before the end time are included in the index file. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'EndTimeIncluded', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to include the end time. If you set this parameter to true, the system attempts to include one more TS segment. The created index file covers the entire time range that is specified by the StartTime and EndTime parameters.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => 'The AppName of the live stream. You can specify an asterisk (\\*) to match all AppNames under the domain name.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'Stream', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream. You can use the wildcard (\\*) to specify all StreamNames under the AppName.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ @@ -15446,260 +12620,62 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '550439A3-F8EC-4CA2-BB62-B9DB43EEEF30', - ], - 'RecordInfo' => [ - 'description' => 'The recording configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'RecordUrl' => [ - 'description' => 'The URL of the M3U8 index file.'."\n", - 'type' => 'string', - 'example' => 'http://*****/atestObject.m3u8', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'CreateTime' => [ - 'description' => 'The time when the index file was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*hh:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-05-27T09:40:56Z', - ], - 'RecordId' => [ - 'description' => 'The ID of the index file.'."\n", - 'type' => 'string', - 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', - ], - 'Height' => [ - 'description' => 'The height of the video.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '480', - ], - 'OssBucket' => [ - 'description' => 'The name of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'OssObject' => [ - 'description' => 'The name of the recording that is stored in OSS.'."\n", - 'type' => 'string', - 'example' => 'liveObject****.m3u8', - ], - 'EndTime' => [ - 'description' => 'The end time of the index file. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T07:40:00Z', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'StartTime' => [ - 'description' => 'The start time of the index file. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*hh:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T07:36:00Z', - ], - 'Width' => [ - 'description' => 'The width of the video.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '640', - ], - 'Duration' => [ - 'description' => 'The recording length. Unit: seconds.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '20', - ], - 'OssEndpoint' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'cn-oss-****.aliyuncs.com', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Mismatch', - 'errorMessage' => 'Specified StartTime does not math the current time.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => 'invalid params', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidOssEndpoint.Malformed', - 'errorMessage' => 'Specified OssEndpoint is malformed.', - ], - [ - 'errorCode' => 'InvalidOssBucket.Malformed', - 'errorMessage' => 'Specified OssBucket is malformed.', - ], - [ - 'errorCode' => 'InvalidOssObject.Malformed', - 'errorMessage' => 'Specified OssObject is malformed.', - ], - [ - 'errorCode' => 'InvalidStream.NotFound', - 'errorMessage' => 'Speicified stream does not exist.', - ], - [ - 'errorCode' => 'InvalidConfig.Changed', - 'errorMessage' => 'The oss bucket info between StartTime and EndTime has changed.', - ], - [ - 'errorCode' => 'NoRecordContent', - 'errorMessage' => 'The record content between StartTime and EndTime is empty.', - ], - [ - 'errorCode' => 'RecordContentExceed', - 'errorMessage' => 'The record content between StartTime and EndTime is exceeded, please narrow down the range.', - ], - [ - 'errorCode' => 'OperationNotSupport', - 'errorMessage' => 'The Operation is not support for flv/mp4 format or live to vod record.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'Invalid parameter:%s.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidBucket.NotFound', - 'errorMessage' => 'The bucket does not belong to you.', - ], + ], + 'title' => 'DeleteLiveDelayConfig', + 'description' => 'The queries per second (QPS) limit for a single user is 60. If you exceed the limit, API calls are throttled. This may impact your business. Plan your API calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDelayConfig'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"550439A3-F8EC-4CA2-BB62-B9DB43EEEF30\\",\\n \\"RecordInfo\\": {\\n \\"RecordUrl\\": \\"http://*****/atestObject.m3u8\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"CreateTime\\": \\"2016-05-27T09:40:56Z\\",\\n \\"RecordId\\": \\"c4d7f0a4-b506-43f9-8de3-07732c3f****\\",\\n \\"Height\\": 480,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssObject\\": \\"liveObject****.m3u8\\",\\n \\"EndTime\\": \\"2015-12-01T07:40:00Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"StartTime\\": \\"2015-12-01T07:36:00Z\\",\\n \\"Width\\": 640,\\n \\"Duration\\": 20,\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 550439A3-F8EC-4CA2-BB62-B9DB43EEEF30\\n \\n 2015-12-01T07:40:00Z\\n example.com\\n 2016-05-27T09:40:56Z\\n 2015-12-01T07:36:00Z\\n liveBucket****\\n 20\\n liveApp****\\n liveStream****\\n cn-oss-****.aliyuncs.com\\n http://*****/atestObject.m3u8\\n liveObject****.m3u8\\n 480\\n c4d7f0a4-b506-43f9-8de3-07732c3f****\\n 640\\n \\n","errorExample":""}]', - 'title' => 'CreateLiveStreamRecordIndexFiles', - 'description' => 'You must have configured Object Storage Service (OSS) before you call this operation. For more information, see [Configure OSS](~~84932~~). ApsaraVideo Live allows you to record a live stream in the M3U8 format and store the M3U8 file in OSS. You can edit the TS segments that are included in the stored M3U8 file in real time.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* You can create an index file only after a live stream is ingested. If no live stream is available within the specified time range or the name of the specified live stream is invalid, the index file fails to be created.'."\n" - ."\n" - .'* The time range that is specified by the StartTime and EndTime parameters must be the duration of at least one TS segment. The default duration of a TS segment is 30 seconds.'."\n" - ."\n" - .'* ApsaraVideo Live stores the information about TS segments for only three months. You can create M3U8 index files only for the recordings of the last three months.'."\n" - ."\n" - .'* OSS stores TS segments for a time period that is specified by the storage configuration in OSS. For more information, see [Configure lifecycle rules](~~31904~~).'."\n" - ."\n" - .'* ApsaraVideo Live stores the information about M3U8 index files for six months. You can query the information about only the M3U8 index files that were created in the last six months.'."\n" - ."\n" - .'* OSS stores M3U8 index files for a time period that is specified by the storage configuration in OSS.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 45 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', ], - 'DescribeLiveStreamRecordIndexFile' => [ - 'summary' => 'Queries the information about an index file.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DeleteLiveDetectNotifyConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107095', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'ApsaraVideo Live stores the configuration information of an M3U8 index file for six months. You can query only index files created in the previous six months. M3U8 index files are stored in Object Storage Service (OSS) buckets. The retention period is determined by the storage configuration of the OSS buckets.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'System-defined parameter. Value: **DescribeLiveStreamRecordIndexFile**.', - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main domain of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'RecordId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the index file.'."\n" - ."\n" - .'> You can call the [DescribeLiveStreamRecordIndexFiles](~~2847890~~) operation to query the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -15707,237 +12683,157 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5EBF2AC3-4B73-40A5-8B32-83F49D5F035E', - ], - 'RecordIndexInfo' => [ - 'description' => 'The information about the index file.'."\n", - 'type' => 'object', - 'properties' => [ - 'RecordUrl' => [ - 'description' => 'The URL of the index file.'."\n", - 'type' => 'string', - 'example' => 'http://****/atestObject****.m3u8', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'CreateTime' => [ - 'description' => 'The time when the index file was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-05-27T09:40:56Z', - ], - 'RecordId' => [ - 'description' => 'The ID of the index file.'."\n", - 'type' => 'string', - 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', - ], - 'Height' => [ - 'description' => 'The video height.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '480', - ], - 'OssBucket' => [ - 'description' => 'The name of the Object Storage Service (OSS) bucket.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'OssObject' => [ - 'description' => 'The name of the storage file in OSS.'."\n", - 'type' => 'string', - 'example' => 'liveObject****', - ], - 'EndTime' => [ - 'description' => 'The end time of the index file. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-05-25T05:47:11Z', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'StartTime' => [ - 'description' => 'The start time of the index file. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T05:36:00Z', - ], - 'Width' => [ - 'description' => 'The video width.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '640', - ], - 'Duration' => [ - 'description' => 'The recording length. Unit: seconds.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '588.849', - ], - 'OssEndpoint' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'cn-oss-****.aliyuncs.com', - ], - 'Format' => [ - 'description' => 'The video format.'."\n", - 'type' => 'string', - 'example' => 'mp4', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5EBF2AC3-4B73-40A5-8B32-83F49D5F035E\\",\\n \\"RecordIndexInfo\\": {\\n \\"RecordUrl\\": \\"http://****/atestObject****.m3u8\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"CreateTime\\": \\"2016-05-27T09:40:56Z\\",\\n \\"RecordId\\": \\"c4d7f0a4-b506-43f9-8de3-07732c3f****\\",\\n \\"Height\\": 480,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssObject\\": \\"liveObject****\\",\\n \\"EndTime\\": \\"2016-05-25T05:47:11Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"StartTime\\": \\"2015-12-01T05:36:00Z\\",\\n \\"Width\\": 640,\\n \\"Duration\\": 588.849,\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"Format\\": \\"mp4\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n 2016-05-25T05:47:11Z\\n example.com\\n 2016-05-27T09:40:56Z\\n 2015-12-01T05:36:00Z\\n liveBucket****\\n 588.849\\n liveApp****\\n liveStream****\\n cn-oss-****.aliyuncs.com\\n http://****/atestObject****.m3u8\\n liveObject****\\n 480\\n c4d7f0a4-b506-43f9-8de3-07732c3f****\\n 640\\n mp4\\n \\n 5EBF2AC3-4B73-40A5-8B32-83F49D5F035E\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamRecordIndexFile', - 'description' => 'ApsaraVideo Live stores the information about M3U8 index files for six months. You can query the information about only the M3U8 index files that were created in the last six months. OSS stores M3U8 index files for a time period that is specified by the storage configuration in OSS.'."\n" + 'title' => 'DeleteLiveDetectNotifyConfig', + 'summary' => 'Deletes the configuration of callbacks for video moderation results.', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'- Obtain the main streaming domain, and then call this operation to delete the configuration of callbacks for video moderation results.'."\n" + ."\n" + .'- Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamRecordIndexFiles' => [ - 'summary' => 'Queries all index files within a specific time period.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-01-30T08:56:50.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDetectNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDetectNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteLiveDomain' => [ + 'summary' => 'Deletes all records of the specified live streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107096', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeCode' => '106925', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'* ApsaraVideo Live stores the information about an M3U8 index file for six months. You can query only the information of index files created in the previous six months.'."\n" - .'* M3U8 index files are stored in Object Storage Service (OSS) buckets. The retention period is determined by the storage configuration of the OSS buckets.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ingest or streaming domain to delete.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], - [ - 'name' => 'AppName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'System-defined parameter. Value: **DescribeLiveStreamRecordIndexFiles**.', - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '94E3559F-7B6A-4A5E-AFFD-44E2A208A249', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidDomainName.Malformed', 'errorMessage' => 'The specific value of parameter DomainName is malformed.', 'description' => ''], + ['errorCode' => 'InvalidParameter', 'errorMessage' => 'Delete live region parameters have error.', 'description' => ''], + ['errorCode' => 'InvalidOperation', 'errorMessage' => 'Delete domain until configure compete.', 'description' => ''], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'DeleteLiveDomain', + 'description' => '- A successful call to the DeleteLiveDomain operation deletes all records for the specified live streaming domain. Use this operation with caution.'."\n" + ."\n" + .'- To prevent the domain name from becoming inaccessible, you must restore its A record with your DNS service provider before you delete the domain name. If your domain name registrar is Alibaba Cloud, log on to the [Alibaba Cloud DNS console](https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fdns.console.aliyun.com%2F%3Fspm%3Da2c4g.11186623.0.0.3cda841fcvk7Qs\\&lang=zh). Navigate to the **Public Zone** page. Find the domain name, click **Settings**, and change the CNAME record to an A record. If your domain name is registered with another registrar, perform a similar configuration with that registrar.'."\n" + ."\n" + .'- If you only need to disable a live streaming domain, call the [StopLiveDomain](~~2847799~~) operation.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDomain'], ], + ], + 'ramActions' => [ [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDomain', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"94E3559F-7B6A-4A5E-AFFD-44E2A208A249\\"\\n}","type":"json"}]', + ], + 'DeleteLiveDomainMapping' => [ + 'summary' => 'Deletes the mapping between a streaming domain and an ingest domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'PageNum', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'AK' => [], ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '106927', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'PageSize', + 'name' => 'PushDomain', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: **5 to 30**. Default value: **10**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '5', - 'example' => '10', - 'default' => '10', - ], + 'schema' => ['description' => 'The ingest domain. The type of the domain name is **liveEdge**.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'Order', + 'name' => 'PullDomain', 'in' => 'query', - 'schema' => [ - 'description' => 'The order in which the entries are sorted based on creation time. Valid values:'."\n" - ."\n" - .'* **asc** (default): ascending order'."\n" - .'* **desc**: descending order'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'asc', - 'default' => 'asc', - 'enum' => [ - 'asc', - 'desc', - ], - ], + 'schema' => ['description' => 'The streaming domain. The type of the domain name is **liveVideo**.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -15945,185 +12841,58 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'DE24625C-7C0F-4020-8448-9C31A50C1556', - ], - 'Order' => [ - 'description' => 'The sort order.'."\n", - 'type' => 'string', - 'example' => 'asc', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'TotalNum' => [ - 'description' => 'The total number of entries that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '12', - ], - 'RecordIndexInfoList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RecordIndexInfo' => [ - 'description' => 'The index files.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'RecordUrl' => [ - 'description' => 'The URL of the index file.'."\n", - 'type' => 'string', - 'example' => 'http://****/atestObject****.m3u8', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'CreateTime' => [ - 'description' => 'The time when the index file was created.'."\n", - 'type' => 'string', - 'example' => '2016-05-27T09:40:56Z', - ], - 'RecordId' => [ - 'description' => 'The ID of the index file.'."\n", - 'type' => 'string', - 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', - ], - 'Height' => [ - 'description' => 'The video height.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '480', - ], - 'OssBucket' => [ - 'description' => 'The name of the Object Storage Service (OSS) bucket.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'OssObject' => [ - 'description' => 'The name of the storage file in OSS.'."\n", - 'type' => 'string', - 'example' => 'liveObject****', - ], - 'EndTime' => [ - 'description' => 'The end time of the index file. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T07:46:00Z', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'StartTime' => [ - 'description' => 'The start time of the index file. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T07:36:00Z', - ], - 'Width' => [ - 'description' => 'The video width.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '640', - ], - 'Duration' => [ - 'description' => 'The recording length. Unit: seconds.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '588.849', - ], - 'OssEndpoint' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'cn-oss-****.aliyuncs.com', - ], - 'Format' => [ - 'description' => 'The video format.'."\n", - 'type' => 'string', - 'example' => 'HLS', - ], - ], - 'description' => '', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.Mismatch', - 'errorMessage' => 'Specified StartTime does not math the current time.', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => 'Ram Permission is forbidden.', - ], + ['errorCode' => 'InvalidPushDomain', 'errorMessage' => 'The PushDomain should be liveEdge type.', 'description' => ''], + ['errorCode' => 'InvalidPullDomain', 'errorMessage' => 'The PullDomain should be liveVideo type.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageNum\\": 10,\\n \\"RequestId\\": \\"DE24625C-7C0F-4020-8448-9C31A50C1556\\",\\n \\"Order\\": \\"asc\\",\\n \\"TotalPage\\": 20,\\n \\"PageSize\\": 5,\\n \\"TotalNum\\": 12,\\n \\"RecordIndexInfoList\\": {\\n \\"RecordIndexInfo\\": [\\n {\\n \\"RecordUrl\\": \\"http://****/atestObject****.m3u8\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"CreateTime\\": \\"2016-05-27T09:40:56Z\\",\\n \\"RecordId\\": \\"c4d7f0a4-b506-43f9-8de3-07732c3f****\\",\\n \\"Height\\": 480,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssObject\\": \\"liveObject****\\",\\n \\"EndTime\\": \\"2015-12-01T07:46:00Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"StartTime\\": \\"2015-12-01T07:36:00Z\\",\\n \\"Width\\": 640,\\n \\"Duration\\": 588.849,\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"Format\\": \\"HLS\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n asc\\n 12\\n 20\\n 5\\n 10\\n DE24625C-7C0F-4020-8448-9C31A50C1556\\n \\n \\n 2015-12-01T07:46:00Z\\n example.com\\n 2016-05-27T09:40:56Z\\n 2015-12-01T07:36:00Z\\n liveBucket****\\n 588.849\\n liveApp****\\n liveStream****\\n cn-oss-****.aliyuncs.com\\n http://****/atestObject****.m3u8\\n liveObject****\\n 480\\n c4d7f0a4-b506-43f9-8de3-07732c3f****\\n 640\\n mp4\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamRecordIndexFiles', - 'description' => '* ApsaraVideo Live stores the information about M3U8 index files for six months. You can query the information about only the M3U8 index files that were created in the last six months.'."\n" - .'* OSS stores M3U8 index files for a time period that is specified by the storage configuration in OSS.'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'DeleteLiveDomainMapping', + 'description' => 'Make sure that the streaming domain has been mapped to the ingest domain before you call this operation to delete the mapping. For more information about how to map a streaming domain to an ingest domain, see [AddLiveDomainMapping](~~88782~~).'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddLiveRecordNotifyConfig' => [ - 'summary' => 'Configures recording callbacks for a domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDomainMapping'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDomainMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteLiveDomainPlayMapping' => [ + 'summary' => 'Deletes the mapping between a main streaming domain and a sub-streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -16131,80 +12900,27 @@ ], 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '106928', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'NotifyUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL that is used to receive notifications about recording events and status.'."\n" - ."\n" - .'> The URL must start with `http://` or `https://`. For more information, see [Callbacks for live stream recording](~~55016~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://demo.aliyundoc.com/examplecallback.action', - ], - ], - [ - 'name' => 'NeedStatusNotify', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable callbacks for recording status. Valid values:'."\n" - ."\n" - .'* true: enables callbacks for recording status. If you set this parameter to **true**, an example of recording status callback is returned.'."\n" - .'* false (default): disables callbacks for recording status.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - 'default' => 'false', - ], - ], - [ - 'name' => 'OnDemandUrl', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL for on-demand recordings.'."\n" - ."\n" - .'> The URL must start with `http://` or `https://`. For more information, see [On-demand recording](~~85910~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://learn.aliyundoc.com/ondemandcallback.action', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'NotifyReqAuth', + 'name' => 'PlayDomain', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - 'default' => 'false', - ], + 'schema' => ['description' => 'The sub-streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'NotifyAuthKey', + 'name' => 'PullDomain', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'maxLength' => 64, - 'minLength' => 16, - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -16212,61 +12928,52 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidNotifyUrl.Malformed', - 'errorMessage' => 'Specified NotifyUrl is invalid.', - ], - [ - 'errorCode' => 'InvalidNotifyUrl.Unsafe', - 'errorMessage' => 'Specified NotifyUrl is not safe.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'InvalidOnDemandUrl.Malformed', - 'errorMessage' => 'Specified OnDemandUrl is invalid.', - ], - [ - 'errorCode' => 'InvalidOnDemandUrl.Unsafe', - 'errorMessage' => 'Specified OnDemandUrl is not safe.', - ], - ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t394966CA-5940-44D7-A1C5-24211C7B07A9\\n\\t","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'AddLiveRecordNotifyConfig', - 'description' => 'Before you call this operation to configure recording callbacks for a domain name, you can query whether the domain name already has recording callbacks configured. For more information, see [DescribeLiveRecordNotifyConfig](~~2847893~~).'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'title' => 'DeleteLiveDomainPlayMapping', + 'description' => '## QPS limits'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteLiveRecordNotifyConfig' => [ - 'summary' => 'Deletes the configuration of callbacks for live stream recording under a domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-01-30T08:56:50.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDomainPlayMapping'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDomainPlayMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteLiveEdgeTransfer' => [ + 'summary' => 'Delete the live stream edge transfer configuration. ', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -16277,20 +12984,18 @@ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'Region ID. ', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ingest domain. You can set only one stream relay configuration for an ingest domain.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ @@ -16298,768 +13003,427 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => 'Ram Permission is forbidden.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], - 404 => [ - [ - 'errorCode' => 'InvalidConfig.NotFound', - 'errorMessage' => 'Config does not exist.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'DeleteLiveRecordNotifyConfig', - 'description' => 'Obtain the main streaming domain, and then call this operation to delete the configuration of callbacks for live stream recording under the main streaming domain.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + 'title' => 'Delete live stream edge transfer configuration ', + 'description' => 'Calling DeleteLiveEdgeTransfer only deletes the live stream edge transfer configuration for a specific domain name. It does not affect any ongoing live stream transfers that were already initiated based on that configuration. The following are typical scenario examples:'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'| Scenario | Analysis | Result |'."\n" + .'| -------------- | -------------- | ------ |'."\n" + .'| 1. After calling SetLiveEdgeTransfer to configure live stream edge transfer and starting stream ingest, call DeleteLiveEdgeTransfer to delete the configuration during the ingest process. | The live stream edge transfer configuration exists at the time of stream ingest. | Stream ingest is unaffected, and live stream edge transfer will not break. |'."\n" + .'| 2. During stream ingest, call DeleteLiveEdgeTransfer to delete the live stream edge transfer configuration, then stop and restart the stream ingest. | The live stream edge transfer configuration no longer exists when stream ingest restarts. | Live stream edge transfer will not start. |'."\n" + .'| 3. Start live stream ingest only after calling DeleteLiveEdgeTransfer. | The live stream edge transfer configuration does not exist at this point. | Live stream edge transfer will not start. |'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## Queries per second (QPS) limit '."\n" + .'The per-user QPS limit for this API is 100 queries per second. If you exceed this limit, your API calls will be rate-limited, which may impact your business. Please invoke the API appropriately. ', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveRecordNotifyConfig' => [ - 'summary' => 'Queries the configuration of callbacks for live stream recording under a domain name.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveEdgeTransfer'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveEdgeTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DeleteLiveLazyPullStreamInfoConfig' => [ + 'summary' => 'Deletes a configuration of triggered stream pulling.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the application.'."\n" + ."\n" + .'> To delete configurations of triggered stream pulling for all applications, set it to **ali\\_all\\_app**.', 'type' => 'string', 'required' => true, 'example' => 'ali_all_app', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5056369B-D337-499E-B8B7-B761BD37B08A', - ], - 'LiveRecordNotifyConfig' => [ - 'description' => 'The configuration of callbacks for live stream recording.'."\n", - 'type' => 'object', - 'properties' => [ - 'NotifyReqAuth' => [ - 'type' => 'boolean', - ], - 'NotifyAuthKey' => [ - 'type' => 'string', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'NotifyUrl' => [ - 'description' => 'The recording callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://learn.aliyundoc.com/examplecallback.action', - ], - 'NeedStatusNotify' => [ - 'description' => 'Indicates whether recording status callbacks are enabled. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false** (default)'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'OnDemandUrl' => [ - 'description' => 'The callback URL for on-demand recording.'."\n", - 'type' => 'string', - 'example' => 'http://guide.aliyundoc.com/ondemandcallback.action', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 404 => [ - [ - 'errorCode' => 'InvalidConfig.NotFound', - 'errorMessage' => 'Config does not exist.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5056369B-D337-499E-B8B7-B761BD37B08A\\",\\n \\"LiveRecordNotifyConfig\\": {\\n \\"NotifyReqAuth\\": true,\\n \\"NotifyAuthKey\\": \\"KbT8mN2pQ9rS4vX7wZ1aB3cE5fG6hJ8kL\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"NotifyUrl\\": \\"http://learn.aliyundoc.com/examplecallback.action\\",\\n \\"NeedStatusNotify\\": false,\\n \\"OnDemandUrl\\": \\"http://guide.aliyundoc.com/ondemandcallback.action\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n5056369B-D337-499E-B8B7-B761BD37B08A\\n\\n false\\n http://guide.aliyundoc.com/ondemandcallback.action\\n example.com\\n http://learn.aliyundoc.com/examplecallback.action\\n\\n","errorExample":"{\\n \\"LiveRecordNotifyConfig\\":{\\n \\"DomainName\\":\\"xxxx\\",\\n \\"NeedStatusNotify\\":false,\\n \\"NotifyUrl\\":\\"http://xxx\\"\\n },\\n \\"RequestId\\":\\"5056369B-D337-499E-B8B7-B761BD37B08A\\"\\n}"}]', - 'title' => 'DescribeLiveRecordNotifyConfig', - 'description' => 'Obtain the main streaming domain, and then call this operation to query the configuration of callbacks for live stream recording under the domain name.'."\n" + 'title' => 'DeleteLiveLazyPullStreamInfoConfig', + 'description' => 'This operation supports deleting only the configurations of triggered stream pulling. If AppName is set to ali\\_all\\_app, such configurations for all applications under the domain name are deleted.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'UpdateLiveRecordNotifyConfig' => [ - 'summary' => 'Modifies the recording callback configuration of a streaming domain.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' | 错误代码 | 描述 | HTTP 状态码 | 语义 |'."\n" + .'| ------------- |------------ | ----- | ----- |'."\n" + .'| InternalError | The request processing has failed due to some unknown error.| 500 |后台发生未知错误。|'."\n" + .'|InvalidDomain.NotFound|The domain provided does not exist in our records. |404 |当前账户下未查到域名。|'."\n" + .'|IllegalOperation |Illegal domain operate is not permitted.| 404 |不支持当前操作,如:非直播类域名。|'."\n", + 'changeSet' => [ + ['createdAt' => '2022-08-17T11:23:25.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveLazyPullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteLiveMessageGroup' => [ + 'summary' => 'Deletes an interactive messaging group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107282', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'NotifyUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL that is used to receive notifications about recording events and status.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The URL must start with `http://` or `https://`.'."\n" - ."\n" - .'* You must use URLEncoder for encoding. This way, the system can identify Chinese characters, spaces, and special characters.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://learn.aliyundoc.com/examplecallback.action', - ], - ], - [ - 'name' => 'OnDemandUrl', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL for on-demand recordings.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The URL must start with `http://` or `https://`.'."\n" - ."\n" - .'* You must use URLEncoder for encoding. This way, the system can identify Chinese characters, spaces, and special characters.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://guide.aliyundoc.com/ondemandcallback.action', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'NeedStatusNotify', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable callbacks for recording status. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false** (default)'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => 'The ID of the group that you want to delete.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'NotifyReqAuth', + 'name' => 'OperatorId', 'in' => 'query', - 'schema' => [ - 'type' => 'boolean', - 'required' => false, - ], + 'schema' => ['description' => 'The ID of the user who performs the deletion operation. The ID can be up to 64 bytes in length and can contain only letters and digits.'."\n", 'type' => 'string', 'required' => false, 'example' => 'uid1', 'title' => ''], ], [ - 'name' => 'NotifyAuthKey', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'maxLength' => 64, - 'minLength' => 16, - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'B95BE680-5A6A-1CAD-8AB1-09DFF5D6****'], + 'GroupId' => ['description' => 'The ID of the deleted or non-existent group.'."\n", 'type' => 'string', 'example' => 'grouptest', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidNotifyUrl.Malformed', - 'errorMessage' => 'Specified NotifyUrl is invalid.', - ], - [ - 'errorCode' => 'InvalidNotifyUrl.Unsafe', - 'errorMessage' => 'Specified NotifyUrl is not safe.', - ], - [ - 'errorCode' => 'InvalidOnDemandUrl.Malformed', - 'errorMessage' => 'Specified OnDemandUrl is invalid.', - ], - [ - 'errorCode' => 'InvalidOnDemandUrl.Unsafe', - 'errorMessage' => 'Specified OnDemandUrl is not safe.', - ], - [ - 'errorCode' => 'InvalidDomain.NotFound', - 'errorMessage' => 'Specified Domain is invalid.', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => 'Ram Permission is forbidden.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], - 404 => [ - [ - 'errorCode' => 'InvalidConfig.NotFound', - 'errorMessage' => 'Config does not exist.', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t\\n","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'UpdateLiveRecordNotifyConfig', - 'description' => 'You can call this operation to modify the following settings:'."\n" - ."\n" - .'* The callback URL that is used to receive notifications about recording events and status. For more information, see [Recording event callbacks](~~55016~~).'."\n" - .'* The callback URL for on-demand recordings. For more information, see [On-demand recording callbacks](~~85910~~).'."\n" - .'* The setting that specifies whether to enable callbacks for recording status.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\",\\n \\"GroupId\\": \\"grouptest\\"\\n}","errorExample":""},{"type":"xml","example":"\\n B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\n grouptest\\n","errorExample":""}]', + 'title' => 'DeleteLiveMessageGroup', + 'description' => '* Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + .'* After you delete an interactive messaging group, it is no longer available. Every user in the group is notified that the group is closed.'."\n" + .'* After you delete an interactive messaging group, messages in the group are retained for 30 days.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveRecordNotifyRecords' => [ - 'summary' => 'Queries the recording callback records that are stored in Object Storage Service (OSS).', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveMessageGroup'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'DeleteLiveMessageGroupMessage' => [ + 'summary' => 'Deletes a message that was sent to an interactive messaging group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveL04ZVK', - ], - ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: 1 to 500. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '10', - ], + 'schema' => ['description' => 'The group ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'PageNumber', + 'name' => 'MessageId', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1. Valid values: 1 to 100000.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '1', - ], + 'schema' => ['description' => 'The ID of the message that you want to delete. Set this parameter to the value of MsgTid that you specified when you called the SendLiveMessageGroup operation. The ID must be up to 64 bytes in length and can contain letters and digits.'."\n", 'type' => 'string', 'required' => true, 'example' => 'a74a8fbd3cfe4b2daa8517e4e3******', 'title' => ''], ], [ - 'name' => 'Status', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether the callback is successful. Valid values:'."\n" - ."\n" - .'* success'."\n" - .'* failed'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'success', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'DeleterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> You can query data within the last seven days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2023-02-10T21:03:47Z', - ], + 'schema' => ['description' => 'The ID of the user who deletes the message. The ID must be up to 64 bytes in length and can contain letters and digits.'."\n", 'type' => 'string', 'required' => false, 'example' => '169830****', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'DeleterInfo', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2023-02-10T21:03:47Z', - ], + 'schema' => ['description' => 'The additional information about the user who performs the deletion operation. The value can be up to 512 bytes in length.'."\n", 'type' => 'string', 'required' => false, 'example' => 'testname', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The callback records.'."\n", + 'title' => '', + 'description' => '', 'type' => 'object', 'properties' => [ - 'CallbackList' => [ - 'description' => 'The callback records.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The callback records.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'Description' => [ - 'description' => 'The description of the result. A value of success indicates that the request is successful. If the request fails, an error message is returned.'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'NotifyContent' => [ - 'description' => 'The callback content.'."\n", - 'type' => 'string', - 'example' => 'July 26, 16:14{"domain":"al.xxxx.com","stream":"livestream01","pull _stream_result":true,"cdn":"al"}', - ], - 'NotifyResult' => [ - 'description' => 'The callback result. Valid values:'."\n" - ."\n" - .'* success'."\n" - .'* failed'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'NotifyTime' => [ - 'description' => 'The time when the callback was returned. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2022-10-19T19:09:28Z', - ], - 'NotifyType' => [ - 'description' => 'The callback type. Valid values:'."\n" - ."\n" - .'* file_created: The recording file is created.'."\n" - .'* record_error: A recording error occurs.'."\n" - .'* record_started: Recording is started.'."\n" - .'* record_paused: Recording is paused.'."\n" - .'* record_resumed: Recording is resumed.'."\n" - .'* record_force_transcode_fail: The recording task fails to trigger transcoding.'."\n" - .'* transformat_error: An error occurs when the live stream is parsed.'."\n", - 'type' => 'string', - 'example' => 'record_started', - ], - 'NotifyUrl' => [ - 'description' => 'The recording callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://learn.aliyundoc.com/examplecallback.action', - ], - 'NotifyHeader' => [ - 'type' => 'string', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'NotifyResponse' => [ - 'type' => 'string', - ], - ], - ], - ], - 'Code' => [ - 'description' => 'The error code.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'Msg' => [ - 'description' => 'The returned message.'."\n", - 'type' => 'string', - 'example' => 'ok', - ], - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '180FA0D2-1A02-5158-A36B-115DBF7B218D', - ], - 'TotalNum' => [ - 'description' => 'The total number of entries that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'B95BE680-5A6A-1CAD-8AB1-09DFF5D6****'], + 'GroupId' => ['description' => 'The group ID.'."\n", 'type' => 'string', 'example' => 'grouptest', 'title' => ''], + 'MessageId' => ['description' => 'The ID of the deleted or non-existent message.'."\n", 'type' => 'string', 'example' => 'a74a8fbd3cfe4b2daa8517e4e3******', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => 'Invalid JSON', - ], - [ - 'errorCode' => 'MissingParams', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MalformedParams', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CallbackList\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"Description\\": \\"success\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"NotifyContent\\": \\"7月26日 16:14{\\\\\\"domain\\\\\\":\\\\\\"al.xxxx.com\\\\\\",\\\\\\"stream\\\\\\":\\\\\\"livestream01\\\\\\",\\\\\\"pull _stream_result\\\\\\":true,\\\\\\"cdn\\\\\\":\\\\\\"al\\\\\\"}\\",\\n \\"NotifyResult\\": \\"success\\",\\n \\"NotifyTime\\": \\"2022-10-19T19:09:28Z\\",\\n \\"NotifyType\\": \\"record_started\\",\\n \\"NotifyUrl\\": \\"http://learn.aliyundoc.com/examplecallback.action\\",\\n \\"NotifyHeader\\": \\"{\\\\n \\\\\\"Content-Type\\\\\\": [\\\\n \\\\\\"application/json; charset=utf-8\\\\\\"\\\\n ]\\\\n}\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"NotifyResponse\\": \\"{\\\\\\"Code\\\\\\":0,\\\\\\"Msg\\\\\\":\\\\\\"Success\\\\\\"}\\"\\n }\\n ],\\n \\"Code\\": 0,\\n \\"Msg\\": \\"ok\\",\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 20,\\n \\"RequestId\\": \\"180FA0D2-1A02-5158-A36B-115DBF7B218D\\",\\n \\"TotalNum\\": 20,\\n \\"TotalPage\\": 20\\n}","errorExample":""},{"type":"xml","example":"\\n \\n liveApp****\\n success\\n example.com\\n 7月26日 16:14{\\"domain\\":\\"al.xxxx.com\\",\\"stream\\":\\"livestream01\\",\\"pull _stream_result\\":true,\\"cdn\\":\\"al\\"}\\n success\\n 2022-10-19T19:09:28Z\\n record_started\\n http://learn.aliyundoc.com/examplecallback.action\\n liveStream****\\n \\n 0\\n ok\\n 1\\n 20\\n 180FA0D2-1A02-5158-A36B-115DBF7B218D\\n 20\\n 20\\n","errorExample":""}]', - 'title' => 'DescribeLiveRecordNotifyRecords', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'AddLiveAppSnapshotConfig' => [ - 'summary' => 'Configures the snapshot feature for a streaming domain. The captured snapshots are stored in Object Storage Service (OSS). The configuration takes effect after you restart stream ingest.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'create', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DeleteLiveMessageGroupMessage', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveMessageGroupMessage'], ], ], - 'parameters' => [ + 'ramActions' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveMessageGroupMessage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"MessageId\\": \\"a74a8fbd3cfe4b2daa8517e4e3******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\n grouptest\\n a74a8fbd3cfe4b2daa8517e4e3******\\n","errorExample":""}]', + ], + 'DeleteLiveMessageUserMessage' => [ + 'summary' => 'Deletes a message that is sent to a user.', + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name cannot start with a hyphen (-) or underscore (\\_). You can also specify an asterisk (\\*) as the value to match all applications.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'AK' => [], ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ [ - 'name' => 'TimeInterval', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The interval at which snapshots are captured. Unit: seconds. Valid values: **5 to 3600**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '3600', - 'minimum' => '5', - 'example' => '5', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'OssEndpoint', + 'name' => 'ReceiverId', 'in' => 'query', - 'schema' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n" - ."\n" - .'After the configuration is complete, you can search for specific snapshots in the OSS console based on the callback information. You must configure the OSS endpoint in advance. For more information, see [Configure OSS](~~84932~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-oss-****.aliyuncs.com', - ], + 'schema' => ['description' => 'The ID of the user who received the message to delete. The ID can contain only letters and digits and can be up to 64 bytes in length.'."\n", 'type' => 'string', 'required' => true, 'example' => '169830****', 'title' => ''], ], [ - 'name' => 'OssBucket', + 'name' => 'MessageId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the OSS bucket.'."\n" - ."\n" - .'After the configuration is complete, you can search for specific snapshots in the OSS console based on the callback information. You must create the OSS bucket in advance. For more information, see [Configure OSS](~~84932~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveBucket****', - ], + 'schema' => ['description' => 'The ID of the message that you want to delete. Set this parameter to the value of MsgTid that you specified when you called the SendLiveMessageUser operation. The ID can contain only letters and digits and can be up to 64 bytes in length.'."\n", 'type' => 'string', 'required' => true, 'example' => '**********', 'title' => ''], ], [ - 'name' => 'OverwriteOssObject', + 'name' => 'DeleterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The naming format of snapshots that are stored in the overwrite mode, which means that a new snapshot overwrites the previous snapshot.'."\n" - ."\n" - .'* The name must be less than 256 bytes in length.'."\n" - .'* Only JPG images are supported.'."\n" - .'* The name can contain variables such as {AppName} and {StreamName}.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{AppName}/{StreamName}.jpg', - ], + 'schema' => ['description' => 'The ID of the user who performs the deletion operation. The ID can contain only letters and digits and can be up to 64 bytes in length.'."\n", 'type' => 'string', 'required' => false, 'example' => '169830****', 'title' => ''], ], [ - 'name' => 'SequenceOssObject', + 'name' => 'DeleterInfo', 'in' => 'query', - 'schema' => [ - 'description' => 'The naming format of snapshots that are stored in sequence,'."\n" - ."\n" - .'which means that a new snapshot does not overwrite the previous snapshot. You can call the [DescribeLiveStreamSnapshotInfo](~~2847902~~) operation to query the snapshots that were captured within a specific time period.'."\n" - ."\n" - .'* The name must be less than 256 bytes in length.'."\n" - .'* Only JPG images are supported.'."\n" - .'* The name can contain variables such as {AppName}, {StreamName}, {UnixTimestamp}, and {Sequence}. The name must contain at least one of the {UnixTimestamp} and {Sequence} variables.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'snapshot/{AppName}/{StreamName}/{UnixTimestamp}.jpg', - ], + 'schema' => ['description' => 'The additional information about the user who performs the deletion operation. The value can be up to 512 bytes in length.'."\n", 'type' => 'string', 'required' => false, 'example' => 'username', 'title' => ''], ], [ - 'name' => 'Callback', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL that is used to receive notifications about snapshot capture.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://learn.aliyundoc.com', - ], + 'schema' => ['description' => 'The data center where the interactive messaging application is deployed. Set this parameter to the value of DataCenter that you specified when you called the [CreateLiveMessageApp](~~2593195~~) operation. Valid values: cn-shanghai (Shanghai) and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '6CFDE7AB-571A-14EA-B072-989FF753****'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidOverwriteOssObjectOrSequenceOssObject.Malformed', - 'errorMessage' => 'Specified paramters OverwriteOssObject or SequenceOssObject should have one.', - ], - [ - 'errorCode' => 'InvalidOssBucket.Malformed', - 'errorMessage' => 'Specified parameter OssBucket is not valid.', - ], - [ - 'errorCode' => 'InvalidOssEndpoint.Malformed', - 'errorMessage' => 'Specified parameter OssEndpoint is not valid.', - ], - [ - 'errorCode' => 'InvalidOverwriteOssObject.Malformed', - 'errorMessage' => 'Specified parameter OverwriteOssObject is not valid.', - ], - [ - 'errorCode' => 'InvalidSequenceOssObject.Malformed', - 'errorMessage' => 'Specified parameter SequenceOssObject is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.NotFound', - 'errorMessage' => 'The parameter OssBucket does not exist.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'AddLiveAppSnapshotConfig', - 'description' => '* Before you call this operation, make sure that you fully understand the billing method and pricing of live stream snapshots in ApsaraVideo Live. For more information, see [Billing of live stream snapshots](~~195286~~).'."\n" - .'* Make sure that Object Storage Service (OSS) is activated and a specific bucket is created. This way, ApsaraVideo Live can store live stream snapshots in the bucket. For more information, see [Configure OSS](~~84932~~).'."\n" - .'* If you store snapshots in OSS, storage fees are generated. For more information, see [Storage fees](~~173534~~).'."\n" - .'* The OSS bucket must reside in the same region as the live center of the streaming domain. Cross-region snapshot capture is not supported.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DeleteLiveMessageUserMessage', + 'description' => '## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveAppSnapshotConfig' => [ - 'summary' => 'Deletes the snapshot configuration for live streams in an application. The deletion takes effect after you restart stream ingest.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveMessageUserMessage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6CFDE7AB-571A-14EA-B072-989FF753****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 6CFDE7AB-571A-14EA-B072-989FF753****\\n","errorExample":""}]', + ], + 'DeleteLivePackageConfig' => [ + 'summary' => 'Deletes a live stream encapsulation configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -17070,30 +13434,28 @@ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveJAENGU'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The AppName of all live streams. An asterisk (\\*) matches all AppNames.', 'type' => 'string', 'required' => true, 'example' => 'AppName', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name. An asterisk (\\*) matches all streams under the specified AppName.', 'type' => 'string', 'required' => true, 'example' => 'StreamName', 'title' => ''], ], ], 'responses' => [ @@ -17101,319 +13463,195 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '72ABAD7B-B14C-52DE-B6C6-C639FECAF5AD', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n\\t\\"RequestId\\": \\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\",\\n\\t\\"HostId\\": \\"live.aliyuncs.com\\",\\n\\t\\"Code\\": \\"InternalError\\",\\n\\t\\"Message\\": \\"The request processing has failed due to some unknown error.\\"\\n}"},{"type":"xml","example":"\\r\\n\\r\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\r\\n\\t","errorExample":""}]', - 'title' => 'DeleteLiveAppSnapshotConfig', - 'description' => 'You can call this operation to delete the snapshot configuration for live streams in an application. The deletion takes effect after you restart stream ingest.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'InvalidParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is invalid, please check and try again.'], + ['errorCode' => 'InvalidProtocol', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter Protocol is invalid, please check and try again.'], + ['errorCode' => 'InvalidSegmentNum', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SegmentNum is invalid, please check and try again.'], + ['errorCode' => 'InvalidSegmentDuration', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SegmentDuration is invalid, please check and try again.'], + ['errorCode' => 'InvalidPartDuration', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PartDuration is invalid, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalErr', 'errorMessage' => '%s, please try again.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'DeleteLivePackageConfig', + 'description' => 'You can call this operation to delete a live stream encapsulation configuration. The change takes effect the next time you ingest the stream.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteSnapshotFiles' => [ - 'summary' => 'Deletes snapshots.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 300 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLivePackageConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLivePackageConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"72ABAD7B-B14C-52DE-B6C6-C639FECAF5AD\\"\\n}","type":"json"}]', + ], + 'DeleteLivePrivateLine' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CreateTimestampList', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The timestamps when the snapshots that you want to delete were captured.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The timestamp when the snapshot that you want to delete was captured. Unit: milliseconds.'."\n" - ."\n" - .'You can obtain the timestamp of a snapshot from the CreateTimestamp parameter in the response of the [DescribeLiveStreamSnapshotInfo](~~2847902~~) operation.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1653641526637', - ], - 'required' => true, - 'example' => '1653641526637', - 'maxItems' => 200, - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The application name.', 'type' => 'string', 'required' => true, 'example' => 'live', 'title' => ''], ], [ 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The live stream name.', 'type' => 'string', 'required' => true, 'example' => 'testStream', 'title' => ''], ], [ - 'name' => 'RemoveFile', + 'name' => 'AccelerationType', 'in' => 'query', 'schema' => [ - 'description' => 'Specifies whether to also delete the corresponding file in Object Storage Service (OSS) at the same time. Value values:'."\n" + 'description' => 'The acceleration type. Valid values:'."\n" ."\n" - .'* **true**: deletes the corresponding file in OSS.'."\n" - .'* **false**: does not delete the corresponding file in OSS.'."\n" + .'- play: accelerates stream pulling.'."\n" ."\n" - .'> To delete the corresponding file in OSS, you must have the permissions on the OSS bucket.'."\n", - 'type' => 'boolean', + .'- publish: accelerates stream ingest.', + 'type' => 'string', 'required' => true, - 'example' => 'true', + 'enum' => ['play', 'publish'], + 'example' => 'play', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response.', 'type' => 'object', 'properties' => [ - 'FailureCount' => [ - 'description' => 'The number of snapshots that failed to be deleted.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '90F60327-ABEC-5A93-BF1F-****', - ], - 'SnapshotDeleteInfoList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'SnapshotDeleteInfo' => [ - 'description' => 'The information about the snapshots.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the snapshot.'."\n", - 'type' => 'object', - 'properties' => [ - 'CreateTimestamp' => [ - 'description' => 'The timestamp when the snapshot was captured. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1653641526637', - ], - 'Message' => [ - 'description' => 'The processing result of the snapshot. Valid values:'."\n" - ."\n" - .'* **OK**: The snapshot was deleted.'."\n" - .'* **FileNotFound**: The snapshot was not found.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], - ], - ], - ], - ], - ], - 'SuccessCount' => [ - 'description' => 'The number of successful screenshot deletions.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7908F2FF-44F8-120F-9FD6-85AE4******', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'Cannot find task', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParams', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'OSSAccessDenied', - 'errorMessage' => 'OSS bucket not authorised', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'Server internal error', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"FailureCount\\": 1,\\n \\"RequestId\\": \\"90F60327-ABEC-5A93-BF1F-****\\",\\n \\"SnapshotDeleteInfoList\\": {\\n \\"SnapshotDeleteInfo\\": [\\n {\\n \\"CreateTimestamp\\": 1653641526637,\\n \\"Message\\": \\"OK\\"\\n }\\n ]\\n },\\n \\"SuccessCount\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n1\\n\\n \\n OK\\n 1653641526637\\n \\n \\n Not Found\\n 1656936778524\\n \\n\\n90F60327-ABEC-5A93-BF1F-****\\n1\\n","errorExample":""}]', - 'title' => 'DeleteSnapshotFiles', - 'description' => 'You can delete only snapshots that were captured in the last year.'."\n" + 'title' => 'DeleteLivePrivateLine', + 'summary' => 'Detaches a Global Accelerator instance from a live stream link.', + 'description' => 'After you detach the instance, your live stream ingest and stream pulling links no longer use Global Accelerator (GA) for origin fetch. The GA instance still exists after it is detached. To release the instance, delete it in the Global Accelerator console.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '|HttpCode|Error code|Error message|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|400|InvalidParams|invalid JSON|The request failed to be parsed.|'."\n" - .'|400|Cannot find task|Stream not found|The stream was not found. Check the snapshot settings such as the domain name and application name and the stream ingest status.|'."\n" - .'|400|InvalidParams|Invalid request: missing|The required parameters are missing.|'."\n" - .'|403|OSSAccessDenied|OSS bucket not authorised|You do not have the permissions on the OSS bucket where the snapshot files are stored.|'."\n" - .'|500|InternalError|Server internal error|An internal error occurred. Check the snapshot settings such as the domain name and application name and the stream ingest status.|', - ], - 'DescribeLiveSnapshotConfig' => [ - 'summary' => 'Queries the snapshot configurations of a streaming domain.', - 'methods' => [ - 'post', - 'get', + .'The QPS limit for this API is 50 calls per second for each user. If you exceed this limit, API calls are throttled, which may affect your business. Plan your API calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLivePrivateLine'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLivePrivateLine', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85AE4******\\"\\n}","type":"json"}]', + ], + 'DeleteLivePullStreamInfoConfig' => [ + 'summary' => 'Deletes a scheduled stream pulling configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageNum', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: **5 to 30**. Default value: **10**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '5', - 'example' => '10', - 'default' => '10', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. Call [DescribeLivePullStreamConfig](~~2847818~~) to query the application name.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'Order', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The sort order. Valid values:'."\n" - ."\n" - .'* **asc** (default): ascending order'."\n" - .'* **desc**: descending order'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'asc', - 'default' => 'asc', - 'enum' => [ - 'asc', - 'desc', - ], - ], + 'schema' => ['description' => 'The name of the stream. Call [DescribeLivePullStreamConfig](~~2847818~~) to query the stream name.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ @@ -17421,402 +13659,193 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', - ], - 'Order' => [ - 'description' => 'The sort order.'."\n", - 'type' => 'string', - 'example' => 'asc', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '11', - ], - 'TotalNum' => [ - 'description' => 'The total number of entries that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '6', - ], - 'LiveStreamSnapshotConfigList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveStreamSnapshotConfig' => [ - 'description' => 'The snapshot configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'OverwriteOssObject' => [ - 'description' => 'The naming format of snapshots that are stored in the overwrite mode, which means that a new snapshot overwrites the previous snapshot.'."\n", - 'type' => 'string', - 'example' => '{liveApp****}/{liveStream****}.jpg', - ], - 'TimeInterval' => [ - 'description' => 'The interval at which snapshots are captured. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'CreateTime' => [ - 'description' => 'The time when the configuration was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-05-20T01:33:38Z', - ], - 'OssBucket' => [ - 'description' => 'The name of the Object Storage Service (OSS) bucket.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Callback' => [ - 'description' => 'The callback URL that is used to receive notifications about snapshot capture.'."\n", - 'type' => 'string', - 'example' => 'https://learn.aliyundoc.com', - ], - 'SequenceOssObject' => [ - 'description' => 'The naming format of snapshots that are stored in sequence, which means that a new snapshot does not overwrite the previous snapshot.'."\n", - 'type' => 'string', - 'example' => 'snapshot/{liveApp****}/{liveStream****}/{UnixTimestamp}.jpg', - ], - 'OssEndpoint' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'cn-oss-****.aliyuncs.com', - ], - ], - 'description' => '', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageNum\\": 2,\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"Order\\": \\"asc\\",\\n \\"TotalPage\\": 10,\\n \\"PageSize\\": 11,\\n \\"TotalNum\\": 6,\\n \\"LiveStreamSnapshotConfigList\\": {\\n \\"LiveStreamSnapshotConfig\\": [\\n {\\n \\"OverwriteOssObject\\": \\"{liveApp****}/{liveStream****}.jpg\\",\\n \\"TimeInterval\\": 10,\\n \\"AppName\\": \\"liveApp****\\",\\n \\"CreateTime\\": \\"2016-05-20T01:33:38Z\\",\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"Callback\\": \\"https://learn.aliyundoc.com\\",\\n \\"SequenceOssObject\\": \\"snapshot/{liveApp****}/{liveStream****}/{UnixTimestamp}.jpg\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\nasc\\n6\\n10\\n11\\n2\\nA3136B58-5876-4168-83CA-B562781981A0\\n\\n \\n {liveApp****}/{liveStream****}.jpg\\n snapshot/{liveApp****}/{liveStream****}/{UnixTimestamp}.jpg\\n https://learn.aliyundoc.com\\n cn-oss-****.aliyuncs.com\\n 10\\n example.com\\n 2016-05-20T01:33:38Z\\n liveBucket****\\n liveApp****\\n \\n\\n","errorExample":"{\\n \\"LiveStreamSnapshotConfigList\\":{\\n \\"LiveStreamSnapshotConfig\\":[{\\n \\"AppName\\":\\"xxx\\",\\n \\"CreateTime\\":\\"2016-05-20T01:33:38Z\\",\\n \\"DomainName\\":\\"xxx\\",\\n \\"OssBucket\\":\\"bucket\\",\\n \\"OssEndpoint\\":\\"endpoint\\",\\n \\"OverwriteOssObject\\":\\"object\\",\\n \\"SequenceOssObject\\":\\"object\\",\\n \\"TimeInterval\\":10\\n }]\\n },\\n \\"Order\\":\\"asc\\",\\n \\"PageNum\\":1,\\n \\"PageSize\\":10,\\n \\"RequestId\\":\\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"TotalNum\\":100,\\n \\"TotalPage\\":10\\n}"}]', - 'title' => 'DescribeLiveSnapshotConfig', - 'description' => 'Obtain the main streaming domain, and then call this operation to query the snapshot configurations.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], + ], + ], + 'title' => 'DeleteLivePullStreamInfoConfig', + 'description' => 'This operation supports deleting only the configurations of scheduled stream pulling.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UpdateLiveAppSnapshotConfig' => [ - 'summary' => 'Modifies a snapshot configuration of a streaming domain. The captured snapshots are stored in Object Storage Service (OSS). The modification takes effect after you restart stream ingest.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLivePullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteLivePullToPush' => [ + 'summary' => 'Deletes a stream pulling-to-pushing task by calling DeleteLivePullToPush.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeCode' => '238152', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'TimeInterval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The interval at which snapshots are captured. Valid values: **5 to 3600**. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '3600', - 'minimum' => '5', - 'example' => '5', - ], - ], - [ - 'name' => 'OssEndpoint', - 'in' => 'query', - 'schema' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-oss-****.aliyuncs.com', - ], - ], - [ - 'name' => 'OssBucket', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the OSS bucket.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveBucket****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'default' => 'cn-shanghai', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'OverwriteOssObject', + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The naming format of snapshots that are stored in the overwrite mode, which means that a new snapshot overwrites the previous snapshot.'."\n" - ."\n" - .'* The name must be less than 256 bytes in length.'."\n" - .'* Only JPG images are supported.'."\n" - .'* The name can contain variables such as {AppName} and {StreamName}.'."\n" - .'* A value of hyphen (-) indicates that this parameter is deleted.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{liveApp****}/{liveStream****}.jpg', - ], + 'schema' => ['description' => 'The task ID.', 'type' => 'string', 'required' => true, 'example' => '3efb43c5-18ff-49eb-92a6-005f6521****', 'title' => ''], ], [ - 'name' => 'SequenceOssObject', + 'name' => 'Region', 'in' => 'query', 'schema' => [ - 'description' => 'The naming format of snapshots that are stored in sequence, which means that a new snapshot does not overwrite the previous snapshot. You can call the [DescribeLiveStreamSnapshotInfo](~~2847902~~) operation to query the snapshots that were captured within a specific time period.'."\n" + 'description' => 'The region where the task is started. Valid values:'."\n" ."\n" - .'* The name must be less than 256 bytes in length.'."\n" - .'* Only JPG images are supported.'."\n" - .'* The name can contain variables such as {AppName}, {StreamName}, {UnixTimestamp}, and {Sequence}. The name must contain at least one of the {UnixTimestamp} and {Sequence} variables.'."\n" - .'* A value of hyphen (-) indicates that this parameter is deleted.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'snapshot/{liveApp****}/{liveStream****}/{UnixTimestamp****}.jpg', - ], - ], - [ - 'name' => 'Callback', - 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL that is used to receive notifications about snapshot capture.'."\n", + .'- ap-southeast-1 (Singapore)'."\n" + .'- ap-southeast-5 (Indonesia)'."\n" + .'- cn-beijing (Beijing)'."\n" + .'- cn-shanghai (Shanghai).', + 'enumValueTitles' => ['cn-shenzhen' => 'Shenzhen.', 'cn-qingdao' => 'Qingdao.', 'preregion' => 'Pre-release.', 'cn-beijing' => 'Beijing.', 'cn-shanghai' => 'Shanghai.', 'ap-southeast-1' => 'Singapore.', 'eu-central-1' => 'Germany (Frankfurt).', 'ap-northeast-1' => 'Japan (Tokyo).', 'ap-southeast-5' => 'Indonesia.', 'me-central-1' => 'Saudi Arabia (Riyadh).'], 'type' => 'string', - 'required' => false, - 'example' => 'https://learn.aliyundoc.com', + 'required' => true, + 'enum' => ['ap-northeast-1', 'ap-southeast-1', 'ap-southeast-5', 'eu-central-1', 'me-central-1', 'cn-beijing', 'cn-shanghai', 'cn-shenzhen', 'cn-qingdao', 'preregion'], + 'example' => 'cn-shanghai', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68*****'], + 'RetCode' => ['description' => 'The return code.'."\n" + ."\n" + .'> - "0" is returned in normal cases.'."\n" + .'> - For exceptions, refer to the error codes listed below.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'Description' => ['description' => 'The error description.', 'type' => 'string', 'example' => 'OK', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], + [], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidOverwriteOssObjectOrSequenceOssObject.Malformed', - 'errorMessage' => 'Specified paramters OverwriteOssObject or SequenceOssObject should have one.', - ], - [ - 'errorCode' => 'InvalidOssEndpoint.Malformed', - 'errorMessage' => 'Specified parameter OssEndpoint is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.Malformed', - 'errorMessage' => 'Specified parameter OssBucket is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.NotFound', - 'errorMessage' => 'The parameter OssBucket does not exist.', - ], - [ - 'errorCode' => 'InvalidOverwriteOssObject.Malformed', - 'errorMessage' => 'Specified parameter OverwriteOssObject is not valid.', - ], - [ - 'errorCode' => 'InvalidSequenceOssObject.Malformed', - 'errorMessage' => 'Specified parameter SequenceOssObject is not valid.', - ], - [ - 'errorCode' => 'InvalidConfig.NotFound', - 'errorMessage' => 'The speicified config does not exist.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'CodeInvalidAliUid', 'errorMessage' => 'This aliuid does not have a live domain name.', 'description' => 'This aluid does not have a live domain name.'], + ['errorCode' => 'CodeTaskNotExist', 'errorMessage' => 'Task does not exist.', 'description' => 'The task does not exist.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'UpdateLiveAppSnapshotConfig', - 'description' => 'You can call this operation to modify a snapshot configuration of a streaming domain. The captured snapshots are stored in OSS. The modification takes effect after you restart stream ingest.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68*****\\",\\n \\"RetCode\\": 0,\\n \\"Description\\": \\"OK\\"\\n}","type":"json"}]', + 'title' => 'Delete a stream pulling-to-pushing task', + 'description' => '- Deletes a stream pulling-to-pushing task.'."\n" + .'- Deleting a task cleans up the task. A running task is stopped immediately and cannot be restarted.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveStreamSnapshotInfo' => [ - 'summary' => 'Queries the snapshots that were captured within a specific time period.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [ + ['createdAt' => '2025-04-27T08:03:58.000Z', 'description' => 'Error codes changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLivePullToPush'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DeleteLiveRealTimeLogLogstore' => [ + 'summary' => 'Deletes a Logstore for real-time log delivery.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'StartTime', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'Project', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The time range specified by the EndTime and StartTime parameters cannot exceed **one** day. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', - ], + 'schema' => ['description' => 'The name of the Simple Log Service (SLS) project for real-time delivery.', 'type' => 'string', 'required' => true, 'example' => 'project_example', 'title' => ''], ], [ - 'name' => 'Limit', + 'name' => 'Logstore', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of snapshots to return per call. Valid values: **1 to 100**. Default value: **10**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '10', - 'default' => '10', - ], + 'schema' => ['description' => 'The name of the SLS Logstore for real-time delivery.', 'type' => 'string', 'required' => true, 'example' => 'logstore_example', 'title' => ''], ], [ - 'name' => 'Order', + 'name' => 'Region', 'in' => 'query', - 'schema' => [ - 'description' => 'The sort order. Valid values:'."\n" - ."\n" - .'* **asc** (default): ascending order'."\n" - .'* **desc**: descending order'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'asc', - 'default' => 'asc', - 'enum' => [ - 'asc', - 'desc', - ], - ], + 'schema' => ['description' => 'The region of the SLS project for real-time delivery.', 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou', 'title' => ''], ], ], 'responses' => [ @@ -17824,147 +13853,100 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'NextStartTime' => [ - 'description' => 'The time when the next call occurred. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n" - ."\n" - .'> If the number of snapshots that were captured within the specified time period exceeds the value of the Limit parameter, this parameter is returned. It indicates the time when the DescribeLiveStreamSnapshotInfo operation was called again. If this parameter is not returned, the number of snapshots that are captured within the specified time period does not exceed the specified limit.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T17:36:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '62136AE6-7793-45ED-B14A-60D19A9486D3', - ], - 'LiveStreamSnapshotInfoList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveStreamSnapshotInfo' => [ - 'description' => 'The snapshots.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'OssObject' => [ - 'description' => 'The name of the snapshot stored in Object Storage Service (OSS).'."\n", - 'type' => 'string', - 'example' => '{liveApp****}/{liveStream****}.jpg', - ], - 'OssBucket' => [ - 'description' => 'The name of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'CreateTime' => [ - 'description' => 'The time when the snapshot was captured. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-01T17:36:00Z', - ], - 'OssEndpoint' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'cn-oss-****.aliyuncs.com', - ], - 'IsOverlay' => [ - 'description' => 'The snapshot mode. Valid values:'."\n" - ."\n" - .'* **true**: overwrite mode, which means that a new snapshot overwrites the previous snapshot.'."\n" - .'* **false**: sequence mode, which means that a new snapshot does not overwrite the previous snapshot.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'CreateTimestamp' => [ - 'description' => 'The timestamp when the snapshot file was created. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1653641526637', - ], - ], - 'description' => '', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9732E117-8A37-49FD-A36F-ABBB*******', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified parameter StartTime is not valid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified parameter EndTime is not valid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStream.NotFound', - 'errorMessage' => 'Speicified stream does not exist.', - ], + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'LogstoreNotExist', 'errorMessage' => 'Logstore does not exist', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextStartTime\\": \\"2015-12-01T17:36:00Z\\",\\n \\"RequestId\\": \\"62136AE6-7793-45ED-B14A-60D19A9486D3\\",\\n \\"LiveStreamSnapshotInfoList\\": {\\n \\"LiveStreamSnapshotInfo\\": [\\n {\\n \\"OssObject\\": \\"{liveApp****}/{liveStream****}.jpg\\",\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"CreateTime\\": \\"2015-12-01T17:36:00Z\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"IsOverlay\\": false,\\n \\"CreateTimestamp\\": 1653641526637\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2015-12-01T17:36:00Z\\n 62136AE6-7793-45ED-B14A-60D19A9486D3\\n \\n {liveApp****}/{liveStream****}.jpg\\n liveBucket****\\n 2015-12-01T17:36:00Z\\n cn-oss-****.aliyuncs.com\\n false\\n 1653641526637\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamSnapshotInfo', - 'description' => 'You can query only snapshots that were captured in the last year.'."\n" + 'title' => 'DeleteLiveRealTimeLogLogstore', + 'description' => '- You can call this operation to delete a Logstore used for real-time log delivery. Make sure that you set the parameters correctly.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- You can call the [DescribeLiveDomainRealtimeLogDelivery](~~2848121~~) operation to query the Project, Logstore, and Region parameters.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limits'."\n" + ."\n" + .'The rate limit for this operation is 6,000 calls per minute for each user. If you exceed the limit, API calls are throttled. This may affect your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveSnapshotNotifyConfig' => [ - 'summary' => 'Queries the configuration of snapshot callbacks.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '## Special error codes'."\n" + ."\n" + .'|HTTP status code|Error code|Error message|Description|'."\n" + .'|---|---|---|---|'."\n" + .'|403|Unauthorized|RealtimeLogDelivery Service Not Authorized|The error message returned because you are not authorized to use Log Service.|'."\n" + .'|404|LogstoreNotExist|Logstore does not exist|The error message returned because the specified Logstore is not found.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveRealTimeLogLogstore', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB*******\\"\\n}","type":"json"}]', + ], + 'DeleteLiveRealtimeLogDelivery' => [ + 'summary' => 'Deletes a real-time log delivery configuration.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'www.yourdomain***.com', - ], + 'schema' => ['description' => 'The streaming domain name.'."\n" + ."\n" + .'To specify multiple domain names, separate them with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'example.com,example.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'Project', + 'in' => 'query', + 'schema' => ['description' => 'The name of the Simple Log Service (SLS) project to which logs are delivered in real time.', 'type' => 'string', 'required' => true, 'example' => 'project_example', 'title' => ''], + ], + [ + 'name' => 'Logstore', + 'in' => 'query', + 'schema' => ['description' => 'The name of the SLS Logstore to which logs are delivered in real time.', 'type' => 'string', 'required' => true, 'example' => 'logstore_example', 'title' => ''], + ], + [ + 'name' => 'Region', + 'in' => 'query', + 'schema' => ['description' => 'The region where the SLS project is located.', 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou', 'title' => ''], ], ], 'responses' => [ @@ -17972,100 +13954,84 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'www.yourdomain***.com', - ], - 'NotifyAuthKey' => [ - 'description' => 'The callback authentication key.'."\n", - 'type' => 'string', - 'example' => 'yourkey', - ], - 'NotifyReqAuth' => [ - 'description' => 'Indicates whether callback authentication is enabled. Valid values:'."\n" - ."\n" - .'* **yes**: Callback authentication is enabled.'."\n" - .'* **no**: Callback authentication is disabled.'."\n", - 'type' => 'string', - 'example' => 'yes', - ], - 'NotifyUrl' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://callback.yourdomain***.com', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5056369B-D337-499E-B8B7-B761BD37B08A', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + 404 => [ + ['errorCode' => 'LogstoreNotExist', 'errorMessage' => 'Logstore does not exist', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DomainName\\": \\"www.yourdomain***.com\\",\\n \\"NotifyAuthKey\\": \\"yourkey\\",\\n \\"NotifyReqAuth\\": \\"yes\\",\\n \\"NotifyUrl\\": \\"http://callback.yourdomain***.com\\",\\n \\"RequestId\\": \\"5056369B-D337-499E-B8B7-B761BD37B08A\\"\\n}","errorExample":""},{"type":"xml","example":"\\n yes\\n 5056369B-D337-499E-B8B7-B761BD37B08A\\n yourkey\\n www.yourdomain***.com\\n http://callback.yourdomain***.com\\n","errorExample":""}]', - 'title' => 'DescribeLiveSnapshotNotifyConfig', - 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveSnapshotNotifyConfig' => [ - 'summary' => 'Deletes the configuration of snapshot callbacks.', - 'methods' => [ - 'post', - 'get', + 'title' => 'DeleteLiveRealtimeLogDelivery', + 'description' => ''."\n" + ."\n" + .'- Real-time log delivery can be configured only for streaming domains. To configure real-time log delivery for ingest domains, [submit a ticket](https://workorder.console.aliyun.com/console.htm#/ticket/add?productCode=live\\&commonQuestionId=4545\\&isSmart=true\\&iatraceid=1608439120675-2a5c48de0b84805313c708\\&channel=selfservice).'."\n" + ."\n" + .'Real-time log delivery can be configured only for streaming domains. To configure real-time log delivery for ingest domains, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" + ."\n" + .'- You can call [DescribeLiveDomainRealtimeLogDelivery](~~2848121~~) to query the Project, Logstore, and Region parameters.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 6,000 calls per minute for each user. API calls that exceed this limit are throttled, which may affect your business. Call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Special error codes'."\n" + ."\n" + .'|HTTP status code|Error code|Description|'."\n" + .'|---|---|---|'."\n" + .'|403|Unauthorized|The error message returned because you are not authorized to use Log Service.|'."\n" + .'|404|LogstoreNotExist|The error message returned because the specified Logstore is not found.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveRealtimeLogDelivery'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB87556CA7\\"\\n}","type":"json"}]', + ], + 'DeleteLiveRecordNotifyConfig' => [ + 'summary' => 'Deletes the configuration of callbacks for live stream recording under a domain name.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'www.yourdomain***.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -18073,43 +14039,56 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '32A96B9A-F203-4EC5-8E43-CB92E68F4I79E', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Forbidden', 'errorMessage' => 'Ram Permission is forbidden.', 'description' => ''], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + 404 => [ + ['errorCode' => 'InvalidConfig.NotFound', 'errorMessage' => 'Config does not exist.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"32A96B9A-F203-4EC5-8E43-CB92E68F4I79E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 32A96B9A-F203-4EC5-8E43-CB92E68F4I79E\\n","errorExample":""}]', - 'title' => 'DeleteLiveSnapshotNotifyConfig', - 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'AddLiveSnapshotNotifyConfig' => [ - 'summary' => 'Configures snapshot callbacks.', - 'methods' => [ - 'post', - 'get', + 'title' => 'DeleteLiveRecordNotifyConfig', + 'description' => 'Obtain the main streaming domain, and then call this operation to delete the configuration of callbacks for live stream recording under the main streaming domain.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveRecordNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveRecordNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteLiveRecordVodConfig' => [ + 'summary' => 'Deletes a Live-to-VOD configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -18117,70 +14096,31 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '160085', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'www.yourdomain***.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'NotifyUrl', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL. Specify a valid URL that is up to 500 characters in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://callback.yourdomain***.com', - ], - ], - [ - 'name' => 'NotifyReqAuth', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" - ."\n" - .'* **yes**'."\n" - .'* **no** (default)'."\n" - ."\n" - .'> This parameter is required if you set the NotifyAuthKey parameter to yes.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', - ], + 'schema' => ['description' => 'The AppName of the live stream. View AppNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'NotifyAuthKey', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback authentication key. The key must be 16 to 32 characters in length and can contain only letters and digits.'."\n" - ."\n" - .'> This parameter is required if you set the NotifyReqAuth parameter to **yes**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourkey', - ], + 'schema' => ['description' => 'The name of the stream. View StreamNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ @@ -18188,54 +14128,51 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 409 => [ - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s, please check and try again later.', - ], - ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F3EC5\\n","errorExample":""}]', - 'title' => 'AddLiveSnapshotNotifyConfig', - 'description' => '### QPS Limit '."\n" - .'The QPS limit for this API per user is 30 times/second. Exceeding this limit will result in API calls being throttled, which may impact your business operations. Please use the API reasonably. For more information, please refer to [QPS Limitation](~~343507~~).', - ], - 'UpdateLiveSnapshotNotifyConfig' => [ - 'summary' => 'Modifies the configuration of snapshot callbacks.', - 'methods' => [ - 'post', - 'get', + 'title' => 'DeleteLiveRecordVodConfig', + 'description' => 'You can call this operation to delete the live-to-VOD configuration for a specified streaming domain.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 1,000 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveRecordVodConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\"\\n}","type":"json"}]', + ], + 'DeleteLiveSnapshotDetectPornConfig' => [ + 'summary' => 'Deletes a video moderation configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -18243,69 +14180,21 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ww.yourdomain***.com', - ], - ], - [ - 'name' => 'NotifyUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL. Specify a valid URL that is up to 500 characters in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://callback.yourdomain***.com', - ], - ], - [ - 'name' => 'NotifyReqAuth', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" - ."\n" - .'* **yes**: enables callback authentication'."\n" - .'* **no**: disables callback authentication'."\n" - ."\n" - .'> Default value: **no**. If you set this parameter to **yes**, the NotifyAuthKey parameter is required.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'NotifyAuthKey', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback authentication key. The key can be 16 to 32 characters in length and can contain only letters and digits.'."\n" - ."\n" - .'> This parameter is required if you set the NotifyReqAuth parameter to **yes**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourkey', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. You can call the [DescribeLiveSnapshotDetectPornConfig](~~2847918~~) operation to query the application name.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], ], 'responses' => [ @@ -18313,52 +14202,50 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A3136B58-5876-5A93-83CA-B562781981A0', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E6*******', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'title' => 'DeleteLiveSnapshotDetectPornConfig', + 'description' => '- Obtain the main streaming domain, and then call this operation to delete a video moderation configuration.'."\n" + ."\n" + .'- Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-01-30T08:56:48.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveSnapshotDetectPornConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A3136B58-5876-5A93-83CA-B562781981A0\\"\\n}","errorExample":""},{"type":"xml","example":"\\n A3136B58-5876-5A93-83CA-B562781981A0\\n","errorExample":""}]', - 'title' => 'UpdateLiveSnapshotNotifyConfig', - 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E6*******\\"\\n}","type":"json"}]', ], - 'SetSnapshotCallbackAuth' => [ - 'summary' => 'Configures authentication for snapshot callbacks.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DeleteLiveSnapshotNotifyConfig' => [ + 'summary' => 'Deletes the snapshot callback configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -18366,55 +14253,21 @@ ], 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.aliyundoc.com', - ], - ], - [ - 'name' => 'CallbackReqAuth', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" - ."\n" - .'* **yes**: enables callback authentication.'."\n" - .'* **no**: disables callback authentication.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yes', - ], - ], - [ - 'name' => 'CallbackAuthKey', - 'in' => 'query', - 'schema' => [ - 'description' => 'The custom key that is used for callback authentication.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourkey', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'www.yourdomain***.com', 'title' => ''], ], ], 'responses' => [ @@ -18422,90 +14275,72 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD5', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '32A96B9A-F203-4EC5-8E43-CB92E68F4I79E', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\"\\n}","errorExample":""},{"type":"xml","example":" \\r\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\r\\n ","errorExample":""}]', - 'title' => 'SetSnapshotCallbackAuth', - 'description' => '* Before you configure authentication for snapshot callbacks, you need to specify the callback URL. For more information, see [AddLiveAppSnapshotConfig](~~2847897~~).'."\n" - .'* You can call this operation to configure authentication for snapshot callbacks for a main streaming domain. Make sure that the parameter settings meet the requirements.'."\n" - .'* ApsaraVideo Live allows you to add a specific signature header to each HTTP or HTTPS callback request. This way, the server that receives callback messages can authenticate the signature to prevent illegal or invalid requests. For more information, see [Usage notes for callback authentication](~~417349~~).'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'QuerySnapshotCallbackAuth' => [ - 'summary' => 'Queries the configuration of authentication for snapshot callbacks.', - 'methods' => [ - 'post', - 'get', + 'title' => 'DeleteLiveSnapshotNotifyConfig', + 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveSnapshotNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveSnapshotNotifyConfig', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"32A96B9A-F203-4EC5-8E43-CB92E68F4I79E\\"\\n}","type":"json"}]', + ], + 'DeleteLiveSpecificStagingConfig' => [ + 'summary' => 'You can call the DeleteLiveSpecificStagingConfig operation to delete domain name configurations in a grayscale environment.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'developer.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'ConfigId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.aliyundoc.com', - ], + 'schema' => ['description' => 'The configuration ID. To specify multiple IDs, separate them with commas (,). To obtain the configuration ID, see [DescribeLiveDomainStagingConfig](~~2848231~~).', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '6295', 'title' => ''], ], ], 'responses' => [ @@ -18513,102 +14348,87 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD5', - ], - 'CallbackAuthKey' => [ - 'description' => 'The callback authentication key.'."\n", - 'type' => 'string', - 'example' => 'yourkey', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.aliyundoc.com', - ], - 'CallbackReqAuth' => [ - 'description' => 'Indicates whether callback authentication is enabled. Valid values:'."\n" - ."\n" - .'* **yes**: Callback authentication is enabled.'."\n" - .'* **no**: Callback authentication is disabled.'."\n", - 'type' => 'string', - 'example' => 'yes', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'Invalid%s.ValueNotSupported', 'errorMessage' => 'FunctionName [%s] is not supported.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\",\\n \\"CallbackAuthKey\\": \\"yourkey\\",\\n \\"DomainName\\": \\"example.aliyundoc.com\\",\\n \\"CallbackReqAuth\\": \\"yes\\"\\n}","errorExample":""},{"type":"xml","example":" \\nyourkey\\nyes\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\nexample.aliyundoc.com\\n","errorExample":""}]', - 'title' => 'QuerySnapshotCallbackAuth', - 'description' => 'Before you call this operation, make sure that you have configured authentication for snapshot callbacks. For more information, see [SetSnapshotCallbackAuth](~~2847907~~). You can call this operation to query the configuration of authentication for snapshot callbacks for a main streaming domain. Make sure that the parameter settings meet the requirements.'."\n" + 'title' => 'DeleteLiveSpecificStagingConfig', + 'description' => '## QPS limits'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'You can call this operation up to 20 times per second per account. If you exceed this limit, API calls are throttled. This may affect your business. Plan your calls accordingly. For more information, see [QPS limits](~~343507~~).'."\n" + ."\n" + .'## Queries Per Second (QPS) limits'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 20 times per second per account. If you exceed this limit, your API calls are throttled, which may impact your business. We recommend that you plan your calls accordingly. For more information, see [QPS limits](~~343507~~).', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteSnapshotCallbackAuth' => [ - 'summary' => 'Deletes the configuration of authentication for snapshot callbacks.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveSpecificStagingConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveSpecificStagingConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","type":"json"}]', + ], + 'DeleteLiveStreamBlock' => [ + 'summary' => 'Deletes blocking configurations for a specific live stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeNodes' => ['FEATUREliveOLG5VH'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.aliyundoc.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The AppName of the live stream. View AppNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream. View StreamNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ @@ -18616,177 +14436,169 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD5', - ], + 'Description' => ['description' => 'The description of the request. A value of ok indicates that the request was successful. An error message is returned if the request failed.', 'type' => 'string', 'example' => 'ok', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B908FF89-B03C-4831-B55B-48D2A7DA0A68', 'title' => ''], + 'Status' => ['description' => 'The status of the operation. Valid values:'."\n" + ."\n" + .'- ok: Success.'."\n" + ."\n" + .'- fail: Failure.'."\n" + ."\n" + .'> The status is ok only if all tasks succeeded.', 'type' => 'string', 'example' => 'ok', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\"\\n}","errorExample":""},{"type":"xml","example":" \\r\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\r\\n","errorExample":""}]', - 'title' => 'DeleteSnapshotCallbackAuth', - 'description' => 'You can call this operation to delete the configuration of authentication for snapshot callbacks for a main streaming domain. For an ongoing live stream, the deletion takes effect after you re-ingest the stream. Snapshot callbacks for the stream are no longer authenticated.'."\n" + 'title' => 'DeleteLiveStreamBlock', + 'description' => 'You can call this operation to delete a stream-level block configuration.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddLivePackageConfig' => [ - 'summary' => 'Adds a live stream encapsulation configuration.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveStreamBlock'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamBlock', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"ok\\",\\n \\"RequestId\\": \\"B908FF89-B03C-4831-B55B-48D2A7DA0A68\\",\\n \\"Status\\": \\"ok\\"\\n}","type":"json"}]', + ], + 'DeleteLiveStreamMerge' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '191929', - 'abilityTreeNodes' => [ - 'FEATUREliveJAENGU', - ], + 'abilityTreeNodes' => ['FEATUREliveBLHP6S'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The application name. The value of this parameter must be the same as the application name that is specified in the ingest URL. Otherwise, the configuration does not take effect. The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name cannot start with a hyphen (-) or underscore (\\_). You can also specify an asterisk (\\*) as the value to match all applications.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AppName', - ], + 'schema' => ['description' => 'The AppName for the merged stream. View the AppName on the [Primary/Secondary Stream Mixing Settings](~~606583~~) page.', 'type' => 'string', 'required' => true, 'example' => 'app', 'title' => ''], ], [ 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The stream name. The value of this parameter must be the same as the stream name that is specified in the ingest URL. Otherwise, the configuration does not take effect. The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name cannot start with a hyphen (-) or underscore (\\_). You can also specify an asterisk (\\*) as the value to match all streams.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'StreamName', - ], + 'schema' => ['description' => 'The StreamName for the merged stream. View the StreamName on the [Primary/Secondary Stream Mixing Settings](~~606583~~) page.', 'type' => 'string', 'required' => true, 'example' => 'StreamName', 'title' => ''], ], - [ - 'name' => 'Protocol', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The streaming protocol and encapsulation format. Valid values:'."\n" - ."\n" - .'* **HLS_CMAF**'."\n" - .'* **LLHLS_TS** (low latency)'."\n" - .'* **LLHLS_CMAF** (low latency)'."\n" - .'* **DASH_CMAF**'."\n" - .'* **HLSDASH_CMAF**'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'HLS_CMAF', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB9*********', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'QuotaExceeded.Merge', 'errorMessage' => 'Exceed max merge count limit', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], + ], + ], + 'title' => 'DeleteLiveStreamMerge', + 'summary' => 'Deletes an active merged stream.', + 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveStreamMerge'], + ], + ], + 'ramActions' => [ [ - 'name' => 'SegmentNum', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of segments.'."\n" - ."\n" - .'* Valid values: 3 to 10.'."\n" - .'* Default value: 3.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '3', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamMerge', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB9*********\\"\\n}","type":"json"}]', + ], + 'DeleteLiveStreamMonitor' => [ + 'summary' => 'Deletes a monitoring session.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'SegmentDuration', - 'in' => 'query', - 'schema' => [ - 'description' => 'The segment length. Unit: seconds.'."\n" - ."\n" - .'* If Protocol is set to HLS_CMAF: Valid values: 1 to 10. Default value: 5.'."\n" - .'* If Protocol is set to LLHLS_TS or LLHLS_CMAF: Valid values: 1 to 2. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - ], + 'AK' => [], ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveSM955S'], + ], + 'parameters' => [ [ - 'name' => 'PartDuration', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The part length. Unit: milliseconds.'."\n" - ."\n" - .'* If the value of SegmentDuration is 1, the valid values of this parameter are 100 to 500 and the default value of this parameter is 350.'."\n" - .'* If the value of SegmentDuration is 2, the valid values of this parameter are 100 to 1000 and the default value of this parameter is 700.'."\n" - .'* This parameter takes effect only if Protocol is set to LLHLS_TS or LLHLS_CMAF.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '350', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'IgnoreTranscode', + 'name' => 'MonitorId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to ignore the transcoded stream. Valid values:'."\n" - ."\n" - .'* **true** (default)'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The ID of the monitoring session.'."\n" + ."\n" + .'> The **MonitorId** is returned in the response of the [CreateLiveStreamMonitor](~~2848129~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], ], 'responses' => [ @@ -18794,552 +14606,384 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '05D00B48-DF50-5DC0-A07D-A250DFAE****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'InvalidProtocol', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSegmentNum', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSegmentDuration', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPartDuration', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidMonitorId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter MonitorId is invalid, please check and try again.'], ], - 409 => [ - [ - 'errorCode' => 'ConfigConflicts', - 'errorMessage' => '%s, please check and try again later.', - ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'StreamMonitorNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The monitoring room does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalErr', - 'errorMessage' => '%s, please try again.', - ], - [ - 'errorCode' => 'DomainConfigFailed', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"05D00B48-DF50-5DC0-A07D-A250DFAE****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 05D00B48-DF50-5DC0-A07D-A250DFAE4258\\n","errorExample":""}]', - 'title' => 'AddLivePackageConfig', - 'description' => '* The first time you configure encapsulation for a domain name, domain acceleration is automatically configured and takes effect in 3 to 5 minutes.'."\n" - .'* If the streaming domain resides in a region outside China, including Singapore, Germany (Frankfurt), Japan (Tokyo), and Indonesia (Jakarta), you may encounter high latency issues. We recommend that you test and verify whether the settings meet expectations.'."\n" - .'* You can call this operation to add a live stream encapsulation configuration. The configuration takes effect only after you re-ingest the stream.'."\n" + 'title' => 'DeleteLiveStreamMonitor', + 'description' => 'Obtain the **MonitorId** from the response of the [CreateLiveStreamMonitor](~~2848129~~) operation. Then, call this operation to delete the monitoring session.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'>'."\n" ."\n" - .'You can call this operation up to 300 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'UpdateLivePackageConfig' => [ - 'summary' => 'Updates a live stream encapsulation configuration.', - 'methods' => [ - 'post', - 'get', + .'You cannot delete a monitoring session that is running. Attempting to do so returns a 400 error.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'This operation is limited to 10 queries per second (QPS) per account. Calls that exceed this limit are throttled, which can affect your business. To avoid interruptions to your business, make sure that you do not exceed this limit.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamMonitor', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","type":"json"}]', + ], + 'DeleteLiveStreamRecordIndexFiles' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveJAENGU', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application name. The value of this parameter must be the same as the application name that is specified in the ingest URL. Otherwise, the configuration does not take effect. The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name cannot start with a hyphen (-) or underscore (\\_). You can also specify an asterisk (\\*) as the value to match all applications.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AppName', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The stream name. The value of this parameter must be the same as the stream name that is specified in the ingest URL. Otherwise, the configuration does not take effect. The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name cannot start with a hyphen (-) or underscore (\\_). You can also specify an asterisk (\\*) as the value to match all streams.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'StreamName', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Protocol', + 'name' => 'RecordId', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The streaming protocol and encapsulation format. Valid values:'."\n" + 'description' => 'The array of index file IDs.', + 'type' => 'array', + 'items' => ['description' => 'The index file ID. You can specify up to 20 IDs.'."\n" ."\n" - .'* **HLS_CMAF**'."\n" - .'* **LLHLS_TS** (low latency)'."\n" - .'* **LLHLS_CMAF** (low latency)'."\n" - .'* **DASH_CMAF**'."\n" - .'* **HLSDASH_CMAF**'."\n", - 'type' => 'string', + .'> To obtain the index file ID, call the [DescribeAllStreamRecordIndexFiles](~~2847890~~) operation.', 'type' => 'string', 'required' => false, 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', 'title' => ''], 'required' => true, - 'example' => 'HLS_CMAF', + 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', + 'maxItems' => 20, + 'title' => '', ], ], [ - 'name' => 'SegmentNum', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of segments. Valid values: 3 to 10.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '3', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'SegmentDuration', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The segment length. Unit: seconds.'."\n" - ."\n" - .'* If Protocol is set to HLS_CMAF, the valid values of this parameter are 1 to 10.'."\n" - .'* If Protocol is set to LLHLS_TS or LLHLS_CMAF, the valid values of this parameter are 1 to 2.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '5', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'PartDuration', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The part length. Unit: milliseconds.'."\n" - ."\n" - .'> This parameter is required if Protocol is set to LLHLS_TS or LLHLS_CMAF.'."\n" - ."\n" - .'* If the value of SegmentDuration is 1, the valid values of this parameter are 100 to 500.'."\n" - .'* If the value of SegmentDuration is 2, the valid values of this parameter are 100 to 1000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '350', - ], + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'IgnoreTranscode', + 'name' => 'RemoveFile', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to ignore the transcoded stream. Valid values:'."\n" - ."\n" - .'* **true** (default)'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'Specifies whether to delete the associated OSS objects at the same time. Valid values:'."\n" + ."\n" + .'- **true**: Deletes.'."\n" + ."\n" + .'- **false**: Does not delete.', 'type' => 'string', 'required' => true, 'example' => 'true', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The data returned.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'Code' => ['description' => 'The status code. If an error occurs, see the error codes.', 'type' => 'string', 'example' => 'OK', 'title' => ''], + 'Message' => ['description' => 'The status message. If an error occurs, see the error codes.', 'type' => 'string', 'example' => 'OK', 'title' => ''], + 'RecordDeleteInfoList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RecordDeleteInfo' => [ + 'itemNode' => true, + 'description' => 'The deletion details.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The deletion details.', + 'type' => 'object', + 'properties' => [ + 'Message' => ['description' => 'The result of the request to delete each index file. Valid values:'."\n" + ."\n" + .'- **OK**: The deletion is successful.'."\n" + ."\n" + .'- **AccessDenied**: Access is denied.'."\n" + ."\n" + .'- **FileNotFound**: The file is not found.', 'type' => 'string', 'example' => 'OK', 'title' => ''], + 'RecordId' => ['description' => 'The ID of the index file that you requested to delete.', 'type' => 'string', 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f**', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '939D19EE-59A0-18E9-B458-*****', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidProtocol', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSegmentNum', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSegmentDuration', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPartDuration', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again.', - ], - ], - 409 => [ - [ - 'errorCode' => 'ConfigConflicts', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParams', 'errorMessage' => 'Failed to parse given parameters.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalErr', - 'errorMessage' => '%s, please try again.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to some unknown error.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'UpdateLivePackageConfig', - 'description' => 'You can call this operation to update a live stream encapsulation configuration. The update takes effect only after you re-ingest the stream.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 300 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLivePackageConfig' => [ - 'summary' => '查询直播封装配置', - 'methods' => [ - 'post', - 'get', + 'title' => 'DeleteLiveStreamRecordIndexFiles', + 'summary' => 'Deletes the index files of live stream recordings.', + 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamRecordIndexFiles', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"OK\\",\\n \\"Message\\": \\"OK\\",\\n \\"RecordDeleteInfoList\\": {\\n \\"RecordDeleteInfo\\": [\\n {\\n \\"Message\\": \\"OK\\",\\n \\"RecordId\\": \\"c4d7f0a4-b506-43f9-8de3-07732c3f**\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"939D19EE-59A0-18E9-B458-*****\\"\\n}","type":"json"}]', + ], + 'DeleteLiveStreamTranscode' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveJAENGU', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'Template', 'in' => 'query', + 'schema' => ['description' => 'The transcoding template ID. Valid values:'."\n" + ."\n" + .'- Standard transcoding:'."\n" + ."\n" + .' - lld: low definition'."\n" + ."\n" + .' - lsd: standard definition'."\n" + ."\n" + .' - lhd: high definition'."\n" + ."\n" + .' - lud : ultra-high definition'."\n" + ."\n" + .'- Narrowband HD™ transcoding:'."\n" + ."\n" + .' - ld: low definition'."\n" + ."\n" + .' - sd: standard definition'."\n" + ."\n" + .' - hd: high definition'."\n" + ."\n" + .' - ud: ultra-high definition'."\n" + ."\n" + .'- Custom transcoding: a custom ID', 'type' => 'string', 'required' => true, 'example' => 'lld', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The application name. If you leave this parameter empty, all applications are matched.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'AppName', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'title' => 'DeleteLiveStreamTranscode', + 'summary' => 'Deletes a transcoding configuration.', + 'description' => 'Standard, Narrowband HD™, and custom transcoding templates are supported.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-03-15T07:04:27.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The stream name. If you leave this parameter empty, all streams are matched.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'StreamName', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DeleteLiveStreamWatermark' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'PageNum', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], + ], + 'parameters' => [ [ - 'name' => 'PageSize', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: 5 to 30. Default value: 10.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '5', - 'example' => '10', - 'default' => '10', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Order', + 'name' => 'TemplateId', 'in' => 'query', - 'schema' => [ - 'description' => 'The sorting order. Valid values:'."\n" - ."\n" - .'* **asc** (default): ascending order'."\n" - .'* **desc**: descending order'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'asc', - 'default' => 'asc', - 'enum' => [ - 'asc', - 'desc', - ], - ], + 'schema' => ['description' => 'The ID of the watermark template.'."\n" + ."\n" + .'> The template ID is returned in the response of the [AddLiveStreamWatermark](~~2848096~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The encapsulation information.'."\n", 'type' => 'object', 'properties' => [ - 'LivePackageConfigList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LivePackageConfig' => [ - 'description' => 'The live stream encapsulation configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The details about the live stream encapsulation configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => 'The application name.'."\n", - 'type' => 'string', - 'example' => 'AppName', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'IgnoreTranscode' => [ - 'description' => 'Indicates whether the transcoded stream is ignored. Valid values:'."\n" - ."\n" - .'* **true** (default)'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'PartDuration' => [ - 'description' => 'The part length. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'Protocol' => [ - 'description' => 'The streaming protocol and encapsulation format.'."\n", - 'type' => 'string', - 'example' => 'HLS_CMAF', - ], - 'SegmentDuration' => [ - 'description' => 'The segment length. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'SegmentNum' => [ - 'description' => 'The number of segments.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3', - ], - 'StreamName' => [ - 'description' => 'The stream name.'."\n", - 'type' => 'string', - 'example' => 'StreamName', - ], - ], - ], - ], - ], - ], - 'Order' => [ - 'description' => 'The sorting order. Valid values:'."\n" - ."\n" - .'* **asc** (default): ascending order'."\n" - .'* **desc**: descending order'."\n", - 'type' => 'string', - 'example' => 'asc', - ], - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '1FEDCFD8-4C5D-5CB3-A5A1-0B59E5AE57B0', - ], - 'TotalNum' => [ - 'description' => 'The total number of live stream encapsulation configurations.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b******', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => '%s Please check and try again later.', - ], - [ - 'errorCode' => 'InvalidProtocol', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSegmentNum', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSegmentDuration', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPartDuration', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalErr', - 'errorMessage' => '%s, please try again.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"LivePackageConfigList\\": {\\n \\"LivePackageConfig\\": [\\n {\\n \\"AppName\\": \\"AppName\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"IgnoreTranscode\\": true,\\n \\"PartDuration\\": 0,\\n \\"Protocol\\": \\"HLS_CMAF\\",\\n \\"SegmentDuration\\": 5,\\n \\"SegmentNum\\": 3,\\n \\"StreamName\\": \\"StreamName\\"\\n }\\n ]\\n },\\n \\"Order\\": \\"asc\\",\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"1FEDCFD8-4C5D-5CB3-A5A1-0B59E5AE57B0\\",\\n \\"TotalNum\\": 1,\\n \\"TotalPage\\": 10\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 1FEDCFD8-4C5D-5CB3-A5A1-0B59E5AE57B0\\n asc\\n 10\\n 10\\n 1\\n \\n AppName\\n 3\\n StreamName\\n HLS_CMAF\\n true\\n 0\\n 5\\n example.com\\n \\n","errorExample":""}]', - 'title' => 'DescribeLivePackageConfig', - 'description' => 'Obtain the main streaming domain, and then call this operation to query live stream encapsulation configurations.'."\n" + 'title' => 'DeleteLiveStreamWatermark', + 'summary' => 'Deletes a specified watermark template.', + 'description' => 'This operation deletes a live streaming watermark template based on a specified template ID.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS Limits'."\n" ."\n" - .'You can call this operation up to 300 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLivePackageConfig' => [ - 'summary' => '删除直播封装配置', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamWatermark', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b******\\"\\n}","type":"json"}]', + ], + 'DeleteLiveStreamWatermarkRule' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -19350,49 +14994,45 @@ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveJAENGU', - ], + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'Live streaming domain (primary playback domain).', - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'App name, `*` matches all names.', - 'type' => 'string', - 'required' => true, - 'example' => 'AppName', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'Live stream name, `*` matches all streams under AppName.', - 'type' => 'string', - 'required' => true, - 'example' => 'StreamName', - ], + 'schema' => ['description' => 'The stream name. The following rules apply:'."\n" + ."\n" + .'- To match a specific stream, enter the full stream name. Example: liveStreamA.'."\n" + ."\n" + .'- Use a wildcard for matching. The asterisk (\\*) matches all streams.'."\n" + ."\n" + .'- You can match by prefix or suffix.'."\n" + ."\n" + .'> * For wildcard matching, use only one asterisk (\\*) at the beginning or end of the string. Enclose matching items in parentheses. Separate multiple matching items with a vertical bar (|).'."\n" + .'>'."\n" + .'> * Example: `*(t1|t2)` matches all streams ending with `t1` or `t2`. `(abc|123)*` matches all streams starting with `abc` or `123`.', 'type' => 'string', 'required' => false, 'example' => 'liveStreamA', 'title' => ''], + ], + [ + 'name' => 'RuleId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the watermark rule.'."\n" + ."\n" + .'> Get this ID from the response of the [AddLiveStreamWatermarkRule](~~2848100~~) operation.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d -8f29-4bec2eb9****', 'title' => ''], ], ], 'responses' => [ @@ -19400,73 +15040,53 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '72ABAD7B-B14C-52DE-B6C6-C639FECAF5AD', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91******', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidProtocol', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSegmentNum', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSegmentDuration', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPartDuration', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalErr', - 'errorMessage' => '%s, please try again.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"72ABAD7B-B14C-52DE-B6C6-C639FECAF5AD\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 72ABAD7B-B14C-52DE-B6C6-C639FECAF5AD\\n","errorExample":""}]', - 'title' => 'DeleteLivePackageConfig', - 'description' => 'You can call this operation to delete a live stream encapsulation configuration. The deletion takes effect after you re-ingest the stream.'."\n" + 'title' => 'DeleteLiveStreamWatermarkRule', + 'summary' => 'Deletes a watermark rule.', + 'description' => 'This operation deletes the watermark rule based on the specified rule ID.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 300 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'AddLiveSnapshotDetectPornConfig' => [ - 'summary' => 'Adds a video moderation configuration for live streams in an application under a domain name.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveStreamWatermarkRule'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamWatermarkRule', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91******\\"\\n}","type":"json"}]', + ], + 'DeleteLiveStreamsNotifyUrlConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -19474,104 +15094,181 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'title' => 'DeleteLiveStreamsNotifyUrlConfig', + 'summary' => 'Deletes the callback configuration of stream ingest for an ingest domain.', + 'description' => 'After you obtain an ingest domain, you can call this operation to delete the stream ingest callback configuration.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'This operation is limited to 15 queries per second (QPS) for each user. If you exceed the limit, API calls are throttled, which can affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2022-08-17T09:42:34.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveStreamsNotifyUrlConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testApp', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamsNotifyUrlConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\"\\n}","type":"json"}]', + ], + 'DeleteMessageApp' => [ + 'summary' => 'Call DeleteMessageApp to delete an interactive message application.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'OssEndpoint', - 'in' => 'query', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'delete'], + 'parameters' => [ + [ + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the interactive message application to be deleted. Only one application ID can be specified.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The endpoint of the Object Storage Service (OSS) bucket.'."\n" - ."\n" - .'After the review is complete, you can search for specific violations in the OSS console based on the callback information. You must configure the OSS endpoint in advance. For more information, see [Configure content moderation](~~199449~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-oss-****.aliyuncs.com', + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'The returned results.', + 'type' => 'object', + 'properties' => [ + 'Success' => ['description' => 'Indicates whether the deletion was successful. Valid values:'."\n" + ."\n" + .'- true: The deletion was successful.'."\n" + .'- false: The deletion failed.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","type":"json"}]', + 'title' => 'DeleteMessageApp', + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second (QPS) per user. API calls that exceed this limit are throttled, which may affect your business. You can call this API at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2022-09-08T15:22:52.000Z', 'description' => 'OpenAPI offline'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteMessageApp'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + ], + 'DeleteMixStream' => [ + 'summary' => 'Deletes a stream mixing task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'OssBucket', + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveI16NIW'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the OSS bucket.'."\n" - ."\n" - .'After the review is complete, you can search for specific violations in the OSS console based on the callback information. You must create the OSS bucket in advance. For more information, see [Configure content moderation](~~199449~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'livebucket', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'OssObject', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the snapshot that stores violations such as pornographic content and politically sensitive content.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'record/{AppName}/{StreamName}/{Sequence}.jpg', - ], + 'schema' => ['description' => 'The domain name of the output stream.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'example.com'], ], [ - 'name' => 'Interval', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The interval at which snapshots are captured from the live stream. Valid values: **5 to 3600**. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '3600', - 'minimum' => '5', - 'example' => '10', - ], + 'schema' => ['description' => 'The name of the app.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'liveApp****'], ], [ - 'name' => 'Scene', + 'name' => 'StreamName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'Scene list detection.', - 'type' => 'array', - 'items' => [ - 'description' => 'The moderation scenario. Valid values:'."\n" - ."\n" - .'* **porn**: pornography detection. This is the default value.'."\n" - .'* **terrorism**: terrorism detection'."\n" - .'* **ad**: ad violation detection'."\n" - .'* **live**: undesirable scene detection'."\n" - .'* **logo**: logo detection'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'live', - ], - 'required' => false, - 'example' => 'live', - 'maxItems' => 5, - ], + 'schema' => ['description' => 'The name of the output stream.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'liveStream****'], + ], + [ + 'name' => 'MixStreamId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the stream mixing task. Obtain this ID from the MixStreamId parameter returned by the [CreateMixStream](~~2848087~~) operation.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => '749b7594-86d6-37b1-513b-e1e19845****'], ], ], 'responses' => [ @@ -19579,98 +15276,91 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'MixStreamId' => ['description' => 'The ID of the stream mixing task.', 'type' => 'string', 'title' => '', 'example' => '749b7594-86d6-37b1-513b-e1e19845****'], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => 'BE9407FF-F897-4DBD-338D-98A750AD805F'], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidOssEndpoint.Malformed', - 'errorMessage' => 'Specified parameter OssEndpoint is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.Malformed', - 'errorMessage' => 'Specified parameter OssBucket is not valid.', - ], - [ - 'errorCode' => 'InvalidOssObject.Malformed', - 'errorMessage' => 'Specified parameter OssObject is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.NotFound', - 'errorMessage' => 'The parameter OssBucket does not exist.', - ], - [ - 'errorCode' => 'InvalidScenes', - 'errorMessage' => 'Specified parameter Scene is not valid.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'MixStreamAlreadyExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The confluence task already exists, please check and try again.'], + ['errorCode' => 'MixStreamNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The confluous task does not exist. Please check and try again.'], + ], + [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'AddLiveSnapshotDetectPornConfig', - 'description' => "\n" - .'- The live streaming audit function identifies and reviews违规sensitive content at the domain and App level, and promptly notifies users of such violations via callbacks. Users can then review the content and take appropriate actions.'."\n" - .'- Currently, only some live streaming centers support intelligent auditing. For a list of live streaming centers that support this feature, please refer to [Service Regions](~~193730~~).'."\n" - .'## QPS Limitation '."\n" - .'The QPS limit for this API per user is 30 requests/second. Exceeding this limit will result in API throttling, which may impact your services. Please use the API judiciously. For more information, see [QPS Limitations](~~343507~~).', + 'title' => 'DeleteMixStream', + 'description' => 'Before you call this operation, you must create a stream mixing task by calling the [CreateMixStream](~~2848087~~) operation. If you no longer need the mixed stream, you must delete the task. Otherwise, the stream will be continuously ingested.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 10 for each user. API calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddLiveDetectNotifyConfig' => [ - 'summary' => 'Configures callbacks for video moderation results. As a result, a callback URL that is used to receive the callback notifications is added.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '### SDK example'."\n" + ."\n" + .'For more information, see [Sample code of stream mixing](https://help.aliyun.com/document_detail/199362.html).'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteMixStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MixStreamId\\": \\"749b7594-86d6-37b1-513b-e1e19845****\\",\\n \\"RequestId\\": \\"BE9407FF-F897-4DBD-338D-98A750AD805F\\"\\n}","type":"json"}]', + ], + 'DeletePlaylist' => [ + 'summary' => 'Deletes an entire playlist.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'NotifyUrl', + 'name' => 'ProgramId', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL that is used to receive callback notifications about violations, such as pornographic content and politically sensitive content, detected in live streams.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://demo.aliyundoc.com/examplecallback.action', - ], + 'schema' => ['description' => 'The ID of the playlist. You can obtain the playlist ID from the ProgramId parameter in the response of the [AddPlaylistItems](~~2848078~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], ], 'responses' => [ @@ -19678,140 +15368,87 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'ProgramId' => ['description' => 'The playlist ID. You can use this ID as a request parameter to query, start, or stop the playlist.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidNotifyUrl.Malformed', - 'errorMessage' => 'Specified NotifyUrl is invalid.', - ], - [ - 'errorCode' => 'InvalidNotifyUrl.Unsafe', - 'errorMessage' => 'Specified NotifyUrl is not safe.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => 'Invalid Params.', - ], + ['errorCode' => 'IncorrectPlaylistStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The Playlist is in use, please check and try again.'], + ['errorCode' => 'InvalidProgramId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ProgramId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ], + 404 => [ + ['errorCode' => 'PlayListNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'PlayList does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n \\"Code\\":\\"InternalError\\",\\n \\"HostId\\":\\"live.aliyuncs.com\\",\\n \\"Message\\":\\"The request processing has failed due to some unknown error.\\",\\n \\"RequestId\\":\\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'AddLiveDetectNotifyConfig', - 'description' => '* The automated review feature sends notifications about violations to the callback URL in real time. Then, you can manually review the content and take actions accordingly.'."\n" - .'* Only some live centers support the automated review feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DeletePlaylist', + 'description' => 'After you add items to a playlist by calling the [AddPlaylistItems](~~2848078~~) operation, you can call this operation to delete the entire playlist.'."\n" ."\n" .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live).', + .'Each user can make up to 10 queries per second (QPS). If you exceed this limit, API calls are throttled, which can affect your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveSnapshotDetectPornConfig' => [ - 'summary' => 'Queries video moderation configurations.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeletePlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'DeletePlaylistItems' => [ + 'summary' => 'Deletes items from a playlist.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'PageNum', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'ProgramId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: **5 to 30**. Default value: **10**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '30', - 'minimum' => '5', - 'example' => '10', - 'default' => '10', - ], + 'schema' => ['description' => 'The ID of the playlist. If you add items to the playlist by calling the [AddPlaylistItems](~~2848078~~) operation, you can obtain this ID from the ProgramId parameter in the response.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'Order', + 'name' => 'ProgramItemIds', 'in' => 'query', - 'schema' => [ - 'description' => 'The order in which the entries are sorted based on creation time. Valid values:'."\n" - ."\n" - .'* **Asc** (default): ascending order'."\n" - .'* **Desc**: descending order'."\n" - ."\n" - .'Enumerated values:'."\n" - ."\n" - .'* asc'."\n" - .'* desc'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Asc', - 'default' => 'asc', - 'enum' => [ - 'asc', - 'desc', - ], - ], + 'schema' => ['description' => 'A list of playlist item IDs.', 'type' => 'string', 'required' => true, 'example' => '["c09f3d63-eacf-4fbf-bd48-a07a6ba7****","c10f3d63-eacf-4fbf-bd48-a07a6ba7****"]', 'title' => ''], ], ], 'responses' => [ @@ -19819,160 +15456,85 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'PageNum' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'Order' => [ - 'description' => 'The sort order.'."\n", - 'type' => 'string', - 'example' => 'Asc', - ], - 'TotalPage' => [ - 'description' => 'The total number of pages.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '11', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'TotalNum' => [ - 'description' => 'The total number of entries that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '6', - ], - 'LiveSnapshotDetectPornConfigList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveSnapshotDetectPornConfig' => [ - 'description' => 'The list of video moderation configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'OssObject' => [ - 'description' => 'The name of the storage file in Object Storage Service (OSS).'."\n", - 'type' => 'string', - 'example' => ' {liveApp****}/{liveStream****}/{Date}/{Hour}/{Minute}_{Second}.jpg', - ], - 'AppName' => [ - 'description' => 'The application name.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'Interval' => [ - 'description' => 'The interval at which snapshots are captured from the live stream. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '80', - ], - 'OssBucket' => [ - 'description' => 'The name of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'OssEndpoint' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'example' => 'cn-oss-****.aliyuncs.com', - ], - 'Scenes' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'scene' => [ - 'description' => 'The moderation scenario array.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The moderation scenario. Valid values:'."\n" - ."\n" - .'* **porn** (default): pornography'."\n" - .'* **terrorism**: terrorism or politically sensitive content'."\n" - .'* **ad**: ad violation'."\n" - .'* **live**: undesirable scene'."\n" - .'* **logo**'."\n", - 'type' => 'string', - 'example' => 'porn', - ], - ], - ], - ], - ], - 'description' => '', - ], - ], - ], - ], + 'ProgramId' => ['description' => 'The ID of the playlist. You can use this ID as a request parameter to query playlist items, edit a playlist, delete a playlist, start a playlist, or stop a playlist.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageNum\\": 1,\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"Order\\": \\"Asc\\",\\n \\"TotalPage\\": 11,\\n \\"PageSize\\": 2,\\n \\"TotalNum\\": 6,\\n \\"LiveSnapshotDetectPornConfigList\\": {\\n \\"LiveSnapshotDetectPornConfig\\": [\\n {\\n \\"OssObject\\": \\" {liveApp****}/{liveStream****}/{Date}/{Hour}/{Minute}_{Second}.jpg\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"Interval\\": 80,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"Scenes\\": {\\n \\"scene\\": [\\n \\"porn\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n Asc\\n 11\\n 2\\n 6\\n \\n \\n {liveApp****}/{liveStream****}/{Date}/{Hour}/{Minute}_{Second}.jpg\\n liveApp****\\n 80\\n liveBucket****\\n example.com\\n cn-oss-****.aliyuncs.com\\n porn\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveSnapshotDetectPornConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to query video moderation configurations. The configurations can be sorted in ascending or descending order.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidProgramId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ProgramId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectPlaylistStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The Playlist is in use, please check and try again.'], + ['errorCode' => 'PlayListIsEmpty', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Playlist is empty, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ], + 404 => [ + ['errorCode' => 'PlayListNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'PlayList does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'DeletePlaylistItems', + 'description' => 'You can call the [AddPlaylistItems](~~2848078~~) operation to add items to a playlist. Then, you can call this operation to delete the items.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. If you exceed this limit, your API calls are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDetectNotifyConfig' => [ - 'summary' => 'Queries the configuration of callbacks for video moderation results.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeletePlaylistItems', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'DeleteRtcAsrTask' => [ + 'summary' => 'Call `DeleteRtcAsrTask` to delete a real-time speech-to-text or translation task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeCode' => '219798', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'TaskId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the task. Call the [CreateRtcAsrTask](~~2848217~~) operation to obtain the task ID.', 'type' => 'string', 'required' => true, 'example' => 'asr-51c72******', 'title' => ''], ], ], 'responses' => [ @@ -19980,163 +15542,73 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'LiveDetectNotifyConfig' => [ - 'description' => 'The callback configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'NotifyUrl' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://aliyundoc.com', - ], - ], - ], + 'Description' => ['description' => 'The description of the result. If the value is \\`success\\`, the operation is successful. Otherwise, an error message is returned.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '85F94125-B695-1FB8-A7E7-3BE7CE******', 'title' => ''], + 'RetCode' => ['description' => 'The status code. A value of \\`2000\\` indicates that the operation is successful. Other values indicate that an error occurred.', 'type' => 'integer', 'format' => 'int64', 'example' => '2000', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 404 => [ - [ - 'errorCode' => 'InvalidConfig.NotFound', - 'errorMessage' => 'Config does not exist.', - ], + 400 => [ + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E6******\\",\\n \\"LiveDetectNotifyConfig\\": {\\n \\"DomainName\\": \\"example.com\\",\\n \\"NotifyUrl\\": \\"http://aliyundoc.com\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n \\n example.com\\n http://aliyundoc.com\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDetectNotifyConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to query the configuration of callbacks for video moderation results.'."\n" - .'* Only some live centers support the automated review feature. For more information, see [Supported regions](~~193730~~).'."\n" - ."\n" - .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'UpdateLiveSnapshotDetectPornConfig' => [ - 'summary' => 'Modifies a video moderation configuration.', - 'methods' => [ - 'post', - 'get', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DeleteRtcAsrTask', + 'description' => 'The call frequency for this API is limited to 20 queries per second (QPS) per user. If you exceed this limit, your API calls are throttled. This may impact your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteRtcAsrTask'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:DeleteRtcAsrTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"success\\",\\n \\"RequestId\\": \\"85F94125-B695-1FB8-A7E7-3BE7CE******\\",\\n \\"RetCode\\": 2000\\n}","type":"json"}]', + ], + 'DeleteRtcMPUEventSub' => [ + 'summary' => 'Deletes a subscription to mixed-stream relay events.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107283', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '219225', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name cannot start with a hyphen (-) or underscore (\\_). You can also specify an asterisk (\\*) as the value to match all applications.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'OssEndpoint', - 'in' => 'query', - 'schema' => [ - 'description' => 'The endpoint of the Object Storage Service (OSS) bucket.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-oss-****.aliyuncs.com', - ], - ], - [ - 'name' => 'OssBucket', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the OSS bucket.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveBucket****', - ], - ], - [ - 'name' => 'OssObject', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the snapshot that stores violations such as pornographic content and politically sensitive content.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{liveApp****}/{liveStream****}/{Date}/{Hour}/{Minute}_{Second}.jpg', - ], - ], - [ - 'name' => 'Interval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The interval at which snapshots are captured from the live stream. Valid values: **5 to 3600**. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '3600', - 'minimum' => '5', - 'example' => '5', - ], - ], - [ - 'name' => 'Scene', + 'name' => 'AppId', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The moderation scenario array.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The moderation scenario. Valid values:'."\n" - ."\n" - .'* **porn** (default): pornography detection'."\n" - .'* **terrorism**: terrorism detection'."\n" - .'* **ad**: ad violation detection'."\n" - .'* **live**: undesirable scene detection'."\n" - .'* **logo**: logo detection'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'live', - ], - 'required' => false, - 'example' => 'porn', - 'maxItems' => 5, - ], + 'schema' => ['description' => 'The ID of the application.'."\n" + ."\n" + .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], ], ], 'responses' => [ @@ -20144,68 +15616,63 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidOssEndpoint.Malformed', - 'errorMessage' => 'Specified parameter OssEndpoint is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.Malformed', - 'errorMessage' => 'Specified parameter OssBucket is not valid.', - ], - [ - 'errorCode' => 'InvalidOssObject.Malformed', - 'errorMessage' => 'Specified parameter OssObject is not valid.', - ], - [ - 'errorCode' => 'InvalidOssBucket.NotFound', - 'errorMessage' => 'The parameter OssBucket does not exist.', - ], - [ - 'errorCode' => 'InvalidScenes', - 'errorMessage' => 'Specified parameter Scene is not valid.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidConfig.NotFound', - 'errorMessage' => 'Config does not exist.', - ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'UpdateLiveSnapshotDetectPornConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to modify a video moderation configuration.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DeleteRtcMPUEventSub', + 'description' => '- You can call this operation to delete a subscription to mixed-stream relay events.'."\n" + ."\n" + .'- Before you call this operation, make sure that you have called the CreateRtcMPUEventSub operation to create the subscription.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'UpdateLiveDetectNotifyConfig' => [ - 'summary' => 'Modifies the configuration of callbacks for video moderation results. As a result, the callback URL that is used to receive the callback notifications is changed.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2024-07-04T06:14:36.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteRtcMPUEventSub'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteRtcMPUEventSub', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'DeleteSnapshotCallbackAuth' => [ + 'summary' => 'Deletes the authentication configuration for snapshot callbacks.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -20213,33 +15680,21 @@ ], 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'NotifyUrl', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL that is used to receive callback notifications about violations, such as pornographic content, detected in live streams.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://guide.aliyundoc.com/examplecallback.action', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ @@ -20247,94 +15702,112 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD5', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidNotifyUrl.Malformed', - 'errorMessage' => 'Specified NotifyUrl is invalid.', - ], - [ - 'errorCode' => 'InvalidNotifyUrl.Unsafe', - 'errorMessage' => 'Specified NotifyUrl is not safe.', - ], - [ - 'errorCode' => 'InvalidParams', - 'errorMessage' => 'Invalid Params.', - ], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidConfig.NotFound', - 'errorMessage' => 'Config does not exist.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'UpdateLiveDetectNotifyConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to modify the configuration of callbacks for video moderation results.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DeleteSnapshotCallbackAuth', + 'description' => 'After the deletion, callbacks for new streams will no longer be authenticated.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteLiveSnapshotDetectPornConfig' => [ - 'summary' => 'Deletes a video moderation configuration.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteSnapshotCallbackAuth', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\"\\n}","type":"json"}]', + ], + 'DeleteSnapshotFiles' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'CreateTimestampList', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', + 'description' => 'A list of timestamps of the snapshots to delete.', + 'type' => 'array', + 'items' => ['description' => 'The timestamp, in milliseconds, when the snapshot to delete was generated.'."\n" + ."\n" + .'You can obtain this value from the CreateTimestamp parameter in the response of the [DescribeLiveStreamSnapshotInfo](~~2847902~~) operation.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1653641526637', 'title' => ''], 'required' => true, - 'example' => 'example.com', + 'example' => '1653641526637', + 'maxItems' => 200, + 'title' => '', ], ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can call the [DescribeLiveSnapshotDetectPornConfig](~~2847918~~) operation to query the application name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'RemoveFile', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to also delete the snapshot files from OSS. Valid values:'."\n" + ."\n" + .'- **true**: Deletes.'."\n" + ."\n" + .'- **false**: Does not delete.'."\n" + ."\n" + .'> To delete files from OSS, you must have the required permissions for OSS file operations.', 'type' => 'boolean', 'required' => true, 'example' => 'true', 'title' => ''], ], ], 'responses' => [ @@ -20342,38 +15815,98 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E6*******', + 'FailureCount' => ['description' => 'The number of snapshots that failed to be deleted.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '90F60327-ABEC-5A93-BF1F-****', 'title' => ''], + 'SnapshotDeleteInfoList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SnapshotDeleteInfo' => [ + 'itemNode' => true, + 'description' => 'The snapshot deletion details.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The snapshot deletion details.', + 'type' => 'object', + 'properties' => [ + 'CreateTimestamp' => ['description' => 'The timestamp, in milliseconds, of the snapshot that you requested to delete.', 'type' => 'integer', 'format' => 'int64', 'example' => '1653641526637', 'title' => ''], + 'Message' => ['description' => 'The result of the deletion operation for each snapshot. Valid values:'."\n" + ."\n" + .'- **OK**: The snapshot was deleted.'."\n" + ."\n" + .'- **FileNotFound**: The snapshot file was not found.', 'type' => 'string', 'example' => 'OK', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'SuccessCount' => ['description' => 'The number of snapshots that were deleted.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E6*******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteLiveSnapshotDetectPornConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to delete a video moderation configuration.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is invalid, please check and try again.'], + ['errorCode' => 'Cannot find task', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Task does not exist, please check and try again.'], + ['errorCode' => 'MissingParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'OSSAccessDenied', 'errorMessage' => 'OSS bucket not authorised', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'Server internal error', 'description' => ''], + ], + ], + 'title' => 'DeleteSnapshotFiles', + 'summary' => 'Deletes specified snapshot files.', + 'description' => 'This operation supports deleting snapshot files generated within a year.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveDetectNotifyConfig' => [ - 'summary' => 'Deletes the configuration of callbacks for video moderation results.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '|HttpCode|Error code|Error message|Description|'."\n" + .'|---|---|---|---|'."\n" + .'|400|InvalidParams|invalid JSON|The request failed to be parsed.|'."\n" + .'|400|Cannot find task|Stream not found|The stream was not found. Check the snapshot settings such as the domain name and application name and the stream ingest status.|'."\n" + .'|400|InvalidParams|Invalid request: missing|The required parameters are missing.|'."\n" + .'|403|OSSAccessDenied|OSS bucket not authorised|You do not have the permissions on the OSS bucket where the snapshot files are stored.|'."\n" + .'|500|InternalError|Server internal error|An internal error occurred. Check the snapshot settings such as the domain name and application name and the stream ingest status.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteSnapshotFiles', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"FailureCount\\": 1,\\n \\"RequestId\\": \\"90F60327-ABEC-5A93-BF1F-****\\",\\n \\"SnapshotDeleteInfoList\\": {\\n \\"SnapshotDeleteInfo\\": [\\n {\\n \\"CreateTimestamp\\": 1653641526637,\\n \\"Message\\": \\"OK\\"\\n }\\n ]\\n },\\n \\"SuccessCount\\": 1\\n}","type":"json"}]', + ], + 'DeleteStudioLayout' => [ + 'summary' => 'Deletes a layout in a virtual studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -20384,20 +15917,29 @@ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'DomainName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, choose **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list is its ID.', 'type' => 'string', 'required' => true, 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], + ], + [ + 'name' => 'LayoutId', + 'in' => 'query', + 'schema' => ['description' => 'The layout ID. If you added the layout to the production studio by calling the [AddStudioLayout](~~2848062~~) operation, use the LayoutId value returned in the response.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], ], 'responses' => [ @@ -20405,133 +15947,89 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e9*****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteLiveDetectNotifyConfig', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'* Obtain the main streaming domain, and then call this operation to delete the configuration of callbacks for video moderation results.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidLayoutId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The LayoutId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'DeleteStudioLayout', + 'description' => 'You can call this operation to delete a layout from a production studio. You can delete only one layout in each call.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 10 calls per second for each user. If the number of calls per second exceeds the limit, throttling is triggered. This may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddLiveAudioAuditConfig' => [ - 'summary' => 'Adds an audio moderation configuration.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteStudioLayout'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteStudioLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e9*****\\"\\n}","type":"json"}]', + ], + 'DescribeAutoShowListTasks' => [ + 'summary' => 'Queries scheduled tasks for automatic start and stop.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. The application name is case-sensitive.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. The value of this parameter must be the same as the stream name in the ingest URL. Otherwise, the configuration does not take effect. The stream name is case-sensitive.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'OssBucket', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the OSS bucket in which the recording is stored.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveBucket****', - ], - ], - [ - 'name' => 'OssEndpoint', - 'in' => 'query', - 'schema' => [ - 'description' => 'The endpoint of OSS.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-oss-****.aliyuncs.com', - ], - ], - [ - 'name' => 'OssObject', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the recording stored in OSS.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveObject****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'BizType', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The business type. You can specify a model. The default value is the domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.edu', - ], + 'schema' => ['description' => 'The ID of the production studio whose scheduled tasks you want to query.'."\n" + ."\n" + .'> If you create a scheduled task by calling the [InitializeAutoShowListTask](~~2848056~~) operation, use the CasterId value returned by that operation. If you leave this parameter empty, all scheduled tasks under your account are queried by default.', 'type' => 'string', 'required' => false, 'example' => '53200b81-b761-4c10-842a-a0726d97****', 'title' => ''], ], ], 'responses' => [ @@ -20539,123 +16037,101 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', - ], + 'AutoShowListTasks' => ['description' => 'The list of scheduled tasks. The list contains the following parameters:'."\n" + ."\n" + .'- Status: The status of the task. A value of 0 indicates that the task is paused. A value of 1 indicates that the task is started.'."\n" + ."\n" + .'- LiveTemplate: The list of transcoding configurations.'."\n" + ."\n" + .'- TranscodeConfig: The resolution for transcoding the pulled stream.'."\n" + ."\n" + .'- CasterId: The ID of the production studio.', 'type' => 'string', 'example' => '{"Status":0,"TranscodeConfig":{"CasterTemplate":"lp_hd", "LiveTemplate":["lhd","lsd"]}, "CasterId":"cce04ef3-2226-4865-8704-f84b8375****"}', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigExisted', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidVodUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter VodUrl is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidShowList.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ShowList does not exist, please check and try again.'], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\n","errorExample":""}]', - 'title' => 'AddLiveAudioAuditConfig', - 'description' => '* The content moderation feature detects undesirable sensitive content in the audio from live streams and returns callbacks to notify you of the violations. Then, you can manually review the content and take actions accordingly.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DescribeAutoShowListTasks', + 'description' => 'This operation queries information about scheduled tasks for automatic start and stop. When you call this operation, ensure that the parameters meet the requirements.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'A single user can make a maximum of 10 queries per second (QPS). If you exceed this limit, API calls are throttled. This may affect your business. Therefore, call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddLiveAudioAuditNotifyConfig' => [ - 'summary' => 'Configures callbacks for audio moderation results.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeAutoShowListTasks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AutoShowListTasks\\": \\"{\\\\\\"Status\\\\\\":0,\\\\\\"TranscodeConfig\\\\\\":{\\\\\\"CasterTemplate\\\\\\":\\\\\\"lp_hd\\\\\\", \\\\\\"LiveTemplate\\\\\\":[\\\\\\"lhd\\\\\\",\\\\\\"lsd\\\\\\"]}, \\\\\\"CasterId\\\\\\":\\\\\\"cce04ef3-2226-4865-8704-f84b8375****\\\\\\"}\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'DescribeCasterChannels' => [ + 'summary' => 'This operation queries the channels of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'Callback', - 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL. This URL is used to receive callback notifications about violations in audio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://demo.aliyundoc.com/callback', - ], - ], - [ - 'name' => 'CallbackTemplate', - 'in' => 'query', - 'schema' => [ - 'description' => 'The callback template. Valid values:'."\n" - ."\n" - .'* **{DomainName}**: the streaming domain.'."\n" - .'* **{AppName}**: the name of the application to which the live stream belongs.'."\n" - .'* **{StreamName}**: the name of the live stream.'."\n" - .'* **{Timestamp}**: the time when the callback is returned. The value of this field is a UNIX timestamp. Unit: seconds.'."\n" - .'* **{Result}**: the moderation results.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"domain":{DomainName},"app":{AppName},"stream":{StreamName},"timestamp":{Timestamp},"result":{Result}}', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you call the [CreateCaster](~~2848009~~) operation to create a production studio, use the CasterId returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of a production studio in the list on the Cloud Production Studio page is the ID of the production studio.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], ], 'responses' => [ @@ -20663,198 +16139,125 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', + 'Channels' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Channel' => [ + 'itemNode' => true, + 'description' => 'The list of channels.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of channels.', + 'type' => 'object', + 'properties' => [ + 'ChannelId' => ['description' => 'The ID of the channel slot used in the layout. You can set a maximum of one video source for each slot. The ID must be in the format of RV01 to RV12.'."\n" + ."\n" + .'The ID of the channel that is used in the layout. You can set a maximum of one video source for each slot. The ID must be in the format of RV01 to RV12.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'FaceBeauty' => ['description' => 'The retouching settings. Valid values: 0 (whole), 1 (skin smoothing), 2 (skin whitening), 3 (dark circle removal), and 4 (nasolabial fold removal).', 'type' => 'string', 'example' => '0', 'title' => ''], + 'ResourceId' => ['description' => 'The ID of the video source.', 'type' => 'string', 'example' => '87642866-281E-4AEA-9582-B124879****', 'title' => ''], + 'RtmpUrl' => ['description' => 'The RTMP URL.', 'type' => 'string', 'example' => 'rtmp://demo.aliyundoc.com/caster/rtmperf?auth_key=****', 'title' => ''], + 'StreamUrl' => ['description' => 'The output URL of the channel.', 'type' => 'string', 'example' => 'http://demo.aliyundoc.com/caster/streamwsx.flv?auth_key=YYYYY', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '83C52866-281E-4AEA-9582-B124********', 'title' => ''], + 'Total' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigExisted', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'UnsafeCallback', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\n","errorExample":""}]', - 'title' => 'AddLiveAudioAuditNotifyConfig', - 'description' => '* The content moderation feature returns the audio moderation results based on the configured callback template.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DescribeCasterChannels', + 'description' => 'After you create a production studio by calling the [CreateCaster](~~2848009~~) operation, you can call this operation to query its channels.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## [](#)Format of the Result field'."\n" - ."\n" - .'Result example:'."\n" - ."\n" - .' ['."\n" - .' {'."\n" - .' "scene": "antispam",'."\n" - .' "label": "ad",'."\n" - .' "suggestion": "block",'."\n" - .' "rate": 99.91,'."\n" - .' "details": ['."\n" - .' {'."\n" - .' "startTime": 1571989513,'."\n" - .' "endTime": 1571989515,'."\n" - .' "The Shambhala team on the third floor cooperates with the team on the fifth floor.",'."\n" - .' "label": "normal"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989515,'."\n" - .' "endTime": 1571989518,'."\n" - .' "text": "Two dishes, roasted fish and hot pot, are launched for celebration.",'."\n" - .' "label": "normal"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989520,'."\n" - .' "endTime": 1571989522,'."\n" - .' "text": "The VIP price for Shambhala members is RMB 39.",'."\n" - .' "label": "normal"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989523,'."\n" - .' "endTime": 1571989526,'."\n" - .' "text": "A discount of RMB 66 is offered for each consumption.",'."\n" - .' "label": "normal"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989530,'."\n" - .' "endTime": 1571989533,'."\n" - .' "text": "Big prize! For more information, contact 3398787",'."\n" - .' "label": "ad"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989533,'."\n" - .' "endTime": 1571989534,'."\n" - .' "text": "Good news! It seems so.",'."\n" - .' "label": "normal"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989538,'."\n" - .' "endTime": 1571989539,'."\n" - .' "text": "Four persons carry the vehicle license with them.",'."\n" - .' "label": "normal"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989542,'."\n" - .' "endTime": 1571989543,'."\n" - .' "text": "The proxy has 10 minutes left.",'."\n" - .' "label": "normal"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989545,'."\n" - .' "endTime": 1571989547,'."\n" - .' "text": "China Construction Bank ETC witness",'."\n" - .' "label": "normal"'."\n" - .' },'."\n" - .' {'."\n" - .' "startTime": 1571989550,'."\n" - .' "endTime": 1571989552,'."\n" - .' "text": "Zhao Xinyuan of Lvliang State Investment Group Co., Ltd.",'."\n" - .' "label": "normal"'."\n" - .' }'."\n" - .' ]'."\n" - .' }'."\n" - .' ]'."\n", + .'This operation is limited to 15 queries per second (QPS) for each user. If you exceed this limit, API calls are throttled, which can affect your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteLiveAudioAuditConfig' => [ - 'summary' => 'Deletes an audio moderation configuration.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterChannels', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Channels\\": {\\n \\"Channel\\": [\\n {\\n \\"ChannelId\\": \\"RV01\\",\\n \\"FaceBeauty\\": \\"0\\",\\n \\"ResourceId\\": \\"87642866-281E-4AEA-9582-B124879****\\",\\n \\"RtmpUrl\\": \\"rtmp://demo.aliyundoc.com/caster/rtmperf?auth_key=****\\",\\n \\"StreamUrl\\": \\"http://demo.aliyundoc.com/caster/streamwsx.flv?auth_key=YYYYY\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"83C52866-281E-4AEA-9582-B124********\\",\\n \\"Total\\": 1\\n}","type":"json"}]', + ], + 'DescribeCasterComponents' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n" - ."\n" - .'> A value of asterisk (\\*) specifies all applications under the domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, obtain the ID from the CasterId parameter in the response.'."\n" + ."\n" + .'- If you created the production studio in the LIVE console, go to the Cloud Production Studio page by choosing **LIVE Console** > **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'ComponentId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n" - ."\n" - .'> A value of asterisk (\\*) specifies all live streams in the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The component ID. If you added the component by calling the [AddCasterComponent](~~2848030~~) operation, obtain the ID from the ComponentId parameter in the response.', 'type' => 'string', 'required' => false, 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], ], ], 'responses' => [ @@ -20862,223 +16265,595 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E******', + 'Components' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Component' => [ + 'itemNode' => true, + 'description' => 'The list of components.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CaptionLayerContent' => [ + 'description' => 'The properties of the caption element.', + 'type' => 'object', + 'properties' => [ + 'BorderColor' => ['description' => 'The color of the text border.'."\n" + ."\n" + .'Valid values: 0x000000 to **0xffffff**. The default value is an empty string (""), which means this parameter is not used.', 'type' => 'string', 'example' => '0x000000', 'title' => ''], + 'BorderWidthNormalized' => ['description' => 'The normalized width of the text border. The value is calculated based on the font size: BorderWidth/FontSize.'."\n" + ."\n" + .'If the calculated value exceeds **16**, the value **16** is used. Default value: **0**.', 'type' => 'number', 'format' => 'float', 'example' => '0', 'title' => ''], + 'Color' => ['description' => 'The color of the text. Valid values: 0x000000 to **0xffffff**.', 'type' => 'string', 'example' => '0x000000', 'title' => ''], + 'FontName' => ['description' => 'The font. The value must be a preset value. Valid values:'."\n" + ."\n" + .'- **KaiTi**: KaiTi'."\n" + ."\n" + .'- **AlibabaPuHuiTi-Regular**: Alibaba PuHuiTi Regular'."\n" + ."\n" + .'- **AlibabaPuHuiTi-Bold**: Alibaba PuHuiTi Bold'."\n" + ."\n" + .'- **NAlibabaPuHuiTi-Light**: Alibaba PuHuiTi Light'."\n" + ."\n" + .'- **NotoSansHans-Regular**: Noto Sans CJK Regular'."\n" + ."\n" + .'- **NotoSansHans-Bold**: Noto Sans CJK Bold'."\n" + ."\n" + .'- **NotoSansHans-Light**: Noto Sans CJK Light'."\n" + ."\n" + .'Default value: **KaiTi**.', 'type' => 'string', 'example' => 'KaiTi', 'title' => ''], + 'LineSpaceNormalized' => ['description' => 'The line spacing. This parameter specifies the space between two lines of text. Default value: 0.', 'type' => 'number', 'format' => 'float', 'example' => '0', 'title' => ''], + 'LocationId' => ['description' => 'If the component type is caption, this parameter specifies the location of the referenced video source (the channel ID).', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'PtsOffset' => ['description' => 'The value used to correct the drift between the presentation timestamp (PTS) of the caption and the PTS of the audio.'."\n" + ."\n" + .'Valid values: -10000 to **+10000**. Default value: **0**.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'ShowSourceLan' => ['description' => 'Specifies whether to display the source language. Valid values:'."\n" + ."\n" + .'- **true**: The source language is displayed.'."\n" + ."\n" + .'- **false** (default): The source language is not displayed.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'SizeNormalized' => ['description' => 'The normalized font size. The font size is set to `[font_size,output_height]`.'."\n" + ."\n" + .'If the calculated font size is greater than **1024**, the value **1024** is used. The default value is **-1**, which means this parameter is not used.', 'type' => 'number', 'format' => 'float', 'example' => '0.1', 'title' => ''], + 'SourceLan' => ['description' => 'The source language of the video source audio. Valid values:'."\n" + ."\n" + .'- **en**: English'."\n" + ."\n" + .'- **cn** (default): Chinese'."\n" + ."\n" + .'- **es**: Spanish'."\n" + ."\n" + .'- **ru**: Russian', 'type' => 'string', 'example' => 'cn', 'title' => ''], + 'TargetLan' => ['description' => 'The target language of the video source audio. Valid values:'."\n" + ."\n" + .'- **en**: English'."\n" + ."\n" + .'- **cn** (default): Chinese'."\n" + ."\n" + .'- **es**: Spanish'."\n" + ."\n" + .'- **ru**: Russian', 'type' => 'string', 'example' => 'cn', 'title' => ''], + 'WordCountPerLine' => ['description' => 'The maximum number of characters to display per line.', 'type' => 'integer', 'format' => 'int32', 'example' => '15', 'title' => ''], + 'WordSpaceNormalized' => ['description' => 'The character spacing. This parameter specifies the space between two characters. Default value: **0**.', 'type' => 'number', 'format' => 'float', 'example' => '0', 'title' => ''], + 'WordsCount' => ['description' => 'The number of characters to display. You can adjust this value along with the font size.'."\n" + ."\n" + .'Valid values: 10 to **50**. Default value: **35**.', 'type' => 'integer', 'format' => 'int32', 'example' => '35', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'ComponentId' => ['description' => 'The component ID.', 'type' => 'string', 'example' => '72d2ec7a-4cd7-4a01-974b-7cd53947****', 'title' => ''], + 'ComponentLayer' => [ + 'description' => 'The size, layout, and other information of the component layer.', + 'type' => 'object', + 'properties' => [ + 'HeightNormalized' => ['description' => 'The normalized height of the layer element. The width of the element is scaled proportionally based on this height.'."\n" + ."\n" + .'The default value is **0**, which means the element is displayed in its original size.', 'type' => 'number', 'format' => 'float', 'example' => '0.5', 'title' => ''], + 'PositionNormalizeds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Position' => [ + 'description' => 'The normalized coordinates of the layer element, in the format `[x,y]`. Default value: `[0,0]`.'."\n" + ."\n" + .'> The values of x and y must be normalized.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The value.', 'type' => 'number', 'format' => 'float', 'example' => '0.3', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'PositionRefer' => ['description' => 'The reference point for the element\'s position. Valid values:'."\n" + ."\n" + .'- **topLeft** (default): The top-left corner.'."\n" + ."\n" + .'- **topRight**: The top-right corner.'."\n" + ."\n" + .'- **bottomLeft**: The bottom-left corner.'."\n" + ."\n" + .'- **bottomRight**: The bottom-right corner.', 'type' => 'string', 'example' => 'topLeft', 'title' => ''], + 'Transparency' => ['description' => 'The transparency of the layer. Valid values: 0 to 255.'."\n" + ."\n" + .'A value of **0** indicates that the layer is fully transparent. A value of **255** (default) indicates that the layer is fully opaque.', 'type' => 'integer', 'format' => 'int32', 'example' => '200', 'title' => ''], + 'WidthNormalized' => ['description' => 'The normalized width of the layer element. The height of the element is scaled proportionally based on this width. The default value is **0**, which means the element is displayed in its original size.'."\n" + ."\n" + .'> This parameter conflicts with HeightNormalized. If both are set, only HeightNormalized takes effect. If you set only one, the value set later overrides the previous one.', 'type' => 'number', 'format' => 'float', 'example' => '0.5', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'ComponentName' => ['description' => 'The component name. The default value is the component ID.', 'type' => 'string', 'example' => 'component_name', 'title' => ''], + 'ComponentType' => ['description' => 'The component type. Valid values:'."\n" + ."\n" + .'- **text**: Text component.'."\n" + ."\n" + .'- **image**: Image component.'."\n" + ."\n" + .'- **caption**: Translated caption component.', 'type' => 'string', 'example' => 'text', 'title' => ''], + 'Effect' => ['description' => 'The display effect of the component. Valid values:'."\n" + ."\n" + .'- **none**: No effect.'."\n" + ."\n" + .'- **animateH**: Horizontal scroll.'."\n" + ."\n" + .'- **animateV**: Vertical scroll.', 'type' => 'string', 'example' => 'animateV', 'title' => ''], + 'ImageLayerContent' => [ + 'description' => 'The properties of the image element.', + 'type' => 'object', + 'properties' => [ + 'MaterialId' => ['description' => 'The ID of the media asset.', 'type' => 'string', 'example' => '6cf724c6ebfd4a59b5b3cec6f10d****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'LocationId' => ['description' => 'The position of the component.'."\n" + ."\n" + .'You can set only one component for each position. The format must be "RC01" to "RC12".', 'type' => 'string', 'example' => 'RC01', 'title' => ''], + 'TextLayerContent' => [ + 'description' => 'The properties of the text element.', + 'type' => 'object', + 'properties' => [ + 'BorderColor' => ['description' => 'The color of the text border. Valid values: **0x000000** to **0xffffff**. The default value is an empty string (""), which means this parameter is not used.', 'type' => 'string', 'example' => '0x000000', 'title' => ''], + 'BorderWidthNormalized' => ['description' => 'The normalized width of the text border. The value is calculated based on the font size: **BorderWidth/FontSize**.'."\n" + ."\n" + .'If the calculated value exceeds **16**, the value **16** is used. Default value: **0**.', 'type' => 'number', 'format' => 'float', 'example' => '0', 'title' => ''], + 'Color' => ['description' => 'The color of the text. Valid values: 0x000000 to **0xffffff**.', 'type' => 'string', 'example' => '0xff0000', 'title' => ''], + 'FontName' => ['description' => 'The font. The value must be a preset value. Valid values:'."\n" + ."\n" + .'- **KaiTi**: KaiTi'."\n" + ."\n" + .'- **AlibabaPuHuiTi-Regular**: Alibaba PuHuiTi Regular'."\n" + ."\n" + .'- **AlibabaPuHuiTi-Bold**: Alibaba PuHuiTi Bold'."\n" + ."\n" + .'- **NAlibabaPuHuiTi-Light**: Alibaba PuHuiTi Light'."\n" + ."\n" + .'- **NotoSansHans-Regular**: Noto Sans CJK Regular'."\n" + ."\n" + .'- **NotoSansHans-Bold**: Noto Sans CJK Bold'."\n" + ."\n" + .'- **NotoSansHans-Light**: Noto Sans CJK Light'."\n" + ."\n" + .'Default value: **KaiTi**.', 'type' => 'string', 'example' => 'KaiTi', 'title' => ''], + 'SizeNormalized' => ['description' => 'The normalized font size.'."\n" + ."\n" + .'The size is set to **font\\_size/output\\_height**. If the calculated font size is greater than **1024**, the value **1024** is used. The default value is **-1**, which means this parameter is not used.', 'type' => 'number', 'format' => 'float', 'example' => '16', 'title' => ''], + 'Text' => ['description' => 'The text content.', 'type' => 'string', 'example' => 'hello world', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3be7ade8-d907-483c-b24a-0dad45******', 'title' => ''], + 'Total' => ['description' => 'The total number of records.', 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigExisted', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteLiveAudioAuditConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to delete an audio moderation configuration.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DescribeCasterComponents', + 'summary' => 'Queries the list of components for a production studio.', + 'description' => 'Call the [AddCasterComponent](~~2848030~~) operation to add components to a production studio. You can then call this operation to query the list of components.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'The queries per second (QPS) limit for a single user is 15. If you exceed the limit, API calls are throttled. This may affect your business, so ensure that you call this operation within the limit.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteLiveAudioAuditNotifyConfig' => [ - 'summary' => 'Deletes the configuration of callbacks for audio moderation results.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterComponents', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Components\\": {\\n \\"Component\\": [\\n {\\n \\"CaptionLayerContent\\": {\\n \\"BorderColor\\": \\"0x000000\\",\\n \\"BorderWidthNormalized\\": 0,\\n \\"Color\\": \\"0x000000\\",\\n \\"FontName\\": \\"KaiTi\\",\\n \\"LineSpaceNormalized\\": 0,\\n \\"LocationId\\": \\"RV01\\",\\n \\"PtsOffset\\": 0,\\n \\"ShowSourceLan\\": false,\\n \\"SizeNormalized\\": 0.1,\\n \\"SourceLan\\": \\"cn\\",\\n \\"TargetLan\\": \\"cn\\",\\n \\"WordCountPerLine\\": 15,\\n \\"WordSpaceNormalized\\": 0,\\n \\"WordsCount\\": 35\\n },\\n \\"ComponentId\\": \\"72d2ec7a-4cd7-4a01-974b-7cd53947****\\",\\n \\"ComponentLayer\\": {\\n \\"HeightNormalized\\": 0.5,\\n \\"PositionNormalizeds\\": {\\n \\"Position\\": [\\n 0.3\\n ]\\n },\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"Transparency\\": 200,\\n \\"WidthNormalized\\": 0.5\\n },\\n \\"ComponentName\\": \\"component_name\\",\\n \\"ComponentType\\": \\"text\\",\\n \\"Effect\\": \\"animateV\\",\\n \\"ImageLayerContent\\": {\\n \\"MaterialId\\": \\"6cf724c6ebfd4a59b5b3cec6f10d****\\"\\n },\\n \\"LocationId\\": \\"RC01\\",\\n \\"TextLayerContent\\": {\\n \\"BorderColor\\": \\"0x000000\\",\\n \\"BorderWidthNormalized\\": 0,\\n \\"Color\\": \\"0xff0000\\",\\n \\"FontName\\": \\"KaiTi\\",\\n \\"SizeNormalized\\": 16,\\n \\"Text\\": \\"hello world\\"\\n }\\n }\\n ]\\n },\\n \\"RequestId\\": \\"3be7ade8-d907-483c-b24a-0dad45******\\",\\n \\"Total\\": 3\\n}","type":"json"}]', + ], + 'DescribeCasterConfig' => [ + 'summary' => 'Queries the configuration of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106923', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - 'FEATUREliveUTGSNT', - ], + 'abilityTreeCode' => '106967', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you create the production studio in the console, go to the **LIVE console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The configuration of the production studio.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', + 'AutoSwitchUrgentConfig' => ['description' => 'The configuration for the automatic switchover to the standby video. `eofThres`: The duration in seconds after which the system automatically switches to the standby video if the stream is interrupted.', 'type' => 'string', 'example' => '{"eofThres":3}', 'title' => ''], + 'AutoSwitchUrgentOn' => ['description' => 'Indicates whether automatic switchover to the standby video is enabled.'."\n" + ."\n" + .'- **true**: Enabled.'."\n" + ."\n" + .'- **false**: Disabled.', 'type' => 'string', 'example' => 'true', 'title' => ''], + 'CallbackUrl' => ['description' => 'The webhook address.', 'type' => 'string', 'example' => 'http://learn.aliyundoc.com/callBackLive', 'title' => ''], + 'CasterId' => ['description' => 'The ID of the production studio.', 'type' => 'string', 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + 'CasterName' => ['description' => 'The name of the production studio.', 'type' => 'string', 'example' => 'coco-caster10', 'title' => ''], + 'ChannelEnable' => ['description' => 'Indicates whether the channel is enabled. Valid values:'."\n" + ."\n" + .'- **0**: Disabled.'."\n" + ."\n" + .'- **1**: Enabled.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'Delay' => ['description' => 'The stream delay. Unit: seconds.'."\n" + ."\n" + .'- **0**: Delay is disabled.'."\n" + ."\n" + .'- A value greater than **0**: Delay is enabled.', 'type' => 'number', 'format' => 'float', 'example' => '0', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'ProgramEffect' => ['description' => 'The carousel flag. Valid values:'."\n" + ."\n" + .'- **0**: Not effective.'."\n" + ."\n" + .'- **1**: Effective.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'ProgramName' => ['description' => 'The name of the carousel.', 'type' => 'string', 'example' => 'program_name', 'title' => ''], + 'RecordConfig' => [ + 'description' => 'If this parameter is empty, the recording feature is disabled.', + 'type' => 'object', + 'properties' => [ + 'OnDemand' => ['description' => 'On-demand recording. Valid values:'."\n" + ."\n" + .'- 0: Disabled.'."\n" + ."\n" + .'- 1: HTTP callback.'."\n" + ."\n" + .'- 2: On-demand recording based on stream ingest parameters.'."\n" + ."\n" + .'- 7: Recording is disabled by default.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'OssBucket' => ['description' => 'The storage location.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'OssEndpoint' => ['description' => 'The OSS endpoint where the storage location resides.', 'type' => 'string', 'example' => 'oss-cn-shanghai.aliyundoc.com', 'title' => ''], + 'RecordFormat' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RecordFormat' => [ + 'itemNode' => true, + 'description' => 'The recording format configuration.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The recording length information.', + 'type' => 'object', + 'properties' => [ + 'CycleDuration' => ['description' => 'The recording length.', 'type' => 'integer', 'format' => 'int32', 'example' => '3600', 'title' => ''], + 'Format' => ['description' => 'The recording format.', 'type' => 'string', 'example' => 'M3U8', 'title' => ''], + 'OssObjectPrefix' => ['description' => 'The name of the recording file.', 'type' => 'string', 'example' => 'record/{liveApp****}/{liveStream****}', 'title' => ''], + 'SliceOssObjectPrefix' => ['description' => 'The name of the segment.', 'type' => 'string', 'example' => 'record/{liveApp****}/{liveStream****}/{UnixTimestamp****}', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '97df6b7f-3490-47d2-ac50-8833e1b64597', 'title' => ''], + 'SideOutputUrl' => ['description' => 'The custom bypass output URL of the production studio.', 'type' => 'string', 'example' => 'rtmp://sophon-developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', 'title' => ''], + 'SideOutputUrlList' => ['description' => 'The list of custom bypass output URLs for the production studio.', 'type' => 'string', 'example' => '["rtmp://domain/app1/stream1","rtmp://domain/app2/stream2"]', 'title' => ''], + 'SyncGroupsConfig' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SyncGroup' => [ + 'itemNode' => true, + 'description' => 'The storage configuration.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The storage configuration.', + 'type' => 'object', + 'properties' => [ + 'HostResourceId' => ['description' => 'The resource ID of the production studio.', 'type' => 'string', 'example' => '28768383240243****', 'title' => ''], + 'Mode' => ['description' => 'The caching mode for static pages. Valid values:'."\n" + ."\n" + .'- 0: Standard mode.'."\n" + ."\n" + .'- 1: Strong Mode.'."\n" + ."\n" + .'- 2: No caching.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'ResourceIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ResourceId' => [ + 'description' => 'The list of IDs of the cloud resources whose resource group you want to change. You can specify from 1 to 50 resource IDs.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The list of IDs of the cloud resources whose resource group you want to change. You can specify from 1 to 50 resource IDs.', 'type' => 'string', 'example' => '1', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'TranscodeConfig' => [ + 'description' => 'The transcoding configuration.', + 'type' => 'object', + 'properties' => [ + 'CasterTemplate' => ['description' => 'The transcoding template for the production studio. Valid values:'."\n" + ."\n" + .'- **lp\\_ld**: Low definition.'."\n" + ."\n" + .'- **lp\\_sd**: Standard definition.'."\n" + ."\n" + .'- **lp\\_hd**: High definition.'."\n" + ."\n" + .'- **lp\\_ud**: Ultra-high definition.'."\n" + ."\n" + .'- **lp\\_ld\\_v**: Vertical low definition.'."\n" + ."\n" + .'- **lp\\_sd\\_v**: Vertical standard definition.'."\n" + ."\n" + .'- **lp\\_hd\\_v**: Vertical high definition.'."\n" + ."\n" + .'- **lp\\_ud\\_v**: Vertical ultra-high definition.', 'type' => 'string', 'example' => 'lp_hd', 'title' => ''], + 'LiveTemplateIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LocationId' => [ + 'itemNode' => true, + 'description' => 'The live stream transcoding configuration.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The live stream transcoding configuration. Valid values:'."\n" + ."\n" + .'- **lsd**: Standard definition.'."\n" + ."\n" + .'- **lld**: Low definition.'."\n" + ."\n" + .'- **lud**: Ultra-high definition.'."\n" + ."\n" + .'- **lhd**: High-definition adaptive transcoding template.'."\n" + ."\n" + .'- **daobo-lsd**: Standard definition.'."\n" + ."\n" + .'- **daobo-lld**: Low definition.'."\n" + ."\n" + .'- **daobo-lud**: Ultra-high definition.'."\n" + ."\n" + .'- **daobo-lhd**: High definition.', 'type' => 'string', 'example' => 'lld', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'CustomParams' => [ + 'description' => 'Custom configuration', + 'type' => 'object', + 'properties' => [ + 'video' => [ + 'description' => 'Video parameters', + 'type' => 'object', + 'properties' => [ + 'fps' => ['description' => 'Video frame rate', 'type' => 'integer', 'format' => 'int32', 'example' => '300', 'title' => ''], + 'bitrate' => ['description' => 'Video bitrate', 'type' => 'integer', 'format' => 'int32', 'example' => '300', 'title' => ''], + 'width' => ['description' => 'The video width in pixels (px).', 'type' => 'integer', 'format' => 'int32', 'example' => '1080', 'title' => ''], + 'height' => ['description' => 'The video height in pixels (px).', 'type' => 'integer', 'format' => 'int32', 'example' => '720', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', ], + 'UrgentImageId' => ['description' => 'The ID of the standby image asset in the media asset library.', 'type' => 'string', 'example' => 'a089175eb5f4427684fc0715159a****', 'title' => ''], + 'UrgentImageUrl' => ['description' => 'The URL of the standby image asset.', 'type' => 'string', 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', 'title' => ''], + 'UrgentLiveStreamUrl' => ['description' => 'The URL of the standby live stream.', 'type' => 'string', 'example' => 'rtmp://demo.aliyundoc.com', 'title' => ''], + 'UrgentMaterialId' => ['description' => 'The ID of the standby video asset in the media asset library.', 'type' => 'string', 'example' => '98646538-bcf9-4aef-bd4a-e6bb76588****', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigExisted', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\n","errorExample":""}]', - 'title' => 'DeleteLiveAudioAuditNotifyConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to delete the configuration of callbacks for audio moderation results.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DescribeCasterConfig', + 'description' => 'Call the [CreateCaster](~~2848009~~) operation to create a production studio. Then, call this operation to query its configuration.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'This operation has a queries per second (QPS) limit of 15 calls per user. If you exceed the limit, your API calls are throttled, which can affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UpdateLiveAudioAuditNotifyConfig' => [ - 'summary' => 'Modifies the configuration of callbacks for audio moderation results.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-12-12T09:10:34.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2023-11-22T01:24:18.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2023-03-31T08:26:53.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2023-03-07T02:04:50.000Z', 'description' => 'Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [], ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AutoSwitchUrgentConfig\\": \\"{\\\\\\"eofThres\\\\\\":3}\\",\\n \\"AutoSwitchUrgentOn\\": \\"true\\",\\n \\"CallbackUrl\\": \\"http://learn.aliyundoc.com/callBackLive\\",\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"CasterName\\": \\"coco-caster10\\",\\n \\"ChannelEnable\\": 1,\\n \\"Delay\\": 0,\\n \\"DomainName\\": \\"example.com\\",\\n \\"ProgramEffect\\": 0,\\n \\"ProgramName\\": \\"program_name\\",\\n \\"RecordConfig\\": {\\n \\"OnDemand\\": 0,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"OssEndpoint\\": \\"oss-cn-shanghai.aliyundoc.com\\",\\n \\"RecordFormat\\": {\\n \\"RecordFormat\\": [\\n {\\n \\"CycleDuration\\": 3600,\\n \\"Format\\": \\"M3U8\\",\\n \\"OssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}\\",\\n \\"SliceOssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}/{UnixTimestamp****}\\"\\n }\\n ]\\n }\\n },\\n \\"RequestId\\": \\"97df6b7f-3490-47d2-ac50-8833e1b64597\\",\\n \\"SideOutputUrl\\": \\"rtmp://sophon-developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****\\",\\n \\"SideOutputUrlList\\": \\"[\\\\\\"rtmp://domain/app1/stream1\\\\\\",\\\\\\"rtmp://domain/app2/stream2\\\\\\"]\\",\\n \\"SyncGroupsConfig\\": {\\n \\"SyncGroup\\": [\\n {\\n \\"HostResourceId\\": \\"28768383240243****\\",\\n \\"Mode\\": 0,\\n \\"ResourceIds\\": {\\n \\"ResourceId\\": [\\n \\"1\\"\\n ]\\n }\\n }\\n ]\\n },\\n \\"TranscodeConfig\\": {\\n \\"CasterTemplate\\": \\"lp_hd\\",\\n \\"LiveTemplateIds\\": {\\n \\"LocationId\\": [\\n \\"lld\\"\\n ]\\n },\\n \\"CustomParams\\": {\\n \\"video\\": {\\n \\"fps\\": 300,\\n \\"bitrate\\": 300,\\n \\"width\\": 1080,\\n \\"height\\": 720\\n }\\n }\\n },\\n \\"UrgentImageId\\": \\"a089175eb5f4427684fc0715159a****\\",\\n \\"UrgentImageUrl\\": \\"http://learn.aliyundoc.com/AppName/image.jpg\\",\\n \\"UrgentLiveStreamUrl\\": \\"rtmp://demo.aliyundoc.com\\",\\n \\"UrgentMaterialId\\": \\"98646538-bcf9-4aef-bd4a-e6bb76588****\\"\\n}","type":"json"}]', + ], + 'DescribeCasterLayouts' => [ + 'summary' => 'Queries the layouts of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Callback', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL. This URL is used to receive callback notifications about violations in audio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://guide.aliyundoc.com/callback', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you created the production studio in the LIVE console, find the ID on the **Production Studio** > **Cloud Production Studio** page.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'CallbackTemplate', + 'name' => 'LayoutId', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback template. Configure the following fields:'."\n" - ."\n" - .'* **{DomainName}**: the streaming domain.'."\n" - .'* **{AppName}**: the name of the application to which the live stream belongs.'."\n" - .'* **{StreamName}**: the name of the live stream.'."\n" - .'* **{Timestamp}**: the time when the callback is returned. The value of this field is a UNIX timestamp. Unit: seconds.'."\n" - .'* **{Result}**: the moderation results.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"domain":{DomainName},"app":{AppName},"stream":{StreamName},"timestamp":{Timestamp},"result":{Result}}', - ], + 'schema' => ['description' => 'The layout ID.'."\n" + ."\n" + .'If you do not provide a value for LayoutId, all layouts of the production studio are returned.', 'type' => 'string', 'required' => false, 'example' => '72d2ec7a-4cd7-4a01-974b-7cd53947****', 'title' => ''], ], ], 'responses' => [ @@ -21086,154 +16861,305 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', + 'Layouts' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Layout' => [ + 'itemNode' => true, + 'description' => 'The layout list.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The layout list.', + 'type' => 'object', + 'properties' => [ + 'AudioLayers' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AudioLayer' => [ + 'description' => 'The list of AudioLayer configurations.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of AudioLayer configurations.', + 'type' => 'object', + 'properties' => [ + 'FixedDelayDuration' => ['description' => 'The fixed latency for the audio. This can be used for caption synchronization.'."\n" + ."\n" + .'Unit: milliseconds (ms). Default value: 0. Valid values: **0** to **5000**.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'ValidChannel' => ['description' => 'The sound channels that can be used for audio input. Valid values:'."\n" + ."\n" + .'- **leftChannel**: The left sound channel.'."\n" + ."\n" + .'- **rightChannel**: The right sound channel.'."\n" + ."\n" + .'- **all** (default): Both sound channels.', 'type' => 'string', 'example' => 'all', 'title' => ''], + 'VolumeRate' => ['description' => 'The volume rate. A value of 1 indicates the original volume.'."\n" + ."\n" + .'> The default value is **0**. This displays the element in its original size.', 'type' => 'number', 'format' => 'float', 'example' => '1', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'BlendList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LocationId' => [ + 'description' => 'The list of associated positions. The order is the same as that of VideoLayers.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The position ID.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'LayoutId' => ['description' => 'The layout ID.', 'type' => 'string', 'example' => '72d2ec7a-4cd7-4a01-974b-7cd53947****', 'title' => ''], + 'MixList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LocationId' => [ + 'description' => 'The list of associated positions. The order is the same as that of AudioLayers.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The position ID.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'VideoLayers' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VideoLayer' => [ + 'description' => 'The list of VideoLayer configurations. The default array sequence is used.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of VideoLayer configurations. The default array sequence is used.', + 'type' => 'object', + 'properties' => [ + 'FillMode' => ['description' => 'The fill mode of the element. Valid values:'."\n" + ."\n" + .'- **none** (default): No fill. The layer is configured based on the video frame.'."\n" + ."\n" + .'- **fit**: Fit. The layer is configured based on the fill area. The video frame is scaled with its original aspect ratio to fit the longer edge of the fill area and is centered. If the aspect ratio of the fill area is different from that of the video frame, the layer below is displayed in the unfilled areas. If no layer is configured below, the background is black.', 'type' => 'string', 'example' => 'fit', 'title' => ''], + 'FixedDelayDuration' => ['description' => 'The fixed latency set for the video. This can be used for caption synchronization.'."\n" + ."\n" + .'Unit: milliseconds (ms). Default value: 0. Valid values: **0** to **5000**.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'HeightNormalized' => ['description' => 'The normalized height of the layer element.'."\n" + ."\n" + .'- If the fill mode is none, the width of the element is scaled proportionally based on this height. The default value is **0**, which means the video is displayed in its original size.'."\n" + ."\n" + .'- If the fill mode is fit, this parameter is required and must be greater than **0**. It represents the normalized height of the fill area.', 'type' => 'number', 'format' => 'float', 'example' => '0.5', 'title' => ''], + 'PositionNormalizeds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Position' => [ + 'description' => 'The normalized position of the layer element in the format `[x,y]`. The default value is `[0,0]`.'."\n" + ."\n" + .'> The x and y coordinates must be normalized.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The value.', 'type' => 'number', 'format' => 'float', 'example' => '0', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'PositionRefer' => ['description' => 'The reference point for the element\'s position. Valid values:'."\n" + ."\n" + .'- **topLeft** (default): Top left.'."\n" + ."\n" + .'- **topRight**: Top right.'."\n" + ."\n" + .'- **bottomLeft**: Bottom left.'."\n" + ."\n" + .'- **bottomRight**: Bottom right.'."\n" + ."\n" + .'- **center**: Center.'."\n" + ."\n" + .'- **topCenter**: Top center.'."\n" + ."\n" + .'- **bottomCenter**: Bottom center.'."\n" + ."\n" + .'- **leftCenter**: Left center.'."\n" + ."\n" + .'- **rightCenter**: Right center.', 'type' => 'string', 'example' => 'topLeft', 'title' => ''], + 'WidthNormalized' => ['description' => 'The normalized width of the layer element.'."\n" + ."\n" + .'- If the fill mode is none, the height of the element is scaled proportionally based on this width. The default value is **0**, which means the video is displayed in its original size.'."\n" + ."\n" + .'- If the fill mode is fit, this parameter is required and must be greater than **0**. It represents the normalized width of the fill area.', 'type' => 'number', 'format' => 'float', 'example' => '0.5', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3be7ade8-d907-483c-b24a-0dad45****', 'title' => ''], + 'Total' => ['description' => 'The total number of records.', 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigExisted', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'UnsafeCallback', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\n","errorExample":""}]', - 'title' => 'UpdateLiveAudioAuditNotifyConfig', + 'title' => 'DescribeCasterLayouts', + 'description' => 'You can call this API operation to query the layouts of a production studio. If you do not specify a layout ID, all layouts of the studio are returned.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this API operation is 15 calls per second for each user. If you exceed this limit, API calls are throttled. This can affect your business, so you should call this API operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UpdateLiveAudioAuditConfig' => [ - 'summary' => 'Modifies an audio moderation configuration.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterLayouts', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Layouts\\": {\\n \\"Layout\\": [\\n {\\n \\"AudioLayers\\": {\\n \\"AudioLayer\\": [\\n {\\n \\"FixedDelayDuration\\": 20,\\n \\"ValidChannel\\": \\"all\\",\\n \\"VolumeRate\\": 1\\n }\\n ]\\n },\\n \\"BlendList\\": {\\n \\"LocationId\\": [\\n \\"RV01\\"\\n ]\\n },\\n \\"LayoutId\\": \\"72d2ec7a-4cd7-4a01-974b-7cd53947****\\",\\n \\"MixList\\": {\\n \\"LocationId\\": [\\n \\"RV01\\"\\n ]\\n },\\n \\"VideoLayers\\": {\\n \\"VideoLayer\\": [\\n {\\n \\"FillMode\\": \\"fit\\",\\n \\"FixedDelayDuration\\": 20,\\n \\"HeightNormalized\\": 0.5,\\n \\"PositionNormalizeds\\": {\\n \\"Position\\": [\\n 0\\n ]\\n },\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"WidthNormalized\\": 0.5\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"RequestId\\": \\"3be7ade8-d907-483c-b24a-0dad45****\\",\\n \\"Total\\": 3\\n}","type":"json"}]', + ], + 'DescribeCasterProgram' => [ + 'summary' => 'Queries the program list of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the LIVE console, find the ID on the Cloud Production Studio page. To go to this page, choose **LIVE** > **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is its ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'EpisodeId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. The application name is case-sensitive.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The ID of the program.', 'type' => 'string', 'required' => false, 'example' => '1872639A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'EpisodeType', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. The value of this parameter must be the same as the stream name in the ingest URL. Otherwise, the configuration does not take effect. The stream name is case-sensitive.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The type of the node. Valid values:'."\n" + ."\n" + .'- **Resource**: video source.'."\n" + ."\n" + .'- **Component**: component.', 'type' => 'string', 'required' => false, 'example' => 'Resource', 'title' => ''], ], [ - 'name' => 'OssBucket', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Object Storage Service (OSS) bucket.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveBucket****', - ], + 'schema' => ['description' => 'The start time. The time must be in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T09:00:00Z', 'title' => ''], ], [ - 'name' => 'OssEndpoint', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The endpoint of the OSS bucket.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-oss-****.aliyuncs.com', - ], + 'schema' => ['description' => 'The end time. The time must be in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T10:00:00Z', 'title' => ''], ], [ - 'name' => 'OssObject', + 'name' => 'PageNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the recording that is stored in OSS.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveObject****', - ], + 'schema' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5', 'title' => ''], ], [ - 'name' => 'BizType', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The business type. You can specify a model. The default value is the domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => ' example.edu', - ], + 'schema' => ['description' => 'The number of programs on each page.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => ['description' => 'The status of the program. Valid values:'."\n" + ."\n" + .'- **0**: not started'."\n" + ."\n" + .'- **1**: playing'."\n" + ."\n" + .'- **2**: finished', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], ], ], 'responses' => [ @@ -21241,64 +17167,127 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', + 'CasterId' => ['description' => 'The ID of the production studio.', 'type' => 'string', 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + 'Episodes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Episode' => [ + 'itemNode' => true, + 'description' => 'The nodes.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'A node.', + 'type' => 'object', + 'properties' => [ + 'ComponentIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ComponentId' => [ + 'description' => 'The component IDs.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'A component ID.', 'type' => 'string', 'example' => '["1872639A-F203-4EC5-8E43-CB929282****" ]', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'EndTime' => ['description' => 'The end time. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'example' => '2016-06-29T10:02:00Z', 'title' => ''], + 'EpisodeId' => ['description' => 'The ID of the program.', 'type' => 'string', 'example' => '1872639A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + 'EpisodeName' => ['description' => 'The name of the program.', 'type' => 'string', 'example' => 'program_name_1', 'title' => ''], + 'EpisodeType' => ['description' => 'The type of the node. Valid values:'."\n" + ."\n" + .'- **Resource**: video source.'."\n" + ."\n" + .'- **Component**: component.', 'type' => 'string', 'example' => 'Resource', 'title' => ''], + 'ResourceId' => ['description' => 'The ID of the video source.', 'type' => 'string', 'example' => '1872639A-F203-4EC5-8E43-CB92E837****', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'example' => '2016-06-29T09:00:00Z', 'title' => ''], + 'Status' => ['description' => 'The status of the program.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'SwitchType' => ['description' => 'The switch policy. Valid values:'."\n" + ."\n" + .'- **TimeFirst**: time-priority. Live programs can use only this policy.'."\n" + ."\n" + .'- **ContentFirst**: content-priority.', 'type' => 'string', 'example' => 'TimeFirst', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'ProgramEffect' => ['description' => 'Indicates whether the program list is enabled.'."\n" + ."\n" + .'- **0**: disabled'."\n" + ."\n" + .'- **1**: enabled', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'ProgramName' => ['description' => 'The name of the program list.', 'type' => 'string', 'example' => 'programs_name', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'Total' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigExisted', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidPageSize.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PageSize is invalid, please check and try again.'], + ['errorCode' => 'InvalidPageNum.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PageNum is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ['errorCode' => 'InvalidParameter.Status', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter Status is invalid, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\n","errorExample":""}]', - 'title' => 'UpdateLiveAudioAuditConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to modify an audio moderation configuration.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DescribeCasterProgram', + 'description' => 'You can call this operation to query the program list of a production studio. This operation supports video source and component nodes.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for a single user is 4 calls per second. If the limit is exceeded, API calls are throttled. This may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveAudioAuditConfig' => [ - 'summary' => 'Queries audio moderation configurations.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeCasterProgram'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterProgram', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"Episodes\\": {\\n \\"Episode\\": [\\n {\\n \\"ComponentIds\\": {\\n \\"ComponentId\\": [\\n \\"[\\\\\\"1872639A-F203-4EC5-8E43-CB929282****\\\\\\" ]\\"\\n ]\\n },\\n \\"EndTime\\": \\"2016-06-29T10:02:00Z\\",\\n \\"EpisodeId\\": \\"1872639A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"EpisodeName\\": \\"program_name_1\\",\\n \\"EpisodeType\\": \\"Resource\\",\\n \\"ResourceId\\": \\"1872639A-F203-4EC5-8E43-CB92E837****\\",\\n \\"StartTime\\": \\"2016-06-29T09:00:00Z\\",\\n \\"Status\\": 0,\\n \\"SwitchType\\": \\"TimeFirst\\"\\n }\\n ]\\n },\\n \\"ProgramEffect\\": 1,\\n \\"ProgramName\\": \\"programs_name\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"Total\\": 1\\n}","type":"json"}]', + ], + 'DescribeCasterSceneAudio' => [ + 'summary' => 'Queries the audio configuration of a scenario.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -21309,49 +17298,29 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, obtain the value of CasterId from the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, view the ID on the **Production Studio** > **Cloud Production Studio** page.'."\n" + ."\n" + .'> The name of a production studio in the list on the Cloud Production Studio page is the ID of the production studio.', 'type' => 'string', 'required' => true, 'example' => '97df6b7f-3490-47d2-ac50-88338765****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'SceneId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The ID of the scenario.', 'type' => 'string', 'required' => true, 'example' => '97df6b7f-3490-47d2-ac50-88339087****', 'title' => ''], ], ], 'responses' => [ @@ -21359,115 +17328,116 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', - ], - 'LiveAudioAuditConfigList' => [ + 'AudioLayers' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'LiveAudioAuditConfig' => [ - 'description' => 'The list of audio moderation configurations.'."\n", + 'AudioLayer' => [ + 'itemNode' => true, + 'description' => 'The list of audio layer configurations.', + 'title' => '', 'type' => 'array', 'items' => [ + 'description' => 'The list of audio layer configurations.', 'type' => 'object', 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'BizType' => [ - 'description' => 'The business type. You can specify a model. The default value is the domain name.'."\n", - 'type' => 'string', - 'example' => 'example.edu', - ], - 'Scenes' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'scene' => [ - 'description' => 'The moderation scenarios.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The moderation scenario.'."\n", - 'type' => 'string', - 'example' => '["antispam"]', - ], - ], - ], - ], + 'FixedDelayDuration' => ['description' => 'The fixed latency. Unit: milliseconds (ms).', 'type' => 'integer', 'format' => 'int32', 'example' => '2000', 'title' => ''], + 'ValidChannel' => ['description' => 'The sound channel type. Valid values:'."\n" + ."\n" + .'- **left**: left sound channel.'."\n" + ."\n" + .'- **right**: right sound channel.'."\n" + ."\n" + .'- **all** (default): stereo.', 'type' => 'string', 'example' => 'all', 'title' => ''], + 'VolumeRate' => ['description' => 'The audio volume.', 'type' => 'number', 'format' => 'float', 'example' => '1', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'CasterId' => ['description' => 'The ID of the production studio. This ID can be used as a request parameter to start the production studio scenario.', 'type' => 'string', 'example' => '97df6b7f-3490-47d2-ac50-88338765****', 'title' => ''], + 'FollowEnable' => ['description' => 'Specifies whether to enable audio follow. By default, audio follow is enabled.'."\n" + ."\n" + .'- **0**: mix mode.'."\n" + ."\n" + .'- **1**: audio-follows-video mode.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'MixList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LocationId' => [ + 'itemNode' => true, + 'description' => 'The list of associated locations. The order of locations is the same as the order of audio layers.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The location ID.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '98745637-3490-47d2-ac50-883387567098', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigExisted', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\",\\n \\"LiveAudioAuditConfigList\\": {\\n \\"LiveAudioAuditConfig\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"BizType\\": \\"example.edu\\",\\n \\"Scenes\\": {\\n \\"scene\\": [\\n \\"antispam\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\n \\n liveApp****\\n example.com\\n liveStream****\\n example.edu\\n [\\"antispam\\"]\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveAudioAuditConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to query audio moderation configurations.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DescribeCasterSceneAudio', + 'description' => 'Before you call this operation, you must create a production studio by calling the [CreateCaster](~~2848009~~) operation.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for a single user is 15 calls per second. API calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveAudioAuditNotifyConfig' => [ - 'summary' => 'Queries the configuration of callbacks for audio moderation results.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterSceneAudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AudioLayers\\": {\\n \\"AudioLayer\\": [\\n {\\n \\"FixedDelayDuration\\": 2000,\\n \\"ValidChannel\\": \\"all\\",\\n \\"VolumeRate\\": 1\\n }\\n ]\\n },\\n \\"CasterId\\": \\"97df6b7f-3490-47d2-ac50-88338765****\\",\\n \\"FollowEnable\\": 1,\\n \\"MixList\\": {\\n \\"LocationId\\": [\\n \\"RV01\\"\\n ]\\n },\\n \\"RequestId\\": \\"98745637-3490-47d2-ac50-883387567098\\"\\n}","type":"json"}]', + ], + 'DescribeCasterScenes' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -21478,29 +17448,29 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveUTGSNT', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, find the ID on the **Production Studio** > **Cloud Production Studio** page.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is its ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], + ], + [ + 'name' => 'SceneId', + 'in' => 'query', + 'schema' => ['description' => 'The scene ID.', 'type' => 'string', 'required' => false, 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', 'title' => ''], ], ], 'responses' => [ @@ -21508,1030 +17478,1085 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B908FF89-B03C-4831-B55B-48D2A******', - ], - 'LiveAudioAuditNotifyConfigList' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1*****', 'title' => ''], + 'SceneList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'LiveAudioAuditNotifyConfig' => [ - 'description' => 'The configuration of callbacks for audio moderation results.'."\n", + 'Scene' => [ + 'itemNode' => true, + 'description' => 'The list of scene information.', + 'title' => '', 'type' => 'array', 'items' => [ + 'description' => 'The list of scene information.', 'type' => 'object', 'properties' => [ - 'CallbackTemplate' => [ - 'description' => 'The callback template. The following fields are configured:'."\n" - ."\n" - .'* **{DomainName}**: the streaming domain.'."\n" - .'* **{AppName}**: the name of the application to which the live stream belongs.'."\n" - .'* **{StreamName}**: the name of the live stream.'."\n" - .'* **{Timestamp}**: the time when the callback is returned. The value of this field is a UNIX timestamp. Unit: seconds.'."\n" - .'* **{Result}**: the moderation results.'."\n", - 'type' => 'string', - 'example' => '{\\"domain\\":{DomainName},\\"app\\":{AppName},\\"stream\\":{StreamName},\\"timestamp\\":{Timestamp},\\"result\\":{Result}}', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Callback' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://guide.aliyundoc.com/callback', + 'ComponentIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'componentId' => [ + 'description' => 'The list of component IDs.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The list of component IDs.', 'type' => 'string', 'example' => '["1506396160-0-0-7de771a77102680861853af862d5****"]', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'LayoutId' => ['description' => 'The layout ID.', 'type' => 'string', 'example' => '37cb2f8b-f152-4338-b928-6704f71d****', 'title' => ''], + 'OutputType' => ['description' => 'Indicates whether the scene is the one being streamed. Valid values:'."\n" + ."\n" + .'- **0**: The scene is used for preview.'."\n" + ."\n" + .'- **1**: The scene is being streamed.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'SceneId' => ['description' => 'The scene ID. You can use this ID as a request parameter to update the audio configuration of a scene, query the audio configuration of a scene, start a scene, or stop a scene.', 'type' => 'string', 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', 'title' => ''], + 'SceneName' => ['description' => 'The scene name.', 'type' => 'string', 'example' => 'scene1', 'title' => ''], + 'Status' => ['description' => 'The status of the scene. Valid values:'."\n" + ."\n" + .'- **0**: disabled.'."\n" + ."\n" + .'- **1**: enabled.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'StreamInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamInfo' => [ + 'description' => 'The list of playback URLs.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of playback URLs.', + 'type' => 'object', + 'properties' => [ + 'OutputStreamUrl' => ['description' => 'The playback URL.', 'type' => 'string', 'example' => 'http://live/caster/example.net', 'title' => ''], + 'TranscodeConfig' => ['description' => 'The transcoding configuration. Valid values:'."\n" + ."\n" + .'- **sd**: standard definition.'."\n" + ."\n" + .'- **lld**: low definition.'."\n" + ."\n" + .'- **lud**: ultra-high definition.'."\n" + ."\n" + .'- **lhd**: high definition.', 'type' => 'string', 'example' => 'lld', 'title' => ''], + 'VideoFormat' => ['description' => 'The format. Valid values:'."\n" + ."\n" + .'- **flv**'."\n" + ."\n" + .'- **mp4**'."\n" + ."\n" + .'- **m3u8**', 'type' => 'string', 'example' => 'flv', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'StreamUrl' => ['description' => 'The output stream URL.', 'type' => 'string', 'example' => 'rtmp://developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'Total' => ['description' => 'The total number of records.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MalformedParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigExisted', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidSceneId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B908FF89-B03C-4831-B55B-48D2A******\\",\\n \\"LiveAudioAuditNotifyConfigList\\": {\\n \\"LiveAudioAuditNotifyConfig\\": [\\n {\\n \\"CallbackTemplate\\": \\"{\\\\\\\\\\\\\\"domain\\\\\\\\\\\\\\":{DomainName},\\\\\\\\\\\\\\"app\\\\\\\\\\\\\\":{AppName},\\\\\\\\\\\\\\"stream\\\\\\\\\\\\\\":{StreamName},\\\\\\\\\\\\\\"timestamp\\\\\\\\\\\\\\":{Timestamp},\\\\\\\\\\\\\\"result\\\\\\\\\\\\\\":{Result}}\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"Callback\\": \\"http://guide.aliyundoc.com/callback\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n B908FF89-B03C-4831-B55B-48D2A7DA0A68\\n \\n \\n {\\\\\\"domain\\\\\\":{DomainName},\\\\\\"app\\\\\\":{AppName},\\\\\\"stream\\\\\\":{StreamName},\\\\\\"timestamp\\\\\\":{Timestamp},\\\\\\"result\\\\\\":{Result}}\\n example.com\\n http://guide.aliyundoc.com/callback\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveAudioAuditNotifyConfig', - 'description' => '* Obtain the main streaming domain, and then call this operation to query the configuration of callbacks for audio moderation results.'."\n" - .'* Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + 'title' => 'DescribeCasterScenes', + 'summary' => 'Queries the scenes for a production studio.', + 'description' => 'After you create a production studio by calling the [CreateCaster](~~2848009~~) operation, you can call this operation to query the scenes for the production studio.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for a single user is 15 calls per second. If you exceed this limit, your API calls are throttled. Throttling may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'CreateLivePrivateLine' => [ - 'summary' => 'Creates a Global Accelerator (GA) instance and binds it to an acceleration circuit.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '15', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeCasterScenes'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterScenes', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1*****\\",\\n \\"SceneList\\": {\\n \\"Scene\\": [\\n {\\n \\"ComponentIds\\": {\\n \\"componentId\\": [\\n \\"[\\\\\\"1506396160-0-0-7de771a77102680861853af862d5****\\\\\\"]\\"\\n ]\\n },\\n \\"LayoutId\\": \\"37cb2f8b-f152-4338-b928-6704f71d****\\",\\n \\"OutputType\\": \\"0\\",\\n \\"SceneId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e86****\\",\\n \\"SceneName\\": \\"scene1\\",\\n \\"Status\\": 0,\\n \\"StreamInfos\\": {\\n \\"StreamInfo\\": [\\n {\\n \\"OutputStreamUrl\\": \\"http://live/caster/example.net\\",\\n \\"TranscodeConfig\\": \\"lld\\",\\n \\"VideoFormat\\": \\"flv\\"\\n }\\n ]\\n },\\n \\"StreamUrl\\": \\"rtmp://developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****\\"\\n }\\n ]\\n },\\n \\"Total\\": 2\\n}","type":"json"}]', + ], + 'DescribeCasterStreamUrl' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The ID of the production studio. Make sure that the CasterId is correct.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, obtain the ID from the CasterId parameter in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **ApsaraVideo Live console** and choose **Production Studio** > **Cloud Production Studio** to view the ID.'."\n" + ."\n" + .'> The name of a production studio in the list on the Cloud Production Studio page is its ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], - [ - 'name' => 'AppName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'live', + 'type' => 'object', + 'properties' => [ + 'CasterId' => ['description' => 'The ID of the production studio.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'CasterStreams' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'CasterStream' => [ + 'itemNode' => true, + 'description' => 'A list of production studio streams.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'OutputType' => ['description' => 'Indicates whether the stream is for final output.'."\n" + ."\n" + .'- **0**: The stream is for preview.'."\n" + ."\n" + .'- **1**: The stream is for final output.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'RtmpUrl' => ['description' => 'The RTMP URL.', 'type' => 'string', 'example' => 'rtmp://live/caster/example.edu', 'title' => ''], + 'SceneId' => ['description' => 'The ID of the scenario.', 'type' => 'string', 'example' => '23ca74e0-aca3-4e7a-8561-9d96f525****', 'title' => ''], + 'StreamInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamInfo' => [ + 'description' => 'A list of playback URLs.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'OutputStreamUrl' => ['description' => 'The playback URL.', 'type' => 'string', 'example' => 'http://out/caster/example.net', 'title' => ''], + 'TranscodeConfig' => ['description' => 'The transcoding configuration. Valid values:'."\n" + ."\n" + .'- **lsd**: standard definition'."\n" + ."\n" + .'- **lld**: low definition'."\n" + ."\n" + .'- **lud**: ultra-high definition'."\n" + ."\n" + .'- **lhd**: high definition', 'type' => 'string', 'example' => 'lld', 'title' => ''], + 'VideoFormat' => ['description' => 'The format. Valid values:'."\n" + ."\n" + .'- **flv**'."\n" + ."\n" + .'- **rtmp**'."\n" + ."\n" + .'- **m3u8**'."\n" + ."\n" + .'- **artc**'."\n" + ."\n" + .'> The streaming domain for the production studio must have the Real-Time Streaming (RTS) feature enabled to return a URL that uses the ARTC protocol. For more information about how to enable the feature, see [Enable Real-Time Streaming (RTS)](~~427722~~).', 'type' => 'string', 'example' => 'flv', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'StreamUrl' => ['description' => 'The output stream URL.', 'type' => 'string', 'example' => 'http://live/caster/example.org', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E6******', 'title' => ''], + 'Total' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testStream', - ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], ], [ - 'name' => 'VideoCenter', - 'in' => 'query', - 'schema' => [ - 'description' => 'The live center. Valid values: cn-beijing, cn-shanghai, cn-shenzhen, cn-qingdao, ap-northeast-1, ap-southeast-5, eu-central-1, and ap-southeast-1, which indicate China (Beijing), China (Shanghai), China (Shenzhen), China (Qingdao), Japan (Tokyo), Indonesia (Jakarta), Germany (Frankfurt), and Singapore, respectively.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-shanghai', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], - [ - 'name' => 'AccelerationType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The acceleration type. Valid values:'."\n" - ."\n" - .'* play: streaming acceleration'."\n" - .'* publish: stream ingest acceleration'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'play', - 'enum' => [ - 'play', - 'publish', - ], - ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], ], - [ - 'name' => 'AccelerationArea', - 'in' => 'query', - 'schema' => [ - 'description' => 'The acceleration channel.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ap-southeast-1', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], + ], + 'title' => 'DescribeCasterStreamUrl', + 'summary' => 'Queries the stream URL of a production studio.', + 'description' => 'Before you call this operation, call the [CreateCaster](~~2848009~~) operation to create a production studio. If a production studio has not been created, the InvalidScene.NotFound error is returned.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 5 for each user. Calls that exceed this limit are throttled. This may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'Reuse', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to reuse an existing acceleration channel. Valid values:'."\n" - ."\n" - .'* yes: reuses an existing acceleration channel.'."\n" - .'* no: creates a new acceleration channel.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'no', - 'enum' => [ - 'yes', - 'no', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterStreamUrl', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"CasterStreams\\": {\\n \\"CasterStream\\": [\\n {\\n \\"OutputType\\": 1,\\n \\"RtmpUrl\\": \\"rtmp://live/caster/example.edu\\",\\n \\"SceneId\\": \\"23ca74e0-aca3-4e7a-8561-9d96f525****\\",\\n \\"StreamInfos\\": {\\n \\"StreamInfo\\": [\\n {\\n \\"OutputStreamUrl\\": \\"http://out/caster/example.net\\",\\n \\"TranscodeConfig\\": \\"lld\\",\\n \\"VideoFormat\\": \\"flv\\"\\n }\\n ]\\n },\\n \\"StreamUrl\\": \\"http://live/caster/example.org\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E6******\\",\\n \\"Total\\": 1\\n}","type":"json"}]', + ], + 'DescribeCasterVideoResources' => [ + 'summary' => 'Queries the video sources of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ [ - 'name' => 'MaxBandwidth', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated bandwidth. Unit: Mbit/s. This parameter is required if Reuse is set to no.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '200', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'InstanceId', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The acceleration channel that you want to reuse. This parameter is required if Reuse is set to yes.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'ga-bp1iovsdpf01ym9su****', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create the production studio by calling the [CreateCaster](~~2848009~~) operation, use the value of CasterId that is returned.'."\n" + ."\n" + .'- If you create the production studio in the LIVE console, go to the Cloud Production Studio page to view the ID. To go to the page, choose **LIVE Console** > **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7908F2FF-44F8-120F-9FD6-85AE4B6C****', + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], + 'Total' => ['description' => 'The total number of records.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'VideoResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VideoResource' => [ + 'itemNode' => true, + 'description' => 'A list of resources.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'A list of resources.', + 'type' => 'object', + 'properties' => [ + 'BeginOffset' => ['description' => 'The start offset of the video file. This parameter is valid only for video files. Unit: milliseconds.'."\n" + ."\n" + .'**Greater than 0**: The read operation starts from a point in time that is relative to the first frame.', 'type' => 'integer', 'format' => 'int32', 'example' => '1000', 'title' => ''], + 'EndOffset' => ['description' => 'The end offset of the video file. This parameter is valid only for video files. Unit: milliseconds.'."\n" + ."\n" + .'- Greater than **0**: The read operation ends at a point in time that is relative to the first frame.'."\n" + ."\n" + .'- Less than **0**: The read operation ends at a point in time that is relative to the last frame.', 'type' => 'integer', 'format' => 'int32', 'example' => '10000', 'title' => ''], + 'FlvUrl' => ['description' => 'The stream pulling URL.', 'type' => 'string', 'example' => 'http://guide.aliyundoc.com/example.org', 'title' => ''], + 'ImageId' => ['description' => 'The ID of the image in the material library.', 'type' => 'string', 'example' => 'a089175eb5f4427684fc0715159a****', 'title' => ''], + 'ImageUrl' => ['description' => 'The URL of the image.', 'type' => 'string', 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', 'title' => ''], + 'LiveStreamUrl' => ['description' => 'The URL of the live stream.', 'type' => 'string', 'example' => 'rtmp://abcLive/appName/b5447c21fcfe444c9e9b6f7ba208****', 'title' => ''], + 'LocationId' => ['description' => 'The location of the video source.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'MaterialId' => ['description' => 'The ID of the material.', 'type' => 'string', 'example' => 'd2c429cd907742ee8f6e76465ad3****', 'title' => ''], + 'PtsCallbackInterval' => ['description' => 'The callback interval for video-on-demand files. If this parameter is set to 0, no callbacks are sent.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'RepeatNum' => ['description' => 'This parameter is valid only for video files. It specifies the number of times the video is replayed after the playback is complete.'."\n" + ."\n" + .'- **0** (default): The video is not replayed.'."\n" + ."\n" + .'- **-1**: The video is replayed in a loop.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'ResourceId' => ['description' => 'The ID of the resource.', 'type' => 'string', 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', 'title' => ''], + 'ResourceName' => ['description' => 'The name of the resource.', 'type' => 'string', 'example' => 'resource-Name1', 'title' => ''], + 'VodUrl' => ['description' => 'The URL of the video-on-demand file.'."\n" + ."\n" + .'This parameter is used only when the resource is a video file that is not imported to the material library. The video file must be in the MP4, FLV, or TS format.', 'type' => 'string', 'example' => 'http://developer.aliyundoc.com/caster1.flv', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'NoSpecialConfiguration', - 'errorMessage' => 'no special configuration for acceleration_area.', - ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', - ], - [ - 'errorCode' => 'HasNoPermission', - 'errorMessage' => 'You do not have permission to create accelerator.', - ], - [ - 'errorCode' => 'PostPayNotOpen', - 'errorMessage' => 'The Accelerator PostPay service is not open.', - ], - [ - 'errorCode' => 'TryAgain', - 'errorMessage' => 'Create SLR first and please try again.', - ], - [ - 'errorCode' => 'HasNoPermisionToCreateSLR', - 'errorMessage' => 'You do not have ram:CreateServiceLinkedRole to create SLR.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85AE4B6C****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\n","errorExample":""}]', - 'title' => 'CreateLivePrivateLine', - 'description' => '* You can call this operation to create a GA instance and bind it to an acceleration circuit. The granularity is at the stream level. You need to specify the access points where the acceleration circuit starts and ends.'."\n" - .'* The settings take effect only if the value of AppName and the value of StreamName are the same as the application name and stream name that are specified in the streaming URL.'."\n" + 'title' => 'DescribeCasterVideoResources', + 'description' => 'Call the [CreateCaster](~~2848009~~) operation to create a production studio. You can then call this operation to query the video sources of the production studio.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLivePrivateLine' => [ - 'summary' => 'Unbinds a Global Accelerator (GA) instance from an acceleration circuit.', - 'methods' => [ - 'post', - 'get', + .'This operation is limited to 15 queries per second (QPS) for each user. If you exceed this limit, your API calls are throttled. Throttling may affect your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-03-31T08:26:53.000Z', 'description' => 'Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterVideoResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"Total\\": 2,\\n \\"VideoResources\\": {\\n \\"VideoResource\\": [\\n {\\n \\"BeginOffset\\": 1000,\\n \\"EndOffset\\": 10000,\\n \\"FlvUrl\\": \\"http://guide.aliyundoc.com/example.org\\",\\n \\"ImageId\\": \\"a089175eb5f4427684fc0715159a****\\",\\n \\"ImageUrl\\": \\"http://learn.aliyundoc.com/AppName/image.jpg\\",\\n \\"LiveStreamUrl\\": \\"rtmp://abcLive/appName/b5447c21fcfe444c9e9b6f7ba208****\\",\\n \\"LocationId\\": \\"RV01\\",\\n \\"MaterialId\\": \\"d2c429cd907742ee8f6e76465ad3****\\",\\n \\"PtsCallbackInterval\\": 0,\\n \\"RepeatNum\\": 0,\\n \\"ResourceId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e86****\\",\\n \\"ResourceName\\": \\"resource-Name1\\",\\n \\"VodUrl\\": \\"http://developer.aliyundoc.com/caster1.flv\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeCasters' => [ + 'summary' => 'Queries the list of production studios.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '106972', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The production studio ID.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster operation](~~2848012~~), check the CasterId parameter returned by the CreateCaster operation.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, go to **ApsaraVideo Live console > Production Studios > Cloud Production Studio** to view the ID.'."\n" + ."\n" + .'> - The production studio name in the production studio list on the Cloud Production Studio page is the production studio ID.'."\n" + .'> - If this parameter is left empty, the merged data of all production studios is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'CasterName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'live', - ], + 'schema' => ['description' => 'The name of the production studio.', 'type' => 'string', 'required' => false, 'example' => 'liveCaster****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testStream', - ], + 'schema' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T09:00:00Z', 'title' => ''], ], [ - 'name' => 'AccelerationType', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The acceleration type. Valid values:'."\n" - ."\n" - .'* play: streaming acceleration'."\n" - .'* publish: stream ingest acceleration'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'play', - 'enum' => [ - 'play', - 'publish', - ], - ], + 'schema' => ['description' => 'The end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T11:00:00Z', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'description' => 'The response parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7908F2FF-44F8-120F-9FD6-85AE4******', - ], - ], - ], + [ + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Default value: 100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100', 'title' => ''], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => ['description' => 'The status. Valid values:'."\n" + ."\n" + .'- 0: idle. '."\n" + ."\n" + .'- 1: streaming.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85AE4******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\n","errorExample":""}]', - 'title' => 'DeleteLivePrivateLine', - 'description' => 'After you unbind a GA instance from an acceleration circuit, your stream ingest and streaming are no longer accelerated by the GA instance. The GA instance still exists. If you want to release the GA instance, delete it in the GA console.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLivePrivateLineAreas' => [ - 'summary' => 'Queries available access points where acceleration circuits start.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'ChargeType', + 'in' => 'query', + 'schema' => ['description' => 'The billing method. Valid values:'."\n" + ."\n" + .'- 0: PrePaid (subscription).'."\n" + ."\n" + .'- 1: PostPaid (pay-as-you-go).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], ], - ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'name' => 'OrderByModifyAsc', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to sort the production studios in ascending order by modification time.'."\n" + ."\n" + .'Valid values: true (ascending order by modification time) | false (descending order by modification time, which is the default value).'."\n" + ."\n" + .'> If this parameter is not specified, the default value is "false".', 'type' => 'string', 'required' => false, 'example' => 'false', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'NormType', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The specification type of the production studio. Valid values:'."\n" + ."\n" + .'- 1: general mode.'."\n" + ."\n" + .'- 3: lightweight playlist mode.'."\n" + ."\n" + .'- 4: virtual studio mode.'."\n" + ."\n" + .'- 6: playlist mode (new playlist mode production studio).', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'ResourceGroupId', 'in' => 'query', + 'schema' => ['description' => 'The resource group ID. For more information about resource groups, see [What is a resource group](~~2381067~~).', 'type' => 'string', 'required' => false, 'example' => 'rg-aekzw******', 'title' => ''], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', + 'description' => 'The list of tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of tags.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key.', 'type' => 'string', 'required' => false, 'example' => 'TestKey', 'title' => ''], + 'Value' => ['description' => 'The tag value.', 'type' => 'string', 'required' => false, 'example' => 'TestValue', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 100, + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The response parameters.'."\n", + 'description' => 'The query result of the production studio list.', 'type' => 'object', 'properties' => [ - 'LiveAreasList' => [ + 'CasterList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'LiveArea' => [ - 'description' => 'Details about the regions.'."\n", + 'Caster' => [ + 'description' => 'The list of production studios.', 'type' => 'array', 'items' => [ - 'description' => '', + 'description' => 'The production studio information.', 'type' => 'object', 'properties' => [ - 'RegionType' => [ - 'description' => 'The region type. Valid values:'."\n" - ."\n" - .'* domestic: in the Chinese mainland'."\n" - .'* overseas: outside the Chinese mainland'."\n", - 'type' => 'string', - 'example' => 'domestic', - ], - 'Regions' => [ + 'CasterId' => ['description' => 'The production studio ID. This ID can be used as a request parameter for querying production studio stream URLs, starting a production studio, adding video resources to a production studio, adding layouts to a production studio, querying the layout list of a production studio, adding components to a production studio, and adding a program list to a production studio.', 'type' => 'string', 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + 'CasterName' => ['description' => 'The name of the production studio.', 'type' => 'string', 'example' => 'liveCaster****', 'title' => ''], + 'CasterTemplate' => ['description' => 'The resolution configuration of the production studio. This parameter is required when the billing method is subscription. '."\n" + ."\n" + .'- lp_ld: low definition.'."\n" + ."\n" + .'- lp_sd: standard definition.'."\n" + ."\n" + .'- lp_hd: high definition.'."\n" + ."\n" + .'- lp_ud: ultra-high definition.'."\n" + ."\n" + .'- lp_ld_v: portrait low definition.'."\n" + ."\n" + .'- lp_sd_v: portrait standard definition.'."\n" + ."\n" + .'- lp_hd_v: portrait high definition.'."\n" + ."\n" + .'- lp_ud_v: portrait ultra-high definition.', 'type' => 'string', 'example' => 'lp_ld', 'title' => ''], + 'ChannelEnable' => ['description' => 'Indicates whether Channel is enabled.'."\n" + ."\n" + .'- 0: disabled.'."\n" + ."\n" + .'- 1: enabled.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'ChargeType' => ['description' => 'The billing method. '."\n" + ."\n" + .'- PrePaid: subscription.'."\n" + ."\n" + .'- PostPaid: pay-as-you-go.', 'type' => 'string', 'example' => 'PrePaid', 'title' => ''], + 'CreateTime' => ['description' => 'The creation time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2017-08-30T12:02:57Z', 'title' => ''], + 'Duration' => ['description' => 'The duration. Format: hh:mm:ss (hours:minutes:seconds).', 'type' => 'string', 'example' => '1:02:33', 'title' => ''], + 'ExpireTime' => ['description' => 'The expiration time of the production studio. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2018-08-30T12:02:57Z', 'title' => ''], + 'LastModified' => ['description' => 'The time when the production studio was last modified. For example, the time when the production studio was recently started, stopped, or had its configuration modified. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2021-12-01T05:08:45Z', 'title' => ''], + 'NormType' => ['description' => 'The specification type of the production studio. Valid values: '."\n" + ."\n" + .'- 0: playlist mode.'."\n" + ."\n" + .'- 1: general mode.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PurchaseTime' => ['description' => 'The time when the production studio was purchased. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2017-08-30T12:02:57Z', 'title' => ''], + 'StartTime' => ['description' => 'The time when the production studio was started. This parameter is returned only when the production studio is in the streaming state. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2017-08-30T18:02:57Z', 'title' => ''], + 'Status' => ['description' => 'The status. Valid values:'."\n" + ."\n" + .'- 0: idle.'."\n" + ."\n" + .'- 1: streaming.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'ClientTokenId' => ['description' => 'The request token generated by the user to ensure the idempotence of the request. The value of this parameter is custom but must be unique across different requests. The maximum length is 64 ASCII characters.', 'type' => 'string', 'example' => '53200b81-b761-4c10-842a-a0726d97****'."\n", 'title' => ''], + 'Tags' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'Region' => [ - 'description' => 'The regions.'."\n", + 'tag' => [ + 'description' => 'The list of tags.', 'type' => 'array', 'items' => [ - 'description' => 'The regions.', + 'description' => 'The tag.', 'type' => 'object', 'properties' => [ - 'LocalName' => [ - 'description' => 'The region name.'."\n", - 'type' => 'string', - 'example' => 'cn-shenzhen'."\n", - ], - 'RegionId' => [ - 'description' => 'The region ID.'."\n", - 'type' => 'string', - 'example' => 'cn-shenzhen', - ], + 'TagKey' => ['description' => 'The tag key.', 'type' => 'string', 'example' => 'TestKey', 'title' => ''], + 'TagValue' => ['description' => 'The tag value.', 'type' => 'string', 'example' => 'TestValue', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'ResourceGroupId' => ['description' => 'The resource group ID. For more information about resource groups, see [What is a resource group](~~2381067~~).', 'type' => 'string', 'example' => 'rg-acfmz******', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'C4865B85-664B-19D3-BB16-C62FB83C8226', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b******', 'title' => ''], + 'Total' => ['description' => 'The total number of production studios.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.Status', 'errorMessage' => '%s, please check and try again.', 'description' => 'Status is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.StartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.EndTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The live service is not enabled. Please check and try again.'], + ['errorCode' => 'InvalidParameter.PageSize', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PageSize is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.PageNum', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PageNum is invalid, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + 403 => [ + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"LiveAreasList\\": {\\n \\"LiveArea\\": [\\n {\\n \\"RegionType\\": \\"domestic\\",\\n \\"Regions\\": {\\n \\"Region\\": [\\n {\\n \\"LocalName\\": \\"深圳\\",\\n \\"RegionId\\": \\"cn-shenzhen\\"\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"RequestId\\": \\"C4865B85-664B-19D3-BB16-C62FB83C8226\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C4865B85-664B-19D3-BB16-C62FB83C8226\\n \\n \\n domestic\\n \\n \\n 深圳\\n cn-shenzhen\\n \\n \\n \\n \\n overseas\\n \\n \\n 新加坡\\n ap-southeast-1\\n \\n \\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLivePrivateLineAreas', - 'description' => 'Before you call the CreateLivePrivateLine operation, you can call this operation to query available acceleration regions, which are access points where acceleration circuits start.'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterList\\": {\\n \\"Caster\\": [\\n {\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"CasterName\\": \\"liveCaster****\\",\\n \\"CasterTemplate\\": \\"lp_ld\\",\\n \\"ChannelEnable\\": 1,\\n \\"ChargeType\\": \\"PrePaid\\",\\n \\"CreateTime\\": \\"2017-08-30T12:02:57Z\\",\\n \\"Duration\\": \\"1:02:33\\",\\n \\"ExpireTime\\": \\"2018-08-30T12:02:57Z\\",\\n \\"LastModified\\": \\"2021-12-01T05:08:45Z\\",\\n \\"NormType\\": 1,\\n \\"PurchaseTime\\": \\"2017-08-30T12:02:57Z\\",\\n \\"StartTime\\": \\"2017-08-30T18:02:57Z\\",\\n \\"Status\\": 1,\\n \\"ClientTokenId\\": \\"53200b81-b761-4c10-842a-a0726d97****\\\\n\\",\\n \\"Tags\\": {\\n \\"tag\\": [\\n {\\n \\"TagKey\\": \\"TestKey\\",\\n \\"TagValue\\": \\"TestValue\\"\\n }\\n ]\\n },\\n \\"ResourceGroupId\\": \\"rg-acfmz******\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b******\\",\\n \\"Total\\": 1\\n}","type":"json"}]', + 'title' => 'Query production studio list', + 'description' => 'Create a production studio by calling the CreateCaster operation, and then call this operation to query the list of production studios. A production studio can be in the idle or streaming state.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'> '."\n" + .'> - The account that calls this operation must have [ApsaraVideo Live activated](https://live.console.aliyun.com/#/overview).'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLivePrivateLineAvailGA' => [ - 'summary' => 'Queries the binding information between Global Accelerator (GA) instances and acceleration circuits.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 15 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Call this operation as needed.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-09-27T02:16:13.000Z', 'description' => 'Request parameters changed, Response parameters changed'], + ['createdAt' => '2024-08-21T03:33:21.000Z', 'description' => 'Error codes changed, Request parameters changed, Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasters', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + ], + 'DescribeChannelParticipants' => [ + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'operationType' => 'none', + 'abilityTreeCode' => '169451', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], - ], - [ - 'name' => 'AppName', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'live', - ], + 'schema' => ['description' => 'The ID of the application. You can specify only one application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'aec****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testStream', - ], + 'schema' => ['description' => 'The ID of the channel. You can specify only one channel ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'testId', 'title' => ''], ], [ - 'name' => 'AccelerationArea', + 'name' => 'PageNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The acceleration channel.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'ap-southeast-1', - ], + 'schema' => ['description' => 'The number of the page to return. Default value: 1.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'VideoCenter', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The live center. Valid values: cn-beijing, cn-shanghai, cn-shenzhen, cn-qingdao, ap-northeast-1, ap-southeast-5, eu-central-1, ap-southeast-1, and ap-south-1. cn-beijing indicates China (Beijing). cn-shanghai indicates China (Shanghai). cn-shenzhen indicates China (Shenzhen). cn-qingdao indicates China (Qingdao). ap-northeast-1 indicates Japan (Tokyo). ap-southeast-5 indicates Indonesia (Jakarta). eu-central-1 indicates Germany (Frankfurt). ap-southeast-1 indicates Singapore.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The number of entries to return on each page. Default value: 10.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], ], [ - 'name' => 'IsGaInstance', + 'name' => 'Order', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to query Global Accelerator (GA) instances. Valid values:'."\n" - ."\n" - .'* yes: queries the status of GA instances.'."\n" - .'* no: queries the binding information between GA instances and acceleration circuits.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'no', - 'enum' => [ - 'yes', - 'no', - ], - ], + 'schema' => ['description' => 'The sort order. Valid values:'."\n" + ."\n" + .'* **asc**: ascending order.'."\n" + .'* **desc**: descending order. This is the default value.'."\n", 'type' => 'string', 'required' => false, 'example' => 'asc', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned data.'."\n", + 'title' => '', + 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'LivePrivateLineAvailGAs' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LivePrivateLineAvailGA' => [ - 'description' => 'The GA instance configuration details.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'AccelerationArea' => [ - 'description' => 'The acceleration channel.'."\n", - 'type' => 'string', - 'example' => 'ap-southeast-1', - ], - 'AccelerationType' => [ - 'description' => 'The acceleration type. Valid values:'."\n" - ."\n" - .'* play: streaming acceleration'."\n" - .'* publish: stream ingest acceleration'."\n", - 'type' => 'string', - 'example' => 'play', - ], - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'live', - ], - 'BindingStatus' => [ - 'description' => 'Indicates whether the GA instance is bound to an acceleration circuit. Valid values:'."\n" - ."\n" - .'* yes'."\n" - .'* no'."\n", - 'type' => 'string', - 'example' => 'yes', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'IP' => [ - 'description' => 'The accelerated IP address.'."\n", - 'type' => 'string', - 'example' => '127.0.0.1', - ], - 'InstanceId' => [ - 'description' => 'The ID of the GA instance.'."\n", - 'type' => 'string', - 'example' => 'ga-bp1iovsdpf01ym9su****', - ], - 'Status' => [ - 'description' => 'The status of the GA instance. Valid values:'."\n" - ."\n" - .'* active: The GA instance is available.'."\n" - .'* inactive: The GA instance is unavailable.'."\n", - 'type' => 'string', - 'example' => 'active', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'testStream', - ], - 'Uid' => [ - 'description' => 'The user ID (UID).'."\n", - 'type' => 'string', - 'example' => '1833220971116****', - ], - 'VideoCenter' => [ - 'description' => 'The live center.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'C4865B85-664B-19D3-BB16-C62FB83C8226', + 'RequestId' => ['title' => '', 'description' => 'The ID of the request.'."\n", 'type' => 'string', 'example' => '6159ba01-6687-4fb2-a831-f0cd8d1******'], + 'Times' => ['description' => 'The time elapsed until the result was returned. Unit: seconds. The value is a UNIX timestamp.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1557909133', 'title' => ''], + 'TotalNum' => ['description' => 'The number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], + 'TotalPage' => ['title' => '', 'description' => 'The page number of the returned page.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1'], + 'UserList' => [ + 'description' => 'The list of user IDs.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The IDs of the users in the channel. Multiple user IDs are separated by commas (,).', 'type' => 'string', 'example' => '27f9****,bb87****,df82****', 'title' => ''], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"LivePrivateLineAvailGAs\\": {\\n \\"LivePrivateLineAvailGA\\": [\\n {\\n \\"AccelerationArea\\": \\"ap-southeast-1\\",\\n \\"AccelerationType\\": \\"play\\",\\n \\"AppName\\": \\"live\\",\\n \\"BindingStatus\\": \\"yes\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"IP\\": \\"127.0.0.1\\",\\n \\"InstanceId\\": \\"ga-bp1iovsdpf01ym9su****\\",\\n \\"Status\\": \\"active\\",\\n \\"StreamName\\": \\"testStream\\",\\n \\"Uid\\": \\"1833220971116****\\",\\n \\"VideoCenter\\": \\"cn-shanghai\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"C4865B85-664B-19D3-BB16-C62FB83C8226\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C4865B85-664B-19D3-BB16-C62FB83C8226\\n \\n \\n xxx.example1.com\\n test\\n test\\n ga-bp1iovsdpf01ym9sulesm\\n 18332209711160785\\n 127.0.0.1\\n cn-shanghai\\n ap-southeast-1\\n active\\n play\\n yes\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLivePrivateLineAvailGA', - 'description' => 'If you set the IsGaInstance parameter to yes, the status of GA instances is queried. If you set the IsGaInstance parameter to no, the binding information between GA instances and acceleration circuits is queried.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeChannelParticipants', + 'summary' => 'Queries online users in a channel.'."\n", + 'description' => 'You can call this operation to query online users in a channel. The returned result does not include details about the users.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveStreamDelayConfig' => [ - 'summary' => 'Queries the live streaming latency.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2024-06-13T01:19:46.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeChannelParticipants'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeChannelParticipants', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6159ba01-6687-4fb2-a831-f0cd8d1******\\",\\n \\"Times\\": 1557909133,\\n \\"TotalNum\\": 3,\\n \\"TotalPage\\": 1,\\n \\"UserList\\": [\\n \\"27f9****,bb87****,df82****\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 6159ba01-6687-4fb2-a831-f0cd8d188648\\n 1557909133\\n 3\\n 1\\n \\n 27f9****\\n bb87****\\n df82****\\n \\n","errorExample":""}]', + ], + 'DescribeChannelUsers' => [ + 'summary' => 'Queries the details of online users in a channel.'."\n", + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID. You can specify only one application ID in a request.'."\n", 'type' => 'string', 'required' => true, 'example' => 'aec****', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The channel ID. You can specify only one channel ID in a request.'."\n", 'type' => 'string', 'required' => true, 'example' => 'testId', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '785C9CB0-EB8A-4912-BBF2-966BEFD32DC3', - ], - 'LiveStreamHlsDelayConfig' => [ - 'description' => 'The latency of HLS-based playback.'."\n", - 'type' => 'object', - 'properties' => [ - 'Delay' => [ - 'description' => 'The playback latency. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3', - ], - 'Level' => [ - 'description' => 'The latency level. Valid values:'."\n" - ."\n" - .'* **short**: The latency is less than or equal to 4 seconds.'."\n" - .'* **medium**: The latency is greater than 4 seconds, and less than or equal to 8 seconds.'."\n" - .'* **long**: The latency is greater than 8 seconds.'."\n", - 'type' => 'string', - 'example' => 'short', - ], - ], - ], - 'LiveStreamFlvDelayConfig' => [ - 'description' => 'The latency of FLV-based playback.'."\n", - 'type' => 'object', - 'properties' => [ - 'Delay' => [ - 'description' => 'The playback latency. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'Level' => [ - 'description' => 'The latency level. Valid values:'."\n" - ."\n" - .'* **short**: The latency is less than or equal to 4 seconds.'."\n" - .'* **medium**: The latency is greater than 4 seconds, and less than or equal to 8 seconds.'."\n" - .'* **long**: The latency is greater than 8 seconds.'."\n", - 'type' => 'string', - 'example' => 'medium', - ], - ], + 'RequestId' => ['description' => 'The ID of the request.'."\n", 'type' => 'string', 'example' => 'AD86847D-1F36-18C8-A995-5EEA34******', 'title' => ''], + 'Timestamp' => ['description' => 'The UTC timestamp when the response is returned.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1691027655', 'title' => ''], + 'IsChannelExists' => ['description' => 'Indicates whether the channel exists. Valid values:'."\n" + ."\n" + .'* **true**'."\n" + .'* **false**'."\n" + ."\n" + .'> After all users leave the channel, the system requires a few seconds to clear the cache. If you call the operation during this period, the value of this parameter is true, and the value of InteractiveUserNumber and LiveUserNumber is 0.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'InteractiveUserNumber' => ['description' => 'The number of co-streamers.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'LiveUserNumber' => ['description' => 'The number of viewers.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'InteractiveUserList' => [ + 'description' => 'The list of streamers/co-streamers.'."\n", + 'type' => 'array', + 'items' => ['description' => 'Interactive user list.', 'type' => 'string', 'example' => 'aaa', 'title' => ''], + 'title' => '', + 'example' => '', ], - 'LiveStreamRtmpDelayConfig' => [ - 'description' => 'The latency of RTMP-based playback.'."\n", - 'type' => 'object', - 'properties' => [ - 'Delay' => [ - 'description' => 'The playback latency. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '4', - ], - 'Level' => [ - 'description' => 'The latency level. Valid values:'."\n" - ."\n" - .'* **short**: The latency is less than or equal to 4 seconds.'."\n" - .'* **medium**: The latency is greater than 4 seconds, and less than or equal to 8 seconds.'."\n" - .'* **long**: The latency is greater than 8 seconds.'."\n", - 'type' => 'string', - 'example' => 'short', - ], - ], + 'LiveUserList' => [ + 'description' => 'The list of viewers.'."\n", + 'type' => 'array', + 'items' => ['description' => 'Viewer list, up to 1000 people returned.', 'type' => 'string', 'example' => 'bbb', 'title' => ''], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"785C9CB0-EB8A-4912-BBF2-966BEFD32DC3\\",\\n \\"LiveStreamHlsDelayConfig\\": {\\n \\"Delay\\": 3,\\n \\"Level\\": \\"short\\"\\n },\\n \\"LiveStreamFlvDelayConfig\\": {\\n \\"Delay\\": 5,\\n \\"Level\\": \\"medium\\"\\n },\\n \\"LiveStreamRtmpDelayConfig\\": {\\n \\"Delay\\": 4,\\n \\"Level\\": \\"short\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 785C9CB0-EB8A-4912-BBF2-966BEFD32DC3\\n \\n 3\\n short\\n \\n \\n 4\\n short\\n \\n \\n 5\\n medium\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamDelayConfig', - 'description' => 'Obtain the streaming domain, and then call this operation to query the live streaming latency.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => '400', 'errorMessage' => 'InvalidInput', 'description' => ''], + ], + [ + ['errorCode' => '401', 'errorMessage' => 'InvalidAuth', 'description' => ''], + ], + 404 => [ + ['errorCode' => '404', 'errorMessage' => 'AppOrChannelNotExists', 'description' => ''], + ], + 500 => [ + ['errorCode' => '500', 'errorMessage' => 'SystemError, Please Check App And Channel Exists, RETRY', 'description' => ''], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeChannelUsers', + 'description' => 'You can call this operation to query information about online users in a channel, such as the total number of users during live streaming.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 1,000 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'SetLiveStreamDelayConfig' => [ - 'summary' => 'Configures the live streaming latency.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2023-08-31T01:48:03.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:DescribeChannelUsers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"AD86847D-1F36-18C8-A995-5EEA34******\\",\\n \\"Timestamp\\": 1691027655,\\n \\"IsChannelExists\\": true,\\n \\"InteractiveUserNumber\\": 1,\\n \\"LiveUserNumber\\": 1,\\n \\"InteractiveUserList\\": [\\n \\"aaa\\"\\n ],\\n \\"LiveUserList\\": [\\n \\"bbb\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n AD86847D-1F36-18C8-A995-5EEA340B3202\\n 1691027655\\n true\\n 1\\n 1\\n aaa\\n bbb\\n","errorExample":""}]', + ], + 'DescribeDomainUsageData' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '106980', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The live streaming domain name.'."\n" + ."\n" + .'- You can query a single domain name or multiple domain names. To query multiple domain names, separate them with commas (,).'."\n" + ."\n" + .'- If you leave this parameter empty, the operation returns the merged data for all your live streaming domain names.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'HlsDelay', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The latency of HLS-based playback. Unit: seconds.'."\n" - ."\n" - .'> If this parameter is left empty, the latency is set to a value corresponding to the HlsLevel parameter.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '4', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2015-12-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'HlsLevel', + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" + ."\n" + .'The end time must be later than the start time. The time range cannot exceed **31** days.', 'type' => 'string', 'required' => true, 'example' => '2015-12-10T21:00:00Z', 'title' => ''], + ], + [ + 'name' => 'Type', 'in' => 'query', 'schema' => [ - 'description' => 'The latency level of HLS-based playback. Ignore this parameter if the HlsDelay parameter is configured.'."\n" + 'description' => 'The type of usage data to query.'."\n" ."\n" - .'Valid values:'."\n" + .'If **Field** is set to **bps** or **traf**, valid values are:'."\n" + ."\n" + .'- **rts**: Real-Time Streaming (RTS) bandwidth or traffic.'."\n" + ."\n" + .'- **quic**: QUIC bandwidth or traffic.'."\n" ."\n" - .'* **short**: The latency is 3 seconds. This is the default value.'."\n" - .'* **medium**: The latency is 6 seconds.'."\n" - .'* **long**: The latency is 15 seconds.'."\n" + .'If **Field** is set to **req\\_traf** or **req\\_bps**, valid values are:'."\n" ."\n" - .'> If both the HlsDelay and HlsLevel parameters are left empty, HlsLevel is set to **short** by default.'."\n", + .'- **push**: Stream ingest bandwidth or traffic.'."\n" + ."\n" + .'- **push\\_proxy**: Relayed stream ingest bandwidth or traffic.', 'type' => 'string', 'required' => false, - 'example' => 'short', + 'default' => 'all', + 'enum' => ['static', 'dynamic', 'quic', 'rts', 'push', 'normal', 'all', 'push_proxy'], + 'example' => 'all', + 'title' => '', ], ], [ - 'name' => 'FlvDelay', + 'name' => 'Field', 'in' => 'query', - 'schema' => [ - 'description' => 'The latency of FLV-based playback. Unit: seconds.'."\n" - ."\n" - .'> If this parameter is left empty, the latency is set to a value corresponding to the FlvLevel parameter.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '8', - ], + 'schema' => ['description' => 'The type of usage data to query. Valid values:'."\n" + ."\n" + .'- **bps**: Playback bandwidth.'."\n" + ."\n" + .'- **traf**: Traffic.'."\n" + ."\n" + .'- req\\_traf: Stream ingest traffic if Type is set to push, or relayed stream ingest traffic if Type is set to **push\\_proxy**.'."\n" + ."\n" + .'- req\\_bps: Stream ingest bandwidth if Type is set to push, or relayed stream ingest bandwidth if Type is set to **push\\_proxy**.', 'type' => 'string', 'required' => true, 'example' => 'traf', 'title' => ''], ], [ - 'name' => 'FlvLevel', + 'name' => 'Area', 'in' => 'query', - 'schema' => [ - 'description' => 'The latency level of FLV-based playback. Ignore this parameter if the FlvDelay parameter is configured.'."\n" - ."\n" - .'Valid values:'."\n" - ."\n" - .'* **short** (default): The latency is 4 seconds.'."\n" - .'* **medium**: The latency is 8 seconds.'."\n" - .'* **long**: The latency is 16 seconds.'."\n" - ."\n" - .'> If both the FlvDelay and FlvLevel parameters are left empty, FlvLevel is set to **short** by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'medium', - ], + 'schema' => ['description' => 'The region. Valid values:'."\n" + ."\n" + .'- **CN**: The Chinese mainland.'."\n" + ."\n" + .'- **OverSeas**: Regions outside the Chinese mainland.'."\n" + ."\n" + .'- **AP1**: Asia Pacific 1.'."\n" + ."\n" + .'- **AP2**: Asia Pacific 2.'."\n" + ."\n" + .'- **AP3**: Asia Pacific 3.'."\n" + ."\n" + .'- **NA**: North America.'."\n" + ."\n" + .'- **SA**: South America.'."\n" + ."\n" + .'- **EU**: Europe.'."\n" + ."\n" + .'- **MEAA**: Middle East and Africa.'."\n" + ."\n" + .'- **all**: All regions.'."\n" + ."\n" + .'> If you do not specify this parameter, the default value is CN. The regions are defined as follows:Asia Pacific 1: Hong Kong (China), Macao (China), Taiwan (China), Japan, and Southeast Asian countries excluding Vietnam and Indonesia.Asia Pacific 2: Indonesia, South Korea, and Vietnam.Asia Pacific 3: Australia and New Zealand.North America: United States and Canada.South America: Brazil.Europe: Ukraine, United Kingdom, France, Netherlands, Spain, Italy, Sweden, and Germany.Middle East and Africa: South Africa, Oman, United Arab Emirates, and Kuwait.', 'type' => 'string', 'required' => false, 'default' => 'CN', 'example' => 'CN', 'title' => ''], ], [ - 'name' => 'RtmpDelay', + 'name' => 'DataProtocol', 'in' => 'query', - 'schema' => [ - 'description' => 'The latency of RTMP-based playback. Unit: seconds.'."\n" - ."\n" - .'> If this parameter is left empty, the latency is set to a value corresponding to the RtmpLevel parameter.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '4', - ], + 'schema' => ['description' => 'The protocol of the data to query. Valid values:'."\n" + ."\n" + .'- **http**: HTTP.'."\n" + ."\n" + .'- **https**: HTTPS.'."\n" + ."\n" + .'- **quic**: QUIC.'."\n" + ."\n" + .'- **all** (default): All of the preceding protocols.', 'type' => 'string', 'required' => false, 'default' => 'all', 'example' => 'all', 'title' => ''], ], [ - 'name' => 'RtmpLevel', + 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'The latency level of RTMP-based playback. Ignore this parameter if the RtmpDelay parameter is configured.'."\n" - ."\n" - .'Valid values:'."\n" - ."\n" - .'* **short** (default): The latency is 4 seconds.'."\n" - .'* **medium**: The latency is 8 seconds.'."\n" - .'* **long**: The latency is 16 seconds.'."\n" - ."\n" - .'> If both the RtmpDelay and RtmpLevel parameters are left empty, RtmpLevel is set to **short** by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'short', - ], + 'schema' => ['description' => 'The time granularity of the data to query, in seconds. This forces the operation to return data with a specific granularity. Valid values: **300** (5 minutes), **3600** (1 hour), and **86400** (1 day).', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], ], 'responses' => [ @@ -22539,41 +18564,131 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '4C747C97-7ECD-4C61-8A92-67AD806331FF', + 'EndTime' => ['description' => 'The end of the time range. The time is in UTC and the format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'example' => '2015-12-10T21:00Z', 'title' => ''], + 'Type' => ['description' => 'The type of usage data.', 'type' => 'string', 'example' => 'all', 'title' => ''], + 'StartTime' => ['description' => 'The start of the time range. The time is in UTC and the format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'example' => '2015-12-10T20:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', 'title' => ''], + 'Area' => ['description' => 'The usage region.', 'type' => 'string', 'example' => 'CN', 'title' => ''], + 'DomainName' => ['description' => 'The live streaming domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'DataInterval' => ['description' => 'The time interval between data records, in seconds.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'UsageDataPerInterval' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DataModule' => [ + 'itemNode' => true, + 'description' => 'The usage data for each record.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Value' => ['description' => 'The usage value.'."\n" + ."\n" + .'- If Field is set to traf or req\\_traf, the unit is bytes.'."\n" + ."\n" + .'- If Field is set to bps or req\\_bps, the unit is bps.'."\n" + ."\n" + .'- If Field is set to acc, the unit is counts.', 'type' => 'string', 'example' => '423304182', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time slice. The time is in UTC and the format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'example' => '2015-12-10T20:00:00Z', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4C747C97-7ECD-4C61-8A92-67AD806331FF\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 4C747C97-7ECD-4C61-8A92-67AD806331FF\\n","errorExample":""}]', - 'title' => 'SetLiveStreamDelayConfig', - 'description' => '* You can call this operation to configure the latency of a streaming domain.'."\n" - .'* Because an integer number of groups of pictures (GOPs) are cached, the latency is not less than the GOP size. The actual latency is calculated based on the GOP size. For example, if RtmpDelay is set to 4 seconds and the GOP size is 2 seconds, the minimum latency is 2 seconds (4 seconds minus 2 seconds) and the maximum latency is 6 seconds (4 seconds plus 2 seconds). If the GOP size is greater than the value of RtmpDelay, for example, the GOP size is 5 seconds and RtmpDelay is set to 4 seconds, the latency ranges from 0 to 9 seconds.'."\n" - .'* Configuration for the latency of an audio-only stream is invalid. By default, the latency is close to 0.'."\n" - .'* For HTTP Live Streaming (HLS)-based playback, the segment size equals the latency divided by 3. Round the value down to the nearest integer. The value cannot be less than 1 second. Then, calculate the maximum number of segments. If the segment size is greater than or equal to 3 seconds, the maximum number of segments is 4. Otherwise, the maximum number of segments is 6.'."\n" - .'* The actual HLS segment size is not smaller than the GOP size.'."\n" - .'* The latency of HLS-based playback equals the configured segment size times 3.'."\n" - .'* If you do not call this operation, the default latency is 2 seconds for Real-Time Messaging Protocol (RTMP)-based playback and 4 seconds for Flash Video (FLV)-based playback. By default, the size of an HLS segment is 5 seconds. In this case, the latency is 15 seconds and the maximum number of segments is 6.'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvaildParameter', 'errorMessage' => 'Invalid Parameter', 'description' => 'Invalid request parameter.'], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'Invalid time. Check whether the time that you specified is correct.'], + ['errorCode' => 'InvalidParameterField', 'errorMessage' => 'The specified Field is invalid.', 'description' => 'The Field parameter is set to an invalid value.'], + ['errorCode' => 'InvalidParameterType', 'errorMessage' => 'The specified Type is invalid.', 'description' => 'The Type parameter is set to an invalid value.'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ], + ], + 'title' => 'DescribeDomainUsageData', + 'summary' => 'Call the DescribeDomainUsageData operation to query usage data for one or more domain names in a specific billing region.', + 'description' => '- This operation supports batch queries for domain names. To query multiple domain names, separate them with commas (,). You can query up to 100 domain names at a time. If you do not specify the DomainName parameter, the operation returns data for all domain names that are associated with your account.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- Usage data includes traffic, bandwidth, and the number of requests. The units are bytes, bps, and counts, respectively.'."\n" + ."\n" + .'- If you do not specify the Interval parameter, you can query data that was generated within the last year. The maximum time range for a single query is 31 days. If the time range is from 1 to 3 days, data is returned with hourly granularity. If the time range is longer than 3 days, data is returned with daily granularity.'."\n" ."\n" - .'You can call this operation up to 1,000 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'- If you specify the Interval parameter, the maximum time range for a single query, the queryable historical data range, and the data latency are as follows:'."\n" + ."\n" + .'| Time granularity | Maximum time range for a single query | Queryable historical data range | Data latency |'."\n" + .'| ---------------- | ------------------------------------- | ------------------------------- | ----------------------- |'."\n" + .'| 5 minutes | 3 days | 93 days | 15 minutes |'."\n" + .'| 1 hour | 31 days | 186 days | 4 hours |'."\n" + .'| 1 day | 90 days | 366 days | 4:00 AM on the next day |'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10. If you exceed this limit, API calls are throttled. This may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => '> When you query data for a specific time T, the stable data for that time becomes available two hours later.
'."\n" + .'> For example, if you query data for 1:00 PM on December 21, you can retrieve stable data for 1:00 PM and earlier at 3:00 PM on December 21.', + 'responseParamsDescription' => '\\## Special error codes | Error code | Error message | HTTP status code | Description | | --- | --- | --- | --- | | Throttling | Request denied due to throttling. | 503 | The request was denied because the request rate exceeded the allowed limit. | | IllegalOperation | Operation not permitted for this domain. | 403 | The specified domain name is invalid. | | OperationDenied | ApsaraVideo Live is not activated. | 403 | ApsaraVideo Live is not activated for your account. | | OperationDenied | Your ApsaraVideo Live service is suspended. | 403 | Your ApsaraVideo Live service is suspended. | | InvalidDomain.NotFound | The specified domain was not found. | 404 | The specified domain name does not exist or does not belong to your account. | | InvalidDomain.Offline | The specified domain is disabled. | 404 | The specified domain name is disabled. | | ServiceBusy | The domain is being configured. Try again later. | 403 | The specified domain name is being configured. You can try again later. | | InvalidDomain.Configure\\_failed | Failed to configure the domain. | 500 | Configuration of the specified domain name failed. | | InvalidParameter | Invalid parameter. | 400 | One or more parameters are invalid. | | InvalidParameterProduct | Invalid Product parameter. | 400 | The value of the Product parameter is invalid. | | InvalidParameterArea | Invalid Area parameter. | 400 | The value of the Area parameter is invalid. | | InvalidParameterField | Invalid Field parameter. | 400 | The value of the Field parameter is invalid. | | InvalidParameterStartTime | Invalid StartTime parameter. | 400 | The value of the StartTime parameter is invalid. | | InvalidParameterEndTime | Invalid EndTime parameter. | 400 | The value of the EndTime parameter is invalid. | | InvalidTimeRange | The time range cannot exceed 31 days. | 400 | The time range specified by the StartTime and EndTime parameters exceeds 31 days. | | InvalidParameterInterval | Invalid Interval parameter. | 400 | The value of the Interval parameter is invalid. |', + 'extraInfo' => '### 特殊错误码'."\n" + .'| 错误代码 | 描述 | HTTP 状态码 | 语义 |'."\n" + .'|------------------------------|--------------------------------------------------------|-----------|----------------------------------|'."\n" + .'| Throttling | Request was denied due to request throttling. | 503 | 请求被流量控制限制 |'."\n" + .'| IllegalOperation | Illegal domain, operation is not permitted. | 403 | 非法域名,无法操作 |'."\n" + .'| OperationDenied | Your account does not open Live service yet. | 403 | 未开通Live服务 |'."\n" + .'| OperationDenied | Your Live service is suspended. | 403 | Live服务已被停止 |'."\n" + .'| InvalidDomain.NotFound | The domain provided does not belong to you. | 404 | 域名不存在或不属于当前用户 |'."\n" + .'| InvalidDomain.Offline | The domain provided is offline. | 404 | 域名已下线 |'."\n" + .'| ServiceBusy | The specified Domain is configuring, please retry later. | 403 | 域名正在配置中,请稍后再试 |'."\n" + .'| InvalidDomain.Configure_failed | Failed to configure the provided domain. | 500 | 域名配置失败 |'."\n" + .'| InvalidParameter | Invalid Parameter. | 400 | 参数错误 |'."\n" + .'| InvalidParameterProduct | Invalid Parameter Product. | 400 | Product参数错误 |'."\n" + .'| InvalidParameterArea | Invalid Parameter Area. | 400 | Area参数错误 |'."\n" + .'| InvalidParameterField | Invalid Parameter Field. | 400 | Field参数错误 |'."\n" + .'| InvalidParameterStartTime | Invalid Parameter StartTime. | 400 | StartTime参数错误 |'."\n" + .'| InvalidParameterEndTime | Invalid Parameter EndTime. | 400 | EndTime参数错误 |'."\n" + .'| InvalidTimeRange | StartTime and EndTime range should less than 1 month. | 400 | EndTime和StartTime差值不能超过31天 |'."\n" + .'| InvalidParameterInterval | Invalid Parameter Interval. | 400 | Interval参数错误 |'."\n", + 'changeSet' => [ + ['createdAt' => '2023-07-27T07:26:11.000Z', 'description' => 'Error codes changed, Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeDomainUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2015-12-10T21:00Z\\",\\n \\"Type\\": \\"all\\",\\n \\"StartTime\\": \\"2015-12-10T20:00Z\\",\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"Area\\": \\"CN\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"UsageDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"Value\\": \\"423304182\\",\\n \\"TimeStamp\\": \\"2015-12-10T20:00:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', ], - 'DescribeLiveDomainBpsData' => [ - 'summary' => 'Queries the bandwidth data for one or more streaming domains.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeDomainWithIntegrity' => [ + 'summary' => 'Obtains the integrity of a domain name.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -22584,91 +18699,29 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107009', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '112159', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain. You can query one or more domain names. If you specify multiple domain names, separate them with commas (,). If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T08:00:00Z', - ], + 'schema' => ['description' => 'The start time to query data. The date format follows the ISO 8601 standard. Use UTC time.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T20:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T09:00:00Z', - ], - ], - [ - 'name' => 'Interval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* **300** (default)'."\n" - .'* **3600**'."\n" - .'* **86400**'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If you specify an invalid value or do not specify this parameter, the default value **300** is used.'."\n" - ."\n" - .'* When the time granularity is **300** seconds, the returned bandwidth is the average bandwidth within the 300 seconds.'."\n" - .'* When the time granularity is **3600** or **86400** seconds, the returned bandwidth is the peak value of all average bandwidths within each 300-second period.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', - ], - ], - [ - 'name' => 'IspNameEn', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Internet service provider (ISP). You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available ISPs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'alibaba', - ], + 'schema' => ['description' => 'The end time must be later than the start time. The date format follows the ISO 8601 standard. Use UTC time.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'LocationNameEn', + 'name' => 'Integrity', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the region. You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available regions.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tianjin', - ], + 'schema' => ['description' => 'The integrity value for verification.', 'type' => 'number', 'format' => 'float', 'required' => true, 'example' => '0.95', 'title' => ''], ], ], 'responses' => [ @@ -22676,206 +18729,126 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T09:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T08:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'DataInterval' => [ - 'description' => 'The time granularity of the query. Unit: seconds.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'BpsDataPerInterval' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DataModule' => [ - 'description' => 'The bandwidth data returned at each interval.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The bandwidth data returned at each interval.'."\n", - 'type' => 'object', - 'properties' => [ - 'BpsValue' => [ - 'description' => 'The bandwidth. Unit: bit/s.'."\n", - 'type' => 'string', - 'example' => '11288111', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T08:00:05Z', - ], - 'HttpsBpsValue' => [ - 'description' => 'The bandwidth over HTTPS. Unit: bit/s.'."\n", - 'type' => 'string', - 'example' => '2000', - ], - 'HttpBpsValue' => [ - 'description' => 'The bandwidth over HTTP. Unit: bit/s.'."\n", - 'type' => 'string', - 'example' => '11286111', - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + 'Content' => [ + 'description' => 'The verification content.', + 'type' => 'array', + 'items' => [ + 'description' => 'The verification content.', + 'type' => 'object', + 'properties' => [ + 'Name' => ['description' => 'The table name.', 'type' => 'string', 'example' => '1637825700000', 'title' => ''], + 'Points' => [ + 'description' => 'The data points.', + 'type' => 'array', + 'items' => ['description' => 'The value of the corresponding column.', 'type' => 'string', 'example' => '1637825700000', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'Columns' => [ + 'description' => 'The column names.', + 'type' => 'array', + 'items' => ['description' => 'The column name.', 'type' => 'string', 'example' => 'time', 'title' => ''], + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - ], - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2017-12-10T09:00:00Z\\",\\n \\"StartTime\\": \\"2017-12-10T08:00:00Z\\",\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"BpsDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"BpsValue\\": \\"11288111\\",\\n \\"TimeStamp\\": \\"2017-12-10T08:00:05Z\\",\\n \\"HttpsBpsValue\\": \\"2000\\",\\n \\"HttpBpsValue\\": \\"11286111\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2017-12-10T09:00:00Z\\n 2017-12-10T08:00:00Z\\n B955107D-E658-4E77-B913-E0AC3D31693E\\n example.com\\n 300\\n \\n 11288111\\n 2017-12-10T08:00:05Z\\n 2000\\n 11286111\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainBpsData', - 'description' => '* You can specify both the StartTime and EndTime parameters to query the data in the specified period of time. If you do not specify the StartTime and EndTime parameters, the data of the last hour is queried by default.'."\n" - .'* If you specify only the StartTime parameter but not the EndTime parameter, the data of the hour following the specified start time is queried.'."\n" - .'* If you specify only the EndTime parameter but not the StartTime parameter, the data of the hour preceding the specified end time is queried.'."\n" - .'* You can query the data in the last 90 days.'."\n" - .'* This operation is used to monitor data. The data returned by this operation cannot be used as a reference to calculate resource usage for billing.'."\n" + 'title' => 'DescribeDomainWithIntegrity', + 'description' => 'You can call this operation to obtain the integrity of a domain name.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveDomainTrafficData' => [ - 'summary' => 'Queries the network traffic data for one or more domain names.', - 'methods' => [ - 'post', - 'get', + .'The queries per second (QPS) limit for this operation is 10 calls per second for each user. If you exceed this limit, API calls are throttled, which can affect your business. We recommend that you call this operation at a reasonable rate. For more information, see [QPS limit](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2024-09-29T03:08:53.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeDomainWithIntegrity'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeDomainWithIntegrity', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"Content\\": [\\n {\\n \\"Name\\": \\"1637825700000\\",\\n \\"Points\\": [\\n \\"1637825700000\\"\\n ],\\n \\"Columns\\": [\\n \\"time\\"\\n ]\\n }\\n ]\\n}","type":"json"}]', + ], + 'DescribeLiveAIProduceRules' => [ + 'summary' => 'Queries a list of caption rules.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], + 'operationType' => 'read', 'systemTags' => [ 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '219166', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain. You can query one or more domain names. If you specify multiple domain names, separate them with commas (,). If you do not specify this parameter, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The primary playback domain name.', 'type' => 'string', 'required' => false, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> You can query data in the last **90** days.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T14:00:00Z', - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => false, 'example' => 'AppName', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'SuffixName', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T15:00:00Z', - ], + 'schema' => ['description' => 'The caption suffix.'."\n" + ."\n" + .'> Set this parameter to the value of SubtitleName that is specified for the caption template.', 'type' => 'string', 'required' => false, 'example' => 'sub01', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'RulesId', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* **300** (default)'."\n" - .'* **3600**'."\n" - .'* **86400**'."\n" - ."\n" - .'> If you specify an invalid value or do not specify this parameter, the default value **300** is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', - ], + 'schema' => ['description' => 'The ID of the caption rule.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d-8f29-4bec****', 'title' => ''], ], [ - 'name' => 'IspNameEn', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Internet service provider (ISP). You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available ISPs. If you do not specify this parameter, the data of all ISPs is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'alibaba', - ], + 'schema' => ['description' => 'The page number. Valid values: 1 to 100.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'LocationNameEn', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the region. You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available regions. If you do not specify this parameter, the data of all regions is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tianjin', - ], + 'schema' => ['description' => 'The number of entries per page. Valid values: 1 to 100.', 'type' => 'string', 'required' => false, 'example' => '100', 'title' => ''], ], ], 'responses' => [ @@ -22883,118 +18856,97 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T15:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T14:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'DataInterval' => [ - 'description' => 'The time granularity of the query.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'TrafficDataPerInterval' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b96****', 'title' => ''], + 'RuleInfoList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'DataModule' => [ - 'description' => 'The network traffic data that was collected at each interval.'."\n", + 'RuleInfo' => [ + 'itemNode' => true, + 'description' => 'The list of caption rules.', + 'title' => '', 'type' => 'array', 'items' => [ - 'description' => 'The network traffic data that was collected at each interval.'."\n", + 'description' => 'The caption rule object.', 'type' => 'object', 'properties' => [ - 'TrafficValue' => [ - 'description' => 'The total traffic. Unit: bytes.'."\n", - 'type' => 'string', - 'example' => '454680793', - ], - 'HttpTrafficValue' => [ - 'description' => 'The traffic over HTTP. Unit: bytes.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T15:00:05Z', - ], - 'HttpsTrafficValue' => [ - 'description' => 'The traffic over HTTPS. Unit: bytes.'."\n", - 'type' => 'string', - 'example' => '454680793', - ], + 'Domain' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'App' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'App Name', 'title' => ''], + 'SubtitleName' => ['description' => 'The name of the caption template.', 'type' => 'string', 'example' => 'sub1', 'title' => ''], + 'IsLazy' => ['description' => 'Indicates whether the rule is triggered by stream pulling.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'RulesId' => ['description' => 'The ID of the caption rule.', 'type' => 'string', 'example' => '72fba656-2cc2-40fd-923c-2a10c3b9****', 'title' => ''], + 'LiveTemplate' => ['description' => 'The specifications of the output captions.', 'type' => 'string', 'example' => 'lp_ld', 'title' => ''], + 'GmtModifyTime' => ['description' => 'The last modification time. This is a UNIX timestamp.', 'type' => 'string', 'example' => '1715594344000', 'title' => ''], + 'SuffixName' => ['description' => 'The caption suffix.', 'type' => 'string', 'example' => 'test0506', 'title' => ''], + 'StudioName' => ['description' => 'The name of the virtual background template.', 'type' => 'string', 'example' => 'test0708', 'title' => ''], + 'Description' => ['description' => 'The description of the rule.', 'type' => 'string', 'example' => 'live AI subtitle template', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'IncorrectSubtitleStatus.%s', 'errorMessage' => '%s.', 'description' => 'Abnormal subtitle template status'], ], ], + 'staticInfo' => ['returnType' => 'synchronous'], 'eventInfo' => [ 'enable' => false, 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2017-12-10T15:00:00Z\\",\\n \\"StartTime\\": \\"2017-12-10T14:00:00Z\\",\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"TrafficDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"TrafficValue\\": \\"454680793\\",\\n \\"HttpTrafficValue\\": \\"0\\",\\n \\"TimeStamp\\": \\"2017-12-10T15:00:05Z\\",\\n \\"HttpsTrafficValue\\": \\"454680793\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n2017-12-10T15:00:00Z\\nB955107D-E658-4E77-B913-E0AC3D31693E\\nexample.com\\n\\n \\n 0\\n 454680793\\n 454680793\\n 2017-12-10T15:00:05Z\\n \\n\\n300\\n2017-12-10T14:00:00Z\\n","errorExample":"{\\n \\"DataInterval\\":\\"300\\",\\n \\"DomainName\\":\\"test.com\\",\\n \\"EndTime\\":\\"2017-12-10T21:00:00Z\\",\\n \\"RequestId\\":\\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"StartTime\\":\\"2017-12-10T20:00:00Z\\",\\n \\"TrafficDataPerInterval\\":{\\n \\"DataModule\\":[\\n {\\n \\"HttpTrafficValue\\":\\"0\\",\\n \\"HttpsTrafficValue\\":\\"423304182\\",\\n \\"TimeStamp\\":\\"2017-12-10T20:00:00Z\\",\\n \\"TrafficValue\\":\\"423304182\\"\\n },\\n {\\n \\"HttpTrafficValue\\":\\"0\\",\\n \\"HttpsTrafficValue\\":\\"454680793\\",\\n \\"TimeStamp\\":\\"2017-12-10T20:00:05Z\\",\\n \\"TrafficValue\\":\\"454680793\\"\\n }\\n ]\\n }\\n}"}]', - 'title' => 'DescribeLiveDomainTrafficData', - 'description' => '* If you do not specify the StartTime or EndTime parameter, the data of the last 24 hours is returned.'."\n" - .'* This operation is used to monitor data. The data returned by this operation cannot be used as a reference to calculate resource usage for billing.'."\n" + 'title' => 'DescribeLiveAIProduceRules', + 'description' => 'This operation queries a list of caption rules. Before you call this operation, ensure that the parameters are correctly configured.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'>'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveStreamTranscodeMetricData' => [ - 'summary' => 'Queries the transcoding data of a specified domain name at the application level and the stream level.', - 'methods' => [ - 'post', - 'get', + .'The real-time caption feature is in invitational preview. Each user can add a maximum of 300 caption templates.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 60. Exceeding this limit results in API call throttling, which can affect your business. We recommend that you call this operation at a reasonable rate.', + 'changeSet' => [ + ['createdAt' => '2024-10-14T03:46:55.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-07-04T02:57:17.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAIProduceRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b96****\\",\\n \\"RuleInfoList\\": {\\n \\"RuleInfo\\": [\\n {\\n \\"Domain\\": \\"demo.aliyundoc.com\\",\\n \\"App\\": \\"App Name\\",\\n \\"SubtitleName\\": \\"sub1\\",\\n \\"IsLazy\\": true,\\n \\"RulesId\\": \\"72fba656-2cc2-40fd-923c-2a10c3b9****\\",\\n \\"LiveTemplate\\": \\"lp_ld\\",\\n \\"GmtModifyTime\\": \\"1715594344000\\",\\n \\"SuffixName\\": \\"test0506\\",\\n \\"StudioName\\": \\"test0708\\",\\n \\"Description\\": \\"live AI subtitle template\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveAIStudio' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -23005,479 +18957,382 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeCode' => '239765', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name. You can specify only one domain name in each request.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2023-06-11T02:46:40Z', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'StudioId', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2023-06-11T03:46:40Z', - ], + 'schema' => ['description' => 'The ID of the template to filter. This parameter is optional.', 'type' => 'string', 'required' => false, 'example' => 'dbe61b87-db9a-448f-8757-a875edb3f944', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'StudioName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'app', - ], + 'schema' => ['description' => 'The name of the virtual studio template.', 'type' => 'string', 'required' => false, 'example' => 'sub02', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'stream', - ], + 'schema' => ['description' => 'The current page number. The default value is **1**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'NextPageToken', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'A pagination token. When you call this operation, up to 5,000 rows of data can be returned per query. If the number of rows exceeds 5,000, the response includes a pagination token that is used in the next request to retrieve a new page of results.'."\n" - ."\n" - .'When you specify the token in the next query, data continues to be obtained from the end of the previous query.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', - ], + 'schema' => ['description' => 'The number of entries to return on each page. Default value: 10. Valid values: 1 to 50.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned results.'."\n", + 'title' => '', + 'description' => 'The response schema.', 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'EndTime' => [ - 'description' => 'The end of the time range during which data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2023-06-11T02:46:40Z', - ], - 'NextPageToken' => [ - 'description' => 'A pagination token. When you call this operation, up to 5,000 rows of data can be returned per query. If the number of rows exceeds 5,000, the response includes a pagination token that is used in the next request to retrieve a new page of results.'."\n" - ."\n" - .'When you specify the token in the next query, data continues to be obtained from the end of the previous query.'."\n", - 'type' => 'string', - 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', - ], - 'PageSize' => [ - 'description' => 'The number of rows returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5000', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which data was queried. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2023-06-11T03:46:40Z'."\n", - ], - 'StreamDetailData' => [ + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'title' => '', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8'], + 'Total' => ['description' => 'The total number of templates.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''], + 'PageNumber' => ['description' => 'The current page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries returned on each page. Default value: 10. Valid values: 1 to 50.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'StudioConfigs' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'StreamData' => [ - 'description' => 'The data array returned.'."\n", + 'SubtitleConfig' => [ + 'itemNode' => true, + 'description' => 'The information about the virtual studio template.', + 'title' => '', 'type' => 'array', 'items' => [ - 'description' => '', + 'description' => 'The information about the virtual studio template.', 'type' => 'object', 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'app', - ], - 'Duration' => [ - 'description' => 'The duration. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '300', - ], - 'Fps' => [ - 'description' => 'The frame rate.'."\n" - ."\n" - .'Valid values:'."\n" - ."\n" - .'* '."\n" - ."\n" - .' '."\n" - ."\n" - .' normal'."\n" - ."\n" - .' '."\n" - ."\n" - .'* '."\n" - ."\n" - .' '."\n" - ."\n" - .' high'."\n" - ."\n" - .' '."\n" - ."\n" - .'* '."\n" - ."\n" - .' '."\n" - ."\n" - .' def'."\n" - ."\n" - .' '."\n", - 'type' => 'string', - 'enumValueTitles' => [ - 'normal' => 'normal', - 'high' => 'high', - 'def' => 'def', - ], - 'example' => 'high', - ], - 'Region' => [ - 'description' => 'The region.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'Resolution' => [ - 'description' => 'The resolution. Valid values:'."\n" - ."\n" - .'* 2K: 2K resolution'."\n" - .'* 4K: 4K resolution'."\n" - .'* LD: low definition'."\n" - .'* SD: standard definition'."\n" - .'* HD: high definition'."\n" - .'* def: audio'."\n", - 'type' => 'string', - 'enumValueTitles' => [ - 'SD' => 'SD', - 'def' => 'def', - '4K' => '4K', - 'LD' => 'LD', - '2K' => '2K', - 'HD' => 'HD', - ], - 'example' => '4K', - ], - 'StreamName' => [ - 'description' => 'The name of the stream.'."\n", - 'type' => 'string', - 'example' => 'stream', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2023-06-11T02:45:00Z', - ], - 'TranscodeType' => [ - 'description' => 'The transcoding type. Valid values:'."\n" - ."\n" - .'* H264STD: standard transcoding based on H.264'."\n" - .'* H264NBHD: Narrowband HD™ transcoding based on H.264'."\n" - .'* H265STD: standard transcoding based on H.265'."\n" - .'* AUDIO: audio transcoding'."\n", - 'type' => 'string', - 'enumValueTitles' => [ - 'H264NBHD' => 'H264NBHD', - 'AUDIO' => 'AUDIO', - 'H264STD' => 'H264STD', - 'H265STD' => 'H265STD', + 'MediaType' => ['description' => 'The type of the media asset. Valid values: VOD, PIC, and LIVE.'."\n" + ."\n" + .'- VOD: a video-on-demand file.'."\n" + ."\n" + .'- PIC: an image.'."\n" + ."\n" + .'- LIVE: a live stream.', 'type' => 'string', 'example' => 'VOD', 'title' => ''], + 'MediaLayout' => ['description' => 'The layout information of the media asset.', 'type' => 'string', 'example' => '"{\\"positionY\\":\\"0.0\\",\\"positionX\\":\\"0.0\\",\\"heightNormalized\\":\\"0.5\\"}"', 'title' => ''], + 'MediaResourceUrl' => ['description' => 'The URL of the media asset.', 'type' => 'string', 'example' => 'https://testbucket.xx.com/2.jpg', 'title' => ''], + 'MediaResourceId' => ['description' => 'The ID of the VOD resource for the media asset.', 'type' => 'string', 'example' => ' '."\n" + .'d0eb493192c771efba644531858c0102'."\n", 'title' => ''], + 'BackgroundType' => ['description' => 'The type of the background material. Valid values: VOD, PIC, and LIVE.'."\n" + ."\n" + .'- VOD: a video-on-demand file.'."\n" + ."\n" + .'- PIC: an image.'."\n" + ."\n" + .'- LIVE: a live stream.', 'type' => 'string', 'example' => 'VOD', 'title' => ''], + 'BackgroundResourceUrl' => ['description' => 'The public URL of the background material. The URL must be accessible over the Internet. Specify this parameter or \\`BackgroundResourceId\\`.', 'type' => 'string', 'example' => 'https://testbucket.xx.com/2.jpg', 'title' => ''], + 'BackgroundResourceId' => ['description' => 'The ID of the background material resource.', 'type' => 'string', 'example' => 'd0eb493192c771efba644531858c0102', 'title' => ''], + 'Description' => ['description' => 'The description of the virtual studio template.', 'type' => 'string', 'example' => 'user defined description', 'title' => ''], + 'TemplateId' => ['description' => 'The ID of the virtual studio template.', 'type' => 'string', 'example' => '24654384-f5ac-40ea-823b-74e85a61dd9f', 'title' => ''], + 'TemplateName' => ['description' => 'The name of the virtual studio template. This parameter is the same as the \\`StudioName\\` parameter in the AddLiveAiStudio operation.', 'type' => 'string', 'example' => 'studio1', 'title' => ''], + 'MattingLayout' => ['description' => 'The layout of the keyed-out portrait.', 'type' => 'string', 'example' => '"{\\"positionY\\":\\"0.0\\",\\"positionX\\":\\"0.0\\",\\"heightNormalized\\":\\"0.5\\"}"', 'title' => ''], + 'MattingType' => ['description' => 'The chroma keying type for the source stream. This is used to process the ingested stream.'."\n" + ."\n" + .'- green: chroma keying for a portrait against a green screen background.'."\n" + ."\n" + .'- blue: chroma keying for a portrait against a blue screen background.'."\n" + ."\n" + .'- complex: chroma keying for a portrait against a real-world background.', 'type' => 'string', 'example' => 'complex', 'title' => ''], + 'Height' => ['description' => 'The height of the preview image, in pixels.'."\n" + ."\n" + .'The resolution of the preview image (width × height) must be one of the following:'."\n" + ."\n" + .'- Landscape low definition (360p): 640 × 360'."\n" + ."\n" + .'- Portrait low definition (360p): 360 × 640'."\n" + ."\n" + .'- Landscape standard definition (480p): 854 × 480'."\n" + ."\n" + .'- Portrait standard definition (480p): 480 × 854'."\n" + ."\n" + .'- Landscape high definition (720p): 1280 × 720'."\n" + ."\n" + .'- Portrait high definition (720p): 720 × 1280'."\n" + ."\n" + .'- Landscape ultra-high definition (1080p): 1920 × 1080'."\n" + ."\n" + .'- Portrait ultra-high definition (1080p): 1080 × 1920', 'type' => 'string', 'example' => '1080', 'title' => ''], + 'Width' => ['description' => 'The width of the preview image.', 'type' => 'string', 'example' => '1920', 'title' => ''], + 'RuleIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ruleId' => [ + 'description' => 'The rule IDs.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The rule ID.', 'type' => 'string', 'example' => '2414378f-541a-48d3-be0c-535212f9a6b4', 'title' => ''], + 'example' => '', + ], ], - 'example' => 'H264STD', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified StartTime or EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidPageToken', - 'errorMessage' => 'The token of page is invalid.', - ], - [ - 'errorCode' => 'InvalidAppName.Mismatch', - 'errorMessage' => 'The AppName param must be passed.', - ], - [ - 'errorCode' => 'InvalidStreamProtocol.NotSupport', - 'errorMessage' => 'The specified stream protocol is not support.', - ], - [ - 'errorCode' => 'InvalidStreamName.LengthTooLong', - 'errorMessage' => 'The specified stream name is too long.', - ], - [ - 'errorCode' => 'InvalidAppName.LengthTooLong', - 'errorMessage' => 'The specified app name is too long.', - ], - [ - 'errorCode' => 'InvalidTime.ValueNotSupported', - 'errorMessage' => 'Specified Time is malformed.', - ], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The live service is not enabled. Please check and try again.'], + ['errorCode' => 'InvalidParameter.PurchaseTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PurchaseTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.ExpireTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ExpireTime is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidChargeType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidChargeType.PostSupport', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ChargeType only supports post-paid, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterTemplate is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.ChargeType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidPeriod.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid time interval, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], + ], + [ + ['errorCode' => 'CasterNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of casters exceeds the limit. Please check and try again.'], + ], + 403 => [ + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], + ], + [ + ['errorCode' => 'InvalidParameter.NormType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter NormType is invalid, please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 408 => [ + ['errorCode' => 'DescribeLiveAIStudio.Timeout', 'errorMessage' => '%s, please try again later.', 'description' => 'Call DescribeLiveAIStudio timed out, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2023-06-11T02:46:40Z\\",\\n \\"NextPageToken\\": \\"UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\",\\n \\"PageSize\\": 5000,\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StartTime\\": \\"2023-06-11T03:46:40Z\\\\n\\",\\n \\"StreamDetailData\\": {\\n \\"StreamData\\": [\\n {\\n \\"AppName\\": \\"app\\",\\n \\"Duration\\": 300,\\n \\"Fps\\": \\"high\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"Resolution\\": \\"4K\\",\\n \\"StreamName\\": \\"stream\\",\\n \\"TimeStamp\\": \\"2023-06-11T02:45:00Z\\",\\n \\"TranscodeType\\": \\"H264STD\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2023-06-11T02:46:40Z\\n 2023-06-11T03:46:40Z\\n\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\n 5000\\n example.com\\n \\n app\\n stream\\n cn-shanghai\\n 300\\n high\\n 2023-06-11T02:45:00Z\\n H264STD\\n 4K\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamTranscodeMetricData', - 'description' => '* The maximum time range for a query is 24 hours.'."\n" - .'* The minimum time granularity for a query is 5 minutes.'."\n" - .'* You can query data in the last 31 days.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveCenterStreamRateData' => [ - 'summary' => 'Queries the audio and video frame rates and bitrates of a stream in a live center.', - 'methods' => [ - 'get', - 'post', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeLiveAIStudio', + 'summary' => 'Queries the virtual studio templates in your account.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAIStudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"Total\\": 100,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"StudioConfigs\\": {\\n \\"SubtitleConfig\\": [\\n {\\n \\"MediaType\\": \\"VOD\\",\\n \\"MediaLayout\\": \\"\\\\\\"{\\\\\\\\\\\\\\"positionY\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.0\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"positionX\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.0\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"heightNormalized\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.5\\\\\\\\\\\\\\"}\\\\\\"\\",\\n \\"MediaResourceUrl\\": \\"https://testbucket.xx.com/2.jpg\\",\\n \\"MediaResourceId\\": \\"\\\\t\\\\nd0eb493192c771efba644531858c0102\\\\n\\",\\n \\"BackgroundType\\": \\"VOD\\",\\n \\"BackgroundResourceUrl\\": \\"https://testbucket.xx.com/2.jpg\\",\\n \\"BackgroundResourceId\\": \\"d0eb493192c771efba644531858c0102\\",\\n \\"Description\\": \\"user defined description\\",\\n \\"TemplateId\\": \\"24654384-f5ac-40ea-823b-74e85a61dd9f\\",\\n \\"TemplateName\\": \\"studio1\\",\\n \\"MattingLayout\\": \\"\\\\\\"{\\\\\\\\\\\\\\"positionY\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.0\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"positionX\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.0\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"heightNormalized\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.5\\\\\\\\\\\\\\"}\\\\\\"\\",\\n \\"MattingType\\": \\"complex\\",\\n \\"Height\\": \\"1080\\",\\n \\"Width\\": \\"1920\\",\\n \\"RuleIds\\": {\\n \\"ruleId\\": [\\n \\"2414378f-541a-48d3-be0c-535212f9a6b4\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveAISubtitle' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '214643', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '218857', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppName', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'SubtitleId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The ID of the caption template.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'SubtitleName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The name of the caption template. The name can contain only digits, uppercase letters, lowercase letters, and hyphens (-). The name cannot start with a hyphen.', 'type' => 'string', 'required' => false, 'example' => 'sub01', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2024-03-05T18:00:53Z', - ], + 'schema' => ['description' => 'The page number. Valid values: 1 to 100.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2024-03-05T18:01:03Z', - ], + 'schema' => ['description' => 'The number of templates on each page. Valid values: 1 to 100.', 'type' => 'string', 'required' => false, 'example' => '100', 'title' => ''], + ], + [ + 'name' => 'IsDefault', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to query the default caption templates. Valid values:'."\n" + ."\n" + .'- true: queries the default caption templates.'."\n" + ."\n" + .'- false: does not query the default caption templates.'."\n" + ."\n" + .'> Default templates are built-in parameter sets. You can use them by specifying the copyFrom parameter in the AddLiveAISubtitle operation.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RateDatas' => [ - 'description' => 'The list of frame rates and bitrates.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AudioFps' => [ - 'description' => 'The audio frame rate.'."\n", - 'type' => 'string', - 'example' => '47', - ], - 'AudioRate' => [ - 'description' => 'The audio bitrate.'."\n", - 'type' => 'string', - 'example' => '600', - ], - 'Time' => [ - 'description' => 'The time when the data was collected. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2024-03-05T18:00:53Z', - ], - 'VideoFps' => [ - 'description' => 'The video frame rate.'."\n", - 'type' => 'string', - 'example' => '30', - ], - 'VideoRate' => [ - 'description' => 'The video bitrate.'."\n", - 'type' => 'string', - 'example' => '1953584', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b96****', 'title' => ''], + 'SubtitleConfigs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SubtitleConfig' => [ + 'description' => 'A list of caption template information.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The caption template object.', + 'type' => 'object', + 'properties' => [ + 'DstLanguage' => ['description' => 'The destination language for translation.', 'type' => 'string', 'example' => 'zh-CN', 'title' => ''], + 'SrcLanguage' => ['description' => 'The source language.', 'type' => 'string', 'example' => 'zh-CN', 'title' => ''], + 'FontColor' => ['description' => 'The font color.', 'type' => 'string', 'example' => '0xFFFFFF', 'title' => ''], + 'FontName' => ['description' => 'The font.', 'type' => 'string', 'example' => 'AlibabaPuHuiTi-Regular', 'title' => ''], + 'ShowSourceLan' => ['description' => 'Specifies whether to display the source language.', 'type' => 'integer', 'format' => 'int32', 'example' => 'true', 'title' => ''], + 'MaxLines' => ['description' => 'The number of lines to display.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'WordPerline' => ['description' => 'The number of characters per line.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'PositionNormalized' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Position' => [ + 'description' => 'The information about the caption position.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The position of the captions.', 'type' => 'number', 'format' => 'float', 'example' => '[0.3,0.35]', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'BgColor' => ['description' => 'The background color of the captions.', 'type' => 'string', 'example' => '0xFF0000', 'title' => ''], + 'BgWidthNormalized' => ['description' => 'The size of the caption background.', 'type' => 'number', 'format' => 'float', 'example' => '0.09', 'title' => ''], + 'BorderWidthNormalized' => ['description' => 'The font weight.', 'type' => 'number', 'format' => 'float', 'example' => '0.05', 'title' => ''], + 'Width' => ['description' => 'The width of the preview window.', 'type' => 'string', 'example' => '1280', 'title' => ''], + 'Height' => ['description' => 'The height of the preview window.', 'type' => 'string', 'example' => '720', 'title' => ''], + 'SubtitleName' => ['description' => 'The name of the caption template.', 'type' => 'string', 'example' => 'sub1', 'title' => ''], + 'SubtitleId' => ['description' => 'The ID of the caption template.', 'type' => 'string', 'example' => '597991f3-6ef9-4100-9238-82951de1****', 'title' => ''], + 'RulesRefer' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RulesId' => [ + 'description' => 'The information about the caption rule.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The ID of the caption rule.', 'type' => 'string', 'example' => '1419783e-0dd2-4485-a298-6e4a0e4e****', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'FontSizeNormalized' => ['description' => 'The font size.', 'type' => 'string', 'example' => '0.037', 'title' => ''], + 'Description' => ['description' => 'The description.', 'type' => 'string', 'example' => 'live AI subtitle template', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], - 'description' => '', ], - ], - 'RequestId' => [ - 'title' => 'Id', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B6E125BE-E9B8-1103-8684-A3585CB632F1', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', - ], - ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', - ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', - ], - ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RateDatas\\": [\\n {\\n \\"AudioFps\\": \\"47\\",\\n \\"AudioRate\\": \\"600\\",\\n \\"Time\\": \\"2024-03-05T18:00:53Z\\",\\n \\"VideoFps\\": \\"30\\",\\n \\"VideoRate\\": \\"1953584\\"\\n }\\n ],\\n \\"RequestId\\": \\"B6E125BE-E9B8-1103-8684-A35*******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n B6E125BE-E9B8-1103-8684-A3585CB632F1\\n \\n 30\\n 1953584\\n 47\\n 600\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveCenterStreamRateData', - 'description' => 'The time granularity for the returned data is 5 seconds. The maximum time range to query is 3 hours. You can query data in the last 30 days.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeLiveAISubtitle', + 'summary' => 'You can call the DescribeLiveAISubtitle operation to query a list of caption templates.', + 'description' => 'This operation supports paging. You can specify paging parameters to query a list of caption templates. When you call this operation, ensure that the parameter settings are valid.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'>'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveDomainBpsDataByLayer' => [ - 'summary' => 'Queries the bandwidth and traffic data by protocol for one or more domain names.', - 'methods' => [ - 'post', - 'get', + .'The real-time captioning feature is in invitational preview. Each user can add a maximum of 300 caption templates.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 60. If the number of calls per second exceeds the limit, throttling is triggered, which may affect your business. We recommend that you take note of the limit when you call this operation. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2024-12-04T05:54:29.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-06-11T03:32:56.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveAISubtitle'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAISubtitle', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b96****\\",\\n \\"SubtitleConfigs\\": {\\n \\"SubtitleConfig\\": [\\n {\\n \\"DstLanguage\\": \\"zh-CN\\",\\n \\"SrcLanguage\\": \\"zh-CN\\",\\n \\"FontColor\\": \\"0xFFFFFF\\",\\n \\"FontName\\": \\"AlibabaPuHuiTi-Regular\\",\\n \\"ShowSourceLan\\": 0,\\n \\"MaxLines\\": 2,\\n \\"WordPerline\\": 20,\\n \\"PositionNormalized\\": {\\n \\"Position\\": [\\n 0\\n ]\\n },\\n \\"BgColor\\": \\"0xFF0000\\",\\n \\"BgWidthNormalized\\": 0.09,\\n \\"BorderWidthNormalized\\": 0.05,\\n \\"Width\\": \\"1280\\",\\n \\"Height\\": \\"720\\",\\n \\"SubtitleName\\": \\"sub1\\",\\n \\"SubtitleId\\": \\"597991f3-6ef9-4100-9238-82951de1****\\",\\n \\"RulesRefer\\": {\\n \\"RulesId\\": [\\n \\"1419783e-0dd2-4485-a298-6e4a0e4e****\\"\\n ]\\n },\\n \\"FontSizeNormalized\\": \\"0.037\\",\\n \\"Description\\": \\"live AI subtitle template\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveAudioAuditConfig' => [ + 'summary' => 'Queries the audio moderation configurations.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -23488,113 +19343,28 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain. You can specify multiple domain names by separating them with commas (,). If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'pull.aliyundoc.com', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-ddTHH:mm:ssZ* format. The time must be displayed in UTC.'."\n" - ."\n" - .'> If you do not specify this parameter, the data of the last 24 hours is returned by default. The minimum time granularity is 5 minutes.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2022-03-15T16:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-ddTHH:mm:ssZ* format. The time must be displayed in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2022-03-16T16:59:59Z', - ], - ], - [ - 'name' => 'Interval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* **300**'."\n" - .'* **3600**'."\n" - .'* **86400**'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If the time range specified by the StartTime and EndTime parameters is smaller than or equal to 3 days, the supported time granularities include 300, 3,600, and 86,400 seconds.'."\n" - ."\n" - .'* If the time range is larger than 3 days but smaller than or equal to 31 days, the supported time granularities include 3,600 and 86,400 seconds.'."\n" - ."\n" - .'* If the time range is larger than 31 days, the supported time granularity is 86,400 seconds.'."\n" - ."\n" - .'* If you specify an invalid value or do not specify this parameter, the default time granularity of 300 seconds is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', - ], - ], - [ - 'name' => 'IspNameEn', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Internet service provider (ISP). If you do not specify this parameter, the data of all ISPs is returned.'."\n" - ."\n" - .'> You can call the [DescribeLiveRegionAndIsp](~~91077~~) operation to query available regions and ISPs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tele***', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'LocationNameEn', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the region. If you do not specify this parameter, the data of all regions is returned.'."\n" - ."\n" - .'> You can call the [DescribeLiveRegionAndIsp](~~91077~~) operation to query available regions and ISPs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'hangzhou', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'Layer', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The layer at which you want to query the data. Valid values:'."\n" - ."\n" - .'* IPv4 and IPv6 (network layer)'."\n" - .'* http, https, and quic (application layer)'."\n" - .'* all (default)'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'all', - ], + 'schema' => ['description' => 'The name of the stream.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ @@ -23602,103 +19372,104 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'BpsDataInterval' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', 'title' => ''], + 'LiveAudioAuditConfigList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'DataModule' => [ - 'description' => 'The data returned at each time interval.'."\n", + 'LiveAudioAuditConfig' => [ + 'itemNode' => true, + 'description' => 'The list of audio moderation configurations.', + 'title' => '', 'type' => 'array', 'items' => [ - 'description' => 'The data returned at each time interval.'."\n", 'type' => 'object', 'properties' => [ - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2022-03-15T16:00:00Z', - ], - 'TrafficValue' => [ - 'description' => 'The total traffic. Unit: bytes.'."\n", - 'type' => 'string', - 'example' => '331', - ], - 'Value' => [ - 'description' => 'The peak bandwidth. Unit: bit/s.'."\n", - 'type' => 'string', - 'example' => '0.56', + 'AppName' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'DomainName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'BizType' => ['description' => 'The business type. This parameter can be used to select a model. The default value is the domain name.', 'type' => 'string', 'example' => 'example.edu', 'title' => ''], + 'Scenes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'scene' => [ + 'description' => 'The detection scenarios.', + 'title' => '', + 'type' => 'array', + 'items' => ['description' => 'The detection scenario.', 'type' => 'string', 'example' => 'antispam', 'title' => ''], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], - ], - 'DataInterval' => [ - 'description' => 'The time interval between the data entries returned. Unit: seconds.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'BEA5625F-8FCF-48F4-851B-2A48566EA967', + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified parameter StartTime is not valid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified parameter EndTime is not valid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'Specified end time does not math the specified start time,And the time range does not exceed 90 days.', - ], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'ConfigExisted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"BpsDataInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"TimeStamp\\": \\"2022-03-15T16:00:00Z\\",\\n \\"TrafficValue\\": \\"331\\",\\n \\"Value\\": \\"0.56\\"\\n }\\n ]\\n },\\n \\"DataInterval\\": \\"300\\",\\n \\"RequestId\\": \\"BEA5625F-8FCF-48F4-851B-2A48566EA967\\"\\n}","errorExample":""},{"type":"xml","example":"\\nBEA5625F-8FCF-48F4-851B-2A48566EA967\\n300\\n\\n \\n 0.56\\n 331\\n 2022-03-15T16:00:00Z\\n \\n\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainBpsDataByLayer', - 'description' => 'You can query data in the last 90 days. You can specify up to 500 domain names. Separate multiple domain names with commas (,). The data of multiple domain names is aggregated and returned. The following section describes the time granularities of the data entries returned depending on the time range specified by the **StartTime** and **EndTime** parameters:'."\n" - ."\n" - .'* If the time range is smaller than or equal to 3 days, the time granularity is 5 minutes.'."\n" - .'* If the time range is larger than 3 days but smaller than or equal to 31 days, the time granularity is 1 hour.'."\n" - .'* If the time range is larger than 31 days, the time granularity is 1 day.'."\n" + 'title' => 'DescribeLiveAudioAuditConfig', + 'description' => '- You can call this API operation to query the audio moderation configurations for a specific streaming domain.'."\n" ."\n" - .'> If neither the **StartTime** nor the **EndTime** parameter is specified, the data of the last 24 hours is returned.'."\n" + .'- Automated review is supported only in some live centers. For supported regions, see [Service regions](~~193730~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainPushBpsData' => [ - 'summary' => 'Queries the bandwidth data for one or more ingest domains.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveAudioAuditConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAudioAuditConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\",\\n \\"LiveAudioAuditConfigList\\": {\\n \\"LiveAudioAuditConfig\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"BizType\\": \\"example.edu\\",\\n \\"Scenes\\": {\\n \\"scene\\": [\\n \\"antispam\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveAudioAuditNotifyConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -23709,85 +19480,18 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain. You can specify multiple ingest domains and separate them with commas (,). If you do not specify this parameter, the merged data of all your ingest domains is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'demo.aliyundoc.com', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC. If you do not specify this parameter, the data of the last 24 hours is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T20:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC. The end time must be later than the start time.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T21:00:00Z', - ], - ], - [ - 'name' => 'Interval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* **300**'."\n" - .'* **3600**'."\n" - .'* **86400**'."\n" - ."\n" - .'The default value is 300. If you specify an invalid value or do not specify this parameter, the default value is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', - ], - ], - [ - 'name' => 'IspNameEn', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Internet service provider (ISP). You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available ISPs. If you do not specify this parameter, the data of all ISPs is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'alibaba', - ], - ], - [ - 'name' => 'LocationNameEn', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the region. You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available regions. If you do not specify this parameter, the data of all regions is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tianjin', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -23795,302 +19499,216 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T21:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T20:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F', - ], - 'DomainName' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'DataInterval' => [ - 'description' => 'The time granularity of the query.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'BpsDataPerInterval' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B908FF89-B03C-4831-B55B-48D2A******', 'title' => ''], + 'LiveAudioAuditNotifyConfigList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'DataModule' => [ - 'description' => 'The bandwidth data that was collected at each interval.'."\n", + 'LiveAudioAuditNotifyConfig' => [ + 'description' => 'A list of callback configurations.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'BpsValue' => [ - 'description' => 'The bandwidth. Unit: bit/s.'."\n", - 'type' => 'string', - 'example' => '11288111', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T20:00:00Z', - ], + 'CallbackTemplate' => ['description' => 'The callback template. The value can contain the following variables:'."\n" + ."\n" + .'- **{DomainName}**: The streaming domain.'."\n" + ."\n" + .'- **{AppName}**: The AppName of the live stream.'."\n" + ."\n" + .'- **{StreamName}**: The stream name.'."\n" + ."\n" + .'- **{Timestamp}**: The UNIX timestamp of the callback. Unit: seconds.'."\n" + ."\n" + .'- **{Result}**: The review result.', 'type' => 'string', 'example' => '{\\"domain\\":{DomainName},\\"app\\":{AppName},\\"stream\\":{StreamName},\\"timestamp\\":{Timestamp},\\"result\\":{Result}}', 'title' => ''], + 'DomainName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Callback' => ['description' => 'The callback URL.', 'type' => 'string', 'example' => 'http://guide.aliyundoc.com/callback', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'ConfigExisted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2017-12-10T21:00:00Z\\",\\n \\"StartTime\\": \\"2017-12-10T20:00:00Z\\",\\n \\"RequestId\\": \\"3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"BpsDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"BpsValue\\": \\"11288111\\",\\n \\"TimeStamp\\": \\"2017-12-10T20:00:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2017-12-10T21:00:00Z\\n 2017-12-10T20:00:00Z\\n 3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F\\n demo.aliyundoc.com\\n 300\\n \\n 11288111\\n 2017-12-10T20:00:00Z\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainPushBpsData', - 'description' => '* The bandwidth unit is bit/s.'."\n" - .'* You can specify multiple domain names by separating them with commas (,).'."\n" - .'* If you do not specify the StartTime or EndTime parameter, the data of the last 24 hours is queried. You can specify both the StartTime and EndTime parameters to query the data of a specific time range.'."\n" - .'* You can query the data in the last 90 days.'."\n" + 'title' => 'DescribeLiveAudioAuditNotifyConfig', + 'summary' => 'Queries the callback configuration for audio moderation.', + 'description' => '- You can call this operation to query the callback configuration for audio moderation for a specified streaming domain.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- Automated review is available only in some live centers. For supported regions, see [Service regions](~~193730~~).'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainPushTrafficData' => [ - 'summary' => 'Queries the network traffic data for one or more ingest domains.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAudioAuditNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B908FF89-B03C-4831-B55B-48D2A******\\",\\n \\"LiveAudioAuditNotifyConfigList\\": {\\n \\"LiveAudioAuditNotifyConfig\\": [\\n {\\n \\"CallbackTemplate\\": \\"{\\\\\\\\\\\\\\"domain\\\\\\\\\\\\\\":{DomainName},\\\\\\\\\\\\\\"app\\\\\\\\\\\\\\":{AppName},\\\\\\\\\\\\\\"stream\\\\\\\\\\\\\\":{StreamName},\\\\\\\\\\\\\\"timestamp\\\\\\\\\\\\\\":{Timestamp},\\\\\\\\\\\\\\"result\\\\\\\\\\\\\\":{Result}}\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"Callback\\": \\"http://guide.aliyundoc.com/callback\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveCenterStreamRateData' => [ + 'methods' => ['get', 'post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '214643', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain. You can specify multiple ingest domains and separate them with commas (,). If you do not specify this parameter, the merged data of all your ingest domains is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'demo.aliyundoc.com', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC. If you do not specify this parameter, the data of the last 24 hours is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T20:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T21:00:00Z', - ], + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* **300**'."\n" - .'* **3600**'."\n" - .'* **86400**'."\n" - ."\n" - .'The default value is 300. If you specify an invalid value or do not specify this parameter, the default value is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', - ], + 'schema' => ['description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'IspNameEn', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Internet service provider (ISP). You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available ISPs. If you do not specify this parameter, the data of all ISPs is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'alibaba', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2024-03-05T18:00:53Z', 'title' => ''], ], [ - 'name' => 'LocationNameEn', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the region. You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available regions. If you do not specify this parameter, the data of all regions is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tianjin', - ], + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2024-03-05T18:01:03Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T21:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T20:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F', - ], - 'DomainName' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'DataInterval' => [ - 'description' => 'The time granularity.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'TrafficDataPerInterval' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DataModule' => [ - 'description' => 'The traffic data that was collected at each interval.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The traffic data.'."\n", - 'type' => 'object', - 'properties' => [ - 'TrafficValue' => [ - 'description' => 'The traffic. Unit: bytes.'."\n", - 'type' => 'string', - 'example' => '1288111', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T20:05:00Z', - ], - ], - ], + 'RateDatas' => [ + 'description' => 'The list of frame rates and bitrates.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AudioFps' => ['description' => 'The audio frame rate.', 'type' => 'string', 'example' => '47', 'title' => ''], + 'AudioRate' => ['description' => 'The audio bitrate.', 'type' => 'string', 'example' => '600', 'title' => ''], + 'Time' => ['description' => 'The time when the data was collected. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2024-03-05T18:00:53Z', 'title' => ''], + 'VideoFps' => ['description' => 'The video frame rate.', 'type' => 'string', 'example' => '30', 'title' => ''], + 'VideoRate' => ['description' => 'The video bitrate.', 'type' => 'string', 'example' => '1953584', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'B6E125BE-E9B8-1103-8684-A35*******'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], + ], + 403 => [ + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2017-12-10T21:00:00Z\\",\\n \\"StartTime\\": \\"2017-12-10T20:00:00Z\\",\\n \\"RequestId\\": \\"3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"TrafficDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"TrafficValue\\": \\"1288111\\",\\n \\"TimeStamp\\": \\"2017-12-10T20:05:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n2017-12-10T21:00:00Z\\n3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F\\ndemo.aliyundoc.com\\n\\n \\n 1288111\\n 2017-12-10T20:05:00Z\\n \\n\\n300\\n2017-12-10T20:00:00Z\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainPushTrafficData', - 'description' => '* The traffic unit is bytes.'."\n" - .'* You can specify multiple domain names by separating them with commas (,).'."\n" - .'* If you do not specify the StartTime or EndTime parameter, the data of the last 24 hours is queried. You can specify both the StartTime and EndTime parameters to query the data of a specific time range.'."\n" - .'* You can query the data in the last 90 days.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeLiveCenterStreamRateData', + 'summary' => 'Queries the audio and video frame rates and bitrates of a stream in a live center.', + 'description' => 'The time granularity for the returned data is 5 seconds. The maximum time range to query is 3 hours. You can query data in the last 30 days.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveStreamPushMetricDetailData' => [ - 'summary' => 'Queries the stream ingest data of a specified domain name at the application level and the stream level.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveCenterStreamRateData'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveCenterStreamRateData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RateDatas\\": [\\n {\\n \\"AudioFps\\": \\"47\\",\\n \\"AudioRate\\": \\"600\\",\\n \\"Time\\": \\"2024-03-05T18:00:53Z\\",\\n \\"VideoFps\\": \\"30\\",\\n \\"VideoRate\\": \\"1953584\\"\\n }\\n ],\\n \\"RequestId\\": \\"B6E125BE-E9B8-1103-8684-A35*******\\"\\n}","type":"json"}]', + ], + 'DescribeLiveCenterTransfer' => [ + 'summary' => 'Queries the live center stream relay configuration by calling DescribeLiveCenterTransfer.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -24101,436 +19719,294 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => '* The accelerated domain name. You can specify only one domain name. If you specify multiple domain names, an error occurs.'."\n" - .'* If you do not specify the AppName and StreamName parameters, data of all streams under the specified domain name is returned. The data is not aggregated.'."\n" - .'* If you specify the DomainName parameter and set both the AppName and StreamName parameters to all, data of all streams in all applications under the specified domain name is aggregated and returned.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2022-09-10T20:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time, and the maximum time range that can be specified is one day. Specify the time in the ISO 8601 standard'."\n" - ."\n" - .'in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2022-09-10T21:00:00Z', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The stream-level data of this application is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'app', - ], + 'schema' => ['description' => 'The name of the live stream application. The AppName you enter must match the AppName of the live stream to be relayed for the configuration to take effect. You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'testapp', 'title' => ''], ], [ 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. The data of the stream in the specified application is returned. If the StreamName parameter is specified, the AppName parameter must also be specified.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'test', - ], + 'schema' => ['description' => 'The name of the live stream. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'teststream', 'title' => ''], ], [ - 'name' => 'NextPageToken', + 'name' => 'DstUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'A pagination token. When you call this operation, up to 5,000 rows of data can be returned per query. If the number of rows exceeds 5,000, the response includes a pagination token that is used in the next request to retrieve a new page of results.'."\n" - ."\n" - .'When you specify the token in the next query, data continues to be obtained from the end of the previous query.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', - ], + 'schema' => ['description' => 'The third-party live streaming URL to which the stream is relayed.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://push.example2.aliyunlive.com/testapp1/teststream2', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'EndTime' => [ - 'description' => 'The end of the time range that was queried. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2022-09-10T21:00:00Z', - ], - 'NextPageToken' => [ - 'description' => 'A pagination token. When you call this operation, up to 5,000 rows of data can be returned per query. If the number of rows exceeds 5,000, the response includes a pagination token that is used in the next request to retrieve a new page of results.'."\n" - ."\n" - .'When you specify the token in the next query, data continues to be obtained from the end of the previous query.'."\n", - 'type' => 'string', - 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', - ], - 'PageSize' => [ - 'description' => 'The number of rows returned.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5000', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5EBF2AC3-4B73-40A5-8B32-83F49D5F035E', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range that was queried. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2022-09-10T20:00:00Z', - ], - 'StreamDetailData' => [ + 'LiveCenterTransferInfoList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'StreamData' => [ - 'description' => 'The data array returned.'."\n", + 'LiveCenterTransferInfo' => [ + 'description' => 'The list of live stream relay services.', 'type' => 'array', 'items' => [ - 'description' => 'The data array returned.'."\n", + 'description' => 'The list of live stream relay services.', 'type' => 'object', 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'app', - ], - 'ReqBps' => [ - 'description' => 'The total bandwidth consumed by the stream per minute. Unit: bit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '423304182', - ], - 'ReqTraffic' => [ - 'description' => 'The total amount of traffic consumed by the stream per minute. Unit: bytes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '423304182.66', - ], - 'StreamName' => [ - 'description' => 'The name of the stream.'."\n", - 'type' => 'string', - 'example' => 'test.flv', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2022-09-10T20:00:00Z', - ], + 'AppName' => ['description' => 'The name of the live stream application.', 'type' => 'string', 'example' => 'teststream', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'DstUrl' => ['description' => 'The third-party live streaming URL to which the stream is relayed.', 'type' => 'string', 'example' => 'rtmp://push.example2.aliyunlive.com/testapp1/teststream2', 'title' => ''], + 'EndTime' => ['description' => 'The end time of the stream relay. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC+0.', 'type' => 'string', 'example' => '2022-04-29T15:16:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time of the stream relay. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC+0.', 'type' => 'string', 'example' => '2022-04-28T15:16:00Z', 'title' => ''], + 'StreamName' => ['description' => 'The name of the live stream.', 'type' => 'string', 'example' => 'teststream', 'title' => ''], + 'TransferArgs' => ['description' => 'The validity period of the stream relay. Valid values:'."\n" + ."\n" + .'- **always**: permanently effective.'."\n" + ."\n" + .'- **time**: effective within the specified time range.', 'type' => 'string', 'example' => 'time', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'C4865B85-664B-19D3-BB16-C62FB83C8226', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified StartTime or EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidPageToken', - 'errorMessage' => 'The token of page is invalid.', - ], - [ - 'errorCode' => 'InvalidAppName.Mismatch', - 'errorMessage' => 'The AppName param must be passed.', - ], - [ - 'errorCode' => 'InvalidStreamProtocol.NotSupport', - 'errorMessage' => 'The specified stream protocol is not support.', - ], - [ - 'errorCode' => 'InvalidStreamName.LengthTooLong', - 'errorMessage' => 'The specified stream name is too long.', - ], - [ - 'errorCode' => 'InvalidAppName.LengthTooLong', - 'errorMessage' => 'The specified app name is too long.', - ], - [ - 'errorCode' => 'InvalidTime.ValueNotSupported', - 'errorMessage' => 'Specified Time is malformed.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2022-09-10T21:00:00Z\\",\\n \\"NextPageToken\\": \\"UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\",\\n \\"PageSize\\": 5000,\\n \\"RequestId\\": \\"5EBF2AC3-4B73-40A5-8B32-83F49D5F035E\\",\\n \\"StartTime\\": \\"2022-09-10T20:00:00Z\\",\\n \\"StreamDetailData\\": {\\n \\"StreamData\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"ReqBps\\": 133.33,\\n \\"ReqTraffic\\": 1000,\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"TimeStamp\\": \\"2022-09-10T20:00:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n example.com\\n 2022-09-10T21:00:00Z\\n UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\n 5000\\n 5EBF2AC3-4B73-40A5-8B32-83F49D5F035E\\n 2022-09-10T20:00:00Z\\n \\n liveApp****\\n 133.33\\n 1000\\n liveStream****\\n 2022-09-10T20:00:00Z\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamPushMetricDetailData', - 'description' => '* You can query data of a single domain name in each request. If you specify multiple domain names, an error is returned.'."\n" - .'* The maximum time range to query is 24 hours.'."\n" - .'* The minimum data granularity to query is 1 minute.'."\n" - .'* You can query data in the last 31 days.'."\n" - .'* This operation is used to monitor data. The data returned by this operation cannot be used as a reference to calculate resource usage for billing.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveDomainPublishErrorCode' => [ - 'summary' => 'Queries the HTTP status codes that are returned within a specified period of time under an ingest domain.', - 'methods' => [ - 'get', - 'post', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LiveCenterTransferInfoList\\": {\\n \\"LiveCenterTransferInfo\\": [\\n {\\n \\"AppName\\": \\"teststream\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DstUrl\\": \\"rtmp://push.example2.aliyunlive.com/testapp1/teststream2\\",\\n \\"EndTime\\": \\"2022-04-29T15:16:00Z\\",\\n \\"StartTime\\": \\"2022-04-28T15:16:00Z\\",\\n \\"StreamName\\": \\"teststream\\",\\n \\"TransferArgs\\": \\"time\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"C4865B85-664B-19D3-BB16-C62FB83C8226\\"\\n}","type":"json"}]', + 'title' => 'Query live center stream relay', + 'description' => 'The queries per second (QPS) limit for a single user on this operation is 100. Requests that exceed this limit are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveCenterTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLiveCertificateDetail' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '204356', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'CertName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The name of the certificate.', 'type' => 'string', 'required' => true, 'example' => 'Cert-****', 'title' => ''], ], - [ - 'name' => 'DomainName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The ingest domain. If you want to specify multiple ingest domains, separate them with commas (,).'."\n" - ."\n" - .'> This parameter is required.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com,example.aliyundoc.com', + 'type' => 'object', + 'properties' => [ + 'CertName' => ['description' => 'The name of the certificate.', 'type' => 'string', 'example' => 'Cert-****', 'title' => ''], + 'Cert' => ['description' => 'The content of the certificate.', 'type' => 'string', 'example' => '-----BEGIN CERTIFICATE-----****-----END CERTIFICATE-----', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'C7C69682-7F88-40DD-A198-10D0309E439B', 'title' => ''], + 'CertId' => ['description' => 'The ID of the certificate.', 'type' => 'integer', 'format' => 'int64', 'example' => '23451111', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 404 => [ + ['errorCode' => 'CertNameNotFound', 'errorMessage' => 'The cert name is not found.', 'description' => 'The certificate name does not exist.'], + ], + ], + 'title' => 'DescribeLiveCertificateDetail', + 'summary' => 'Queries the details of a certificate.', + 'description' => 'Before you call this operation, get the certificate name from the [Certificates](~~2584962~~) page in the ApsaraVideo Live console.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. For more information, see [](t2136805.xdita#).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveCertificateDetail'], + ], + ], + 'ramActions' => [ [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application name. The data is aggregated based on the application. If you specify this parameter, the DomainName parameter is required.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'AppName', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveCertificateDetail', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CertName\\": \\"Cert-****\\",\\n \\"Cert\\": \\"-----BEGIN CERTIFICATE-----****-----END CERTIFICATE-----\\",\\n \\"RequestId\\": \\"C7C69682-7F88-40DD-A198-10D0309E439B\\",\\n \\"CertId\\": 23451111\\n}","type":"json"}]', + ], + 'DescribeLiveCertificateList' => [ + 'summary' => 'Queries the certificates of one or more specified domain names or all certificates within your Alibaba Cloud account.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> If you do not configure StartTime, the data within the previous hour is queried.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T09:00:00Z', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'EndTime', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The end time. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> If you do not configure StartTime, the data within the previous hour is queried.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T09:10:00Z', - ], + 'schema' => ['description' => 'The ingest domain or streaming domain. Separate multiple domain names with commas (,).', 'type' => 'string', 'required' => false, 'example' => 'demo.aliyundoc.com,example.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'DataInterval' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Default value: 60.'."\n", - 'type' => 'string', - 'example' => '60', - ], - 'DomainName' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'example' => 'example.com,example.aliyundoc.com', - ], - 'EndTime' => [ - 'description' => 'The end of the time range during which data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-06-29T09:10:00Z', - ], - 'RealTimeCodeData' => [ - 'description' => 'The proportions of error codes at each time interval.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The proportion of the error code at each time interval.'."\n", - 'type' => 'object', - 'properties' => [ - 'CodeData' => [ - 'description' => 'The proportions of error codes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The proportion of the error code.'."\n", - 'type' => 'object', - 'properties' => [ - 'Code' => [ - 'description' => 'The response code. Valid values:'."\n" - ."\n" - .'* 3: The data read timed out.'."\n" - .'* 4: A data write error occurred.'."\n" - .'* 6: The data write timed out.'."\n" - .'* 200: The request is successful.'."\n" - .'* 500: An unknown internal error occurred.'."\n" - .'* 501: The stream ingest failed.'."\n" - .'* 502: The signaling operation timed out.'."\n" - .'* 401: A stream ingest parameter is invalid.'."\n" - .'* 403: The stream ingest authentication failed.'."\n", - 'type' => 'string', - 'example' => '200', - ], - 'Count' => [ - 'description' => 'The number of times the HTTP status code was returned.'."\n", - 'type' => 'string', - 'example' => '20', - ], - 'Proportion' => [ - 'description' => 'The proportion of the HTTP status code.'."\n", - 'type' => 'string', - 'example' => '66.04', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'CertificateListModel' => [ + 'description' => 'The details.', + 'type' => 'object', + 'properties' => [ + 'Count' => ['description' => 'The number of certificates.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'CertList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Cert' => [ + 'description' => 'The certificates.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the certificate.', + 'type' => 'object', + 'properties' => [ + 'LastTime' => ['description' => 'The time when the certificate was issued. Unit: seconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1512388659', 'title' => ''], + 'Fingerprint' => ['description' => 'The fingerprint of the certificate.', 'type' => 'string', 'example' => '****', 'title' => ''], + 'CertName' => ['description' => 'The name of the certificate.', 'type' => 'string', 'example' => 'Cert-****', 'title' => ''], + 'Issuer' => ['description' => 'The certificate authority (CA) that issued the certificate.', 'type' => 'string', 'example' => '*****', 'title' => ''], + 'CertId' => ['description' => 'The ID of the certificate.', 'type' => 'integer', 'format' => 'int64', 'example' => '123456', 'title' => ''], + 'Common' => ['description' => 'The Common Name (CN) attribute of the certificate.', 'type' => 'string', 'example' => 'example.net', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2016-06-29T09:01:00Z', - ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-06-29T09:00:00Z', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DataInterval\\": \\"60\\",\\n \\"DomainName\\": \\"example1.aliyundoc.com,example2.aliyundoc.com\\",\\n \\"EndTime\\": \\"2016-06-29T09:10:00Z\\",\\n \\"RealTimeCodeData\\": [\\n {\\n \\"CodeData\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Count\\": \\"20\\",\\n \\"Proportion\\": \\"66.04\\"\\n }\\n ],\\n \\"TimeStamp\\": \\"2016-06-29T09:01:00Z\\"\\n }\\n ],\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C******\\",\\n \\"StartTime\\": \\"2016-06-29T09:00:00Z\\"\\n}","errorExample":""},{"type":"xml","example":"\\n BC858082-736F-4A25-867B-E5B67C85ACF7\\n 60\\n example.com,example.aliyundoc.com\\n 2016-06-29T09:00:00Z\\n 2016-06-29T09:10:00Z\\n \\n 2016-06-29T09:01:00Z\\n \\n 200\\n 20\\n 66.04\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainPublishErrorCode', - 'description' => '* This operation is used to monitor data. The returned data cannot be used as a reference to calculate resource usage for billing.'."\n" - .'* You can query data within the previous 90 days.'."\n" - .'* The data is delayed for 3 to 5 minutes.'."\n" + 'errorCodes' => [], + 'title' => 'DescribeLiveCertificateList', + 'description' => 'If you specify one or more domain names in the request, the certificates of the domain names are returned. If you do not specify a domain name in the request, all certificates within your Alibaba Cloud account are returned.'."\n" ."\n" - .'## [](#qps-)QPS limits'."\n" + .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this API operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => 'You can specify both the StartTime and EndTime parameters to query the data in the specified period of time. If you do not specify the StartTime and EndTime parameters, the data of the last hour is queried by default.'."\n", - 'responseParamsDescription' => '|Error code|HTTP status code|Description|'."\n" - .'|:---|:---|:---|'."\n" - .'|NGX\\_RTMP\\_EF\\_READ\\_TIMEDOUT 3|3|A timeout occurred while reading the data.|'."\n" - .'|NGX\\_RTMP\\_EF\\_WRITE\\_ERROR 4|4|An error occurred while writing the data.|'."\n" - .'|NGX\\_RTMP\\_EF\\_WRITE\\_TIMEDOUT 6|6|A timeout occurred while writing the data.|'."\n" - .'|NGX\\_RTMP\\_EF\\_NETCALL\\_INTERNAL\\_ERROR 500|500|An unknown internal system error occurred.|'."\n" - .'|NGX\\_RTMP\\_EF\\_NETCALL\\_EXCEPTION 501|501|A stream ingest exception occurred.|'."\n" - .'|NGX\\_RTMP\\_EF\\_NETCALL\\_TOO\\_LONG 502|502|The signaling took too long.|'."\n" - .'|NGX\\_RTMP\\_EF\\_NETCALL\\_UNAUTHORIZED 401|401|Abnormal stream ingest parameters exist.|'."\n" - .'|NGX\\_RTMP\\_EF\\_NETCALL\\_FORBIDDEN 403|403|Failed to authenticate the ingested stream.|', - ], - 'DescribeLiveUpVideoAudioInfo' => [ - 'summary' => 'Queries the audio and video data of an ingested stream within a specific period of time.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveCertificateList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveCertificateList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"CertificateListModel\\": {\\n \\"Count\\": 2,\\n \\"CertList\\": {\\n \\"Cert\\": [\\n {\\n \\"LastTime\\": 1512388659,\\n \\"Fingerprint\\": \\"****\\",\\n \\"CertName\\": \\"Cert-****\\",\\n \\"Issuer\\": \\"*****\\",\\n \\"CertId\\": 123456,\\n \\"Common\\": \\"example.net\\"\\n }\\n ]\\n }\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDelayConfig' => [ + 'summary' => 'Calls DescribeLiveDelayConfig to query the stream delay configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -24541,519 +20017,84 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107116', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveBP94ZY'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'Stream', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The operation that you want to perform. Set the value to **DescribeLiveUpVideoAudioInfo**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://example.com/AppName/StreamName', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'example.com'], ], [ - 'name' => 'StartTime', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the stream that you want to query. Specify this parameter in the following format: `rtmp://Ingest domain/Application name/Stream name`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-10T15:00:00Z', - ], + 'schema' => ['description' => 'The application name. You can use a wildcard character (\\*) to represent all applications under the domain name.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'liveApp****'], ], [ - 'name' => 'EndTime', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-10T15:10:00Z ', - ], + 'schema' => ['description' => 'The stream name. You can use a wildcard character (\\*) to represent all streams under the application.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'liveStream****'], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7', - ], - 'UpItems' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'PublishItem' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'AacHeaders' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AacHeaders' => [ - 'description' => 'The details about the audio and video data of the stream ingest occurrences.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The number of AAC headers in the audio.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The number of AAC headers in the audio.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - ], - ], - ], - ], - ], - 'AppName' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'string', - 'example' => 'AppName', - ], - 'AudioBitRate' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AudioBitRate' => [ - 'description' => 'The name of the application to which the ingested stream belongs.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The bitrate of the audio. Unit: bit/s.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The bitrate of the audio. Unit: bit/s.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '24552', - ], - ], - ], - ], - ], - ], - 'AudioFrames' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AudioFrames' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'array', - 'items' => [ - 'description' => 'The frame rate of the audio. Unit: frames.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The frame rate of the audio. Unit: frames.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '23', - ], - ], - ], - ], - ], - ], - 'AudioInterval' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AudioInterval' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The maximum audio frame interval. Unit: milliseconds.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The maximum audio frame interval. Unit: milliseconds.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '254', - ], - ], - ], - ], - ], - ], - 'AudioStamps' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AudioStamps' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'array', - 'items' => [ - 'description' => 'The audio timestamp. Unit: milliseconds.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The audio timestamp. Unit: milliseconds.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '725053422', - ], - ], - ], - ], - ], - ], - 'AvcHeaders' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'AvcHeaders' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'array', - 'items' => [ - 'description' => 'The number of AVC headers in the audio.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The number of AVC headers in the audio.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '11', - ], - ], - ], - ], - ], - ], - 'CodecInfo' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'string', - 'example' => 'H264/AAC', - ], - 'DomainName' => [ - 'description' => 'The audio and video encoding information.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'ErrorFlags' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'ErrorFlags' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The number of times the error code that indicates interrupted stream ingest was returned.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The number of times the error code that indicates interrupted stream ingest was returned.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - ], - ], - ], - ], - ], - 'PublishInterval' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'string', - 'example' => '-', - ], - 'PublishIp' => [ - 'description' => 'The stream ingest duration. Unit: seconds. A hyphen (-) indicates that the stream is being ingested and the duration cannot be returned.'."\n", - 'type' => 'string', - 'example' => 'cn397', - ], - 'PublishStatus' => [ - 'description' => 'The IP address of the stream ingest client.'."\n", - 'type' => 'string', - 'example' => '1', - ], - 'PublishTime' => [ - 'description' => 'The stream ingest status. A value of 1 indicates that the stream is being ingested. A value of 0 indicates that the stream was ingested.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T15:00:00Z', - ], - 'StopTime' => [ - 'description' => 'The start time of stream ingest. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T15:10:00Z', - ], - 'StreamName' => [ - 'description' => 'The end time of stream ingest. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => 'StreamName', - ], - 'UniqueId' => [ - 'description' => 'The name of the stream.'."\n", - 'type' => 'string', - 'example' => '2.-395_37261_9848098_1538080899396', - ], - 'VideoAndAudioStamp' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'V_AStamp' => [ - 'description' => 'The unique ID of each stream ingest occurrence.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The difference between the audio and video timestamps. Unit: milliseconds.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The difference between the audio and video timestamps. Unit: milliseconds.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '359', - ], - ], - ], - ], - ], - ], - 'VideoBitRate' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'VideoBitRate' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'array', - 'items' => [ - 'description' => 'The bitrate of the video. Unit: bit/s.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The bitrate of the video. Unit: bit/s.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3970160', - ], - ], - ], - ], - ], - ], - 'VideoFrames' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'VideoFrames' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The frame rate of the video. Unit: frames.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '29', - ], - ], - ], - ], - ], - ], - 'VideoInterval' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'VideoInterval' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The maximum video frame interval. Unit: milliseconds.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The maximum video frame interval. Unit: milliseconds.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '278', - ], - ], - ], - ], - ], - ], - 'VideoStamps' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'VideoStamps' => [ - 'description' => 'The metric value at a granularity of seconds at the query time.', - 'type' => 'array', - 'items' => [ - 'description' => 'The video timestamp. Unit: milliseconds.', - 'type' => 'object', - 'properties' => [ - 'Time' => [ - 'description' => 'The video timestamp. Unit: milliseconds.', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1538134750408', - ], - 'Value' => [ - 'description' => 'The query time. The value is a UNIX timestamp in milliseconds.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '725053781', - ], - ], - ], - ], - ], - ], - ], - ], - ], - ], - ], + 'App' => ['description' => 'The application name.', 'type' => 'string', 'title' => '', 'example' => 'liveApp****'], + 'DelayTime' => ['description' => 'The playback latency of the stream.', 'type' => 'string', 'title' => '', 'example' => '60'], + 'Domain' => ['description' => 'The streaming domain.', 'type' => 'string', 'title' => '', 'example' => 'example.com'], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => 'A3136B58-5876-4168-83CA-B562781981A0'], + 'Stream' => ['description' => 'The stream name.', 'type' => 'string', 'title' => '', 'example' => 'liveStream****'], + 'TaskTriggerMode' => ['description' => 'The trigger mode for the task. Valid values:'."\n" + ."\n" + .'- **PUBLISH\\_ONLY**: The task is triggered only when stream ingest parameters for delayed playback are specified.'."\n" + .'- **CONFIG\\_ONLY**: The task is triggered only by the configuration. Stream ingest parameters are ignored.'."\n" + .'- **PUBLISH\\_CONFIG**: The task can be triggered by both stream ingest parameters and the configuration. Stream ingest parameters have a higher priority than the configuration.', 'type' => 'string', 'title' => '', 'example' => 'PUBLISH_ONLY'], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 200 => [ - [ - 'errorCode' => 'InvalidDuration.ExceedOneDay', - 'errorMessage' => 'StartTime and EndTime Duration Exceeds One Day', - ], - [ - 'errorCode' => 'InvalidDuration.StratTimeBiggerEndTime', - 'errorMessage' => 'StartTime Bigger Than EndTime', - ], - ], 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter Stream invalid.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'Invalid parameter:%s.'], + ], + ], + 'title' => 'DescribeLiveDelayConfig', + 'description' => 'The number of queries per second (QPS) for this operation is limited to 60 per user. Calls that exceed this limit are throttled. This may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDelayConfig'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\",\\n \\"UpItems\\": {\\n \\"PublishItem\\": [\\n {\\n \\"AacHeaders\\": {\\n \\"AacHeaders\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 20\\n }\\n ]\\n },\\n \\"AppName\\": \\"AppName\\",\\n \\"AudioBitRate\\": {\\n \\"AudioBitRate\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 24552\\n }\\n ]\\n },\\n \\"AudioFrames\\": {\\n \\"AudioFrames\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 23\\n }\\n ]\\n },\\n \\"AudioInterval\\": {\\n \\"AudioInterval\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 254\\n }\\n ]\\n },\\n \\"AudioStamps\\": {\\n \\"AudioStamps\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 725053422\\n }\\n ]\\n },\\n \\"AvcHeaders\\": {\\n \\"AvcHeaders\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 11\\n }\\n ]\\n },\\n \\"CodecInfo\\": \\"H264/AAC\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"ErrorFlags\\": {\\n \\"ErrorFlags\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 0\\n }\\n ]\\n },\\n \\"PublishInterval\\": \\"-\\",\\n \\"PublishIp\\": \\"cn397\\",\\n \\"PublishStatus\\": \\"1\\",\\n \\"PublishTime\\": \\"2015-12-10T15:00:00Z\\",\\n \\"StopTime\\": \\"2015-12-10T15:10:00Z\\",\\n \\"StreamName\\": \\"StreamName\\",\\n \\"UniqueId\\": \\"2.-395_37261_9848098_1538080899396\\",\\n \\"VideoAndAudioStamp\\": {\\n \\"V_AStamp\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 359\\n }\\n ]\\n },\\n \\"VideoBitRate\\": {\\n \\"VideoBitRate\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 3970160\\n }\\n ]\\n },\\n \\"VideoFrames\\": {\\n \\"VideoFrames\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 29\\n }\\n ]\\n },\\n \\"VideoInterval\\": {\\n \\"VideoInterval\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 278\\n }\\n ]\\n },\\n \\"VideoStamps\\": {\\n \\"VideoStamps\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 725053781\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n BC858082-736F-4A25-867B-E5B67C85ACF7\\n \\n 2015-12-10T15:00:00Z\\n AppName\\n H264/AAC\\n cn397\\n StreamName\\n 1\\n 2.-395_37261_9848098_1538080899396\\n -\\n 2015-12-10T15:10:00Z\\n example.com\\n \\n 29\\n \\n \\n \\n 23\\n \\n \\n \\n 725053781\\n \\n \\n \\n 725053422\\n \\n \\n \\n 359\\n \\n \\n \\n 11\\n \\n \\n \\n 20\\n \\n \\n \\n 3970160\\n \\n \\n \\n 24552\\n \\n \\n \\n 278\\n \\n \\n \\n 254\\n \\n \\n \\n 0\\n \\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveUpVideoAudioInfo', - 'description' => '### Usage notes'."\n" - .'- The maximum time range for a query is 24 hours. '."\n" - .'- The minimum time range for a query is 1 hour. '."\n" - .'- You can query data in the last 31 days. '."\n" - .'### QPS limit'."\n" - .'You can call this operation up to 10 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"App\\": \\"liveApp****\\",\\n \\"DelayTime\\": \\"60\\",\\n \\"Domain\\": \\"example.com\\",\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"Stream\\": \\"liveStream****\\",\\n \\"TaskTriggerMode\\": \\"PUBLISH_ONLY\\"\\n}","type":"json"}]', ], - 'DescribeLiveDomainRealTimeBpsData' => [ - 'summary' => 'Queries the bandwidth data that is collected every minute for one or more domain names.', - 'methods' => [ - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveDelayedStreamingUsage' => [ + 'summary' => 'Calls DescribeLiveDelayedStreamingUsage to query delayed streaming duration usage data.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -25064,180 +20105,240 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107032', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain name or names.'."\n" - ."\n" - .'Separate multiple domain names with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com,example.aliyundoc.com', - ], + 'schema' => ['description' => 'The streaming domain name to query.'."\n" + .'- You can specify a single domain name or multiple domain names. Separate multiple domain names with commas (,).'."\n" + .'- If this parameter is left empty, the aggregated data of all live streaming domain names is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'IspNameEn', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Internet service provider (ISP).'."\n" - ."\n" - .'To query ISPs, call the [DescribeCdnRegionAndIsp](~~91077~~) operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'alibaba', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC. By default, data of the last seven days is returned.', 'type' => 'string', 'required' => false, 'example' => '2022-10-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'LocationNameEn', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the region in which you want to query data.'."\n" - ."\n" - .'To query regions, call the [DescribeCdnRegionAndIsp](~~91077~~) operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tianjin', - ], + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time. The time span cannot exceed 10 hours. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2022-10-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-11-30T05:39:00Z', - ], + 'schema' => ['description' => 'The stream name. Separate multiple stream names with commas (,). By default, the data of all stream names is aggregated.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'Region', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> If you do not set this parameter, the data of the hour following the specified start time is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-11-30T05:40:00Z', - ], + 'schema' => ['description' => 'The live center to query. You can specify multiple regions. Separate multiple regions with commas (,). Valid values:'."\n" + .'- cn-beijing: Beijing'."\n" + .'- cn-shanghai: Shanghai'."\n" + .'- cn-shenzhen: Shenzhen'."\n" + .'- cn-qingdao: Qingdao'."\n" + .'- ap-southeast-1: Singapore'."\n" + .'- eu-central-1: Germany'."\n" + .'- ap-northeast-1: Tokyo'."\n" + .'- ap-southeast-5: Jakarta'."\n" + ."\n" + .'If this parameter is left empty, the aggregated data of all regions is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'SplitBy', + 'in' => 'query', + 'schema' => ['description' => 'The grouping key. If this parameter is left empty, user data is aggregated. Valid values:'."\n" + .'- domain: domain name. If the SplitBy (grouping key) parameter is set to domain, the Domain response parameter takes effect.'."\n" + .'- region: live center region. If the SplitBy (grouping key) parameter is set to region, the Region response parameter takes effect.'."\n" + .'- stream: stream name. If the SplitBy (grouping key) parameter is set to stream, the stream response parameter takes effect.'."\n" + ."\n" + .'> You can query data only when the parameter corresponding to the grouping key is not empty. Otherwise, an error is returned. For example, when DomainName is empty, you cannot specify domain as the grouping key.', 'type' => 'string', 'required' => false, 'example' => 'domain', 'title' => ''], + ], + [ + 'name' => 'Interval', + 'in' => 'query', + 'schema' => ['description' => 'The time granularity of the queried data. Unit: seconds. Valid values:'."\n" + .'- 300'."\n" + .'- 3600'."\n" + .'- 86400'."\n" + ."\n" + .'If this parameter is left empty or set to an unsupported value, the default value 3600 is used.', 'type' => 'string', 'required' => false, 'example' => '3600', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range in which data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-11-30T05:40:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range in which data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-11-30T05:33:00Z', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7', - ], - 'DomainName' => [ - 'description' => 'The streaming domain name or names that was queried.'."\n", - 'type' => 'string', - 'example' => 'example.com,example.aliyundoc.com', - ], - 'DataInterval' => [ - 'description' => 'The interval at which data was queried.'."\n", - 'type' => 'string', - 'example' => '60', - ], - 'RealTimeBpsDataPerInterval' => [ + 'DelayData' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'DataModule' => [ - 'description' => 'The bandwidth data that was collected every minute.'."\n", + 'DelayDataItem' => [ + 'description' => 'The delayed streaming duration usage data.', 'type' => 'array', 'items' => [ - 'description' => '', + 'description' => 'The delayed streaming duration usage data.', 'type' => 'object', 'properties' => [ - 'Value' => [ - 'description' => 'The bandwidth. Unit: bit/s.'."\n", - 'type' => 'string', - 'example' => '59392614.8', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2015-11-30T05:39:00Z', - ], + 'DomainName' => ['description' => 'The domain name for the usage data. This parameter is returned when SplitBy is set to domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Duration' => ['description' => 'The delayed streaming usage.', 'type' => 'integer', 'format' => 'int64', 'example' => '84', 'title' => ''], + 'Region' => ['description' => 'The live center. This parameter is returned when SplitBy is set to region.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'StreamName' => ['description' => 'The stream name. This parameter is returned when SplitBy is set to stream.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'TimeStamp' => ['description' => 'The beginning of the time interval. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2022-10-10T20:00:00Z', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'EndTime' => ['description' => 'The end time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2022-10-10T21:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '4B460F8B-993C-4F48-B98A-91081******', 'title' => ''], + 'StartTime' => ['description' => 'The start time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2022-10-10T20:00:00Z', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified StartTime or EndTime is malformed.', + ['errorCode' => 'InvalidParameter', 'errorMessage' => 'InvalidParameter.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'The specified StartTime parameter is invalid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'The specified EndTime is invalid.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The StartTime cannot exceed 31 days before the current time.', 'description' => ''], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'Invalid time. Check whether the time that you specified is correct.'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The live service is not enabled. Please check and try again.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DelayData\\": {\\n \\"DelayDataItem\\": [\\n {\\n \\"DomainName\\": \\"example.com\\",\\n \\"Duration\\": 84,\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"TimeStamp\\": \\"2022-10-10T20:00:00Z\\"\\n }\\n ]\\n },\\n \\"EndTime\\": \\"2022-10-10T21:00:00Z\\",\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-91081******\\",\\n \\"StartTime\\": \\"2022-10-10T20:00:00Z\\"\\n}","type":"json"}]', + 'title' => 'Query delayed streaming duration data', + 'description' => '- Queries user delayed streaming service usage data. The default granularity is 1 hour.'."\n" + .'- Maximum query time span: 31 days.'."\n" + .'- Minimum query time granularity: 1 hour.'."\n" + .'- Maximum query time range: 31 days.'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this API is 5 queries per second. If the limit is exceeded, API calls are throttled, which may affect your business. We recommend that you call this API at a reasonable frequency.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDelayedStreamingUsage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], - [ - 'errorCode' => 'InvalidDomainName.Malformed', - 'errorMessage' => 'Specified domain name is malformed.', + ], + ], + ], + 'DescribeLiveDetectNotifyConfig' => [ + 'summary' => 'Queries the configuration of callbacks for video moderation results.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], + ], + 'parameters' => [ + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E6******', 'title' => ''], + 'LiveDetectNotifyConfig' => [ + 'description' => 'The callback configuration.', + 'type' => 'object', + 'properties' => [ + 'DomainName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'NotifyUrl' => ['description' => 'The callback URL.', 'type' => 'string', 'example' => 'http://aliyundoc.com', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], + 'errorCodes' => [ + 404 => [ + ['errorCode' => 'InvalidConfig.NotFound', 'errorMessage' => 'Config does not exist.', 'description' => ''], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2015-11-30T05:40:00Z\\",\\n \\"StartTime\\": \\"2015-11-30T05:33:00Z\\",\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B6******\\",\\n \\"DomainName\\": \\"example1.aliyundoc.com,example2.aliyundoc.com\\",\\n \\"DataInterval\\": \\"60\\",\\n \\"RealTimeBpsDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"Value\\": \\"59392614.8\\",\\n \\"TimeStamp\\": \\"2015-11-30T05:39:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n2015-11-30T05:40:00Z\\nBC858082-736F-4A25-867B-E5B67C85ACF7\\nexample.com,example.aliyundoc.com\\n60\\n2015-11-30T05:33:00Z\\n\\n \\n 59392614.8\\n 2015-11-30T05:39:00Z\\n \\n\\n","errorExample":"{\\n \\"RealTimeBpsDataPerInterval\\":{\\n \\"DataModule\\":[\\n {\\n \\"TimeStamp\\":\\"2018-01-02T11:05:00Z\\",\\n \\"Value\\":16710625.733333332\\n },\\n {\\n \\"TimeStamp\\":\\"2018-01-02T11:04:00Z\\",\\n \\"Value\\":59392614.8\\n }\\n ]\\n },\\n \\"RequestId\\":\\"B49E6DDA-F413-422B-B58E-2FA23F286726\\"\\n}"}]', - 'title' => 'DescribeLiveDomainRealTimeBpsData', - 'description' => '* You can call this operation to query the bandwidth usage of one or more specified domain names.'."\n" - .'* You can query data in the last seven days. The time range that is specified by the StartTime and EndTime parameters cannot exceed 24 hours for a query.'."\n" - .'* If you specify neither the StartTime parameter nor the EndTime parameter, the data of the last hour is returned.'."\n" - .'* This operation is used to monitor data. The data returned by this operation cannot be used as a reference to calculate resource usage for billing.'."\n" + 'title' => 'DescribeLiveDetectNotifyConfig', + 'description' => '- Obtain the main streaming domain, and then call this operation to query the configuration of callbacks for video moderation results.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- Only some live centers support the automated review feature. For more information, see [Supported regions](~~193730~~).'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live).', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveDomainRealTimeTrafficData' => [ - 'summary' => 'Queries the network traffic data that is collected in real time for one or more domain names.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDetectNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDetectNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E6******\\",\\n \\"LiveDetectNotifyConfig\\": {\\n \\"DomainName\\": \\"example.com\\",\\n \\"NotifyUrl\\": \\"http://aliyundoc.com\\"\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDetectPornData' => [ + 'summary' => 'You can call the DescribeLiveDetectPornData operation to query usage data for live stream moderation.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -25248,78 +20349,82 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107036', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n" - ."\n" - .'Separate multiple streaming domains with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com,example.aliyundoc.com', - ], + 'schema' => ['description' => 'The streaming domain to query.'."\n" + ."\n" + .'- You can query one or more domain names. To query multiple domain names, separate them with commas (,).'."\n" + ."\n" + .'- If you do not specify this parameter, the service returns the merged data for all streaming domains.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> If you do not specify this parameter, the data of the last hour is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-10T15:00:00Z', - ], + 'schema' => ['description' => 'The start of the time range to query. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" + ."\n" + .'> - You can query data from the last 90 days.'."\n" + ."\n" + .'- The minimum data granularity is 5 minutes. If you leave this parameter empty, the service queries data from the last 24 hours by default.', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T08:00:00Z', 'title' => ''], ], [ - 'name' => 'IspNameEn', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the ISP.'."\n" - ."\n" - .'You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available ISPs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'alibaba', - ], + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T09:00:00Z', 'title' => ''], ], [ - 'name' => 'LocationNameEn', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the region.'."\n" - ."\n" - .'You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to query a list of available regions.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tianjin', - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-10T15:01:00Z', - ], + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'Fee', + 'in' => 'query', + 'schema' => ['description' => 'You have a daily free quota for image scans. Valid values:'."\n" + ."\n" + .'- **free**'."\n" + ."\n" + .'- **charge**', 'type' => 'string', 'required' => false, 'example' => 'free', 'title' => ''], + ], + [ + 'name' => 'Scene', + 'in' => 'query', + 'schema' => ['description' => 'The detection scenario. Valid values:'."\n" + ."\n" + .'- **porn** (default): pornography detection.'."\n" + ."\n" + .'- **terrorism**: terrorism and political content detection.'."\n" + ."\n" + .'- **ad**: ad and text violation detection.'."\n" + ."\n" + .'- **live**: undesirable live streaming scenario detection.'."\n" + ."\n" + .'- **logo**: logo detection.', 'type' => 'string', 'required' => false, 'example' => 'porn', 'title' => ''], + ], + [ + 'name' => 'Region', + 'in' => 'query', + 'schema' => ['description' => 'The region where the domain name is located.', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'SplitBy', + 'in' => 'query', + 'schema' => ['description' => 'The list of grouping fields. Separate multiple fields with commas (,).'."\n" + ."\n" + .'> If you leave this parameter empty, the service returns only TimeStamp and Count.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****,liveStream****', 'title' => ''], ], ], 'responses' => [ @@ -25327,122 +20432,108 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T15:01:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T15:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A666D44F-19D6-490E-97CF-1A64AB962C57', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com,example.aliyundoc.com', - ], - 'DataInterval' => [ - 'description' => 'The time interval between the entries returned. Unit: seconds'."\n", - 'type' => 'string', - 'example' => '60', - ], - 'RealTimeTrafficDataPerInterval' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', 'title' => ''], + 'DetectPornData' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'DataModule' => [ - 'description' => 'The traffic that was collected at each interval.'."\n", + 'description' => 'The moderation data for each time interval.', 'type' => 'array', 'items' => [ + 'description' => 'The moderation data for each time interval.', 'type' => 'object', 'properties' => [ - 'Value' => [ - 'description' => 'The traffic. Unit: bytes.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T15:01:00Z', - ], + 'Domain' => ['description' => 'The streaming domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Region' => ['description' => 'The region where the domain name is located.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'App' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'Stream' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time slice. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'example' => '2017-12-10T15:00:05Z', 'title' => ''], + 'Count' => ['description' => 'The number of moderated items.', 'type' => 'integer', 'format' => 'int64', 'example' => '2', 'title' => ''], + 'Scene' => ['description' => 'The detection scenario. Valid values:'."\n" + ."\n" + .'- **porn** (default): pornography detection.'."\n" + ."\n" + .'- **terrorism**: terrorism and political content detection.'."\n" + ."\n" + .'- **ad**: ad and text violation detection.'."\n" + ."\n" + .'- **live**: undesirable live streaming scenario detection.'."\n" + ."\n" + .'- **logo**: logo detection.', 'type' => 'string', 'example' => 'porn', 'title' => ''], + 'Fee' => ['description' => 'You have a daily free quota for image scans. Valid values:'."\n" + ."\n" + .'- **free**'."\n" + ."\n" + .'- **charge**', 'type' => 'string', 'example' => 'free', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => 'StartTime and EndTime can not be single.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'Abs.DomainName.Malformed', - 'errorMessage' => 'The size of DomainName is too big.', - ], - [ - 'errorCode' => 'InvalidInterval.Malformed', - 'errorMessage' => 'Specified Interval is malformed.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2015-12-10T15:01:00Z\\",\\n \\"StartTime\\": \\"2015-12-10T15:00:00Z\\",\\n \\"RequestId\\": \\"A666D44F-19D6-490E-97CF-1A64AB962C57\\",\\n \\"DomainName\\": \\"example.com,example.aliyundoc.com\\",\\n \\"DataInterval\\": \\"60\\",\\n \\"RealTimeTrafficDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"Value\\": \\"0\\",\\n \\"TimeStamp\\": \\"2015-12-10T15:01:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2015-12-10T15:01:00Z\\n 2015-12-10T15:00:00Z\\n A666D44F-19D6-490E-97CF-1A64AB962C57\\n example.com,example.aliyundoc.com\\n 60\\n \\n 0\\n 2015-12-10T15:01:00Z\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainRealTimeTrafficData', - 'description' => '* You can call this operation to query the real-time traffic in a region for an Internet service provider (ISP) within a specified period of time under one or more streaming domains.'."\n" - .'* If you do not specify the StartTime parameter or the EndTime parameter, the data of the last hour is returned. You can specify both the StartTime and EndTime parameters to query the data of a specific time range.'."\n" - .'* This operation is used to monitor data. The data returned by this operation cannot be used as a reference to calculate resource usage for billing.'."\n" - .'* You can query the data in the last 90 days.'."\n" + 'title' => 'DescribeLiveDetectPornData', + 'description' => '- The minimum data granularity is 5 minutes. If the `StartTime` parameter is empty, the service queries data from the last 24 hours by default.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- You can query data from the last 90 days.'."\n" + ."\n" + .'- You can query network bandwidth data for each time interval.'."\n" + ."\n" + .'## QPS limits'."\n" ."\n" - .'This operation does not have a queries per second (QPS) limit on a single user. You can call this operation based on your business requirements.'."\n", + .'The queries per second (QPS) limit for a single user is 10. If you exceed this limit, API calls are throttled. This may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveDomainRealTimeHttpCodeData' => [ - 'summary' => 'Queries the proportions of HTTP status codes returned for one or more domain names. Data is collected every minute.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '## Special error codes'."\n" + ."\n" + .'|Error code|Error message|HTTP status code|Description|'."\n" + .'|---|---|---|---|'."\n" + .'|Throttling|Request was denied due to request throttling.|503|The error message returned because the request was denied due to traffic throttling.|'."\n" + .'|InvalidDomain.NotFound|The domain provided does not belong to you.|404|The error message returned because the specified domain name does not exist or does not belong to the current account.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDetectPornData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"DetectPornData\\": {\\n \\"DataModule\\": [\\n {\\n \\"Domain\\": \\"example.com\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"App\\": \\"liveApp****\\",\\n \\"Stream\\": \\"liveStream****\\",\\n \\"TimeStamp\\": \\"2017-12-10T15:00:05Z\\",\\n \\"Count\\": 2,\\n \\"Scene\\": \\"porn\\",\\n \\"Fee\\": \\"free\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainBpsData' => [ + 'summary' => 'Queries the network bandwidth monitoring data of a live streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -25453,80 +20544,52 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107034', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '107009', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n" - ."\n" - .'Separate multiple domain names with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com,example.aliyundoc.com', - ], + 'schema' => ['description' => 'The streaming domain. You can specify a single domain name or multiple domain names. Separate multiple domain names with commas (,).'."\n" + .'If this parameter is left empty, the merged data of all live streaming domains is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> If you specify neither the StartTime parameter nor the EndTime parameter, the data of the last **1** hour is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-11-30T05:39:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T08:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> If you specify neither the StartTime parameter nor the EndTime parameter, the data of the last **1** hour is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-11-30T05:40:00Z', - ], + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T09:00:00Z', 'title' => ''], + ], + [ + 'name' => 'Interval', + 'in' => 'query', + 'schema' => ['description' => 'The time granularity of the queried data. Unit: seconds. Valid values:'."\n" + .'- **300** (default)'."\n" + .'- **3600**'."\n" + .'- **86400**'."\n" + ."\n" + .'> - If this parameter is not specified or set to an unsupported value, the default value **300** is used.'."\n" + .'- When the time granularity is **300**, the returned bps value is the average number of bits transmitted per second within the 300-second interval.'."\n" + .'- When the time granularity is **3600** or **86400**, the returned bps value is the peak value among all 300-second data points within the query period.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], [ 'name' => 'IspNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Internet service provider (ISP).'."\n" - ."\n" - .'You can call the [DescribeCdnRegionAndIsp](~~448109~~) operation to query a list of available ISPs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'alibaba', - ], + 'schema' => ['description' => 'The name of the Internet service provider (ISP) in English. You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain the ISP name.', 'type' => 'string', 'required' => false, 'example' => 'alibaba', 'title' => ''], ], [ 'name' => 'LocationNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the region.'."\n" - ."\n" - .'You can call the [DescribeCdnRegionAndIsp](~~448109~~) operation to query a list of available regions.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'tianjin', - ], + 'schema' => ['description' => 'The name of the region in English. You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain the region name.', 'type' => 'string', 'required' => false, 'example' => 'tianjin', 'title' => ''], ], ], 'responses' => [ @@ -25534,144 +20597,92 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-11-30T05:40:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-11-30T05:33:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com,example.aliyundoc.com', - ], - 'DataInterval' => [ - 'description' => 'The time interval between the entries returned. Unit: seconds Default value: 60.'."\n", - 'type' => 'string', - 'example' => '60', - ], - 'RealTimeHttpCodeData' => [ + 'EndTime' => ['description' => 'The end time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T09:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T08:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'DataInterval' => ['description' => 'The time granularity of the queried data. Unit: seconds.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'BpsDataPerInterval' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'UsageData' => [ - 'description' => 'The proportions of HTTP status codes at each time interval.'."\n", + 'DataModule' => [ + 'description' => 'The network bandwidth data for each time interval.', 'type' => 'array', 'items' => [ + 'description' => 'The network bandwidth data for each time interval.', 'type' => 'object', 'properties' => [ - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2015-11-30T05:39:00Z', - ], - 'Value' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RealTimeCodeProportionData' => [ - 'description' => 'The proportions of HTTP status codes.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Code' => [ - 'description' => 'The HTTP status code.'."\n", - 'type' => 'string', - 'example' => '200', - ], - 'Proportion' => [ - 'description' => 'The proportion of the HTTP status code.'."\n", - 'type' => 'string', - 'example' => '66.046511627907', - ], - 'Count' => [ - 'description' => 'The number of times the HTTP status code was returned.'."\n", - 'type' => 'string', - 'example' => '20', - ], - ], - 'description' => '', - ], - ], - ], - ], + 'BpsValue' => ['description' => 'The bps value. Unit: bit/second.', 'type' => 'string', 'example' => '11288111', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T08:00:05Z', 'title' => ''], + 'HttpsBpsValue' => ['description' => 'The HTTPS bps value. Unit: bit/second.', 'type' => 'string', 'example' => '2000', 'title' => ''], + 'HttpBpsValue' => ['description' => 'The HTTP bps value. Unit: bit/second.', 'type' => 'string', 'example' => '11286111', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingTimeParameter', - 'errorMessage' => 'The StartTime and EndTime must be both specified.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'The specified StartTime is invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'The specified EndTime is invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'The specified EndTime is earlier than the StartTime.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified StartTime is invalid.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], ], 'eventInfo' => [ 'enable' => false, 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2015-11-30T05:40:00Z\\",\\n \\"StartTime\\": \\"2015-11-30T05:33:00Z\\",\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\",\\n \\"DomainName\\": \\"example.com,example.aliyundoc.com\\",\\n \\"DataInterval\\": \\"60\\",\\n \\"RealTimeHttpCodeData\\": {\\n \\"UsageData\\": [\\n {\\n \\"TimeStamp\\": \\"2015-11-30T05:39:00Z\\",\\n \\"Value\\": {\\n \\"RealTimeCodeProportionData\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Proportion\\": \\"66.046511627907\\",\\n \\"Count\\": \\"20\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n2015-11-30T05:40:00Z\\nBC858082-736F-4A25-867B-E5B67C85ACF7\\nexample.com,example.aliyundoc.com\\n60\\n2015-11-30T05:33:00Z\\n\\n \\n 2015-11-30T05:39:00Z\\n \\n \\n 66.046511627907\\n 20\\n 200\\n \\n \\n \\n\\n","errorExample":"{\\n \\"RealTimeHttpCodeData\\": {\\n \\"UsageData\\": [\\n {\\n \\"TimeStamp\\": \\"2015-11-30T05:40:00Z\\",\\n \\"Value\\": {\\n \\"RealTimeCodeProportionData\\": [\\n {\\n \\"Proportion\\": \\"66.046511627907\\",\\n \\"Code\\": \\"200\\"\\n },\\n {\\n \\"Proportion\\": \\"4.72868217054264\\",\\n \\"Code\\": \\"206\\"\\n },\\n {\\n \\"Proportion\\": \\"0.155038759689922\\",\\n \\"Code\\": \\"302\\"\\n },\\n {\\n \\"Proportion\\": \\"0.62015503875969\\",\\n \\"Code\\": \\"304\\"\\n },\\n {\\n \\"Proportion\\": \\"28.4496124031008\\",\\n \\"Code\\": \\"500\\"\\n }\\n ]\\n }\\n },\\n {\\n \\"TimeStamp\\": \\"2015-11-30T05:39:00Z\\",\\n \\"Value\\": {\\n \\"RealTimeCodeProportionData\\": [\\n {\\n \\"Proportion\\": \\"66.046511627907\\",\\n \\"Code\\": \\"200\\"\\n },\\n {\\n \\"Proportion\\": \\"4.72868217054264\\",\\n \\"Code\\": \\"206\\"\\n },\\n {\\n \\"Proportion\\": \\"0.155038759689922\\",\\n \\"Code\\": \\"302\\"\\n },\\n {\\n \\"Proportion\\": \\"0.62015503875969\\",\\n \\"Code\\": \\"304\\"\\n },\\n {\\n \\"Proportion\\": \\"28.4496124031008\\",\\n \\"Code\\": \\"500\\"\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"DataInterval\\": \\"60\\",\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\",\\n \\"DomainName\\": \\"test.com,abc.com\\",\\n \\"EndTime\\": \\"2015-11-30T05:40:00Z\\",\\n \\"StartTime\\": \\"2015-11-30T05:33:00Z\\"\\n}"}]', - 'title' => 'DescribeLiveDomainRealTimeHttpCodeData', - 'description' => 'The following table describes the time granularities supported by this operation.'."\n" - ."\n" - .'|Time granularity|Maximum time range per query|Historical data available|Data delay|'."\n" - .'|---|---|---|---|'."\n" - .'|1 minute|1 hour|7 days|5 minutes|'."\n" - .'|5 minutes|3 days|93 days|15 minutes|'."\n" - .'|1 hour|31 days|186 days|Usually 4 hours|'."\n" - .'|1 day|Unlimited|366 days|After 04:00 on the next day|'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2017-12-10T09:00:00Z\\",\\n \\"StartTime\\": \\"2017-12-10T08:00:00Z\\",\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"BpsDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"BpsValue\\": \\"11288111\\",\\n \\"TimeStamp\\": \\"2017-12-10T08:00:05Z\\",\\n \\"HttpsBpsValue\\": \\"2000\\",\\n \\"HttpBpsValue\\": \\"11286111\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query network bandwidth monitoring data of a domain name', + 'description' => '- If you do not specify StartTime or EndTime, data of the last 24 hours is returned by default. You can also query data for a specific time range by specifying both StartTime and EndTime.'."\n" + .'- If you specify only StartTime without EndTime, data within 1 hour from StartTime is returned.'."\n" + .'- If you specify only EndTime without StartTime, data within 1 hour before EndTime is returned.'."\n" + .'- You can query data of up to the last 90 days.'."\n" + .'- This is a monitoring data API. The data collection and processing method differs from that used for billing. Do not use this API to calculate usage for billing reconciliation.'."\n" ."\n" .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + .'The single-user QPS limit for this API is 100 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Call this API at a reasonable frequency.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamHistoryUserNum' => [ - 'summary' => 'Queries the number of historical online users for a live stream.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainBpsData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveDomainBpsDataByLayer' => [ + 'summary' => 'Queries bandwidth and traffic data of a domain name by protocol by calling DescribeLiveDomainBpsDataByLayer.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -25682,64 +20693,69 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain. You can specify multiple domain names separated by commas (,). If this parameter is left empty, the aggregated data of all domain names is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'pull.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The beginning of the time range to query, in the format of yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n" + .'>If this parameter is not specified, data for the last 24 hours is returned by default. The minimum data granularity is 5 minutes.', 'type' => 'string', 'required' => false, 'example' => '2022-03-15T16:00:00Z', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['description' => 'The end of the time range to query, in the format of yyyy-MM-ddTHH:mm:ssZ (UTC). The end time must be later than the start time.', 'type' => 'string', 'required' => false, 'example' => '2022-03-16T16:59:59Z', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> You can query data in the last **30** days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The time granularity of the data to query. Unit: seconds. Valid values:'."\n" + ."\n" + .'- **300**'."\n" + ."\n" + .'- **3600**'."\n" + ."\n" + .'- **86400**'."\n" + .'> - Time range ≤ 3 days: Valid data timestamp granularity values are 300, 3600, and 86400.'."\n" + .'> - 3 days < time range ≤ 31 days: Valid data timestamp granularity values are 3600 and 86400.'."\n" + .'> - Time range > 31 days: The only valid value is 86400.'."\n" + .'> - If this parameter is not specified or the specified value is not supported, the default value 300 is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'IspNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> The time range specified by the StartTime and EndTime parameters cannot exceed one day. The end time must not be later than the current time.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-22T08:00:00Z', - ], + 'schema' => ['description' => 'The name of the Internet service provider (ISP) in English. If this parameter is not specified, data for all ISPs is returned.'."\n" + .'>You can call the [DescribeLiveRegionAndIsp](~~91077~~) operation to query the English names of regions and ISPs.', 'type' => 'string', 'required' => false, 'example' => 'tele***', 'title' => ''], + ], + [ + 'name' => 'LocationNameEn', + 'in' => 'query', + 'schema' => ['description' => 'The name of the region in English. If this parameter is not specified, data for all regions is returned.'."\n" + .'>You can call the [DescribeLiveRegionAndIsp](~~91077~~) operation to query the English names of regions and ISPs.', 'type' => 'string', 'required' => false, 'example' => 'hangzhou', 'title' => ''], + ], + [ + 'name' => 'Layer', + 'in' => 'query', + 'schema' => ['description' => 'The query dimension. Valid values:'."\n" + ."\n" + .'- Network layer (IPv4, IPv6)'."\n" + ."\n" + .'- Application layer (http, https, quic)'."\n" + ."\n" + .'- all (default)'."\n" + ."\n" + .'Valid values: all | IPv4 | IPv6 | http | https | quic (case-sensitive).', 'type' => 'string', 'required' => false, 'example' => 'all', 'title' => ''], ], ], 'responses' => [ @@ -25747,80 +20763,96 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F5FF8', - ], - 'LiveStreamUserNumInfos' => [ + 'BpsDataInterval' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'LiveStreamUserNumInfo' => [ - 'description' => 'The number of historical online users for the live stream.'."\n", + 'DataModule' => [ + 'description' => 'The bandwidth data (bps) for each time interval.', 'type' => 'array', 'items' => [ + 'description' => 'The bandwidth data (bps) for each time interval.', 'type' => 'object', 'properties' => [ - 'UserNum' => [ - 'description' => 'The number of users at the current point in time.'."\n", - 'type' => 'string', - 'example' => '1', - ], - 'StreamTime' => [ - 'description' => 'The time when the stream started. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-10-20T06:20:00Z', - ], + 'TimeStamp' => ['description' => 'The beginning of the time interval. The value is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2022-03-15T16:00:00Z', 'title' => ''], + 'TrafficValue' => ['description' => 'The total traffic. Unit: bytes.', 'type' => 'string', 'example' => '331', 'title' => ''], + 'Value' => ['description' => 'The peak bandwidth. Unit: bit/s.', 'type' => 'string', 'example' => '0.56', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'DataInterval' => ['description' => 'The time interval between data entries. Unit: seconds.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'BEA5625F-8FCF-48F4-851B-2A48566EA967', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time or current time.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified parameter StartTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified parameter EndTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'Specified end time does not math the specified start time,And the time range does not exceed 90 days.', 'description' => 'The start time and the end time do not match. The start time cannot be later than the end time, and the interval between the start time and the end time cannot exceed 90 days.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F5FF8\\",\\n \\"LiveStreamUserNumInfos\\": {\\n \\"LiveStreamUserNumInfo\\": [\\n {\\n \\"UserNum\\": \\"1\\",\\n \\"StreamTime\\": \\"2017-10-20T06:20:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\n \\n 2017-10-20T06:20:00Z\\n 1\\n \\n\\n16A96B9A-F203-4EC5-8E43-CB92E68F5FF8\\n","errorExample":"{\\n \\"LiveStreamUserNumInfos\\":{\\n \\"LiveStreamUserNumInfo\\":[\\n {\\n \\"StreamTime\\":\\"2017-10-20T06:20:00Z\\",\\n \\"UserNum\\":0\\n },\\n {\\n \\"StreamTime\\":\\"2017-10-20T06:19:00Z\\",\\n \\"UserNum\\":0\\n },\\n {\\n \\"StreamTime\\":\\"2017-10-20T06:18:00Z\\",\\n \\"UserNum\\":15\\n },\\n {\\n \\"StreamTime\\":\\"2017-10-20T06:17:00Z\\",\\n \\"UserNum\\":0\\n },\\n {\\n \\"StreamTime\\":\\"2017-10-20T06:16:00Z\\",\\n \\"UserNum\\":0\\n },\\n {\\n \\"StreamTime\\":\\"2017-10-20T06:15:00Z\\",\\n \\"UserNum\\":6\\n },\\n {\\n \\"StreamTime\\":\\"2017-10-20T06:14:00Z\\",\\n \\"UserNum\\":0\\n }\\n ]\\n },\\n \\"RequestId\\":\\"16A96B9A-F203-4EC5-8E43-CB92E68F5FF8\\"\\n}"}]', - 'title' => 'DescribeLiveStreamHistoryUserNum', - 'description' => '* The data returned by this operation is delayed for an average of 2 to 5 minutes.'."\n" - .'* This operation queries the number of historical online users for only Flash Video (FLV) and Real-Time Messaging Protocol (RTMP) streams.'."\n" - .'* This operation does not query the number of viewers that are watching transcoded streams.'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"BpsDataInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"TimeStamp\\": \\"2022-03-15T16:00:00Z\\",\\n \\"TrafficValue\\": \\"331\\",\\n \\"Value\\": \\"0.56\\"\\n }\\n ]\\n },\\n \\"DataInterval\\": \\"300\\",\\n \\"RequestId\\": \\"BEA5625F-8FCF-48F4-851B-2A48566EA967\\"\\n}","type":"json"}]', + 'title' => 'Query domain name bandwidth and traffic data by protocol', + 'description' => 'The storage duration of data is up to 90 days.'."\n" + .'You can query data for multiple domain names at a time. Separate multiple domain names with commas (,). A maximum of 500 domain names are supported. Data for multiple domain names is returned as aggregation results.'."\n" + .'The time granularity of returned data varies based on the time range specified by **StartTime** and **EndTime**:'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- Time range ≤ 3 days: The time granularity is 5 minutes.'."\n" + ."\n" + .'- 3 days < time range ≤ 31 days: The time granularity is 1 hour.'."\n" + ."\n" + .'- Time range > 31 days: The time granularity is 1 day.'."\n" ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'>If neither **StartTime** nor **EndTime** is specified, data for the last 24 hours is returned by default.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 20 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Invoke this operation appropriately.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamCount' => [ - 'summary' => 'Queries the numbers of online source streams and transcoded streams.', - 'methods' => [ - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainBpsDataByLayer'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainBpsDataByLayer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLiveDomainByCertificate' => [ + 'summary' => 'Retrieves accelerated domain names based on certificate information.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -25831,294 +20863,120 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '191820', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'SSLPub', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The public key of the certificate. The public key must be Base64 encoding and then URL-encoded (encodeURIComponent). The PEM format is supported.', 'type' => 'string', 'required' => true, 'example' => '******', 'title' => ''], + ], + [ + 'name' => 'SSLStatus', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether the returned domain name list includes only domain names with HTTPS enabled or disabled.'."\n" + .'- **true**: HTTPS is enabled.'."\n" + .'- **false**: HTTPS is disabled.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'FCFFE4A4-F34F-4EEF-B401-36A01689AFBC', - ], - 'StreamCountInfos' => [ + 'CertInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'StreamCountInfo' => [ - 'description' => 'The statistics of the live streams.'."\n", + 'CertInfo' => [ + 'description' => 'The list of certificate information.', 'type' => 'array', 'items' => [ + 'description' => 'The details of the list.', 'type' => 'object', 'properties' => [ - 'Type' => [ - 'description' => 'The type of the live stream. Valid values:'."\n" - ."\n" - .'* **raw**: source streams'."\n" - .'* **trans**: transcoded streams'."\n", - 'type' => 'string', - 'example' => 'raw', - ], - 'Count' => [ - 'description' => 'The number of online streams.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '3', - ], - 'Limit' => [ - 'description' => 'The maximum allowed number of concurrently ingested streams. This parameter is available only to users in the whitelist.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', - ], - 'StreamCountDetails' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'StreamCountDetail' => [ - 'description' => 'The information about the live streams.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'VideoDataRate' => [ - 'description' => 'The video bitrate. This parameter is returned only for transcoded streams.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '390', - ], - 'Format' => [ - 'description' => 'The video codec. Valid values:'."\n" - ."\n" - .'* **h264**'."\n" - .'* **h265**'."\n", - 'type' => 'string', - 'example' => 'h264', - ], - 'Count' => [ - 'description' => 'The number of online streams.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2', - ], - ], - 'description' => '', - ], - ], - ], - ], + 'CertCaIsLegacy' => ['description' => 'The legacy status of the certificate CA. Valid values:'."\n" + .'- **yes**: The certificate CA is deprecated.'."\n" + .'- **no**: The certificate CA is normal and not deprecated.', 'type' => 'string', 'example' => 'yes', 'title' => ''], + 'CertExpireTime' => ['description' => 'The expiration time of the certificate. The time follows the yyyy-MM-dd HH:mm:ss format in UTC+8.', 'type' => 'string', 'example' => '2024-12-03 09:46:02', 'title' => ''], + 'CertExpired' => ['description' => 'The expiration status of the certificate. Valid values:'."\n" + .'- **yes**: The certificate has expired.'."\n" + .'- **no**: The certificate has not expired.', 'type' => 'string', 'example' => 'yes', 'title' => ''], + 'CertStartTime' => ['description' => 'The start time of the certificate. The time follows the yyyy-MM-dd HH:mm:ss format in UTC+8.', 'type' => 'string', 'example' => '2023-11-02 09:46:03', 'title' => ''], + 'CertSubjectCommonName' => ['description' => 'The name of the certificate owner.', 'type' => 'string', 'example' => 'owner', 'title' => ''], + 'CertType' => ['description' => 'The type of the certificate. Valid values: **RSA**, **DSA**, and **ECDSA**.', 'type' => 'string', 'example' => 'RSA', 'title' => ''], + 'DomainList' => ['description' => 'If this value is not empty, the list is matched against the certificate. Multiple values are separated by commas (,).', 'type' => 'string', 'example' => 'example.com,aliyundoc.com', 'title' => ''], + 'DomainNames' => ['description' => 'The domain names that match the certificate (DNS field). Multiple domain names are separated by commas (,).', 'type' => 'string', 'example' => '*.example.com,aliyundoc.com', 'title' => ''], + 'Issuer' => ['description' => 'The certificate issue authority.', 'type' => 'string', 'example' => 'C=US, O=Symantec Corporation, OU=Symantec Trust Network, OU=Domain Validated SSL, CN=Symantec Basic DV SSL CA - G1', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'ASAF2FDS-12SADSA-DDSAE3D-DSADCD4C-CDADS2D', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'Certificate.FormatError', 'errorMessage' => 'The format of the certificate is invalid.', 'description' => ''], + ['errorCode' => 'SSLPub.MissingParameter', 'errorMessage' => 'The Cert parameter is required.', 'description' => ''], + ['errorCode' => 'Decode.Error', 'errorMessage' => 'Error decoding the SSLPub certificate.', 'description' => ''], + ['errorCode' => 'Certificate.DecodeError', 'errorMessage' => 'An error occurred while decoding the certificate.', 'description' => ''], ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"FCFFE4A4-F34F-4EEF-B401-36A01689AFBC\\",\\n \\"StreamCountInfos\\": {\\n \\"StreamCountInfo\\": [\\n {\\n \\"Type\\": \\"raw\\",\\n \\"Count\\": 3,\\n \\"Limit\\": 10,\\n \\"StreamCountDetails\\": {\\n \\"StreamCountDetail\\": [\\n {\\n \\"VideoDataRate\\": 390,\\n \\"Format\\": \\"h264\\",\\n \\"Count\\": 2\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FCFFE4A4-F34F-4EEF-B401-36A01689AFBC\\n \\n raw\\n 3\\n 10\\n \\n 390\\n h264\\n 2\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamCount', - 'description' => 'Obtain the main streaming domain, and then call this operation to query the numbers of online source streams and transcoded streams. The streams that are returned by calling this operation are encoded in H.264 or H.265.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation once per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveStreamTranscodeStreamNum' => [ - 'summary' => 'Queries the number of transcoded streams in real time.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107109', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'SplitType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The grouping method.'."\n" - ."\n" - .'* Domain name (default)'."\n" - .'* Template'."\n" - ."\n" - .'Valid values:'."\n" - ."\n" - .'* domain'."\n" - .'* template'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'domain', - 'default' => 'domain', - 'enum' => [ - 'domain', - 'template', - ], - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CertInfos\\": {\\n \\"CertInfo\\": [\\n {\\n \\"CertCaIsLegacy\\": \\"yes\\",\\n \\"CertExpireTime\\": \\"2024-12-03 09:46:02\\",\\n \\"CertExpired\\": \\"yes\\",\\n \\"CertStartTime\\": \\"2023-11-02 09:46:03\\",\\n \\"CertSubjectCommonName\\": \\"owner\\",\\n \\"CertType\\": \\"RSA\\",\\n \\"DomainList\\": \\"example.com,aliyundoc.com\\",\\n \\"DomainNames\\": \\"*.example.com,aliyundoc.com\\",\\n \\"Issuer\\": \\"C=US, O=Symantec Corporation, OU=Symantec Trust Network, OU=Domain Validated SSL, CN=Symantec Basic DV SSL CA - G1\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"ASAF2FDS-12SADSA-DDSAE3D-DSADCD4C-CDADS2D\\"\\n}","type":"json"}]', + 'title' => 'Query domain names that match a certificate', + 'description' => 'Calls this operation to query accelerated domain names that match the specified certificate information.'."\n" + .'## QPS limit'."\n" + .'The QPS limit for a single user is 100 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation at a reasonable frequency.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainByCertificate'], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'UntranscodeNumber' => [ - 'description' => 'The number of streams that are not transcoded.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '27', - ], - 'LazyTranscodedNumber' => [ - 'description' => 'The number of streams for which transcoding is triggered by stream pulling.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', - ], - 'TranscodedNumber' => [ - 'description' => 'The number of streams that are transcoded.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '150191A4-DD88-5941-B48C-9DF59E0A8B1F', - ], - 'Total' => [ - 'description' => 'The total number of streams.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '57', - ], - 'TranscodeStreamCountDetails' => [ - 'description' => 'The details about the transcoding templates.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Template' => [ - 'description' => 'The name of the transcoding template.'."\n", - 'type' => 'string', - 'example' => 'template_name', - ], - 'Count' => [ - 'description' => 'The number of streams that use the transcoding template.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '30', - ], - ], - 'description' => '', - ], - ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainByCertificate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], - 'description' => '', - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"UntranscodeNumber\\": 27,\\n \\"LazyTranscodedNumber\\": 10,\\n \\"TranscodedNumber\\": 30,\\n \\"RequestId\\": \\"150191A4-DD88-5941-B48C-9DF59E0A8B1F\\",\\n \\"Total\\": 57,\\n \\"TranscodeStreamCountDetails\\": [\\n {\\n \\"Template\\": \\"template_name\\",\\n \\"Count\\": 30\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 27\\n 10\\n 30\\n 150191A4-DD88-5941-B48C-9DF59E0A8B1F\\n 57\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamTranscodeStreamNum', - 'description' => 'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'DescribeLiveDomainPvUvData' => [ - 'summary' => 'Queries the data of page views (PVs) and unique visitors (UVs) of a streaming domain.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveDomainCertificateInfo' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -26129,135 +20987,90 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107030', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '107011', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ssZ* format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-03-17T16:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ssZ* format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-03-20T16:00:00Z', - ], + 'schema' => ['description' => 'The streaming domain or ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The data of PVs and UVs of the domain name.'."\n", 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ssZ* format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-03-20T16:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which the data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ssZ* format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-03-17T16:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'E9D3257A-1B7C-414C-90C1-8D07AC47BCAC', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'DataInterval' => [ - 'description' => 'The time interval between the entries returned. Unit: seconds. Default value: 3600.'."\n", - 'type' => 'string', - 'example' => '3600', - ], - 'PvUvDataInfos' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5C1E43DC-9E51-4771-82C0-7D5ECEB547A1', 'title' => ''], + 'CertInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'PvUvDataInfo' => [ - 'description' => 'The data of PVs and UVs.'."\n", + 'CertInfo' => [ + 'description' => 'The certificate information.', 'type' => 'array', 'items' => [ - 'description' => 'The data of PVs and UVs.'."\n", 'type' => 'object', 'properties' => [ - 'PV' => [ - 'description' => 'The number of PVs.'."\n", - 'type' => 'string', - 'example' => '3036', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ssZ* format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-03-19T16:00:00Z', - ], - 'UV' => [ - 'description' => 'The number of UVs.'."\n", - 'type' => 'string', - 'example' => '2', - ], + 'Status' => ['description' => 'The status of the free certificate that is used for testing. Valid values:'."\n" + ."\n" + .'- **success**: The certificate is effective.'."\n" + ."\n" + .'- **checking**: The system is checking whether the domain name is mapped to the CNAME that is assigned by ApsaraVideo Live.'."\n" + ."\n" + .'- **cname\\_error**: The domain name is not mapped to the CNAME that is assigned by ApsaraVideo Live.'."\n" + ."\n" + .'- **domain\\_invalid**: The domain name contains invalid characters.'."\n" + ."\n" + .'- **unsupport\\_wildcard**: The domain name is a wildcard domain name, which is not supported.'."\n" + ."\n" + .'- **applying**: The certificate is in the application progress.'."\n" + ."\n" + .'- **failed**: The application for the certificate failed.'."\n" + ."\n" + .'> The **Status** parameter is valid only if the certificate is a free certificate for testing. Otherwise, an empty value is returned.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'CertLife' => ['description' => 'The validity period of the certificate.', 'type' => 'string', 'example' => '3 months', 'title' => ''], + 'CertExpireTime' => ['description' => 'The expiration time of the certificate. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2018-06-03T22:03:39Z', 'title' => ''], + 'SSLPub' => ['description' => 'The public key of the certificate.', 'type' => 'string', 'example' => 'yourSSLPub', 'title' => ''], + 'SSLProtocol' => ['description' => 'Indicates whether HTTPS is enabled. Valid values:'."\n" + ."\n" + .'- **on**: Enabled.'."\n" + ."\n" + .'- **off**: Disabled.', 'type' => 'string', 'example' => 'on', 'title' => ''], + 'CertType' => ['description' => 'The type of the certificate. Valid values:'."\n" + ."\n" + .'- **free**: a free certificate (for testing)'."\n" + ."\n" + .'- **cas**: a certificate purchased from Certificate Management Service'."\n" + ."\n" + .'- **upload**: a custom certificate that you uploaded', 'type' => 'string', 'example' => 'cas', 'title' => ''], + 'CertDomainName' => ['description' => 'The streaming domain or ingest domain that matches the certificate.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'CertName' => ['description' => 'The certificate name.', 'type' => 'string', 'example' => 'Cert-****', 'title' => ''], + 'CertOrg' => ['description' => 'The certificate authority (CA).', 'type' => 'string', 'example' => 'Let\'s Encrypt', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain or ingest domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'InvalidTime.ValueNotSupported', - 'errorMessage' => 'Specified Time is malformed.', + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], @@ -26265,29 +21078,44 @@ 'enable' => false, 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2018-03-20T16:00:00Z\\",\\n \\"StartTime\\": \\"2018-03-17T16:00:00Z\\",\\n \\"RequestId\\": \\"E9D3257A-1B7C-414C-90C1-8D07AC47BCAC\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DataInterval\\": \\"3600\\",\\n \\"PvUvDataInfos\\": {\\n \\"PvUvDataInfo\\": [\\n {\\n \\"PV\\": \\"3036\\",\\n \\"TimeStamp\\": \\"2018-03-19T16:00:00Z\\",\\n \\"UV\\": \\"2\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n2018-03-20T16:00:00Z\\nE9D3257A-1B7C-414C-90C1-8D07AC47BCAC\\nexample.com\\n3600\\n2018-03-17T16:00:00Z\\n\\n \\n 2\\n 3036\\n 2018-03-19T16:00:00Z\\n \\n\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainPvUvData', - 'description' => '* You can call this operation to query the geographical distribution of viewers, the visitor ranking of a streaming domain, and the number of independent requests from IP addresses under a streaming domain within a specified time period.'."\n" - .'* If you do not specify the StartTime or EndTime parameter, the data of the last 24 hours is queried. You can specify both the StartTime and EndTime parameters to query the data of a specific time range.'."\n" - .'* You can specify only one streaming domain in each request.'."\n" - .'* You can query the data in the last 90 days.'."\n" + 'title' => 'DescribeLiveDomainCertificateInfo', + 'summary' => 'Retrieves the certificate information for a specified domain name.', + 'description' => 'You must specify a domain name whose certificate information you want to query.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'DescribeLiveTopDomainsByFlow' => [ - 'summary' => 'Queries the top domain names ranked by traffic.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '## 特殊错误码'."\n" + .'|ErrorCode 错误码 |Message 错误信息 |HTTP 状态 |语义 |'."\n" + .'| ------------- |------------ | ----- | ----- |'."\n" + .'|InvalidDomain.NotFound |The domain provided does not belong to you. |404 |域名不存在或不属于当前用户。|', + 'changeSet' => [ + ['createdAt' => '2024-09-29T03:20:41.000Z', 'description' => 'Error codes changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainCertificateInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5C1E43DC-9E51-4771-82C0-7D5ECEB547A1\\",\\n \\"CertInfos\\": {\\n \\"CertInfo\\": [\\n {\\n \\"Status\\": \\"success\\",\\n \\"CertLife\\": \\"3 months\\",\\n \\"CertExpireTime\\": \\"2018-06-03T22:03:39Z\\",\\n \\"SSLPub\\": \\"yourSSLPub\\",\\n \\"SSLProtocol\\": \\"on\\",\\n \\"CertType\\": \\"cas\\",\\n \\"CertDomainName\\": \\"example.com\\",\\n \\"CertName\\": \\"Cert-****\\",\\n \\"CertOrg\\": \\"Let\'s Encrypt\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainConfigs' => [ + 'summary' => 'Queries one or more configurations of a domain name.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -26298,53 +21126,18 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. The minimum data granularity is 5 minutes. If you do not specify this parameter, the data of the current month is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-03-17T16:00:00Z', - ], - ], - [ - 'name' => 'EndTime', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-03-20T16:00:00Z', - ], + 'schema' => ['description' => 'The ingest domain or streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'Limit', + 'name' => 'FunctionNames', 'in' => 'query', - 'schema' => [ - 'description' => 'The maximum number of domain names that you want to retrieve. Valid values: 1 to 100. Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '20', - 'default' => '20', - ], + 'schema' => ['description' => 'The names of the features. Separate multiple features with commas (,). For more information, see the **Features specified by the Functions parameter** section in this topic.', 'type' => 'string', 'required' => true, 'example' => 'set_req_host_header,set_hashkey_args', 'title' => ''], ], ], 'responses' => [ @@ -26352,127 +21145,152 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'DomainOnlineCount' => [ - 'description' => 'The total number of domain names that are in the Enabled state in your account.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'EndTime' => [ - 'description' => 'The end of the time range for which data was queried.'."\n", - 'type' => 'string', - 'example' => '2018-03-20T16:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which data was queried.'."\n", - 'type' => 'string', - 'example' => '2018-03-17T16:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '33834C3E-388E-5FFE-A8AE-63575035C064', - ], - 'DomainCount' => [ - 'description' => 'The total number of domain names in your account.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'TopDomains' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'F8AA0364-0FDB-4AD5-AC74-D69FAB8924ED', 'title' => ''], + 'DomainConfigs' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'TopDomain' => [ - 'description' => 'The top domain names ranked by traffic.'."\n", + 'DomainConfig' => [ + 'description' => 'The configurations of the domain name.', 'type' => 'array', 'items' => [ - 'description' => 'The top domain names ranked by traffic.'."\n", 'type' => 'object', 'properties' => [ - 'MaxBps' => [ - 'description' => 'The peak bandwidth of the domain name.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '22139626', - ], - 'Rank' => [ - 'description' => 'The ranking of the domain name.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'TotalAccess' => [ - 'description' => 'The number of visits to the domain name.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '107784230', - ], - 'TrafficPercent' => [ - 'description' => 'The traffic share of the domain name relative to the total traffic.'."\n", - 'type' => 'string', - 'example' => '30.64191989360235', - ], - 'DomainName' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'TotalTraffic' => [ - 'description' => 'The total traffic.'."\n", - 'type' => 'string', - 'example' => '2043859876683.9001', - ], - 'MaxBpsTime' => [ - 'description' => 'The time when the bandwidth reached the peak value.'."\n", - 'type' => 'string', - 'example' => '1457111400', + 'Status' => ['description' => 'The configuration status. Valid values:'."\n" + ."\n" + .'- **success**'."\n" + ."\n" + .'- **testing**'."\n" + ."\n" + .'- **failed**'."\n" + ."\n" + .'- **configuring**', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'ConfigId' => ['description' => 'The configuration ID.', 'type' => 'string', 'example' => '5003576', 'title' => ''], + 'FunctionName' => ['description' => 'The name of the feature.', 'type' => 'string', 'example' => 'set_req_host_header', 'title' => ''], + 'FunctionArgs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'FunctionArg' => [ + 'description' => 'The attributes of the feature.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ArgName' => ['description' => 'The name of the attribute.', 'type' => 'string', 'example' => 'domain_name', 'title' => ''], + 'ArgValue' => ['description' => 'The attribute value.', 'type' => 'string', 'example' => 'developer.aliyundoc.com', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'Invalid%s.ValueNotSupported', 'errorMessage' => 'FunctionName [%s] is not supported.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'InvalidUser', 'errorMessage' => 'The user\'s account is invalid.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DomainOnlineCount\\": 1,\\n \\"EndTime\\": \\"2018-03-20T16:00:00Z\\",\\n \\"StartTime\\": \\"2018-03-17T16:00:00Z\\",\\n \\"RequestId\\": \\"33834C3E-388E-5FFE-A8AE-63575035C064\\",\\n \\"DomainCount\\": 1,\\n \\"TopDomains\\": {\\n \\"TopDomain\\": [\\n {\\n \\"MaxBps\\": 22139626,\\n \\"Rank\\": 1,\\n \\"TotalAccess\\": 107784230,\\n \\"TrafficPercent\\": \\"30.64191989360235\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"TotalTraffic\\": \\"2043859876683.9001\\",\\n \\"MaxBpsTime\\": \\"1457111400\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 2018-03-20T16:00:00Z\\n 2018-03-17T16:00:00Z\\n 33834C3E-388E-5FFE-A8AE-63575035C064\\n 1\\n \\n 22139626\\n 1\\n 107784230\\n 30.64191989360235\\n example.com\\n 2043859876683.9001\\n 1457111400\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveTopDomainsByFlow', - 'description' => '* If you do not specify the StartTime or EndTime parameter, data of the current month is queried by default. To query data within a specific time range, you must specify both the StartTime and EndTime parameters.'."\n" - .'* You can query data in the last 90 days.'."\n" + 'title' => 'DescribeLiveDomainConfigs', + 'description' => 'You can call this operation to query multiple configurations at a time.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveStreamsTotalCount' => [ - 'summary' => 'Queries the total number of live streams within a specified time range. Data is collected on a daily basis.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => '## Features specified by the Functions parameter'."\n" + ."\n" + .'**Note** All parameter values are of the string type. Some features, such as **filetype\\_based\\_ttl\\_set**, support multiple configuration records. To update one of the configuration records, use the **configId** field to specify the record.'."\n" + ."\n" + .'| Name | Parameter |'."\n" + .'| -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |'."\n" + .'| **referer_white_list_set**: the Referer whitelist. | **refer_domain_allow_list**: the Referers to be added to the whitelist. Separate multiple Referers with commas (,).**allow_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**. |'."\n" + .'| **referer_black_list_set**: the Referer blacklist. | **refer_domain_deny_list**: the Referers to be added to the blacklist. Separate multiple Referers with commas (,).**allow_empty**: specifies whether an empty Referer is allowed. Valid values: **on** and **off**. |'."\n" + .'| **filetype_based_ttl_set**: the time period after which a file expires. | **ttl**: the cache duration. Unit: seconds.**file_type**: the file type. Separate multiple file types with commas (,).**weight**: the weight of the file type. Valid values: **1 to 99**. |'."\n" + .'| **path_based_ttl_set**: the time period after which a directory expires. | **ttl**: the cache duration. Unit: seconds.**path**: the directory, which must start with a forward slash (/).**weight**: the weight of the directory. Valid values: **1 to 99**. |'."\n" + .'| **oss_auth**: authenticates access to an Object Storage Service (OSS) bucket. | **oss_bucket_id**: the name of your OSS bucket. |'."\n" + .'| **ip_black_list_set**: the IP address blacklist. | **ip_list**: the IP addresses to be added to the blacklist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **ip_allow_list_set**: the IP address whitelist. | **ip_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **ip_white_list_set**: the IP address whitelist for rate limiting. | **ip_list**: the IP addresses to be added to the whitelist. Separate multiple IP addresses with commas (,). |'."\n" + .'| **error_page**: redirects an error page to a specified page. | **error_code**: the error code.**rewrite_page**: the page to which the error page is redirected. |'."\n" + .'| **set_req_host_header**: modifies the Host header of back-to-origin requests. | **domain_name**: the Host header of back-to-origin requests. |'."\n" + .'| **set_hashkey_args**: ignores the specified URL parameters. | **hashkey_args**: the parameters to be reserved. Separate multiple parameters with commas (,).**disable**: specifies whether to ignore all parameters. Valid values: on and off. A value of on specifies that all parameters are ignored. A value of off specifies that none of the parameters are ignored. |'."\n" + .'| **aliauth**: configures Alibaba Cloud authentication. | **auth_type**: the authentication type. Valid values: **type_a** and **no_auth**. A value of type_a specifies that authentication type A is enabled. A value of no_auth specifies that authentication is disabled.**auth_key1**: the primary authentication key. The authentication key must be 16 to 32 characters in length and can contain uppercase letters, lowercase letters, and digits.**auth_key2**: the secondary authentication key.**ali_auth_delta**: the custom buffer time for authentication. Unit: seconds. We recommend that you set the value to at least 60 seconds. |'."\n" + .'| **remote_auth**: configures remote authentication for live streaming. | **enable**: specifies whether to enable remote authentication. This attribute is required. Valid values: on and off.**remote_auth_path**: the address of the authentication server. This attribute is required.**remote_auth_pattern**: the authentication mode. The following fields are available:- **param**: specifies whether to pass parameters in the ingest URL to the authentication server. Valid values: pass (default) and fail.- **args_white**: the parameter that you want to pass. Separate multiple parameters with commas (,).- **args_black**: the parameter that you do not want to pass. Separate multiple parameters with commas (,).- **code**: the HTTP status code. A value in the form of code=XXX is returned by the authentication server to ApsaraVideo Live upon successful authentication. Example: code=200. A value in the form of code=~XXX is returned by the authentication server to ApsaraVideo Live upon failed authentication. Example: code=~403.- **delta**: the timeout duration for authentication.- **retry**: the number of retries upon authentication timeout.- **timeout**: the action to perform upon authentication timeout. Valid values: **pass** and **fail**. **pass**: ApsaraVideo Live passes the request. **fail**: ApsaraVideo Live returns the HTTP status code 403 that indicates failure.- **async**: specifies whether to enable asynchronous authentication. Valid values: **on** and **off** (default). |'."\n" + .'| **set_resp_header**: configures a response header. To verify the configuration, you can check the response message in a browser. | **key**: the name of the response header.**value**: the content of the response header. If you want to delete the header, enter null. |'."\n" + .'| **https_force**: configures force redirection to HTTPS. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https_force and http_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature. |'."\n" + .'| **http_force**: configures force redirection to HTTP. | **enable**: specifies whether to enable the feature. Valid values: **on** and **off**. The https_force and http_force features are mutually exclusive. You cannot configure them both. If you have configured one of the features, you must delete it before you can configure the other feature. |'."\n" + .'| **l2_oss_key**: configures private key authentication for back-to-origin requests from L2 nodes to private OSS buckets. | **private_oss_auth**: specifies whether to authenticate access to a private OSS bucket. Valid values: **on** and **off**. |'."\n" + .'| **green_manager**: configures pornography detection. | **enable**: specifies whether to enable pornography detection. Valid values: **on** and **off**. |'."\n" + .'| **tmd_signature**: configures custom rate limiting rules. | **name**: the name of the rule, which must be globally unique.**path**: the uniform resource identifier (URI). You can specify duplicate URIs. However, you must verify their validity.**pathType**: the matching rule. Valid values: **0** and **1**. A value of 0 specifies a prefix match. A value of 1 specifies an exact match.**interval**: the interval at which data is monitored. Unit: seconds. The interval must be greater than or equal to 10 seconds.**count**: the number of visits from an IP address.**action**: the action to perform after the specified conditions are met. Valid values: **0** and **1**. A value of 0 specifies that access is blocked. A value of 1 specifies that bot detection is performed.**ttl**: the time period during which access is blocked. Unit: seconds. |'."\n" + .'| **forward_scheme**: configures adaptive back-to-origin. | **enable**: specifies whether to enable the feature. Valid values: on and off.**scheme_origin**: the protocol of the origin. Valid values: http, https, and follow.**scheme_origin_port**: the port number of the origin. Valid values: 80, 443, and 80:443. |'."\n" + .'| **video_seek**: configures video seeking. | **enable**: specifies whether to enable video seeking. Valid values: on and off. |'."\n" + .'| **gzip**: configures Gzip compression. | **enable**: specifies whether to enable Gzip compression. Valid values: on and off. |'."\n" + .'| **tesla**: configures page optimization to accelerate access. | **enable**: specifies whether to enable the feature. Valid values: on and off. |'."\n" + .'| **ali_ua**: configures User-Agent-based access control. | **ua**: the User-Agent **type**. Valid values: black and white. |'."\n" + .'| **host_redirect**: configures URL rewrite. | **regex**: the URL to be rewritten, for example, ^/$.**replacement**: the final URL, for example, /go/act/sale/tbzlsy.php.**flag**: the flag. Valid values: redirect and break. |'."\n" + .'| **ipv6** :configures IPv6. | **switch**: specifies whether to enable IPv6. This attribute is required. Valid values: on and off. If you want to disable this feature after this feature is enabled, deselect the feature in the console. Do not delete the configuration. Otherwise, the feature is still enabled.**region**: the region in which you want to enable IPv6. Valid values: cn-beijing (Beijing), cn-shanghai (Shanghai), cn-shenzhen (Shenzhen), cn-qingdao (Qingdao), apsoutheast-1 (Singapore), eu-central-1 (Germany), ap-northeast-1 (Tokyo), and ap-southeast-5 (Jakarta). |'."\n" + .'| **ali_location**: configures region-based access control. | **location**: the regions. |'."\n" + .'| **type**: the type of the list. | Valid values: black and white. |'."\n" + .'| **enable**: specifies whether to enable the feature. | Valid values: on and off. |'."\n" + .'| **live_forbid_flv**: specifies whether to prohibit the playback of Flash Videos (FLVs). | Valid values: on and off. |'."\n" + .'| **live_forbid_rtmp**: specifies whether to prohibit the playback of Real-Time Messaging Protocol (RTMP) videos. | Valid values: on and off. |'."\n" + .'| **live_forbid_hls**: specifies whether to prohibit the playback of HTTP Live Streaming (HLS) videos. | Valid values: on and off. |'."\n" + .'| **https_option**: configures HTTP settings. | **http2**: specifies whether to enable HTTP/2. Default value: **off**. Valid values: **on** and **off**.**live_http2**: specifies whether to enable live_http2. Default value: **off**. Valid values: **on** and **off**. |', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainConfigs'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"F8AA0364-0FDB-4AD5-AC74-D69FAB8924ED\\",\\n \\"DomainConfigs\\": {\\n \\"DomainConfig\\": [\\n {\\n \\"Status\\": \\"success\\",\\n \\"ConfigId\\": \\"5003576\\",\\n \\"FunctionName\\": \\"set_req_host_header\\",\\n \\"FunctionArgs\\": {\\n \\"FunctionArg\\": [\\n {\\n \\"ArgName\\": \\"domain_name\\",\\n \\"ArgValue\\": \\"developer.aliyundoc.com\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainDetail' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -26483,1174 +21301,885 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '107014', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ingest domain or streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], - [ - 'name' => 'DomainName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The ingest domain or streaming domain. This parameter is required if you want to query data based on domain names. You can specify up to 10 domain names. Separate multiple domain names with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + 'type' => 'object', + 'properties' => [ + 'DomainDetail' => [ + 'description' => 'The details of the domain configuration.', + 'type' => 'object', + 'properties' => [ + 'CertName' => ['description' => 'The name of the certificate.', 'type' => 'string', 'example' => 'liveCert****', 'title' => ''], + 'Cname' => ['description' => 'The canonical name (CNAME). A CNAME is generated for the live streaming domain. You must add a CNAME record at your DNS provider to map the live streaming domain to this CNAME.'."\n" + ."\n" + .'> Local DNS records are cached. After you add the CNAME record, it may take up to 10 minutes to take effect. For more information, see [FAQ about CNAME records](~~362010~~).', 'type' => 'string', 'example' => 'learn.developer.aliyundoc.com', 'title' => ''], + 'Description' => ['description' => 'The description of the domain name.', 'type' => 'string', 'example' => 'test', 'title' => ''], + 'DomainName' => ['description' => 'The ingest domain or streaming domain.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'DomainStatus' => ['description' => 'The status of the domain. Valid values:'."\n" + ."\n" + .'- **online**: enabled.'."\n" + ."\n" + .'- **offline**: disabled.'."\n" + ."\n" + .'- **configuring**: being configured.', 'type' => 'string', 'example' => 'online', 'title' => ''], + 'GmtCreated' => ['description' => 'The time when the domain was added. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2018-07-27T06:51:25Z', 'title' => ''], + 'GmtModified' => ['description' => 'The time when the domain was last modified. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2018-08-07T06:51Z', 'title' => ''], + 'LiveDomainType' => ['description' => 'The type of the domain name. Valid values:'."\n" + ."\n" + .'- **liveVideo**: streaming domain.'."\n" + ."\n" + .'- **liveEdge**: ingest domain.', 'type' => 'string', 'example' => 'liveVideo', 'title' => ''], + 'Region' => ['description' => 'The region where the domain name is added.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'SSLProtocol' => ['description' => 'Indicates whether SSL is enabled. Valid values:'."\n" + ."\n" + .'- **on**: enabled.'."\n" + ."\n" + .'- **off**: disabled.', 'type' => 'string', 'example' => 'on', 'title' => ''], + 'SSLPub' => ['description' => 'The public key of the certificate.', 'type' => 'string', 'example' => 'Public Key', 'title' => ''], + 'Scope' => ['description' => 'The acceleration region. Valid values:'."\n" + ."\n" + .'- **domestic**: the Chinese mainland.'."\n" + ."\n" + .'- **overseas**: regions outside the Chinese mainland.'."\n" + ."\n" + .'- **global**: global.', 'type' => 'string', 'example' => 'domestic', 'title' => ''], + 'ResourceGroupId' => ['description' => 'The ID of the resource group.', 'type' => 'string', 'example' => 'rg-**k3bpq2yjw22**', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '09ABE829-6CD3-4FE0-AFEE-556113E29727', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'DescribeLiveDomainDetail', + 'summary' => 'Queries the basic configuration information of a specified ingest domain or streaming domain.', + 'description' => 'This operation queries the basic configuration information of a specified ingest domain or streaming domain. The configuration of a newly added domain name takes several minutes to complete. You can query it after the configuration is complete.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-09-25T07:00:46.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2022-08-31T08:13:45.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainDetail'], + ], + ], + 'ramActions' => [ [ - 'name' => 'Typ', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of data that you want to query. If you leave this parameter empty, data is returned by domain name. If you want to query data by UID, specify the UID for this parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'aliuid', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainDetail', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainDetail\\": {\\n \\"CertName\\": \\"liveCert****\\",\\n \\"Cname\\": \\"learn.developer.aliyundoc.com\\",\\n \\"Description\\": \\"test\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"DomainStatus\\": \\"online\\",\\n \\"GmtCreated\\": \\"2018-07-27T06:51:25Z\\",\\n \\"GmtModified\\": \\"2018-08-07T06:51Z\\",\\n \\"LiveDomainType\\": \\"liveVideo\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"SSLProtocol\\": \\"on\\",\\n \\"SSLPub\\": \\"Public Key\\",\\n \\"Scope\\": \\"domestic\\",\\n \\"ResourceGroupId\\": \\"rg-**k3bpq2yjw22**\\"\\n },\\n \\"RequestId\\": \\"09ABE829-6CD3-4FE0-AFEE-556113E29727\\"\\n}","type":"json"}]', + ], + 'DescribeLiveDomainFrameRateAndBitRateData' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'StartTime', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> You can query data in the last 18 months.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2023-07-24T16:00:00Z', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> The maximum time range for a query is 15 days. The end time must be earlier than the current time. Data of the current day can be queried on the next day.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2023-07-25T16:00:00Z', - ], + 'schema' => ['description' => 'The ingest domain.'."\n" + ."\n" + .'> Make sure that the domain name added to ApsaraVideo Live and that you have the permissions to manage the domain name.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'QueryTime', + 'in' => 'query', + 'schema' => ['description' => 'The time to query. The time is in UTC. Format: *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'required' => true, 'example' => '2019-02-21T08:00:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned results.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'String FCFFE4A4-F34F-4EEF-B401-36A01689AFBC', - ], - 'StreamCountList' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'C3F2C2C4-59BB-4B62-81FF-345BE557E3E3', 'title' => ''], + 'FrameRateAndBitRateInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'StreamCountInfos' => [ - 'description' => 'The statistics about the live streams.'."\n", + 'FrameRateAndBitRateInfo' => [ + 'description' => 'The frame rate and bitrate information.', 'type' => 'array', 'items' => [ - 'description' => '', + 'description' => 'The frame rate and bitrate information.', 'type' => 'object', 'properties' => [ - 'Count' => [ - 'description' => 'The total number of live streams.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '934', - ], - 'Timestamp' => [ - 'description' => 'The timestamp.'."\n", - 'type' => 'string', - 'example' => '2023-07-24T16:00:00Z', - ], + 'VideoFrameRate' => ['description' => 'The video frame rate. Unit: frames per second (FPS).', 'type' => 'number', 'format' => 'float', 'example' => '24.9', 'title' => ''], + 'StreamUrl' => ['description' => 'The URL of the live stream.', 'type' => 'string', 'example' => 'rtmp://demo.aliyundoc.com/test/liveStream****_3_4', 'title' => ''], + 'AudioFrameRate' => ['description' => 'The audio frame rate of the live stream. Unit: FPS.', 'type' => 'number', 'format' => 'float', 'example' => '42.9', 'title' => ''], + 'BitRate' => ['description' => 'The bitrate of the live stream. Unit: Bps.', 'type' => 'number', 'format' => 'float', 'example' => '30693.96', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', - ], - [ - 'errorCode' => 'Duration.Exceed', - 'errorMessage' => 'Duration between StartTime and EndTime is too long.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidDomain.NotFound', - 'errorMessage' => 'The domain provided does not belong to you.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], + ['errorCode' => 'InvalidQueryTime.Exceed', 'errorMessage' => 'QueryTime exceed three month.', 'description' => 'The query time is more than three months from the current time.'], + ['errorCode' => 'InvalidQueryTime.Malformed', 'errorMessage' => 'Specified QueryTime is malformed.', 'description' => 'The specified query time is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"String\\\\tFCFFE4A4-F34F-4EEF-B401-36A01689AFBC\\",\\n \\"StreamCountList\\": {\\n \\"StreamCountInfos\\": [\\n {\\n \\"Count\\": 934,\\n \\"Timestamp\\": \\"2023-07-24T16:00:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n String\\tFCFFE4A4-F34F-4EEF-B401-36A01689AFBC\\n \\n 934\\n 2023-07-24T16:00:00Z\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamsTotalCount', - 'description' => '* The maximum time range for a query is 15 days.'."\n" - .'* You can query data in the last 18 months.'."\n" + 'title' => 'DescribeLiveDomainFrameRateAndBitRateData', + 'summary' => 'Queries the frame rate and bitrate data of streams for an ingest domain.', + 'description' => 'You can call this API to query the real-time bitrate and frame rate of a stream. This helps you monitor the quality of stream ingest. Data collection and statistics are subject to a delay. Query data that is at least 5 minutes old.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'> Use this API to replace the deprecated DescribeLiveStreamsFrameRateAndBitRateData API.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveStreamMetricDetailData' => [ - 'summary' => 'Queries the monitoring data of streams for a specified domain name. Up to 5,000 rows of data can be returned per call.', - 'methods' => [ - 'post', - 'get', + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainFrameRateAndBitRateData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C3F2C2C4-59BB-4B62-81FF-345BE557E3E3\\",\\n \\"FrameRateAndBitRateInfos\\": {\\n \\"FrameRateAndBitRateInfo\\": [\\n {\\n \\"VideoFrameRate\\": 24.9,\\n \\"StreamUrl\\": \\"rtmp://demo.aliyundoc.com/test/liveStream****_3_4\\",\\n \\"AudioFrameRate\\": 42.9,\\n \\"BitRate\\": 30693.96\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainLimit' => [ + 'summary' => 'Queries the maximum numbers of ingested and transcoded streams for a streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => '* The accelerated domain name. You can specify only one domain name. If you specify multiple domain names, an error occurs.'."\n" - .'* If you do not specify the AppName and StreamName parameters, monitoring data of all streams for the domain name is returned.'."\n" - .'* If you leave this parameter empty, monitoring data of streams under all domain names is returned.'."\n" - .'* If you specify the DomainName parameter and set both the AppName and StreamName parameters to all, monitoring data of all streams in all applications under the specified domain name is returned.'."\n" - .'* When you specify the DomainName parameter, make sure that the domain name is a domain name used for live streaming and that you have the permissions on the domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2015-12-10T20:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time, and the maximum time range that can be specified is one day. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2015-12-10T21:00:00Z', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application for which you want to query the monitoring data of streams.'."\n" - ."\n" - .'> If you specify the StreamName parameter, you must also specify the AppName parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the stream. The stream must belong to the application that is specified by the AppName parameter.'."\n" - ."\n" - .'> If you specify the StreamName parameter, you must also specify the AppName parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'Protocol', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming protocol. Valid values: **flv**, **hls**, **rtmp**, **rts**, and **p2p**.'."\n" - ."\n" - .'You can specify multiple protocols. Separate multiple protocols with commas (,). However, data over multiple protocols is not aggregated and is returned based on the stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'flv', - ], - ], - [ - 'name' => 'NextPageToken', - 'in' => 'query', - 'schema' => [ - 'description' => 'The token used to query data by page. Up to 5,000 rows of data can be returned per query. If the number of rows exceeds 5,000, a token that determines the start point of the next query is provided in the response. If you specify this parameter, data continues to be obtained from the end of the previous query.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67CIBKLw*****', - ], + 'schema' => ['description' => 'The main streaming domain', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned data.'."\n", + 'description' => 'A list of stream ingest and transcoding limits.', 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'EndTime' => [ - 'description' => 'The end of the time range during which data was queried.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T21:00:00Z', - ], - 'NextPageToken' => [ - 'description' => 'The token that determines the start point of the next query. This parameter is returned if more data results are available.'."\n", - 'type' => 'string', - 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', - ], - 'PageSize' => [ - 'description' => 'The number of rows returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5000', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which data was queried.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T20:00:00Z', - ], - 'StreamDetailData' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A3136B58-5876-4168-83CA-B562********', 'title' => ''], + 'LiveDomainLimitList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'StreamData' => [ - 'description' => 'The data array returned.'."\n", + 'LiveDomainLimit' => [ + 'description' => 'A list of stream ingest and transcoding limits.', 'type' => 'array', 'items' => [ - 'description' => 'The data array returned.'."\n", + 'description' => 'A list of stream ingest and transcoding limits.', 'type' => 'object', 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'app', - ], - 'Bps' => [ - 'description' => 'The total bandwidth consumed by the stream per minute. Unit: bit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '423304182.66', - ], - 'Count' => [ - 'description' => 'The total number of online viewers for the stream per minute.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '423304182', - ], - 'FlvBps' => [ - 'description' => 'The bandwidth over the Flash Video (FLV) protocol. Unit: bit/s.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '454', - ], - 'FlvCount' => [ - 'description' => 'The number of online viewers over the FLV protocol.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '32', - ], - 'FlvTraffic' => [ - 'description' => 'The amount of traffic over the FLV protocol. Unit: bytes.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1254', - ], - 'HlsBps' => [ - 'description' => 'The bandwidth over the HTTP Live Streaming (HLS) protocol. Unit: bit/s.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '4456', - ], - 'HlsCount' => [ - 'description' => 'The number of online viewers over the HLS protocol.'."\n" - ."\n" - .'> Currently, this parameter is not supported.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '56', - ], - 'HlsTraffic' => [ - 'description' => 'The amount of traffic over the HLS protocol. Unit: bytes.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '568', - ], - 'NewConns' => [ - 'description' => 'Number of new connections established per minute.', - 'type' => 'string', - 'example' => '450', - ], - 'P2pBps' => [ - 'description' => 'The bandwidth over the P2P protocol. Unit: bit/s.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '6845', - ], - 'P2pCount' => [ - 'description' => 'The number of online viewers over the P2P protocol.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '78', - ], - 'P2pTraffic' => [ - 'description' => 'The amount of traffic over the peer-to-peer (P2P) protocol. Unit: bytes.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '4102', - ], - 'RtmpBps' => [ - 'description' => 'The bandwidth over the Real-Time Messaging Protocol (RTMP) protocol. Unit: bit/s.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '3323', - ], - 'RtmpCount' => [ - 'description' => 'The number of online viewers over the RTMP protocol.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '63', - ], - 'RtmpTraffic' => [ - 'description' => 'The amount of traffic over the RTMP protocol. Unit: bytes.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '5568', - ], - 'RtsBps' => [ - 'description' => 'The bandwidth over the RTS protocol. Unit: bit/s.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '2361', - ], - 'RtsCount' => [ - 'description' => 'The number of online viewers over the Real-Time Streaming (RTS) protocol.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '89', - ], - 'RtsTraffic' => [ - 'description' => 'The amount of traffic over the RTS protocol. Unit: bytes.'."\n" - ."\n" - .'> This parameter is not returned if no traffic is generated over the protocol.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2322', - ], - 'StreamName' => [ - 'description' => 'The name of the stream.'."\n", - 'type' => 'string', - 'example' => 'test.flv', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T20:00:00Z', - ], - 'Traffic' => [ - 'description' => 'The total amount of traffic consumed by the stream per minute. Unit: bytes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '423304182', - ], + 'LimitTranscodeNum' => ['description' => 'The maximum number of transcoded streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '50', 'title' => ''], + 'CurrentTranscodeNum' => ['description' => 'The current number of active transcoded streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'LimitNum' => ['description' => 'The maximum number of ingested streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''], + 'LimitTransferNum' => ['description' => 'The maximum number of streams relayed from the live center.', 'type' => 'integer', 'format' => 'int32', 'example' => '50', 'title' => ''], + 'CurrentNum' => ['description' => 'The current number of ingested streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'CurrentTransferNum' => ['description' => 'The current number of streams relayed from the live center.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'DomainName' => ['description' => 'The queried main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidPageToken', - 'errorMessage' => 'The token of page is invalid.', - ], - [ - 'errorCode' => 'InvalidAppName.Mismatch', - 'errorMessage' => 'The AppName param must be passed.', - ], - [ - 'errorCode' => 'InvalidStreamProtocol.NotSupport', - 'errorMessage' => 'The specified stream protocol is not support.', - ], - [ - 'errorCode' => 'InvalidStreamName.LengthTooLong', - 'errorMessage' => 'The specified stream name is too long.', - ], - [ - 'errorCode' => 'InvalidAppName.LengthTooLong', - 'errorMessage' => 'The specified app name is too long.', - ], - [ - 'errorCode' => 'InvalidTime.ValueNotSupported', - 'errorMessage' => 'Specified Time is malformed.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2015-12-10T21:00:00Z\\",\\n \\"NextPageToken\\": \\"UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\",\\n \\"PageSize\\": 5000,\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"StartTime\\": \\"2015-12-10T20:00:00Z\\",\\n \\"StreamDetailData\\": {\\n \\"StreamData\\": [\\n {\\n \\"AppName\\": \\"app\\",\\n \\"Bps\\": 423304182.66,\\n \\"Count\\": 423304182,\\n \\"FlvBps\\": 454,\\n \\"FlvCount\\": 32,\\n \\"FlvTraffic\\": 1254,\\n \\"HlsBps\\": 4456,\\n \\"HlsCount\\": 56,\\n \\"HlsTraffic\\": 568,\\n \\"NewConns\\": \\"450\\",\\n \\"P2pBps\\": 6845,\\n \\"P2pCount\\": 78,\\n \\"P2pTraffic\\": 4102,\\n \\"RtmpBps\\": 3323,\\n \\"RtmpCount\\": 63,\\n \\"RtmpTraffic\\": 5568,\\n \\"RtsBps\\": 2361,\\n \\"RtsCount\\": 89,\\n \\"RtsTraffic\\": 2322,\\n \\"StreamName\\": \\"test.flv\\",\\n \\"TimeStamp\\": \\"2015-12-10T20:00:00Z\\",\\n \\"Traffic\\": 423304182\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2015-12-10T21:00:00Z\\n 2015-12-10T20:00:00Z\\n B955107D-E658-4E77-B913-E0AC3D31693E\\n UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\n 5000\\n example.com\\n \\n 4102\\n 3323\\n 4456\\n 6845\\n test.flv\\n 78\\n 423304182\\n 63\\n 89\\n 2361\\n 423304192\\n 568\\n 454\\n 423304182\\n 2322\\n 5568\\n 56\\n app\\n 32\\n 1254\\n 2015-12-10T20:00:00Z\\n 450\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamMetricDetailData', - 'description' => 'If you call this operation to query the monitoring data of streams under a domain name for the first time, you must [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex) for backend configuration. Provide the following information in the ticket:'."\n" - ."\n" - .'* The domain name that you want to query'."\n" - .'* The maximum number of concurrent streams under the domain name'."\n" - .'* The maximum number of concurrent online users in each stream'."\n" - .'* The protocols used for the client requests'."\n" - ."\n" - .'> The review is expected to be completed within one business day after you submit the ticket.'."\n" - ."\n" - .'## [](#)Usage limits'."\n" - ."\n" - .'* By default, statistics on the number of viewers who watch streams over the HTTP Live Streaming (HLS) protocol cannot be collected.'."\n" - .'* You can specify only one domain name in each call.'."\n" - .'* The maximum time range to query is 24 hours.'."\n" - .'* The minimum data granularity to query is 1 minute.'."\n" - .'* You can query data in the last 31 days.'."\n" + 'title' => 'DescribeLiveDomainLimit', + 'description' => 'This operation supports only main streaming domains.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveStreamDetailFrameRateAndBitRateData' => [ - 'summary' => 'Queries the audio and video frame rates and bitrates of a Real-Time Messaging Protocol (RTMP) stream.', - 'methods' => [ - 'get', - 'post', + .'You can call this operation up to 5 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. For more information, see [QPS limit](~~343507~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Special error codes'."\n" + .'| Error code | Error message | HTTP status code |Description|'."\n" + .'|--------|--------|--------|--------|'."\n" + .'|Missing DomainName|DomainName is mandatory for this action.|400|One or more required parameters are not specified. |'."\n" + .'|InvalidParam|Parameter invalid.|400|One or more specified parameters are invalid. |'."\n" + .'|InvalidDomain.NotFound|The domain provided does not exist in our records.|404|The domain name is not found within your Alibaba Cloud account. |', + 'changeSet' => [ + ['createdAt' => '2024-01-23T07:50:24.000Z', 'description' => 'Response parameters changed'], ], - 'schemes' => [ - 'https', + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainLimit', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562********\\",\\n \\"LiveDomainLimitList\\": {\\n \\"LiveDomainLimit\\": [\\n {\\n \\"LimitTranscodeNum\\": 50,\\n \\"CurrentTranscodeNum\\": 10,\\n \\"LimitNum\\": 100,\\n \\"LimitTransferNum\\": 50,\\n \\"CurrentNum\\": 10,\\n \\"CurrentTransferNum\\": 10,\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainLog' => [ + 'summary' => 'Retrieves the download URLs of raw access logs for a specified domain name in ApsaraVideo Live.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '215287', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'operationType' => 'get', + 'abilityTreeCode' => '107021', + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain or streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain or ingest domain.'."\n" + .'> - When you specify DomainName, make sure that the domain name is a live streaming domain name and that the user calling this operation has the required permissions on the specified domain name.'."\n" + .'> - Only a single domain name can be queried at a time.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AppName', - ], + 'schema' => ['description' => 'The page size. Valid values:'."\n" + ."\n" + .'- Any integer from **1** to **1000**.'."\n" + .'- Default value: **300**.'."\n" + .'- Maximum value: **1000**.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'default' => '300', 'example' => '20', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'exampleStreamName', - ], + 'schema' => ['description' => 'The page number.'."\n" + .'Valid values: [1, 9223372036854775807].'."\n" + .'> If you do not specify PageNumber, the first page of data is returned by default.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'required' => false, 'example' => '2016-10-20T04:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', + 'schema' => ['description' => 'The end time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + ."\n" + .'The end time must be later than the start time. The interval between the start time and end time cannot exceed 31 days.', 'type' => 'string', 'required' => false, 'example' => '2016-10-20T05:00:00Z', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> If the StartTime and EndTime parameters are invalid, or if the StartTime and EndTime parameters are not specified, data in the last hour is queried by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-22T08:00:00Z', + 'type' => 'object', + 'properties' => [ + 'DomainName' => ['description' => 'The streaming domain or ingest domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'DomainLogDetails' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DomainLogDetail' => [ + 'description' => 'The data composed of DomainLogDetail entries.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'LogCount' => ['description' => 'The total number of entries returned on the current page.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + 'LogInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LogInfoDetail' => [ + 'description' => 'The data composed of LogInfoDetail entries.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'EndTime' => ['description' => 'The end time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2016-10-20T05:00:00Z', 'title' => ''], + 'LogSize' => ['description' => 'The log size.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2016-10-20T04:00:00Z', 'title' => ''], + 'LogName' => ['description' => 'The log name.', 'type' => 'string', 'example' => 'developer.aliyundoc.com_2016_10_20_040000_050000.gz', 'title' => ''], + 'LogPath' => ['description' => 'The log path.', 'type' => 'string', 'example' => 'learn.aliyundoc.com/developer.aliyundoc.com/2016_10_20/example.aliyundoc.com_2016_10_20_040000_050000.gz?Expires=1522659931&OSSAccessKeyId=LTAI******eo4ZEuA&Signature=C01p%2BtA%******KP9Sru2Oxwy7Do0%3D', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'PageInfos' => [ + 'description' => 'The page information.', + 'type' => 'object', + 'properties' => [ + 'PageIndex' => ['description' => 'The page number of the returned data.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The page size.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + 'Total' => ['description' => 'The total number of log entries.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"DomainLogDetails\\": {\\n \\"DomainLogDetail\\": [\\n {\\n \\"LogCount\\": 10,\\n \\"LogInfos\\": {\\n \\"LogInfoDetail\\": [\\n {\\n \\"EndTime\\": \\"2016-10-20T05:00:00Z\\",\\n \\"LogSize\\": 10,\\n \\"StartTime\\": \\"2016-10-20T04:00:00Z\\",\\n \\"LogName\\": \\"developer.aliyundoc.com_2016_10_20_040000_050000.gz\\",\\n \\"LogPath\\": \\"learn.aliyundoc.com/developer.aliyundoc.com/2016_10_20/example.aliyundoc.com_2016_10_20_040000_050000.gz?Expires=1522659931&OSSAccessKeyId=LTAI******eo4ZEuA&Signature=C01p%2BtA%******KP9Sru2Oxwy7Do0%3D\\"\\n }\\n ]\\n },\\n \\"PageInfos\\": {\\n \\"PageIndex\\": 1,\\n \\"PageSize\\": 20,\\n \\"Total\\": 20\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query log download uRLs', + 'description' => '- Each API call supports querying offline logs for only a single domain name.'."\n" + .'- The optional parameters StartTime and EndTime must be specified together. After you specify the start time and end time, logs within the specified time range are queried.'."\n" + .'- If you do not specify StartTime and EndTime, log data from the past 24 hours is returned by default.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 100 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-09-29T03:51:17.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainLog'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainLog', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], + ], + 'DescribeLiveDomainMapping' => [ + 'summary' => 'Retrieves the mapping between ingest domains, main streaming domains, and sub-streaming domains.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => ['operationType' => 'get'], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The domain that you want to query. Valid types:'."\n" + ."\n" + .'- Ingest domain'."\n" + ."\n" + .'- Main streaming domain'."\n" + ."\n" + .'- Sub-streaming domain', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'example.com'], + ], + ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'FrameRateAndBitRateInfos' => [ - 'description' => 'The audio and video frame rates and bitrates at each time granularity.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AudioBitRate' => [ - 'description' => 'The audio bitrate of the live stream. Unit: bit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '200', - ], - 'AudioFrameRate' => [ - 'description' => 'The audio frame rate of the live stream. Unit: FPS.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '60', - ], - 'BitRate' => [ - 'description' => 'The bitrate of the live stream. Unit: bit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '1420', - ], - 'StreamUrl' => [ - 'description' => 'The URL of the live stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://example.com/AppName/exampleStreamName', - ], - 'Time' => [ - 'description' => 'The time when the data was collected. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-09-13T16:04:00Z', - ], - 'VideoBitRate' => [ - 'description' => 'The video bitrate of the live stream. Unit: bit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '1200', - ], - 'VideoFrameRate' => [ - 'description' => 'The video frame rate of the live stream. Unit: frames per second (FPS).'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '30', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F6CD8'], + 'LiveDomainModels' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveDomainModel' => [ + 'itemNode' => true, + 'description' => 'The mapping of the queried domain.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The mapping of the queried domain.', + 'type' => 'object', + 'properties' => [ + 'Type' => ['description' => 'The type of the queried domain. Valid values:'."\n" + ."\n" + .'- **vhost**: main streaming domain'."\n" + ."\n" + .'- **publish**: ingest domain'."\n" + ."\n" + .'- **play**: sub-streaming domain', 'type' => 'string', 'title' => '', 'example' => 'play'], + 'DomainName' => ['description' => 'The mapped domain.', 'type' => 'string', 'title' => '', 'example' => 'example.aliyundoc.com'], + ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], - ], - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"FrameRateAndBitRateInfos\\": [\\n {\\n \\"AudioBitRate\\": 200,\\n \\"AudioFrameRate\\": 60,\\n \\"BitRate\\": 1420,\\n \\"StreamUrl\\": \\"rtmp://example.com/AppName/exampleStreamName\\",\\n \\"Time\\": \\"2016-09-13T16:04:00Z\\",\\n \\"VideoBitRate\\": 1200,\\n \\"VideoFrameRate\\": 30\\n }\\n ],\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n \\n 200\\n 60\\n 1420\\n rtmp://example.com/AppName/exampleStreamName\\n \\n 1200\\n 30\\n \\n BC858082-736F-4A25-867B-E5B67C85ACF7\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamDetailFrameRateAndBitRateData', - 'description' => '* You can call this operation to query a set of audio and video frame rates and bitrates of an RTMP stream within a specified time range.'."\n" - .'* This operation is used to monitor data. The data returned by this operation cannot be used as a reference to calculate resource usage for billing.'."\n" - .'* You can query data in the last 90 days.'."\n" - .'* The data is delayed for 3 to 5 minutes.'."\n" - .'* The maximum time range that you can specify is 1 hour.'."\n", - 'requestParamsDescription' => 'If the StartTime and EndTime parameters are invalid, or if the StartTime and EndTime parameters are not specified, data in the last hour is queried by default.'."\n", - 'responseParamsDescription' => '> The total bitrate of the live stream is calculated differently from the audio and video bitrates. As a result, the sum of the audio and video bitrates may not be equal to the total bitrate. This operation is used to monitor data. The returned data cannot be used as a reference to calculate resource usage for billing.'."\n", - ], - 'DescribeLiveUserStreamMetricData' => [ - 'summary' => ' 查询指定域名流粒度批量数据', - 'methods' => [ - 'get', - 'post', + 'title' => 'DescribeLiveDomainMapping', + 'description' => 'Before you call this operation, identify the ingest or streaming domain that you want to query.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 500 times per minute per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-09-29T03:51:17.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainMapping'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F6CD8\\",\\n \\"LiveDomainModels\\": {\\n \\"LiveDomainModel\\": [\\n {\\n \\"Type\\": \\"play\\",\\n \\"DomainName\\": \\"example.aliyundoc.com\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainMonitoringUsageData' => [ + 'summary' => 'Queries the monitoring usage data of a domain name by calling DescribeLiveDomainMonitoringUsageData.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '214643', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '195294', + 'abilityTreeNodes' => ['FEATUREliveSM955S'], ], 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'test.com', - ], + 'schema' => ['description' => 'The streaming domain to query.'."\n" + ."\n" + .'- You can specify a single domain name or multiple domain names. Separate multiple domain names with commas (,).'."\n" + .'- If this parameter is left empty, the merged data of all live streaming domain names is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2015-12-10T20:00:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.'."\n" + .'- The minimum data granularity is 1 hour.'."\n" + .'- If this parameter is not specified, data of the last 24 hours is returned by default.', 'type' => 'string', 'required' => false, 'example' => '2022-12-10T20:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2015-12-10T21:00:00Z', - ], + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2022-12-10T22:00:00Z', 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'Region', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'app', - ], + 'schema' => ['description' => 'The live center region. If this parameter is left empty, the merged data of all regions is returned by default. You can specify multiple regions. Separate multiple regions with commas (,).', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'StreamName', + 'name' => 'InstanceId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'test.flv', - ], - ], - [ - 'name' => 'Protocol', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'flv', - ], + 'schema' => ['description' => 'The monitoring session ID. If this parameter is left empty, the merged data of all monitoring sessions is returned by default. You can specify multiple IDs. Separate multiple IDs with commas (,).', 'type' => 'string', 'required' => false, 'example' => 'e62af24d-a354-3b0c-9f1f-da592c4b****', 'title' => ''], ], [ - 'name' => 'PageNumber', + 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '1', - ], + 'schema' => ['description' => 'The time granularity for the query. Valid values: **3600** (hour) and **86400** (day).', 'type' => 'string', 'required' => false, 'example' => '3600', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'SplitBy', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '10', - ], + 'schema' => ['description' => 'The grouping key. Default value: **resolution**, which indicates grouping by resolution. Valid values: **domain**, **region**, **instance**, and **resolution**. You can specify multiple values. Separate multiple values with commas (,).', 'type' => 'string', 'required' => false, 'default' => 'resolution', 'example' => 'resolution', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response', + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'test.com', - ], - 'EndTime' => [ - 'description' => 'YYYY-MM-DDThh:mm:ssZ'."\n", - 'type' => 'string', - 'example' => '2015-12-10T21:00:00Z', - ], - 'PageSize' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], - 'StartTime' => [ - 'description' => '', - 'type' => 'string', - 'example' => '2015-12-10T20:00:00Z', - ], - 'StreamDetailData' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'app', - ], - 'Bps' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'float', - 'example' => '423304182.66', - ], - 'Count' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '423304182', - ], - 'FlvBps' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'float', - 'example' => '454', - ], - 'FlvCount' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '32', - ], - 'FlvTraffic' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '1254', - ], - 'HlsBps' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'float', - 'example' => '4456', - ], - 'HlsCount' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '56', - ], - 'HlsTraffic' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '568', - ], - 'NewConns' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '450', - ], - 'P2pBps' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'float', - 'example' => '6845', - ], - 'P2pCount' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '78', - ], - 'P2pTraffic' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '4102', - ], - 'RtmpBps' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'float', - 'example' => '3323', - ], - 'RtmpCount' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '63', - ], - 'RtmpTraffic' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '5568', - ], - 'RtsBps' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '2361', - ], - 'RtsCount' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '89', - ], - 'RtsTraffic' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '2322', - ], - 'StreamName' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'test.flv', - ], - 'TimeStamp' => [ - 'description' => '', - 'type' => 'string', - 'example' => '2015-12-10T20:00:00Z', - ], - 'Traffic' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '423304182', + 'DomainName' => ['description' => 'The domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'EndTime' => ['description' => 'The end time of the query. The time is in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is in UTC.', 'type' => 'string', 'example' => '2022-12-10T22:00:00Z', 'title' => ''], + 'InstanceId' => ['description' => 'The monitoring session ID.', 'type' => 'string', 'example' => 'e62af24d-a354-3b0c-9f1f-da592c4b****', 'title' => ''], + 'MonitoringData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'MonitoringDataItem' => [ + 'description' => 'The monitoring usage details.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details.', + 'type' => 'object', + 'properties' => [ + 'DomainName' => ['description' => 'The domain name. This parameter is valid only when **Split** includes domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Duration' => ['description' => 'The duration, in minutes.', 'type' => 'integer', 'format' => 'int32', 'example' => '2000', 'title' => ''], + 'InstanceId' => ['description' => 'The monitoring session ID. This parameter is valid only when **Split** includes instance.', 'type' => 'string', 'example' => 'e62af24d-a354-3b0c-9f1f-da592c4b****', 'title' => ''], + 'Region' => ['description' => 'The live center region. This parameter is valid only when **Split** includes Region.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'Resolution' => ['description' => 'The resolution. This parameter is valid only when **Split** includes resolution.', 'type' => 'string', 'example' => '720P', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is in UTC.', 'type' => 'string', 'example' => '2022-12-10T20:00:00Z', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'TotalCount' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '50', - ], - 'PageNumber' => [ 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', + 'title' => '', + 'example' => '', ], + 'Region' => ['description' => 'The live center region.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3C6CCEC4-6B88-4D4A-93E4-D47B3******', 'title' => ''], + 'StartTime' => ['description' => 'The start time of the query. The time is in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is in UTC.', 'type' => 'string', 'example' => '2022-12-10T20:00:00Z', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', - ], - ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', - ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', - ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2022-12-10T22:00:00Z\\",\\n \\"InstanceId\\": \\"e62af24d-a354-3b0c-9f1f-da592c4b****\\",\\n \\"MonitoringData\\": {\\n \\"MonitoringDataItem\\": [\\n {\\n \\"DomainName\\": \\"example.com\\",\\n \\"Duration\\": 2000,\\n \\"InstanceId\\": \\"e62af24d-a354-3b0c-9f1f-da592c4b****\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"Resolution\\": \\"720P\\",\\n \\"TimeStamp\\": \\"2022-12-10T20:00:00Z\\"\\n }\\n ]\\n },\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"RequestId\\": \\"3C6CCEC4-6B88-4D4A-93E4-D47B3******\\",\\n \\"StartTime\\": \\"2022-12-10T20:00:00Z\\"\\n}","type":"json"}]', + 'title' => 'Query domain name monitoring usage', + 'description' => '- You can query multiple domain names at a time. Separate multiple domain names with commas (,).'."\n" + .'- You can query data of up to the last 90 days.'."\n" + .'- The time granularity for querying data is hour or day.'."\n" + .'- The maximum query time span is 31 days.'."\n" + .'## QPS limit'."\n" + .'The QPS limit for a single user on this operation is 20 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'extraInfo' => '## Special error codes'."\n" + .'| Error code | Description | HTTP status code | Meaning |'."\n" + .'|-------------|-------|-----------------|-------|'."\n" + .'| Throttling | Request was denied due to request throttling. | 503 | The request is throttled. |'."\n" + .'| InvalidDomain.NotFound | The domain provided does not belong to you. | 404 | The domain name does not exist or does not belong to the current user. |.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainMonitoringUsageData'], ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainMonitoringUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainName\\": \\"test.com\\",\\n \\"EndTime\\": \\"2015-12-10T21:00:00Z\\",\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"StartTime\\": \\"2015-12-10T20:00:00Z\\",\\n \\"StreamDetailData\\": [\\n {\\n \\"AppName\\": \\"app\\",\\n \\"Bps\\": 423304182.66,\\n \\"Count\\": 423304182,\\n \\"FlvBps\\": 454,\\n \\"FlvCount\\": 32,\\n \\"FlvTraffic\\": 1254,\\n \\"HlsBps\\": 4456,\\n \\"HlsCount\\": 56,\\n \\"HlsTraffic\\": 568,\\n \\"NewConns\\": 450,\\n \\"P2pBps\\": 6845,\\n \\"P2pCount\\": 78,\\n \\"P2pTraffic\\": 4102,\\n \\"RtmpBps\\": 3323,\\n \\"RtmpCount\\": 63,\\n \\"RtmpTraffic\\": 5568,\\n \\"RtsBps\\": 2361,\\n \\"RtsCount\\": 89,\\n \\"RtsTraffic\\": 2322,\\n \\"StreamName\\": \\"test.flv\\",\\n \\"TimeStamp\\": \\"2015-12-10T20:00:00Z\\",\\n \\"Traffic\\": 423304182\\n }\\n ],\\n \\"TotalCount\\": 50,\\n \\"PageNumber\\": 1\\n}","type":"json"}]', ], - 'DescribeLiveDomainRecordUsageData' => [ - 'summary' => 'Queries the numbers of live recording channels and container format conversions.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveDomainMultiStreamConfig' => [ + 'summary' => 'Queries the configuration status of dual-stream disaster recovery.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeCode' => '250493', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'pliveplay.gstv.com.cn', 'title' => ''], ], - [ - 'name' => 'DomainName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The main streaming domain to query.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'F486A44F-6B35-5A96-BF2C-************'], + 'Switch' => [ + 'description' => 'Indicates whether the dual-stream disaster recovery feature is enabled. Valid values:'."\n" + ."\n" + .'- **on**: enabled'."\n" + .'- **off**: disabled', + 'type' => 'string', + 'enumValueTitles' => ['off' => 'off', 'on' => 'on'], + 'example' => 'on', + 'title' => '', + ], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'CodeGetPushbackDomainError', 'errorMessage' => 'Unable to get the push domain name, please check the domain name mapping configuration.', 'description' => 'Unable to get the push domain name, please check the domain name mapping configuration.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeLiveDomainMultiStreamConfig', + 'changeSet' => [ + ['createdAt' => '2025-04-27T04:00:13.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainMultiStreamConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'* The minimum data granularity is 5 minutes.'."\n" - .'* If you do not specify this parameter, the data in the last 24 hours is returned.'."\n" - ."\n" - .'> The earliest start time that you can specify is 90 days back from the current time, accurate to seconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-05-10T20:00:00Z', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainMultiStreamConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"F486A44F-6B35-5A96-BF2C-************\\",\\n \\"Switch\\": \\"on\\"\\n}","type":"json"}]', + ], + 'DescribeLiveDomainOnlineUserNum' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC. Value requirements:'."\n" - ."\n" - .'* The end time is later than the start time.'."\n" - .'* The time range between the start time and end time is up to 31 days. If the time range is more than 31 days, the request fails and an error is reported.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-05-10T21:00:00Z', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '107024', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'Region', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region. Valid values:'."\n" - ."\n" - .'* **cn-beijing**: China (Beijing)'."\n" - .'* **cn-shanghai**: China (Shanghai)'."\n" - .'* **cn-shenzhen**: China (Shenzhen)'."\n" - .'* **cn-qingdao**: China (Qingdao)'."\n" - .'* **ap-southeast-1**: Singapore'."\n" - .'* **eu-central-1**: Germany (Frankfurt)'."\n" - .'* **ap-northeast-1**: Japan (Tokyo)'."\n" - .'* **ap-southeast-5**: Indonesia (Jakarta)'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'SplitBy', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The key that is used to group data. Valid values:'."\n" - ."\n" - .'* **domain**: groups results by domain name.'."\n" - .'* **record_fmt**: groups results by recording type.'."\n" - ."\n" - .'> You can select one option or both. If you want to select both options, separate them with a comma (,). The default value is `domain,record_fmt`. If you leave this parameter empty or set the value to `null`, this parameter is ignored.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'domain,record_fmt', - 'default' => 'record_fmt,domain', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'QueryTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* 60'."\n" - .'* 300'."\n" - .'* 3600'."\n" - .'* 86400'."\n" - ."\n" - .'> If you do not specify this parameter or specify an invalid value: The time granularity of the query for a time range that is less than or equal to 31 days is 300 seconds by default. The time granularity of the query for a time range that is more than 31 days is 86400 seconds by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', - ], + 'schema' => ['description' => 'The point of time to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2018-12-27T13:09:21Z', 'title' => ''], ], ], 'responses' => [ @@ -27658,279 +22187,244 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-05-10T21:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-05-10T20:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB', - ], - 'RecordUsageData' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3A3A8C3D-F8B2-4FBF-9319-771A11B855FA', 'title' => ''], + 'UserCount' => ['description' => 'The total number of online users at the specified point in time on the specified domain.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'StreamCount' => ['description' => 'The number of streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'OnlineUserInfo' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'DataModule' => [ - 'description' => 'The recording data that was collected for each interval.'."\n", + 'LiveStreamOnlineUserNumInfo' => [ + 'description' => 'The information about the streams.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'Type' => [ - 'description' => 'The recording file type. This parameter is returned if the value of the request parameter SplitBy contains `record_fmt`.'."\n", - 'type' => 'string', - 'example' => 'MP4', - ], - 'Domain' => [ - 'description' => 'The main streaming domain. This parameter is returned if the value of the request parameter SplitBy contains `domain`.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Region' => [ - 'description' => 'The region ID.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'TimeStamp' => [ - 'description' => 'The time when recording started.'."\n", - 'type' => 'string', - 'example' => '2021-05-10T20:00:00Z', - ], - 'Duration' => [ - 'description' => 'The recording length. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '3560', - ], - 'Count' => [ - 'description' => 'The number of peak channels.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'rtmp://example.com/test/liveStream****_3_1', 'title' => ''], + 'Infos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Info' => [ + 'description' => 'The stream statistics.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'UserNumber' => ['description' => 'The number of viewers watching the transcoded stream or the original stream.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'TranscodeTemplate' => ['description' => 'The transcoding template. A value of origin indicates that the stream is an original, non-transcoded stream.', 'type' => 'string', 'example' => 'origin', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified StartTime or EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidRecordFmt.NotSupported', - 'errorMessage' => 'The RecordFmt parameter is not supported.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], + ['errorCode' => 'InvalidQueryTime.Exceed', 'errorMessage' => 'QueryTime exceed three month.', 'description' => 'The query time is more than three months from the current time.'], + ['errorCode' => 'InvalidQueryTime.Malformed', 'errorMessage' => 'Specified QueryTime is malformed.', 'description' => 'The specified query time is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2021-05-10T21:00:00Z\\",\\n \\"StartTime\\": \\"2021-05-10T20:00:00Z\\",\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-910811DEBFEB\\",\\n \\"RecordUsageData\\": {\\n \\"DataModule\\": [\\n {\\n \\"Type\\": \\"MP4\\",\\n \\"Domain\\": \\"example.com\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"TimeStamp\\": \\"2021-05-10T20:00:00Z\\",\\n \\"Duration\\": 3560,\\n \\"Count\\": 1\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2021-05-10T20:00:00Z\\n 2021-05-10T21:00:00Z\\n 4B460F8B-993C-4F48-B98A-910811DEBFEB\\n \\n \\n MP4\\n 3560\\n 1\\n example.com\\n 2021-05-10T20:00:00Z\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainRecordUsageData', - 'description' => '* You can call this operation to query the number of concurrent recording channels on each day and event tracking data at different time intervals. This way, you can measure the peak number of concurrent recording channels on each day or month.'."\n" - .'* The number of time shifting channels is not included in the number of recording channels.'."\n" - .'* You can query data by domain name or query data for multiple domain names at a time. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you set the data granularity to 1 minute, the maximum time range to query is 24 hours. You can query data in the last 60 days.'."\n" - .'* If you set the data granularity to 1 hour, the maximum time range to query is 31 days. You can query data in the last 180 days.'."\n" - .'* If you set the data granularity to 1 day, the maximum time range to query is 90 days. You can query data in the last 366 days.'."\n" + 'title' => 'DescribeLiveDomainOnlineUserNum', + 'summary' => 'Retrieves the number of online viewers for all live streams on a specified domain.', + 'description' => 'This API only supports viewer counts for FLV, RTS, and RTMP streams. HLS streams are not supported. The data collection has a delay. For accuracy, query for data that is at least 5 minutes old.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'> This API replaces the deprecated `DescribeLiveStreamOnlineUserNum` endpoint.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 200 times per minute per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" - ."\n" - .'|Error code|Description|HTTP status code|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Throttling|Request was denied due to request throttling.|503|The error message returned because the request was denied due to traffic throttling.|'."\n" - .'|InvalidDomain.NotFound|The domain provided does not belong to you.|404|The error message returned because the specified domain name does not exist or does not belong to the current account.|', - ], - 'DescribeLiveDomainSnapshotData' => [ - 'summary' => 'Queries the number of snapshots for one or more streaming domains.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainOnlineUserNum', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"3A3A8C3D-F8B2-4FBF-9319-771A11B855FA\\",\\n \\"UserCount\\": 1,\\n \\"StreamCount\\": 1,\\n \\"OnlineUserInfo\\": {\\n \\"LiveStreamOnlineUserNumInfo\\": [\\n {\\n \\"StreamName\\": \\"rtmp://example.com/test/liveStream****_3_1\\",\\n \\"Infos\\": {\\n \\"Info\\": [\\n {\\n \\"UserNumber\\": 1,\\n \\"TranscodeTemplate\\": \\"origin\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainPublishErrorCode' => [ + 'summary' => 'Queries the stream ingest status codes for an ingest domain within a specified time range.', + 'methods' => ['get', 'post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveMH1XD3', - ], + 'abilityTreeCode' => '204356', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain to query.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ingest domain. You can specify multiple ingest domains. Separate multiple domain names with commas (,).'."\n" + ."\n" + .'> This parameter is required.', 'type' => 'string', 'required' => false, 'example' => 'example1.aliyundoc.com,example2.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'Filters and aggregates data by AppName. If you specify AppName, you must set DomainName to a specific ingest domain.', 'type' => 'string', 'required' => false, 'example' => 'AppName', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> You can query data in the last **90** days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2018-01-01T00:00:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + ."\n" + .'> If you do not set this parameter, data from the last hour is queried by default.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T09:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2018-01-02T00:00:00Z', - ], + 'schema' => ['description' => 'The end time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + ."\n" + .'> If you do not set this parameter, data from the last hour is queried by default.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T09:10:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693F', - ], - 'SnapshotDataInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'SnapshotDataInfo' => [ - 'description' => 'The daily statistics on the number of snapshots.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The details.'."\n", - 'type' => 'object', - 'properties' => [ - 'Date' => [ - 'description' => 'The date.'."\n", - 'type' => 'string', - 'example' => '20180209', - ], - 'Total' => [ - 'description' => 'The total number of snapshots that were captured on the day.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '110', - ], + 'DataInterval' => ['description' => 'The time granularity of the queried data. Unit: seconds. Default value: 60.', 'type' => 'string', 'example' => '60', 'title' => ''], + 'DomainName' => ['description' => 'The ingest domain.', 'type' => 'string', 'example' => 'example1.aliyundoc.com,example2.aliyundoc.com', 'title' => ''], + 'EndTime' => ['description' => 'The end time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2016-06-29T09:10:00Z', 'title' => ''], + 'RealTimeCodeData' => [ + 'description' => 'The status code distribution data for each time interval.', + 'type' => 'array', + 'items' => [ + 'description' => 'The status code distribution data for each time interval.', + 'type' => 'object', + 'properties' => [ + 'CodeData' => [ + 'description' => 'The list of status code distribution data.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of status code distribution data.', + 'type' => 'object', + 'properties' => [ + 'Code' => ['description' => 'The response code. Valid values:'."\n" + .'- 3: read data timeout.'."\n" + .'- 4: write data error.'."\n" + .'- 6: write data timeout.'."\n" + .'- 200: success.'."\n" + .'- 500: internal system unknown error.'."\n" + .'- 501: stream ingest exception.'."\n" + .'- 502: signaling took too long.'."\n" + .'- 401: stream ingest parameter exception.'."\n" + .'- 403: stream ingest authentication failed.', 'type' => 'string', 'example' => '200', 'title' => ''], + 'Count' => ['description' => 'The number of responses.', 'type' => 'string', 'example' => '20', 'title' => ''], + 'Proportion' => ['description' => 'The proportion of responses.', 'type' => 'string', 'example' => '66.04', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2016-06-29T09:01:00Z', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'BC858082-736F-4A25-867B-E5B67C******', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2016-06-29T09:00:00Z', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'StartTime or EndTime is mismatch.', - ], - [ - 'errorCode' => 'InvalidParamter', - 'errorMessage' => '%s, please check and try again later.', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"60\\",\\n \\"DomainName\\": \\"example1.aliyundoc.com,example2.aliyundoc.com\\",\\n \\"EndTime\\": \\"2016-06-29T09:10:00Z\\",\\n \\"RealTimeCodeData\\": [\\n {\\n \\"CodeData\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Count\\": \\"20\\",\\n \\"Proportion\\": \\"66.04\\"\\n }\\n ],\\n \\"TimeStamp\\": \\"2016-06-29T09:01:00Z\\"\\n }\\n ],\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C******\\",\\n \\"StartTime\\": \\"2016-06-29T09:00:00Z\\"\\n}","type":"json"}]', + 'title' => 'Query ingest domain stream ingest status codes', + 'description' => '- This operation is a monitoring data API. The data collection and processing method differs from billing and cannot be used to calculate usage for reconciliation purposes.'."\n" + .'- You can query data from the last 90 days.'."\n" + .'- Data is delayed by 3 to 5 minutes.'."\n" + .'## QPS limit'."\n" + .'The QPS limit for a single user is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainPublishErrorCode'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainPublishErrorCode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D*****\\",\\n \\"SnapshotDataInfos\\": {\\n \\"SnapshotDataInfo\\": [\\n {\\n \\"Date\\": \\"20180209\\",\\n \\"Total\\": 110\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n B955107D-E658-4E77-B913-E0AC3D31693F\\n \\n \\n 20180209\\n 110\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainSnapshotData', - 'description' => '* You can call this operation to collect statistics on the total number of snapshots on a day.'."\n" - .'* You can query data in the last 90 days.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'This operation does not have a queries per second (QPS) limit on a single user. You can call this operation based on your business requirements.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'DescribeLiveDetectPornData' => [ - 'summary' => 'Queries the usage data of content moderation.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveDomainPushBpsData' => [ + 'summary' => 'Queries the network bandwidth monitoring data for stream ingest on an ingest domain by calling DescribeLiveDomainPushBpsData.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -27941,129 +22435,55 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain to query.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you do not specify this parameter, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ingest domain.'."\n" + .'Batch domain name queries are supported. Separate multiple domain names with commas (,).'."\n" + .'If this parameter is left empty, the merged data of all ingest domains is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* You can query data in the last 90 days.'."\n" - ."\n" - .'* The minimum data granularity is 5 minutes. If you do not specify this parameter, data in the last 24 hours is queried.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T08:00:00Z', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + .'If you do not specify this parameter, data from the last 24 hours is returned by default.', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T20:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-10T09:00:00Z', - ], - ], - [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'Stream', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'Fee', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether a quota of free image scanning is available. Valid values:'."\n" - ."\n" - .'* **free**: specifies that a quota of free image scanning is available.'."\n" - .'* **charge**: specifies that a quota of free image scanning is not available and fees are charged.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'free', - ], + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + .'The end time must be later than the start time.', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'Scene', + 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'The moderation scenario. Valid values:'."\n" - ."\n" - .'* **porn**: pornography detection. This is the default value.'."\n" - .'* **terrorism**: terrorism detection'."\n" - .'* **ad**: ad violation detection'."\n" - .'* **live**: undesirable scene detection'."\n" - .'* **logo**: logo detection'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'porn', - ], + 'schema' => ['description' => 'The time granularity of the queried data. Unit: seconds. Valid values:'."\n" + ."\n" + .'- **300**'."\n" + .'- **3600**'."\n" + .'- **86400**'."\n" + ."\n" + .'If you do not specify this parameter or the specified value is not supported, the default value 300 is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], [ - 'name' => 'Region', + 'name' => 'IspNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region where the domain name resides.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The name of the Internet service provider (ISP) in English.'."\n" + .'You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain ISP names. If you do not specify this parameter, data for all ISPs is returned.', 'type' => 'string', 'required' => false, 'example' => 'alibaba', 'title' => ''], ], [ - 'name' => 'SplitBy', + 'name' => 'LocationNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The fields based on which data is grouped. Separate multiple fields with commas (,).'."\n" - ."\n" - .'> If you leave the **SplitBy** parameter empty, only the **TimeStamp** and **Count** parameters are returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****,liveStream****', - ], + 'schema' => ['description' => 'The name of the region in English.'."\n" + .'You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain region names. If you do not specify this parameter, data for all regions is returned.', 'type' => 'string', 'required' => false, 'example' => 'tianjin', 'title' => ''], ], ], 'responses' => [ @@ -28071,133 +22491,88 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', - ], - 'DetectPornData' => [ + 'EndTime' => ['description' => 'The end of the time range. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T21:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The beginning of the time range. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T20:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F', 'title' => ''], + 'DomainName' => ['description' => 'The ingest domain that was queried.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'DataInterval' => ['description' => 'The time granularity of the queried data.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'BpsDataPerInterval' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'DataModule' => [ - 'description' => 'The bandwidth data returned at each interval.'."\n", + 'description' => 'The network bandwidth data for each time interval.', 'type' => 'array', 'items' => [ - 'description' => 'The bandwidth data returned at each interval.'."\n", 'type' => 'object', 'properties' => [ - 'Domain' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Region' => [ - 'description' => 'The region in which the domain name resides.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'App' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'Stream' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T15:00:05Z', - ], - 'Count' => [ - 'description' => 'The number of reviewed images.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2', - ], - 'Scene' => [ - 'description' => 'The moderation scenario. Valid values:'."\n" - ."\n" - .'* **porn** (default): pornography'."\n" - .'* **terrorism**: terrorism or politically sensitive content'."\n" - .'* **ad**: ad violation'."\n" - .'* **live**: undesirable scene'."\n" - .'* **logo**'."\n", - 'type' => 'string', - 'example' => 'porn', - ], - 'Fee' => [ - 'description' => 'Indicates whether a quota of free image scanning is available. Valid values:'."\n" - ."\n" - .'* **free**'."\n" - .'* **charge**'."\n", - 'type' => 'string', - 'example' => 'free', - ], + 'BpsValue' => ['description' => 'The bandwidth value. Unit: bit/s.', 'type' => 'string', 'example' => '11288111', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T20:00:00Z', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"DetectPornData\\": {\\n \\"DataModule\\": [\\n {\\n \\"Domain\\": \\"example.com\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"App\\": \\"liveApp****\\",\\n \\"Stream\\": \\"liveStream****\\",\\n \\"TimeStamp\\": \\"2017-12-10T15:00:05Z\\",\\n \\"Count\\": 2,\\n \\"Scene\\": \\"porn\\",\\n \\"Fee\\": \\"free\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n B955107D-E658-4E77-B913-E0AC3D31693E\\n \\n example.com\\n cn-shanghai\\n liveApp****\\n liveStream****\\n 2017-12-10T15:00:05Z\\n 2\\n porn\\n free\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDetectPornData', - 'description' => '* The minimum data granularity is 5 minutes. If you do not specify the `StartTime` parameter, data in the last 24 hours is queried.'."\n" - .'* You can query data in the last 90 days.'."\n" - .'* You can call this operation to query the bandwidth at each interval.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2017-12-10T21:00:00Z\\",\\n \\"StartTime\\": \\"2017-12-10T20:00:00Z\\",\\n \\"RequestId\\": \\"3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"BpsDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"BpsValue\\": \\"11288111\\",\\n \\"TimeStamp\\": \\"2017-12-10T20:00:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query network bandwidth monitoring data for stream ingest on an ingest domain', + 'description' => '- The bandwidth data is measured in bit/s.'."\n" + .'- Batch domain name queries are supported. Separate multiple domain names with commas (,).'."\n" + .'- If you do not specify StartTime or EndTime, data from the last 24 hours is returned by default. You can also query data for a specific time range by specifying both StartTime and EndTime.'."\n" + .'- You can query data from the last 90 days.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 100 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" - ."\n" - .'|Error code|Error message|HTTP status code|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Throttling|Request was denied due to request throttling.|503|The error message returned because the request was denied due to traffic throttling.|'."\n" - .'|InvalidDomain.NotFound|The domain provided does not belong to you.|404|The error message returned because the specified domain name does not exist or does not belong to the current account.|', - ], - 'DescribeDomainUsageData' => [ - 'summary' => 'Queries the resource usage data of specific domain names in a specified billable region.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'security' => [ + 'ramActions' => [ [ - 'AK' => [], + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainPushBpsData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + ], + 'DescribeLiveDomainPushTrafficData' => [ + 'summary' => 'Queries the push traffic monitoring data of an ingest domain by calling DescribeLiveDomainPushTrafficData.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], ], ], 'operationType' => 'read', @@ -28205,152 +22580,54 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106980', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ingest domain.'."\n" + .'Batch domain name queries are supported. Separate multiple domain names with commas (,).'."\n" + .'If this parameter is left empty, the merged data of all ingest domains is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2015-12-10T20:00:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + .'If you do not specify this parameter, data of the last 24 hours is returned by default.', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T20:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'The end time must be later than the start time. The maximum time range that you can specify is **31** days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2015-12-10T21:00:00Z', - ], - ], - [ - 'name' => 'Type', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the resource usage data to query.'."\n" - ."\n" - .'Valid values if you set **Field** to **bps** or **traf**:'."\n" - ."\n" - .'* **rts**: bandwidth or traffic for Real-Time Streaming (RTS)'."\n" - .'* **quic**: bandwidth or traffic for QUIC'."\n" - .'* **all**: all bandwidth or traffic'."\n" - ."\n" - .'Valid values if you set **Field** to **req_traf** or **req_bps**:'."\n" - ."\n" - .'* **push**: stream ingest bandwidth or traffic'."\n" - .'* **push_proxy**: stream relay bandwidth or traffic'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'all', - 'default' => 'all', - 'enum' => [ - 'static', - 'dynamic', - 'quic', - 'rts', - 'push', - 'normal', - 'all', - 'push_proxy', - ], - ], - ], - [ - 'name' => 'Field', - 'in' => 'query', - 'schema' => [ - 'description' => 'The category of the resource usage data to query. Valid values:'."\n" - ."\n" - .'* **bps**: streaming bandwidth'."\n" - .'* **traf**: streaming traffic'."\n" - .'* **req_traf**: stream ingest traffic if you set Type to push, or stream relay traffic if you set Type to push_proxy'."\n" - .'* **req_bps**: stream ingest bandwidth if you set Type to push, or stream relay bandwidth if you set Type to push_proxy'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'traf', - ], + 'schema' => ['description' => 'The end time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'Area', + 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'The billable region. Valid values:'."\n" - ."\n" - .'* **CN**: Chinese mainland'."\n" - .'* **OverSeas**: outside the Chinese mainland'."\n" - .'* **AP1**: Asia Pacific 1'."\n" - .'* **AP2**: Asia Pacific 2'."\n" - .'* **AP3**: Asia Pacific 3'."\n" - .'* **NA**: North America'."\n" - .'* **SA**: South America'."\n" - .'* **EU**: Europe'."\n" - .'* **MEAA**: Middle East and Africa'."\n" - .'* **all**: all regions'."\n" - ."\n" - .'> If you do not specify this parameter, the default value CN is used. Alibaba Cloud supports the following countries and regions outside the Chinese mainland: - Asia Pacific 1: Hong Kong (China), Macao (China), Taiwan (China), Japan, and Southeast Asia excluding Vietnam and Indonesia. - Asia Pacific 2: Indonesia, South Korea, and Vietnam. - Asia Pacific 3: Australia and New Zealand. - North America: US and Canada. - South America: Brazil. Europe: Ukraine, UK, France, Netherlands, Spain, Italy, Sweden, and Germany. - Middle East and Africa: South Africa, Oman, UAE, and Kuwait.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'CN', - 'default' => 'CN', - ], + 'schema' => ['description' => 'The time granularity of the queried data. Unit: seconds. Valid values:'."\n" + ."\n" + .'- **300**'."\n" + .'- **3600**'."\n" + .'- **86400**'."\n" + ."\n" + .'If you do not specify this parameter or the specified value is not supported, the default value 300 is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], [ - 'name' => 'DataProtocol', + 'name' => 'IspNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The protocol of the data to query. Valid values:'."\n" - ."\n" - .'* **http**: HTTP'."\n" - .'* **https**: HTTPS'."\n" - .'* **quic**: QUIC'."\n" - .'* **all** (default): HTTP, HTTPS, and QUIC'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'all', - 'default' => 'all', - ], + 'schema' => ['description' => 'The name of the Internet service provider (ISP) in English.'."\n" + .'You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain ISP names. If you do not specify this parameter, data of all ISPs is returned.', 'type' => 'string', 'required' => false, 'example' => 'alibaba', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'LocationNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The time interval between the data entries to return. Unit: seconds. Valid values: **300** (5 minutes), **3600** (1 hour), and **86400** (1 day).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', - ], + 'schema' => ['description' => 'The name of the region in English.'."\n" + .'You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain region names. If you do not specify this parameter, data of all regions is returned.', 'type' => 'string', 'required' => false, 'example' => 'tianjin', 'title' => ''], ], ], 'responses' => [ @@ -28358,169 +22635,85 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range for which the resource usage data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T21:00Z', - ], - 'Type' => [ - 'description' => 'The type of the resource usage data.'."\n", - 'type' => 'string', - 'example' => 'all', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which the resource usage data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T20:00Z', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', - ], - 'Area' => [ - 'description' => 'The billable region where the resource usage data was generated.'."\n", - 'type' => 'string', - 'example' => 'CN', - ], - 'DomainName' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'DataInterval' => [ - 'description' => 'The time interval between the returned entries. Unit: seconds.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'UsageDataPerInterval' => [ + 'EndTime' => ['description' => 'The end time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T21:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T20:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F', 'title' => ''], + 'DomainName' => ['description' => 'The ingest domain.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'DataInterval' => ['description' => 'The data time granularity.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'TrafficDataPerInterval' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'DataModule' => [ - 'description' => 'The resource usage data that was collected for each time interval.'."\n", + 'description' => 'The traffic data for each time interval.', 'type' => 'array', 'items' => [ + 'description' => 'The traffic data time granularity.', 'type' => 'object', 'properties' => [ - 'Value' => [ - 'description' => 'The amount of resource usage.'."\n" - ."\n" - .'* If the value of the Field parameter is traf or req_traf, the returned data is measured in bytes.'."\n" - .'* If the value of the Field parameter is bps or req_bps, the returned data is measured in bit/s.'."\n" - .'* If the value of the Field parameter is acc, the returned data is measured by count.'."\n", - 'type' => 'string', - 'example' => '423304182', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T20:00:00Z', - ], + 'TrafficValue' => ['description' => 'The traffic value. Unit: bytes.', 'type' => 'string', 'example' => '1288111', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2017-12-10T20:05:00Z', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvaildParameter', - 'errorMessage' => 'Invalid Parameter', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified Time is malformed.', - ], - [ - 'errorCode' => 'InvalidParameterField', - 'errorMessage' => 'The specified Field is invalid.', - ], - [ - 'errorCode' => 'InvalidParameterType', - 'errorMessage' => 'The specified Type is invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2015-12-10T21:00Z\\",\\n \\"Type\\": \\"all\\",\\n \\"StartTime\\": \\"2015-12-10T20:00Z\\",\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"Area\\": \\"CN\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"UsageDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"Value\\": \\"423304182\\",\\n \\"TimeStamp\\": \\"2015-12-10T20:00:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n example.com\\n 300\\n \\n \\n 2015-12-10T20:00:00Z\\n 423304182\\n \\n \\n 2015-12-10T20:05:00Z\\n 454680793\\n \\n \\n 2015-12-10T20:10:00Z\\n 501718342\\n \\n \\n 2015-12-10T20:15:00Z\\n 434816025\\n \\n \\n B955107D-E658-4E77-B913-E0AC3D31693E\\n 2015-12-10T20:00Z\\n 2015-12-10T21:00Z\\n CN\\n all\\n","errorExample":""}]', - 'title' => 'DescribeDomainUsageData', - 'description' => '* You can query the resource usage data of up to 100 domain names at a time. Separate multiple domain names with commas (,). If you do not specify the DomainName parameter, the resource usage data of all domain names within your Alibaba Cloud account is returned.'."\n" - ."\n" - .'* The resource usage data includes network traffic that is measured in bytes, bandwidth that is measured in bit/s, and the number of requests.'."\n" - ."\n" - .'* If you do not specify the Interval parameter, you can query the resource usage data in the last 12 months that spans a period of up to 31 days per call. If you specify a time range of 1 to 3 days in a call, the time interval between the entries that are returned is 1 hour. If you specify a time range of more than 3 days in a call, the time interval between the entries that are returned is 1 day.'."\n" - ."\n" - .'* The following table describes the maximum time range per query, the time period within which historical data is available, and the data delay if you specify the Interval parameter.'."\n" - ."\n" - .'|Time granularity|Maximum time range per query|Historical data available|Data delay|'."\n" - .'|---|---|---|---|'."\n" - .'|5 minutes|3 days|93 days|15 minutes|'."\n" - .'|1 hour|31 days|186 days|4 hours|'."\n" - .'|1 day|90 days|366 days|04:00 on the next day|'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2017-12-10T21:00:00Z\\",\\n \\"StartTime\\": \\"2017-12-10T20:00:00Z\\",\\n \\"RequestId\\": \\"3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"TrafficDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"TrafficValue\\": \\"1288111\\",\\n \\"TimeStamp\\": \\"2017-12-10T20:05:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query ingest domain push traffic monitoring data', + 'description' => '- The unit of the traffic monitoring data is bytes.'."\n" + .'- Batch domain name queries are supported. Separate multiple domain names with commas (,).'."\n" + .'- If you do not specify StartTime or EndTime, data of the last 24 hours is returned by default. You can also query data for a specific time range by specifying both StartTime and EndTime.'."\n" + .'- You can query data of the last 90 days.'."\n" ."\n" .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', - 'requestParamsDescription' => '> '."\n" - .'Stable resource usage data at a specific point in time (T) can be queried at and after the point in time of T+N. N is 2 hours.'."\n" - ."\n" - .'For example, at 15:00:00 on December 21, you can retrieve the stable resource usage data at and before 13:00:00 on December 21.', - 'responseParamsDescription' => '## Special error codes'."\n" - ."\n" - .'| Error code | Error message | HTTP status code | Description |'."\n" - .'| ---------- | ------------- | ---------------- | ----------- |'."\n" - .'| Throttling | Request was denied due to request throttling. | 503 | The error message returned because the request was denied due to throttling. |'."\n" - .'| IllegalOperation | Illegal domain, operation is not permitted. | 403 | The error message returned because the domain name is invalid. |'."\n" - .'| OperationDenied | Your account does not open Live service yet. | 403 | The error message returned because ApsaraVideo Live is not activated. |'."\n" - .'| OperationDenied | Your Live service is suspended. | 403 | The error message returned because ApsaraVideo Live is suspended. |'."\n" - .'| InvalidDomain.NotFound | The domain provided does not belong to you. | 404 | The error message returned because the domain name does not exist or does not belong to your account. |'."\n" - .'| InvalidDomain.Offline | The domain provided is offline. | 404 | The error message returned because the domain name is disabled. |'."\n" - .'| ServiceBusy | The specified Domain is configuring, please retry later. | 403 | The error message returned because the domain name is being configured. Try again later. |'."\n" - .'| InvalidDomain.Configure_failed | Failed to configure the provided domain. | 500 | The error message returned because the domain name failed to be configured. |'."\n" - .'| InvalidParameter | Invalid Parameter. | 400 | The error message returned because one or more parameters are invalid. |'."\n" - .'| InvalidParameterProduct | Invalid Parameter Product. | 400 | The error message returned because the value of the Product parameter is invalid. |'."\n" - .'| InvalidParameterArea | Invalid Parameter Area. | 400 | The error message returned because the value of the Area parameter is invalid. |'."\n" - .'| InvalidParameterField | Invalid Parameter Field. | 400 | The error message returned because the value of the Field parameter is invalid. |'."\n" - .'| InvalidParameterStartTime | Invalid Parameter StartTime. | 400 | The error message returned because the value of the StartTime parameter is invalid. |'."\n" - .'| InvalidParameterEndTime | Invalid Parameter EndTime. | 400 | The error message returned because the value of the EndTime parameter is invalid. |'."\n" - .'| InvalidTimeRange | StartTime and EndTime range should less than 1 month. | 400 | The error message returned because the time range that is specified by the StartTime and EndTime parameters exceeds 31 days. |'."\n" - .'| InvalidParameterInterval | Invalid Parameter Interval. | 400 | The error message returned because the value of the Interval parameter is invalid. |', - ], - 'DescribeLivePushProxyUsageData' => [ - 'summary' => 'Queries the usage data of live center stream relay.', - 'methods' => [ - 'post', - 'get', + .'The QPS limit for a single user on this operation is 100 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation as appropriate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainPushTrafficData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveDomainPvUvData' => [ + 'summary' => 'Queries the page view (PV) and unique visitor (UV) data for a specified streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -28531,200 +22724,131 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '107030', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Region', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region. Separate multiple region IDs with commas (,). Valid values:'."\n" - ."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n" - .'* cn-shenzhen: China (Shenzhen)'."\n" - .'* cn-qingdao: China (Qingdao)'."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* eu-central-1: Germany (Frankfurt)'."\n" - .'* ap-northeast-1: Japan (Tokyo)'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - ."\n" - .'If you do not specify this parameter, data of all regions is aggregated and returned by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-beijing', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain to query.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.'."\n" + ."\n" + .'> - Make sure that the specified domain name is a streaming domain and that you have the required permissions to operate on it.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. By default, data in the last seven days is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2022-10-10T20:00:00Z', - ], + 'schema' => ['description' => 'The start time. The format is *yyyy-MM-dd*T*HH:mm:ssZ* (UTC).', 'type' => 'string', 'required' => false, 'example' => '2018-03-17T16:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. The end time must be later than the start time.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2022-10-10T21:00:00Z', - ], - ], - [ - 'name' => 'SplitBy', - 'in' => 'query', - 'schema' => [ - 'description' => 'The key that is used to group data. If you do not specify this parameter, the default value region is used. Data is aggregated and returned. Separate multiple keys with commas (,). Valid values:'."\n" - ."\n" - .'* domain: The value of DomainName in the response takes effect only if SplitBy is set to domain.'."\n" - .'* region: This is the default value. The value of Region in the response takes effect only if SplitBy is set to region.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'region', - 'default' => 'region', - ], + 'schema' => ['description' => 'The end time. The time must be later than the start time. The format is *yyyy-MM-dd*T*HH:mm:ssZ* (UTC).', 'type' => 'string', 'required' => false, 'example' => '2018-03-20T16:00:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned result.'."\n", + 'description' => 'The PV and UV data of the streaming domain.', 'type' => 'object', 'properties' => [ - 'EndTime' => [ - 'description' => 'The end time.'."\n", - 'type' => 'string', - 'example' => '2022-10-10T21:00:00Z', - ], - 'PushProxyData' => [ + 'EndTime' => ['description' => 'The end time. The format is *yyyy-MM-dd*T*HH:mm:ssZ* (UTC).', 'type' => 'string', 'example' => '2018-03-20T16:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The format is *yyyy-MM-dd*T*HH:mm:ssZ* (UTC).', 'type' => 'string', 'example' => '2018-03-17T16:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'E9D3257A-1B7C-414C-90C1-8D07AC47BCAC', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'DataInterval' => ['description' => 'The time interval for each record. Unit: seconds. The value is fixed at 3600.', 'type' => 'string', 'example' => '3600', 'title' => ''], + 'PvUvDataInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'PushProxyDataItem' => [ - 'description' => 'The usage data of live center stream relay.'."\n", + 'PvUvDataInfo' => [ + 'itemNode' => true, + 'description' => 'A list of PV and UV data.', + 'title' => '', 'type' => 'array', 'items' => [ - 'description' => 'The usage data of live center stream relay.'."\n", + 'description' => 'A list of PV and UV data.', 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The domain name. If the value of SplitBy includes domain, the returned data is grouped by domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Region' => [ - 'description' => 'The ID of the region. If the value of SplitBy includes region, the returned data is grouped by region.'."\n", - 'type' => 'string', - 'example' => 'cn-beijing', - ], - 'StreamCount' => [ - 'description' => 'The peak number of live center stream relay channels.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '8', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2022-10-10T20:00:00Z', - ], + 'PV' => ['description' => 'The PV data.', 'type' => 'string', 'example' => '3036', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time slice. The format is *yyyy-MM-dd*T*HH:mm:ssZ* (UTC).', 'type' => 'string', 'example' => '2018-03-19T16:00:00Z', 'title' => ''], + 'UV' => ['description' => 'The UV data.', 'type' => 'string', 'example' => '2', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB', - ], - 'StartTime' => [ - 'description' => 'The start time.'."\n", - 'type' => 'string', - 'example' => '2022-10-10T20:00:00Z', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified StartTime or EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidTime.ValueNotSupported', - 'errorMessage' => 'Specified Time is malformed.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'InvalidTime.ValueNotSupported', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'The specified time is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EndTime\\": \\"2022-10-10T21:00:00Z\\",\\n \\"PushProxyData\\": {\\n \\"PushProxyDataItem\\": [\\n {\\n \\"DomainName\\": \\"example.com\\",\\n \\"Region\\": \\"cn-beijing\\",\\n \\"StreamCount\\": 8,\\n \\"TimeStamp\\": \\"2022-10-10T20:00:00Z\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-910811DEBFEB\\",\\n \\"StartTime\\": \\"2022-10-10T20:00:00Z\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C370DAF1-C838-4288-A1A0-9A87633D248E\\n 2018-09-30T16:00:00Z\\n 2018-10-31T15:59:59Z\\n \\n \\n example.com\\n 6777\\n 2018-09-30T00:00:00Z\\n \\n \\n example.com\\n 6777\\n 2018-09-30T00:00:00Z\\n \\n \\n example.com\\n 6777\\n 2018-10-01T00:00:00Z\\n \\n \\n example.com\\n 6777\\n 2018-10-01T00:00:00Z\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLivePushProxyUsageData', - 'description' => '* You can call this operation to query the usage data of live center stream relay.'."\n" - .'* The maximum time range for a query is 31 days.'."\n" - .'* The minimum time granularity for a query is 1 day.'."\n" - .'* You can query the data in the last 90 days.'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'DescribeLiveDomainPvUvData', + 'description' => '- You can call this operation to view the geographic distribution of your video viewers, check access rankings for your accelerated domain names, and count the number of unique IP addresses that send requests to the domain name within a specific period.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- If you do not specify the StartTime and EndTime parameters, data from the last 24 hours is queried by default. You can also query data for a specified time range.'."\n" ."\n" - .'You can call this operation up to 5 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveRealtimeDeliveryAcc' => [ - 'summary' => 'Queries the number of real-time log deliveries.', - 'methods' => [ - 'post', - 'get', + .'- You can query only one domain name at a time.'."\n" + ."\n" + .'- You can query data from the last 90 days.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 100. If you exceed this limit, API calls are throttled. This may affect your business. We recommend that you call this operation at a reasonable frequency.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '### 特殊错误码'."\n" + .'|错误代码|描述|HTTP 状态码|语义|'."\n" + .'|--------|--------|----|----|'."\n" + .'|Throttling|Request was denied due to request throttling.|503|请求因流量控制被限制。|'."\n" + .'|InvalidDomain.NotFound|The domain provided does not belong to you.|404|域名不存在或不属于当前用户。|'."\n" + .'|InvalidTime.ValueNotSupported|Specified Time is malformed.|400|EndTime和StartTime差值超过90天或时间参数错误。|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainPvUvData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2018-03-20T16:00:00Z\\",\\n \\"StartTime\\": \\"2018-03-17T16:00:00Z\\",\\n \\"RequestId\\": \\"E9D3257A-1B7C-414C-90C1-8D07AC47BCAC\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DataInterval\\": \\"3600\\",\\n \\"PvUvDataInfos\\": {\\n \\"PvUvDataInfo\\": [\\n {\\n \\"PV\\": \\"3036\\",\\n \\"TimeStamp\\": \\"2018-03-19T16:00:00Z\\",\\n \\"UV\\": \\"2\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainRealTimeBpsData' => [ + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -28735,90 +22859,47 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeCode' => '107032', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-10T20:00:00Z', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'The end time must be later than the start time. The maximum time range that can be specified is one year.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-10T21:05:00Z', - ], + 'schema' => ['description' => 'The streaming domain.'."\n" + ."\n" + .'Separate multiple domain names with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'example1.aliyundoc.com,example2.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'IspNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* **300**'."\n" - .'* **3600**'."\n" - .'* **86400**'."\n" - ."\n" - .'If you specify an invalid value or do not specify this parameter, the default value is used. If the specified time range is no more than three days, the default value is 300. If the specified time range is more than three days and no more than 30 days, the default value is 3600. If the specified time range is more than 30 days, the default value is 86400.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '3600', - ], + 'schema' => ['description' => 'The English name of the carrier.'."\n" + ."\n" + .'For more information, see [DescribeCdnRegionAndIsp](~~91077~~).', 'type' => 'string', 'required' => false, 'example' => 'alibaba', 'title' => ''], ], [ - 'name' => 'Project', + 'name' => 'LocationNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery. If you leave this parameter empty, the data of all Log Service projects is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'project_example', - ], + 'schema' => ['description' => 'The English name of the region.'."\n" + ."\n" + .'For more information, see [DescribeCdnRegionAndIsp](~~91077~~).', 'type' => 'string', 'required' => false, 'example' => 'tianjin', 'title' => ''], ], [ - 'name' => 'LogStore', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Logstore to which log entries are delivered. If you leave this parameter empty, the data of all Logstores is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'logstore_example', - ], + 'schema' => ['description' => 'The start time. The format is *yyyy-MM-dd*T*HH:mm:ss*Z (UTC).', 'type' => 'string', 'required' => false, 'example' => '2015-11-30T05:39:00Z', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The end time. It must be later than the start time. The format is *yyyy-MM-dd*T*HH:mm:ss*Z (UTC).'."\n" + ."\n" + .'> If you do not specify this parameter, data within one hour of the start time is queried by default.', 'type' => 'string', 'required' => false, 'example' => '2015-11-30T05:40:00Z', 'title' => ''], ], ], 'responses' => [ @@ -28826,97 +22907,93 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '684306D2-2511-4977-991D-CE97E91FD7C0', - ], - 'RealTimeDeliveryAccData' => [ + 'EndTime' => ['description' => 'The end of the time range. The format is *yyyy-MM-dd*T*HH:mm:ss*Z (UTC).', 'type' => 'string', 'example' => '2015-11-30T05:40:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start of the time range. The format is *yyyy-MM-dd*T*HH:mm:ss*Z (UTC).', 'type' => 'string', 'example' => '2015-11-30T05:33:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'BC858082-736F-4A25-867B-E5B6******', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain name.', 'type' => 'string', 'example' => 'example1.aliyundoc.com,example2.aliyundoc.com', 'title' => ''], + 'DataInterval' => ['description' => 'The time granularity of the queried data.', 'type' => 'string', 'example' => '60', 'title' => ''], + 'RealTimeBpsDataPerInterval' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'AccData' => [ - 'description' => 'The information about real-time log deliveries.'."\n", + 'DataModule' => [ + 'itemNode' => true, + 'description' => 'The bandwidth data of the domain name at a 1-minute granularity.', + 'title' => '', 'type' => 'array', 'items' => [ + 'description' => 'The bandwidth data of the domain name at a 1-minute granularity.', 'type' => 'object', 'properties' => [ - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2015-12-10T20:00:00Z', - ], - 'FailedNum' => [ - 'description' => 'The number of failed real-time log deliveries.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'SuccessNum' => [ - 'description' => 'The number of successful real-time log deliveries.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '321321', - ], + 'Value' => ['description' => 'The bandwidth data. Unit: bit/second.', 'type' => 'string', 'example' => '59392614.8', 'title' => ''], + 'TimeStamp' => ['description' => 'The data timestamp.', 'type' => 'string', 'example' => '2015-11-30T05:39:00Z', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified StartTime or EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidDomainName.Malformed', 'errorMessage' => 'Specified domain name is malformed.', 'description' => 'Specified domain name is malformed.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"684306D2-2511-4977-991D-CE97E91FD7C0\\",\\n \\"RealTimeDeliveryAccData\\": {\\n \\"AccData\\": [\\n {\\n \\"TimeStamp\\": \\"2015-12-10T20:00:00Z\\",\\n \\"FailedNum\\": 0,\\n \\"SuccessNum\\": 321321\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 684306D2-2511-4977-991D-CE97E91FD7C0\\n \\n 2015-12-10T20:00:00Z\\n 0\\n 321321\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveRealtimeDeliveryAcc', - 'description' => '* You can collect statistics on the number of real-time log deliveries. The number of failed real-time log deliveries and the number of successful real-time log deliveries are counted.'."\n" - .'* You can query the data by UID.'."\n" - .'* You are charged for both successful and failed real-time log deliveries.'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'DescribeLiveDomainRealTimeBpsData', + 'summary' => 'Call the DescribeLiveDomainRealTimeBpsData operation to retrieve bandwidth data for a domain name at a 1-minute granularity.', + 'description' => '- You can call this operation to query the traffic and bandwidth usage of a specified domain name.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- You can query data from the last 7 days. The time range of a single query cannot exceed 24 hours.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'- If you do not specify StartTime and EndTime, data for the last hour is returned by default.'."\n" + ."\n" + .'- This operation provides monitoring data. The data collection and processing methods are different from those used for billing. You cannot use the data from this operation for billing reconciliation.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10. If you exceed this limit, your API calls are throttled. This may affect your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => '### Special error codes'."\n" - ."\n" - .'|Error code|Error message|HTTP status code|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|InvalidStartTime.ValueNotSupported|The specified value of parameter StartTime is not supported.|400|The error message returned because the time range that is specified by the EndTime and StartTime parameters exceeds 90 days.|'."\n" - .'|InvalidEndTime.Mismatch|Specified EndTime does not math the specified StartTime.|400|The error message returned because the end time is earlier than the start time.|', - ], - 'DescribeLiveDomainTimeShiftData' => [ - 'summary' => 'Queries the resource usage data of time shifting for one or more domain names.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRealTimeBpsData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2015-11-30T05:40:00Z\\",\\n \\"StartTime\\": \\"2015-11-30T05:33:00Z\\",\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B6******\\",\\n \\"DomainName\\": \\"example1.aliyundoc.com,example2.aliyundoc.com\\",\\n \\"DataInterval\\": \\"60\\",\\n \\"RealTimeBpsDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"Value\\": \\"59392614.8\\",\\n \\"TimeStamp\\": \\"2015-11-30T05:39:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainRealTimeHttpCodeData' => [ + 'summary' => 'Retrieves the proportions of HTTP status codes for an accelerated domain name at a 1-minute granularity.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -28927,74 +23004,48 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeCode' => '107034', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain to query.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.'."\n" + .'> - When you specify DomainName, make sure that the domain name is a live streaming domain and that the caller has the required permissions on the domain name.'."\n" + .'> - Separate multiple domain names with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'example.com,example.aliyundoc.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The minimum data granularity is 5 minutes.'."\n" - ."\n" - .'* If you leave this parameter empty, data in the last 24 hours is queried.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-03-03T00:00:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + ."\n" + .'> If both StartTime and EndTime are left empty, data within the last **1** hour from the current time is returned by default.', 'type' => 'string', 'required' => false, 'example' => '2015-11-30T05:39:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-03-03T02:00:00Z', - ], + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + .'> If both StartTime and EndTime are left empty, data within the last **1** hour from the current time is returned by default.', 'type' => 'string', 'required' => false, 'example' => '2015-11-30T05:40:00Z', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'IspNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* 300'."\n" - .'* 3600'."\n" - .'* 86400'."\n" - ."\n" - .'If you do not specify this parameter or specify an invalid value, the default value 300 is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', - ], + 'schema' => ['description' => 'The name of the Internet service provider (ISP) in English.'."\n" + ."\n" + .'You can call the [DescribeCdnRegionAndIsp](~~448109~~) operation to obtain the ISP name.', 'type' => 'string', 'required' => false, 'example' => 'alibaba', 'title' => ''], + ], + [ + 'name' => 'LocationNameEn', + 'in' => 'query', + 'schema' => ['description' => 'The name of the region in English.'."\n" + ."\n" + .'You can call the [DescribeCdnRegionAndIsp](~~448109~~) operation to obtain the region name.', 'type' => 'string', 'required' => false, 'example' => 'tianjin', 'title' => ''], ], ], 'responses' => [ @@ -29002,90 +23053,118 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '8AE1CB3A-6510-442E-A6B9-EF03D05B3E09', - ], - 'TimeShiftData' => [ + 'EndTime' => ['description' => 'The end time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2015-11-30T05:40:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2015-11-30T05:33:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com,example.aliyundoc.com', 'title' => ''], + 'DataInterval' => ['description' => 'The time interval between consecutive data entries. Unit: seconds. Default value: 60.', 'type' => 'string', 'example' => '60', 'title' => ''], + 'RealTimeHttpCodeData' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'DataModule' => [ - 'description' => 'The time shifting usage data that was collected for each time interval.'."\n", + 'UsageData' => [ + 'description' => 'The HTTP status code proportion data for each time interval.', 'type' => 'array', 'items' => [ - 'description' => 'The time shifting usage data that was collected for each time interval.'."\n", 'type' => 'object', 'properties' => [ - 'Type' => [ - 'description' => 'The type of time shifting. Examples: HLS_D1 and HLS_D7.'."\n", - 'type' => 'string', - 'example' => 'HLS_D7', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2021-03-03T00:00:00Z', - ], - 'Size' => [ - 'description' => 'The storage used for time shifting. Unit: bytes.'."\n", - 'type' => 'string', - 'example' => '1664165660', + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2015-11-30T05:39:00Z', 'title' => ''], + 'Value' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RealTimeCodeProportionData' => [ + 'description' => 'The proportion data for each HTTP status code.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => ['description' => 'The HTTP status code.', 'type' => 'string', 'example' => '200', 'title' => ''], + 'Proportion' => ['description' => 'The proportion of responses with this status code.', 'type' => 'string', 'example' => '66.046511627907', 'title' => ''], + 'Count' => ['description' => 'The number of responses.', 'type' => 'string', 'example' => '20', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'MissingTimeParameter', 'errorMessage' => 'The StartTime and EndTime must be both specified.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'The specified StartTime is invalid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'The specified EndTime is invalid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'The specified EndTime is earlier than the StartTime.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified StartTime is invalid.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8AE1CB3A-6510-442E-A6B9-EF03D05B3E09\\",\\n \\"TimeShiftData\\": {\\n \\"DataModule\\": [\\n {\\n \\"Type\\": \\"HLS_D7\\",\\n \\"TimeStamp\\": \\"2021-03-03T00:00:00Z\\",\\n \\"Size\\": \\"1664165660\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\n \\n HLS_D7\\n 1664165660\\n 2021-03-03T00:00:00Z\\n \\n\\n8AE1CB3A-6510-442E-A6B9-EF03D05B3E09\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainTimeShiftData', - 'description' => '* You can call this operation to query the time shifting usage data at each time interval.'."\n" - .'* You can query data in the last 90 days.'."\n" - .'* The time interval is 1 hour.'."\n" - .'* The maximum time range for a query is 31 days.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2015-11-30T05:40:00Z\\",\\n \\"StartTime\\": \\"2015-11-30T05:33:00Z\\",\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\",\\n \\"DomainName\\": \\"example.com,example.aliyundoc.com\\",\\n \\"DataInterval\\": \\"60\\",\\n \\"RealTimeHttpCodeData\\": {\\n \\"UsageData\\": [\\n {\\n \\"TimeStamp\\": \\"2015-11-30T05:39:00Z\\",\\n \\"Value\\": {\\n \\"RealTimeCodeProportionData\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Proportion\\": \\"66.046511627907\\",\\n \\"Count\\": \\"20\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query real-time HTTP status code proportions for live streaming domains', + 'description' => 'The following table describes the data timestamp granularity supported by this operation:'."\n" + .'|Time granularity|Maximum time range per query|Historical data available|Data latency|'."\n" + .'|-----|------|-------|-------|'."\n" + .'|1 minute|1 hour|7 days|5 minutes|'."\n" + .'|5 minutes|3 days|93 days|15 minutes|'."\n" + .'|1 hour|31 days|186 days|Typically 4 hours|'."\n" + .'|1 day|Unlimited|366 days|After 04:00 on the next day|'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Invoke this operation as needed.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'DescribeLiveDomainStreamTranscodeData' => [ - 'summary' => 'Queries the transcoding length for one or more domain names.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRealTimeHttpCodeData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveDomainRealTimeTrafficData' => [ + 'summary' => 'Queries real-time traffic monitoring data for live streaming domain names.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -29096,113 +23175,47 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeCode' => '107036', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain to query.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain name.'."\n" + ."\n" + .'To specify multiple domain names, separate them with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'example.com,example.aliyundoc.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'* The minimum query interval is 1 hour.'."\n" - .'* If you do not set this parameter, the transcoding length for the last 24 hours is returned.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-10T20:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-10T22:00:00Z', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" + ."\n" + .'> If you do not specify this parameter, data in the last hour is queried.', 'type' => 'string', 'required' => false, 'example' => '2015-12-10T15:00:00Z', 'title' => ''], ], [ - 'name' => 'Precision', + 'name' => 'IspNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The time precision of the query. Valid values:'."\n" - ."\n" - .'* **min** (default): in minutes.'."\n" - .'* **sec**: in seconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'min', - 'default' => 'min', - 'enum' => [ - 'min', - 'sec', - ], - ], + 'schema' => ['description' => 'The name of the carrier.'."\n" + ."\n" + .'You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain the carrier name.', 'type' => 'string', 'required' => false, 'example' => 'alibaba', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'LocationNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* **3600**: 1 hour'."\n" - .'* **86400**: 1 day'."\n" - ."\n" - .'> If you do not specify this parameter, the time granularity of 1 hour is used by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '3600', - 'enum' => [ - '3600', - '86400', - ], - ], + 'schema' => ['description' => 'The name of the region.'."\n" + ."\n" + .'You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain the region name.', 'type' => 'string', 'required' => false, 'example' => 'tianjin', 'title' => ''], ], [ - 'name' => 'Split', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The key that is used to group data. Valid values:'."\n" - ."\n" - .'* **domain**: The DomainName parameter is available in the response only if Split is set to domain.'."\n" - .'* **region**: The Region parameter is available in the response only if Split is set to region.'."\n" - .'* **transcode_type**: The TanscodeType parameter is available in the response only if Split is set to transcode_type.'."\n" - .'* **resolution**: The Resolution parameter is available in the response only if Split is set to resolution.'."\n" - .'* **fps**: The Fps parameter is available in the response only if Split is set to fps.'."\n" - ."\n" - .'You can specify one or more keys. If you specify multiple keys, separate them with commas (,).'."\n" - ."\n" - .'Default value: `domain,region,transcode_type,resolution,fps`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'domain', - 'default' => 'domain,region,transcode_type,resolution,fps', - ], + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2015-12-10T15:01:00Z', 'title' => ''], ], ], 'responses' => [ @@ -29210,153 +23223,99 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F', - ], - 'TranscodeDataList' => [ + 'EndTime' => ['description' => 'The end of the time range. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is in UTC.', 'type' => 'string', 'example' => '2015-12-10T15:01:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start of the time range. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is in UTC.', 'type' => 'string', 'example' => '2015-12-10T15:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A666D44F-19D6-490E-97CF-1A64AB962C57', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain name.', 'type' => 'string', 'example' => 'example.com,example.aliyundoc.com', 'title' => ''], + 'DataInterval' => ['description' => 'The time interval between data points. Unit: second.', 'type' => 'string', 'example' => '60', 'title' => ''], + 'RealTimeTrafficDataPerInterval' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'TranscodeData' => [ - 'description' => 'The transcoding usage data returned at each interval.'."\n", + 'DataModule' => [ + 'itemNode' => true, + 'description' => 'The traffic data returned for each time interval.', + 'title' => '', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'TanscodeType' => [ - 'description' => 'The transcoding type. Valid values:'."\n" - ."\n" - .'> This parameter takes effect only if the request parameter Split is set to transcode_type.'."\n" - ."\n" - .'* **H264NBHD**: Narrowband HD™ transcoding based on H.264'."\n" - .'* **H265NBHD**: Narrowband HD™ transcoding based on H.265'."\n" - .'* **AUDIO**: audio transcoding'."\n", - 'type' => 'string', - 'example' => 'H264STD', - ], - 'Domain' => [ - 'description' => 'The main streaming domain. This parameter is returned only when you add the domain key to the value of the Split parameter.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Region' => [ - 'description' => 'The region in which the domain name resides. Valid values:'."\n" - ."\n" - .'> This parameter takes effect only when you set Split to region.'."\n" - ."\n" - .'* **cn-beijing**: China (Beijing)'."\n" - .'* **cn-shanghai**: China (Shanghai)'."\n" - .'* **cn-qingdao**: China (Qingdao)'."\n" - .'* **cn-shenzhen**: China (Shenzhen)'."\n" - .'* **ap-northeast-1**: Japan (Tokyo)'."\n" - .'* **ap-southeast-1**: Singapore'."\n" - .'* **ap-southeast-5**: Indonesia (Jakarta)'."\n" - .'* **eu-central-1**: Germany (Frankfurt)'."\n", - 'type' => 'string', - 'example' => 'cn-beijing', - ], - 'Duration' => [ - 'description' => 'The transcoding length. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2000', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data entry.'."\n", - 'type' => 'string', - 'example' => '2017-12-10T20:00:00Z', - ], - 'Fps' => [ - 'description' => 'The frame rate of the transcoded stream. This parameter is returned only when you add the fps key to the value of the Split parameter.'."\n", - 'type' => 'string', - 'example' => 'normal', - ], - 'Resolution' => [ - 'description' => 'The resolution of the transcoded stream. This parameter is returned only when you add the resolution key to the value of the Split parameter. Valid values:'."\n" - ."\n" - .'* **2K**'."\n" - .'* **4K**'."\n" - .'* **LD**: low definition'."\n" - .'* **SD**: standard definition'."\n" - .'* **HD**: high definition'."\n" - .'* **def**: audio'."\n", - 'type' => 'string', - 'example' => 'HD', - ], + 'Value' => ['description' => 'The traffic. Unit: byte.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'TimeStamp' => ['description' => 'The start of the time segment. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is in UTC.', 'type' => 'string', 'example' => '2015-12-10T15:01:00Z', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidParamPrecision', - 'errorMessage' => 'The parameter Precision is invalid, please check StartTime and EndTime or Precision.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => 'StartTime and EndTime can not be single.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'Abs.DomainName.Malformed', 'errorMessage' => 'The size of DomainName is too big.', 'description' => ''], + ['errorCode' => 'InvalidInterval.Malformed', 'errorMessage' => 'Specified Interval is malformed.', 'description' => ''], ], ], 'eventInfo' => [ 'enable' => false, 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"3C6CCEC4-6B88-4D4A-93E4-D47B******\\",\\n \\"TranscodeDataList\\": {\\n \\"TranscodeData\\": [\\n {\\n \\"TanscodeType\\": \\"H264STD\\",\\n \\"Domain\\": \\"example.com\\",\\n \\"Region\\": \\"cn-beijing\\",\\n \\"Duration\\": 2000,\\n \\"TimeStamp\\": \\"2017-12-10T20:00:00Z\\",\\n \\"Fps\\": \\"normal\\",\\n \\"Resolution\\": \\"HD\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F\\n\\n \\n normal\\n cn-beijing\\n 2000\\n H264STD\\n example.com\\n 2017-12-10T20:00:00Z\\n HD\\n \\n\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainStreamTranscodeData', - 'description' => '* You can call this operation to collect the transcoding usage data at each time interval.'."\n" - .'* You can specify multiple domain names by separating them with commas (,).'."\n" - .'* You can query data in the last 90 days.'."\n" - .'* The time granularity of data is 1 hour or 1 day.'."\n" - .'* For information about the billing of different transcoding types and transcoding resolutions, see the description about billing of different transcoding specifications in transcoding bills in the [Billing of live stream transcoding](~~90424~~) section of the ApsaraVideo Live pricing page.'."\n" + 'title' => 'DescribeLiveDomainRealTimeTrafficData', + 'description' => '- Call this operation to query the real-time traffic and bandwidth of a streaming domain name for a specific region, carrier, and time period.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- If you do not specify the StartTime and EndTime parameters, data from the last hour is queried by default. To query data for a specific time range, you must specify both the StartTime and EndTime parameters.'."\n" ."\n" - .'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => '## Special error codes'."\n" + .'- This operation returns monitoring data. This data is collected and processed differently from the data used for billing. Therefore, you cannot use the returned data for billing reconciliation.'."\n" ."\n" - .'| Error code | Error message | HTTP status code | Description |'."\n" - .'| ---------- | ------------- | ---------------- | ----------- |'."\n" - .'| Throttling | Request was denied due to request throttling. | 503 | The error message returned because the request was denied due to throttling. |'."\n" - .'| InvalidDomain.NotFound | The domain provided does not belong to you. | 404 | The error message returned because the domain name does not exist or does not belong to your Alibaba Cloud account. |', - ], - 'DescribeLiveProducerUsageData' => [ - 'summary' => 'Queries the production studio usage data.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + .'- You can query data from the last 90 days.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'This operation has no queries per second (QPS) limit for a single user. You can call this operation as needed.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainRealTimeTrafficData'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRealTimeTrafficData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2015-12-10T15:01:00Z\\",\\n \\"StartTime\\": \\"2015-12-10T15:00:00Z\\",\\n \\"RequestId\\": \\"A666D44F-19D6-490E-97CF-1A64AB962C57\\",\\n \\"DomainName\\": \\"example.com,example.aliyundoc.com\\",\\n \\"DataInterval\\": \\"60\\",\\n \\"RealTimeTrafficDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"Value\\": \\"0\\",\\n \\"TimeStamp\\": \\"2015-12-10T15:01:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveDomainRealtimeLogDelivery' => [ + 'summary' => 'Queries the information about real-time log delivery for a domain name.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -29367,123 +23326,182 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeCode' => '107035', + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Region', + 'name' => 'DomainName', 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The region in which the domain name resides. If you leave this parameter empty, the data of all regions is returned. You can specify multiple regions by separating them with commas (,).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', + 'type' => 'object', + 'properties' => [ + 'Status' => ['description' => 'The status of real-time log delivery. Valid values:'."\n" + ."\n" + .'- online: Real-time log delivery is enabled.'."\n" + ."\n" + .'- offline: Real-time log delivery is disabled.', 'type' => 'string', 'example' => 'online', 'title' => ''], + 'Logstore' => ['description' => 'The name of the Logstore in Simple Log Service (SLS) for real-time log delivery.', 'type' => 'string', 'example' => 'logstore_example', 'title' => ''], + 'Project' => ['description' => 'The name of the SLS project for real-time log delivery.', 'type' => 'string', 'example' => 'project_example', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '2F8F3852-912F-42AC-80EB-F1CF4284DE93', 'title' => ''], + 'Region' => ['description' => 'The region where the SLS project is located.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'Domain.NotFound', 'errorMessage' => 'Domain not found', 'description' => ''], + ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'DescribeLiveDomainRealtimeLogDelivery', + 'description' => 'You can call this operation to query the status of real-time log delivery for a domain name. Ensure that the parameter settings are valid.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'This operation is limited to 6,000 queries per second (QPS) per user. Calls that exceed this limit are throttled, which can affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Special error codes'."\n" + ."\n" + .'|HTTP status code|Error code|Description|'."\n" + .'|---|---|---|'."\n" + .'|404|Domain.NotFound|The error message returned because Log Service is not activated for the domain name.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainRealtimeLogDelivery'], + ], + ], + 'ramActions' => [ [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain of the production studio.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Status\\": \\"online\\",\\n \\"Logstore\\": \\"logstore_example\\",\\n \\"Project\\": \\"project_example\\",\\n \\"RequestId\\": \\"2F8F3852-912F-42AC-80EB-F1CF4284DE93\\",\\n \\"Region\\": \\"cn-shanghai\\"\\n}","type":"json"}]', + ], + 'DescribeLiveDomainRecordUsageData' => [ + 'summary' => 'Queries the number of concurrent recording streams and container format conversion usage for ApsaraVideo Live.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Instance', - 'in' => 'query', - 'schema' => [ - 'description' => 'The production studio instance that you want to query. You can specify one or more production studio instances. Separate multiple instances with commas (,).'."\n" - ."\n" - .'> If you do not set this parameter, the usage data of all production studio instances is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a17d0184-462d-4630-b2a6-8c26dde2****', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], + ], + 'parameters' => [ [ - 'name' => 'Type', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the production studio. You can specify one or more production studio types. Separate multiple types with commas (,). Valid values:'."\n" - ."\n" - .'* **slidelive**: playlist-mode studio.'."\n" - .'* **universal**: general studio.'."\n" - ."\n" - .'> If you do not set this parameter, the usage data of all types of production studios is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'slidelive', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'SplitBy', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The key that is used to group data. You can specify one or more keys. Separate multiple keys with commas (,). Valid values: domain, region, instance, and type. The data for a key that you specify by using the SplitBy parameter is returned by group.'."\n" - ."\n" - .'> If you do not set this parameter, the aggregated data is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'type', - ], + 'schema' => ['description' => 'The streaming domain name to query.'."\n" + ."\n" + .'- Supports single or batch domain queries. Separate multiple domain names with commas (,).'."\n" + .'- If this parameter is left empty, the merged data of all live streaming domain names is returned by default.'."\n" + .'- When you specify DomainName, make sure that the specified domain name is a live streaming domain name and that the caller has the required permissions on the domain name.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-09-30T16:00:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.'."\n" + ."\n" + .'- The minimum data granularity is 5 minutes.'."\n" + .'- If this parameter is not specified, data of the last 24 hours is returned by default.'."\n" + ."\n" + .'>The start time can be set to a point in time within the last 90 days from the current time, accurate to the second.', 'type' => 'string', 'required' => false, 'example' => '2021-05-10T20:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> The end time must be later than the start time.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2018-10-31T15:59:59Z', - ], + 'schema' => ['description' => 'The end time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC. Requirements:'."\n" + ."\n" + .'- The end time must be later than the start time (StartTime).'."\n" + .'- The maximum time span between the end time and the start time is 31 days. Requests that exceed 31 days fail and return an error.', 'type' => 'string', 'required' => false, 'example' => '2021-05-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'Region', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity for a query. Valid values: 3600 and 86400. Unit: seconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '3600', - ], + 'schema' => ['description' => 'The region. Valid values:'."\n" + ."\n" + .'- **cn-beijing**: Beijing.'."\n" + ."\n" + .'- **cn-shanghai**: Shanghai.'."\n" + ."\n" + .'- **cn-shenzhen**: Shenzhen.'."\n" + ."\n" + .'- **cn-qingdao**: Qingdao.'."\n" + ."\n" + .'- **ap-southeast-1**: Singapore.'."\n" + ."\n" + .'- **eu-central-1**: Germany.'."\n" + ."\n" + .'- **ap-northeast-1**: Tokyo.'."\n" + ."\n" + .'- **ap-southeast-5**: Jakarta.', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'app', + 'name' => 'SplitBy', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The grouping key. Valid values:'."\n" + ."\n" + .'- **domain**: groups query results by domain name.'."\n" + .'- **record_fmt**: groups query results by recording type.'."\n" + ."\n" + .'> You can specify one or more values. Separate multiple values with commas (,). Default value: `domain,record_fmt`. If this parameter is set to empty or `null`, the results are not grouped by the preceding keys.', 'type' => 'string', 'required' => false, 'default' => 'record_fmt,domain', 'example' => 'domain,record_fmt', 'title' => ''], + ], + [ + 'name' => 'Interval', + 'in' => 'query', + 'schema' => ['description' => 'The time granularity of the queried data. Unit: seconds. Valid values:'."\n" + ."\n" + .'- 60.'."\n" + ."\n" + .'- 300.'."\n" + ."\n" + .'- 3600.'."\n" + ."\n" + .'- 86400.'."\n" + ."\n" + .'>If this parameter is not specified or an unsupported value is specified, the default time granularity is 300 seconds for query spans within 31 days and 86400 seconds for query spans longer than 31 days.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], ], 'responses' => [ @@ -29491,148 +23509,104 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'BillProducerData' => [ + 'EndTime' => ['description' => 'The end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2021-05-10T21:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2021-05-10T20:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB', 'title' => ''], + 'RecordUsageData' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'BillProducerDataItem' => [ - 'description' => 'The production studio usage data.'."\n", + 'DataModule' => [ + 'description' => 'The recording usage data for each time interval.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The domain name. If domain is specified by the SplitBy parameter, the usage data is returned based on different domain names.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Instance' => [ - 'description' => 'The production studio instance. If instance is specified by the SplitBy parameter, the usage data is returned based on different production studio instances.'."\n", - 'type' => 'string', - 'example' => 'a17d0184-462d-4630-b2a6-8c26dde2****', - ], - 'OutputHdDuration' => [ - 'description' => 'The duration of high definition streaming. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '6000', - ], - 'OutputLdDuration' => [ - 'description' => 'The duration of low definition streaming. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1001', - ], - 'OutputSdDuration' => [ - 'description' => 'The duration of standard definition streaming. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '500', - ], - 'Region' => [ - 'description' => 'The region. If region is specified by the SplitBy parameter, the usage data is returned based on different regions.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2018-09-30T00:00:00Z', - ], - 'TranHdDuration' => [ - 'description' => 'The duration of high definition transcoding. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '6777', - ], - 'TranLdDuration' => [ - 'description' => 'The duration of low definition transcoding. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '111', - ], - 'TranSdDuration' => [ - 'description' => 'The duration of standard definition transcoding. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '666', - ], - 'Type' => [ - 'description' => 'The type of the production studio. If type is specified by the SplitBy parameter, the usage data is returned based on different types of production studios.'."\n", - 'type' => 'string', - 'example' => 'slidelive', - ], + 'Type' => ['description' => 'The recording file type.'."\n" + .'This field is valid only when the SplitBy request parameter includes `record_fmt`.', 'type' => 'string', 'example' => 'MP4', 'title' => ''], + 'Domain' => ['description' => 'The streaming domain name.'."\n" + .'This field is returned only when the SplitBy request parameter includes `domain`.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Region' => ['description' => 'The region.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the interval. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2021-05-10T20:00:00Z', 'title' => ''], + 'Duration' => ['description' => 'The recording length usage. Unit: seconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '3560', 'title' => ''], + 'Count' => ['description' => 'The peak number of concurrent streams.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'EndTime' => [ - 'description' => 'The end of the time range during which data was queried.'."\n", - 'type' => 'string', - 'example' => '2018-09-30T16:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'C370DAF1-C838-4288-A1A0-9A87633D248E', - ], - 'StartTime' => [ - 'description' => 'The start of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2018-10-31T15:59:59Z', + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified StartTime or EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidTime.ValueNotSupported', - 'errorMessage' => 'Specified Time is malformed.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified StartTime or EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidRecordFmt.NotSupported', 'errorMessage' => 'The RecordFmt parameter is not supported.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"BillProducerData\\": {\\n \\"BillProducerDataItem\\": [\\n {\\n \\"DomainName\\": \\"example.com\\",\\n \\"Instance\\": \\"a17d0184-462d-4630-b2a6-8c26dde2****\\",\\n \\"OutputHdDuration\\": 6000,\\n \\"OutputLdDuration\\": 1001,\\n \\"OutputSdDuration\\": 500,\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"TimeStamp\\": \\"2018-09-30T00:00:00Z\\",\\n \\"TranHdDuration\\": 6777,\\n \\"TranLdDuration\\": 111,\\n \\"TranSdDuration\\": 666,\\n \\"Type\\": \\"slidelive\\"\\n }\\n ]\\n },\\n \\"EndTime\\": \\"2018-09-30T16:00:00Z\\",\\n \\"RequestId\\": \\"C370DAF1-C838-4288-A1A0-9A87633D248E\\",\\n \\"StartTime\\": \\"2018-10-31T15:59:59Z\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C370DAF1-C838-4288-A1A0-9A87633D248E\\n 2018-09-30T16:00:00Z\\n 2018-10-31T15:59:59Z\\n \\n \\n 1001\\n 500\\n 6000\\n 111\\n 666\\n 6777\\n 2018-09-30T00:00:00Z\\n \\n \\n 1001\\n 500\\n 6000\\n 111\\n 666\\n 6777\\n 2018-10-01T00:00:00Z\\n \\n \\n 1001\\n 500\\n 6000\\n 111\\n 666\\n 6777\\n 2018-10-02T00:00:00Z\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveProducerUsageData', - 'description' => 'The minimum time granularity for a query is 1 hour. The maximum time range for a query is 31 days. You can query the production studio usage data in the last 90 days.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2021-05-10T21:00:00Z\\",\\n \\"StartTime\\": \\"2021-05-10T20:00:00Z\\",\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-910811DEBFEB\\",\\n \\"RecordUsageData\\": {\\n \\"DataModule\\": [\\n {\\n \\"Type\\": \\"MP4\\",\\n \\"Domain\\": \\"example.com\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"TimeStamp\\": \\"2021-05-10T20:00:00Z\\",\\n \\"Duration\\": 3560,\\n \\"Count\\": 1\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query live recording streams and container format conversion usage', + 'description' => '- Collects statistics on daily concurrent recording streams and sampling data at different time intervals. You can use this operation to query the peak number of daily or monthly concurrent recording streams.'."\n" + .'- Time shifting streams are not counted as recording streams.'."\n" + .'- Supports domain-level queries and batch domain queries. Separate multiple domain names with commas (,).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- Data granularity: 1 minute. Maximum query span: 24 hours. Maximum data retention: 60 days.'."\n" ."\n" - .'You can call this operation up to 5 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveDomainMonitoringUsageData' => [ - 'summary' => 'Queries the live monitoring usage data for one or more domain names.', - 'methods' => [ - 'post', - 'get', + .'- Data granularity: 1 hour. Maximum query span: 31 days. Maximum data retention: 180 days.'."\n" + ."\n" + .'- Data granularity: 1 day. Maximum query span: 90 days. Maximum data retention: 366 days.'."\n" + ."\n\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Special error codes'."\n" + .'| Error code | Description | HTTP status code | Meaning |'."\n" + .'|------------|--------|---------|------|'."\n" + .'| Throttling | Request was denied due to request throttling. | 503 | The request is throttled.|'."\n" + .'| InvalidDomain.NotFound | The domain provided does not belong to you. | 404 | The domain name does not exist or does not belong to the current user. |.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainRecordUsageData'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRecordUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveDomainSnapshotData' => [ + 'summary' => 'Queries the number of snapshots captured for a live streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -29643,236 +23617,110 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '195294', - 'abilityTreeNodes' => [ - 'FEATUREliveSM955S', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain to query.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The ingest domain name to query.'."\n" + .'- You can specify a single domain name or multiple domain names. Separate multiple domain names with commas (,).'."\n" + .'- If this parameter is left empty, the merged data of all live streaming domain names is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.aliyundoc.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format.'."\n" - ."\n" - .'* The time must be in UTC.'."\n" - .'* The minimum data granularity is 1 hour.'."\n" - .'* If you leave this parameter empty, data in the previous 24 hours is queried.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2022-12-10T20:00:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.'."\n" + .'>You can query data from the last **90** days.', 'type' => 'string', 'required' => true, 'example' => '2018-01-01T00:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2022-12-10T22:00:00Z', - ], - ], - [ - 'name' => 'Region', - 'in' => 'query', - 'schema' => [ - 'description' => 'The region of the live center. If you leave this parameter empty, data of all regions is queried by default. Separate multiple regions with commas (,).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], - ], - [ - 'name' => 'InstanceId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the monitoring session. If you leave this parameter empty, data of all monitoring sessions is queried by default. Separate multiple session IDs with commas (,).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'e62af24d-a354-3b0c-9f1f-da592c4b****', - ], - ], - [ - 'name' => 'Interval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity. Valid values: **3600** and **86400**. 3600 specifies that data is queried by hour and 86400 specifies that data is queried by day.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '3600', - ], - ], - [ - 'name' => 'SplitBy', - 'in' => 'query', - 'schema' => [ - 'description' => 'The key that is used to group data. Valid values: **domain**, **region**, **instance**, and **resolution**. Default value: **resolution**. resolution specifies that data is grouped by resolution. Separate multiple values with commas (,).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'resolution', - 'default' => 'resolution', - ], + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'required' => true, 'example' => '2018-01-02T00:00:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'EndTime' => [ - 'description' => 'The end of the time range.'."\n", - 'type' => 'string', - 'example' => '2022-12-10T22:00:00Z', - ], - 'InstanceId' => [ - 'description' => 'The ID of the monitoring session.'."\n", - 'type' => 'string', - 'example' => 'e62af24d-a354-3b0c-9f1f-da592c4b****', - ], - 'MonitoringData' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B955107D-E658-4E77-B913-E0AC3D*****', 'title' => ''], + 'SnapshotDataInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'MonitoringDataItem' => [ - 'description' => 'The live monitoring data.'."\n", + 'SnapshotDataInfo' => [ + 'description' => 'The daily statistics on the number of live streaming snapshots.', 'type' => 'array', 'items' => [ - 'description' => '', + 'description' => 'The details of the live streaming snapshot count.', 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The domain name. This field is valid only when you specify domain for the **SplitBy** parameter.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Duration' => [ - 'description' => 'The duration. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2000', - ], - 'InstanceId' => [ - 'description' => 'The ID of the monitoring session. This field is valid only when you specify instance for the **SplitBy** parameter.'."\n", - 'type' => 'string', - 'example' => 'e62af24d-a354-3b0c-9f1f-da592c4b****', - ], - 'Region' => [ - 'description' => 'The region of the live center. This field is valid only when you specify Region for the **SplitBy** parameter.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'Resolution' => [ - 'description' => 'The resolution. This field is valid only when you specify resolution for the **SplitBy** parameter.'."\n", - 'type' => 'string', - 'example' => '720P', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2022-12-10T20:00:00Z', - ], + 'Date' => ['description' => 'The date, accurate to the day. Format: yyyyMMdd.', 'type' => 'string', 'example' => '20180209', 'title' => ''], + 'Total' => ['description' => 'The total number of snapshots captured on the day.', 'type' => 'integer', 'format' => 'int32', 'example' => '110', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'Region' => [ - 'description' => 'The region of the live center.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range.'."\n", - 'type' => 'string', - 'example' => '2022-12-10T20:00:00Z', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'StartTime or EndTime is mismatch.', 'description' => ''], + ['errorCode' => 'InvalidParamter', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is invalid, please check and try again.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2022-12-10T22:00:00Z\\",\\n \\"InstanceId\\": \\"e62af24d-a354-3b0c-9f1f-da592c4b****\\",\\n \\"MonitoringData\\": {\\n \\"MonitoringDataItem\\": [\\n {\\n \\"DomainName\\": \\"example.com\\",\\n \\"Duration\\": 2000,\\n \\"InstanceId\\": \\"e62af24d-a354-3b0c-9f1f-da592c4b****\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"Resolution\\": \\"720P\\",\\n \\"TimeStamp\\": \\"2022-12-10T20:00:00Z\\"\\n }\\n ]\\n },\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"RequestId\\": \\"3C6CCEC4-6B88-4D4A-93E4-D47B3******\\",\\n \\"StartTime\\": \\"2022-12-10T20:00:00Z\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2022-12-10T22:00:00Z\\n 2022-12-10T20:00:00Z\\n 3C6CCEC4-6B88-4D4A-93E4-D47B3D92CF8F\\n cn-shanghai\\n e62af24d-a354-3b0c-9f1f-da592c4b****\\n example.com\\n \\n cn-shanghai\\n 2022-12-10T20:00:00Z\\n 2000\\n e62af24d-a354-3b0c-9f1f-da592c4b****\\n example.com\\n 720P\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainMonitoringUsageData', - 'description' => '* You can specify one or more domain names. Separate multiple domain names with commas (,).'."\n" - .'* You can query data in the last 90 days.'."\n" - .'* The data is queried by hour or day.'."\n" - .'* The maximum time range for a query is 31 days.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveDelayedStreamingUsage' => [ - 'summary' => 'Queries the stream delay usage data.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D*****\\",\\n \\"SnapshotDataInfos\\": {\\n \\"SnapshotDataInfo\\": [\\n {\\n \\"Date\\": \\"20180209\\",\\n \\"Total\\": 110\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query snapshot count data for a live streaming domain', + 'description' => '- You can use this operation to obtain the total number of snapshots captured per day.'."\n" + .'- You can query data from the last 90 days.'."\n" + ."\n\n" + .'## QPS limit'."\n" + .'This operation does not have a per-user QPS limit. Call this operation as needed.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainSnapshotData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveDomainStagingConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -29883,241 +23731,121 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain to query.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. By default, data in the last seven days is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2022-10-10T20:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. The end time must be later than the start time. We recommend that you specify a time range that is less than or equal to 10 hours.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2022-10-10T21:00:00Z', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the stream. Separate multiple stream names with commas (,). By default, data of all streams is aggregated and returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'Region', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region. Separate multiple region IDs with commas (,). Valid values:'."\n" - ."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n" - .'* cn-shenzhen: China (Shenzhen)'."\n" - .'* cn-qingdao: China (Qingdao)'."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* eu-central-1: Germany (Frankfurt)'."\n" - .'* ap-northeast-1: Japan (Tokyo)'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - ."\n" - .'If you leave this parameter empty, data of all regions is aggregated and returned by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], - ], - [ - 'name' => 'SplitBy', - 'in' => 'query', - 'schema' => [ - 'description' => 'The key that is used to group data. If you leave this parameter empty, data is aggregated and returned. Valid values:'."\n" - ."\n" - .'* domain: The DomainName parameter in the response takes effect only if SplitBy is set to domain.'."\n" - .'* region: The Region parameter in the response takes effect only if SplitBy is set to region.'."\n" - .'* stream: The StreamName parameter in the response takes effect only if SplitBy is set to stream.'."\n" - ."\n" - .'> This parameter takes effect only if the parameter corresponding to the value of this parameter is not left empty. Otherwise, an error is returned. For example, you cannot set this parameter to domain if the DomainName parameter is left empty.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'domain', - ], + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => true, 'example' => 'developer.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'Interval', + 'name' => 'FunctionNames', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* 300'."\n" - .'* 3600'."\n" - .'* 86400'."\n" - ."\n" - .'If you specify an invalid value or do not specify this parameter, the default value 3600 is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '3600', - ], + 'schema' => ['description' => 'The names of the features. Separate multiple feature names with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'aliauth', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned data.'."\n", 'type' => 'object', 'properties' => [ - 'DelayData' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DelayDataItem' => [ - 'description' => 'The details about the stream delay usage data.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The details about the stream delay usage data.'."\n", - 'type' => 'object', - 'properties' => [ - 'DomainName' => [ - 'description' => 'The domain name. If SplitBy is set to domain, the data returned is grouped by domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Duration' => [ - 'description' => 'The duration of stream delay.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '84', - ], - 'Region' => [ - 'description' => 'The ID of the region. If SplitBy is set to region, the data returned is grouped by region.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'StreamName' => [ - 'description' => 'The name of the stream. If SplitBy is set to stream, the data returned is grouped by stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2022-10-10T20:00:00Z', + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'C80705BF-0F76-41FA-BAD1-5B59296A4E59', 'title' => ''], + 'DomainConfigs' => [ + 'description' => 'The domain name configurations.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => ['description' => 'The status of the configuration. Valid values:'."\n" + ."\n" + .'- **success**: Successful.'."\n" + ."\n" + .'- **testing**: The configuration is being verified.'."\n" + ."\n" + .'- **failed**: Failed.'."\n" + ."\n" + .'- **configuring**: The configuration is in progress.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'ConfigId' => ['description' => 'The ID of the configuration.', 'type' => 'string', 'example' => '6295', 'title' => ''], + 'FunctionName' => ['description' => 'The name of the feature.', 'type' => 'string', 'example' => 'aliauth', 'title' => ''], + 'FunctionArgs' => [ + 'description' => 'The configurations of the feature.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ArgName' => ['description' => 'The name of the configuration parameter.', 'type' => 'string', 'example' => 'auth_type', 'title' => ''], + 'ArgValue' => ['description' => 'The value of the configuration parameter.', 'type' => 'string', 'example' => 'req_auth', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], - ], - 'EndTime' => [ - 'description' => 'The end of the time range during which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2022-10-10T21:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2022-10-10T20:00:00Z', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => 'InvalidParameter.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'The specified StartTime parameter is invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'The specified EndTime is invalid.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The StartTime cannot exceed 31 days before the current time.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified Time is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Invalid%s.ValueNotSupported', 'errorMessage' => 'FunctionName [%s] is not supported.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DelayData\\": {\\n \\"DelayDataItem\\": [\\n {\\n \\"DomainName\\": \\"example.com\\",\\n \\"Duration\\": 84,\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"TimeStamp\\": \\"2022-10-10T20:00:00Z\\"\\n }\\n ]\\n },\\n \\"EndTime\\": \\"2022-10-10T21:00:00Z\\",\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-91081******\\",\\n \\"StartTime\\": \\"2022-10-10T20:00:00Z\\"\\n}","errorExample":""},{"type":"xml","example":"\\n b83f5c8c-b07b-4ac8-90c5-96c0f922d394\\n \\n \\n \\n \\n 2022-11-19T16:00:00Z\\n www.example.com\\n 60\\n \\n \\n 2022-11-19T17:00:00Z\\n www.example.com\\n 60\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveDelayedStreamingUsage', - 'description' => '* You can call this operation to query your stream delay usage data. The default time granularity is 1 hour.'."\n" - .'* The maximum time range for a query is 31 days.'."\n" - .'* The minimum time granularity for a query is 1 hour.'."\n" - .'* You can query the data in the last 31 days.'."\n" + 'title' => 'DescribeLiveDomainStagingConfig', + 'summary' => 'Queries the feature configurations of an accelerated domain name in the canary release environment.', + 'description' => '## Usage notes'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'You can call this operation to query the staging environment configuration of a specified accelerated domain name.'."\n" ."\n" - .'You can call this operation up to 5 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveGrtnDuration' => [ - 'summary' => 'Queries the co-streaming usage data.', - 'methods' => [ - 'post', - 'get', + .'## QPS limits'."\n" + ."\n" + .'The single-user limit for this API operation is 30 queries per second (QPS). If you exceed this limit, API calls are throttled. This may affect your business. Pace your calls to stay within the limit. For more information, see [QPS limits](~~343507~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainStagingConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainStagingConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C80705BF-0F76-41FA-BAD1-5B59296A4E59\\",\\n \\"DomainConfigs\\": [\\n {\\n \\"Status\\": \\"success\\",\\n \\"ConfigId\\": \\"6295\\",\\n \\"FunctionName\\": \\"aliauth\\",\\n \\"FunctionArgs\\": [\\n {\\n \\"ArgName\\": \\"auth_type\\",\\n \\"ArgValue\\": \\"req_auth\\"\\n }\\n ]\\n }\\n ]\\n}","type":"json"}]', + ], + 'DescribeLiveDomainStreamTranscodeData' => [ + 'summary' => 'Queries transcoding usage data for a domain name by calling DescribeLiveDomainStreamTranscodeData.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -30125,73 +23853,53 @@ ], 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2022-10-10T20:00:00Z', - ], + 'schema' => ['description' => 'The ingest domain to query.'."\n" + ."\n" + .'- You can specify a single domain name or multiple domain names. Separate multiple domain names with commas (,).'."\n" + .'- If this parameter is left empty, the merged data of all live streaming domain names is returned by default.'."\n" + .'- When you specify a value for DomainName, make sure that the domain name is a live streaming domain name and that the user calling this operation has the required permissions on the specified domain name.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. The end time must be later than the start time. The time range that can be specified is greater than or equal to 5 minutes and less than or equal to 31 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2022-10-10T21:00:00Z', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.'."\n" + ."\n" + .'- The minimum data time granularity is 1 hour.'."\n" + .'- If this parameter is not specified, data for the last 24 hours is read by default.', 'type' => 'string', 'required' => true, 'example' => '2017-12-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'AppId', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application. Separate multiple application IDs with commas (,). You can specify up to 30 application IDs. By default, the aggregated data of all applications is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '4346289a-a790-4869-9e23-22766d5e****', - ], + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-12-10T22:00:00Z', 'title' => ''], ], [ - 'name' => 'Area', + 'name' => 'Precision', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the billable region. Valid values:'."\n" - ."\n" - .'* CN: Chinese mainland'."\n" - .'* OverSeas: countries and regions outside the Chinese mainland'."\n" - .'* AP1: Asia Pacific 1, including Hong Kong (China), Macao (China), Taiwan (China), Japan, and other Southeast Asia countries and regions except Vietnam and Indonesia'."\n" - .'* AP2: Asia Pacific 2, including Indonesia, South Korea, and Vietnam'."\n" - .'* AP3: Asia Pacific 3, including Australia and New Zealand'."\n" - .'* NA: North America, including US and Canada'."\n" - .'* SA: South America, specifically meaning Brazil'."\n" - .'* EU: Europe, including Ukraine, UK, France, Netherlands, Spain, Italy, Sweden, and Germany'."\n" - .'* MEAA: Middle East and Africa, including South Africa, Oman, UAE, and Kuwait'."\n" - ."\n" - .'If you do not specify this parameter, data of all regions is aggregated and returned by default.'."\n", + 'description' => 'The time precision of the query. Valid values:'."\n" + .'- **min** (default): in minutes.'."\n" + .'- **sec**: in seconds.', + 'enumValueTitles' => ['sec' => 'in seconds.', 'min' => 'in minutes.'], 'type' => 'string', 'required' => false, - 'example' => 'CN', + 'default' => 'min', + 'enum' => ['min', 'sec'], + 'example' => 'min', + 'title' => '', ], ], [ @@ -30200,472 +23908,356 @@ 'schema' => [ 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" ."\n" - .'* 300'."\n" - .'* 3600'."\n" - .'* 86400'."\n" + .'- **3600**: by hour.'."\n" + .'- **86400**: by day.'."\n" ."\n" - .'If you specify an invalid value or do not specify this parameter, the default value 3600 is used.'."\n", + .'> If this parameter is not specified, the default granularity is by hour.', + 'enumValueTitles' => [3600 => 'by hour.', 86400 => 'by day.'], 'type' => 'string', 'required' => false, + 'enum' => ['3600', '86400'], 'example' => '3600', + 'title' => '', ], ], + [ + 'name' => 'Split', + 'in' => 'query', + 'schema' => ['description' => 'The grouping key. Valid values:'."\n" + ."\n" + .'- **domain**: domain name. If the Split parameter is set to domain, the Domain response parameter takes effect.'."\n" + .'- **region**: live center region. If the Split parameter is set to region, the Region response parameter takes effect.'."\n" + .'- **transcode_type**: transcoding type. If the Split parameter is set to transcode_type, the TanscodeType response parameter takes effect.'."\n" + .'- **resolution**: resolution. If the Split parameter is set to resolution, the Resolution response parameter takes effect.'."\n" + .'- **fps**: frame rate. If the Split parameter is set to fps, the Fps response parameter takes effect.'."\n" + ."\n" + .'You can specify one or more values. Separate multiple values with commas (,).'."\n" + ."\n" + .'Default value: `domain,region,transcode_type,resolution,fps`, which means all grouping keys are applied.', 'type' => 'string', 'required' => false, 'default' => 'domain,region,transcode_type,resolution,fps', 'example' => 'domain', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned result.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB', - ], - 'StreamDetailData' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3C6CCEC4-6B88-4D4A-93E4-D47B******', 'title' => ''], + 'TranscodeDataList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'StreamData' => [ - 'description' => 'The details of the co-streaming usage data.'."\n", + 'TranscodeData' => [ + 'description' => 'The network bandwidth data for each time interval.', 'type' => 'array', 'items' => [ - 'description' => 'The details of the co-streaming usage data.'."\n", 'type' => 'object', 'properties' => [ - 'AppId' => [ - 'description' => 'The ID of the application.'."\n", - 'type' => 'string', - 'example' => '4346289a-a790-4869-9e23-22766d5e****', - ], - 'Duration' => [ - 'description' => 'The co-streaming duration. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - 'MediaProfile' => [ - 'description' => 'The media specification. Valid values:'."\n" - ."\n" - .'* 0: audio-only. This is a basic specification.'."\n" - .'* 480P: standard definition (SD). The video resolution is 640 × 480 or lower.'."\n" - .'* 720P: high definition (HD). The video resolution is 1280 × 720 or lower.'."\n" - .'* 1080P: full HD. The video resolution is 1920 × 1080 or lower.'."\n", - 'type' => 'string', - 'example' => '480P', - ], - 'MediaType' => [ - 'description' => 'The media type. Valid values:'."\n" - ."\n" - .'* audio'."\n" - .'* video'."\n", - 'type' => 'string', - 'example' => 'audio', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2022-12-10T20:00:00Z', - ], + 'TanscodeType' => ['description' => 'The transcoding type. Valid values:'."\n" + ."\n" + .'> This response parameter takes effect only when the Split request parameter is set to transcode_type.'."\n" + ."\n\n" + .''."\n" + ."\n" + .'- **H264STD**: H.264 default transcoding.'."\n" + .'- **H265STD**: H.265 default transcoding.'."\n" + ."\n" + .''."\n" + ."\n" + .'- **H264NBHD**: H.264 Narrowband HD™ transcoding.'."\n" + .'- **H265NBHD**: H.265 Narrowband HD™ transcoding.'."\n" + .'- **AUDIO**: audio transcoding.', 'type' => 'string', 'example' => 'H264STD', 'title' => ''], + 'Domain' => ['description' => 'The streamer streaming domain.'."\n" + ."\n" + .'> This response parameter takes effect only when the Split request parameter is set to domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Region' => ['description' => 'The region to which the domain name belongs. Valid values:'."\n" + ."\n" + .'> This response parameter takes effect only when the Split request parameter is set to region.'."\n" + .'- **cn-beijing**: Beijing.'."\n" + .'- **cn-shanghai**: Shanghai.'."\n" + .'- **cn-qingdao**: Qingdao.'."\n" + .'- **cn-shenzhen**: Shenzhen.'."\n" + .'- **ap-northeast-1**: Japan.'."\n" + .'- **ap-southeast-1**: Singapore.'."\n" + .'- **ap-southeast-5**: Indonesia.'."\n" + .'- **eu-central-1**: Germany.', 'type' => 'string', 'example' => 'cn-beijing', 'title' => ''], + 'Duration' => ['description' => 'The duration. Unit: minutes.', 'type' => 'integer', 'format' => 'int32', 'example' => '2000', 'title' => ''], + 'TimeStamp' => ['description' => 'The beginning of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'example' => '2017-12-10T20:00:00Z', 'title' => ''], + 'Fps' => ['description' => 'The frame rate.'."\n" + ."\n" + .'> This response parameter takes effect only when the Split request parameter is set to fps.', 'type' => 'string', 'example' => 'normal', 'title' => ''], + 'Resolution' => ['description' => 'The resolution. Valid values:'."\n" + ."\n" + .'> This response parameter takes effect only when the Split request parameter is set to resolution.'."\n" + ."\n" + .'- **2K**'."\n" + .'- **4K**'."\n" + .'- **LD**: low definition.'."\n" + .'- **SD**: standard definition.'."\n" + .'- **HD**: high definition.'."\n" + .'- **def**: audio.', 'type' => 'string', 'example' => 'HD', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified StartTime or EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidAreaParameter', - 'errorMessage' => 'The specified Area parameter is invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], - [ - 'errorCode' => 'InvalidAppIdParameter', - 'errorMessage' => 'The specified AppId parameter is invalid.', - ], - [ - 'errorCode' => 'InvalidInstanceIdParameter', - 'errorMessage' => 'The specified InstanceId parameter is invalid.', - ], - [ - 'errorCode' => 'InvalidTime.ValueNotSupported', - 'errorMessage' => 'Specified Time is malformed.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidParamPrecision', 'errorMessage' => 'The parameter Precision is invalid, please check StartTime and EndTime or Precision.', 'description' => 'The Precision parameter is invalid. Check the value of the StartTime, EndTime, or Precision parameter.'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-910811DEBFEB\\",\\n \\"StreamDetailData\\": {\\n \\"StreamData\\": [\\n {\\n \\"AppId\\": \\"4346289a-a790-4869-9e23-22766d5e****\\",\\n \\"Duration\\": 30,\\n \\"MediaProfile\\": \\"480P\\",\\n \\"MediaType\\": \\"audio\\",\\n \\"TimeStamp\\": \\"2022-12-10T20:00:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n 2022-12-10T20:00:00Z\\n video\\n 720P\\n 423304182\\n \\n \\n 2022-12-10T21:00:00Z\\n video\\n 720P\\n 454680793\\n \\n \\n B955107D-E658-4E77-B913-E0AC3D31693E\\n","errorExample":""}]', - 'title' => 'DescribeLiveGrtnDuration', - 'description' => '* The maximum time range for a query is 31 days.'."\n" - .'* The minimum time granularity for a query is 5 minutes.'."\n" - .'* You can query the data in the last 90 days.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"3C6CCEC4-6B88-4D4A-93E4-D47B******\\",\\n \\"TranscodeDataList\\": {\\n \\"TranscodeData\\": [\\n {\\n \\"TanscodeType\\": \\"H264STD\\",\\n \\"Domain\\": \\"example.com\\",\\n \\"Region\\": \\"cn-beijing\\",\\n \\"Duration\\": 2000,\\n \\"TimeStamp\\": \\"2017-12-10T20:00:00Z\\",\\n \\"Fps\\": \\"normal\\",\\n \\"Resolution\\": \\"HD\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query domain name transcoding usage data', + 'description' => '- You can use this operation to query network bandwidth data for each time interval.'."\n" + .'- Batch domain name queries are supported. Separate multiple domain names with commas (,).'."\n" + .'- You can query data for up to the last 90 days.'."\n" + .'- The data time granularity is hour or day.'."\n" + .'- For the billing tiers that correspond to different transcoding types and transcoding resolutions, see the billing tier description for different instance specifications in the transcoding bill section of [Live stream transcoding billing](~~90424~~).'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'extraInfo' => '### Special error codes'."\n" - .'|Error code|Error message|HTTP status code|Description|'."\n" - .'|----|----|------|-----|'."\n" - .'|Throttling|Request was denied due to request throttling.|503|The error message returned because the request was denied due to throttling. |'."\n" - .'|IllegalOperation|Illegal domain, operation is not permitted.|403|The error message returned because the specified domain name is invalid. '."\n" - .'|OperationDenied|Your account does not open LIVE service yet.|403|The error message returned because ApsaraVideo Live is not activated. |'."\n" - .'|OperationDenied|Your LIVE service is suspended.|403|The error message returned because ApsaraVideo Live is suspended. |'."\n" - .'|InvalidStartTime.Malformed|Specified StartTime is malformed.|400|The error message returned because one or more parameters are invalid. |'."\n" - .'|InvalidEndTime.Malformed|Specified EndTime is malformed.|400|The error message returned because the time format is invalid. |'."\n" - .'|InvalidTime.Malformed|Specified StartTime or EndTime is malformed.|400|The error message returned because the format of the start time or end time is invalid. |'."\n" - .'|InvalidEndTime.Mismatch|Specified end time does not math the specified start time.|400|The error message returned because the start time and end time do not match. |'."\n" - .'|InvalidTimeSpan|The time span exceeds the limit.|400|The error message returned because the specified time range to query is invalid.|'."\n" - .'|InvalidAppIdParameter|The specified AppId parameter is invalid.|400|The error message returned because the value of the AppID parameter is invalid. |'."\n" - .'|InvalidParameterInterval|Invalid Parameter Interval.|400|The error message returned because the value of the Interval parameter is invalid. |', - ], - 'DescribeMeterLiveBypassDuration' => [ - 'summary' => 'DescribeMeterLiveBypassDuration', - 'methods' => [ - 'get', - 'post', + .'## QPS limit'."\n" + .'The QPS limit for a single user on this operation is 20 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Invoke this operation appropriately.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Special fault codes'."\n" + .'|ErrorCode|Fault message|HTTP Status|Description|'."\n" + .'| ------------- |------------ | ----- | ----- |'."\n" + .'|Throttling |Request was denied due to request throttling. |503 |The request is throttled.|'."\n" + .'|InvalidDomain.NotFound |The domain provided does not belong to you. |404 |The domain name does not exist or does not belong to the current user.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainStreamTranscodeData'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainStreamTranscodeData', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveDomainTimeShiftData' => [ + 'summary' => 'Queries time shifting usage data for live streaming.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'StartTime', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2022-10-10T20:00:00Z', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. The end time must be later than the start time. The time range that can be specified is greater than or equal to 5 minutes and less than or equal to 31 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2022-10-10T21:00:00Z', - ], + 'schema' => ['description' => 'The streaming domain to query.'."\n" + ."\n" + .'> '."\n" + .'> - When you specify DomainName, make sure that the specified domain is a live streaming domain and that the user calling this operation has permissions on the specified domain.'."\n" + .'> - You can specify a single domain or multiple domains. Separate multiple domains with commas (,).'."\n" + .'> - If this parameter is left empty, the merged data of all live streaming domains is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'AppId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application. You can view the application ID on the [Applications](~~2355593~~) page in the ApsaraVideo Real-time Communication (ARTC) section of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '4346289a-a790-4869-9e23-22766d5e****', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.'."\n" + ."\n" + .'> - The minimum data granularity is 5 minutes.'."\n" + .'> - If you do not specify this parameter, data of the last 24 hours is returned by default.', 'type' => 'string', 'required' => false, 'example' => '2021-03-03T00:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-03-03T02:00:00Z', 'title' => ''], ], [ 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* 300'."\n" - .'* 3600'."\n" - .'* 86400'."\n" - ."\n" - .'If you specify an invalid value or do not specify this parameter, the default value 3600 is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '86400', - ], + 'schema' => ['description' => 'The time granularity of the queried data. Unit: seconds. Valid values:'."\n" + ."\n" + .'- 300.'."\n" + .'- 3600.'."\n" + .'- 86400.'."\n" + ."\n" + .'If you do not specify this parameter or specify an unsupported value, the default value 300 is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'AudioSummaryDuration' => [ - 'description' => 'The total audio-only duration. Audio-only is a basic specification. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - 'Data' => [ - 'description' => 'The usage statistics for each time granularity.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'AudioDuration' => [ - 'description' => 'The audio-only duration. Audio-only is a basic specification. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - 'Single_Audio' => [ - 'description' => 'The single-stream relay duration for audio. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - 'Single_Video' => [ - 'description' => 'The single-stream relay duration for video. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - 'Timestamp' => [ - 'description' => 'The timestamp of the data returned.'."\n", - 'type' => 'string', - 'example' => '2022-10-10T20:00:00Z', - ], - 'TotalDuration' => [ - 'description' => 'The duration. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '150', - ], - 'V480Duration' => [ - 'description' => 'The SD duration. The video resolution is 640 × 480 or lower. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - 'V720Duration' => [ - 'description' => 'The HD duration. The video resolution is 1280 × 720 or lower. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '40', - ], - 'V1080Duration' => [ - 'description' => 'The Full HD duration. The video resolution is 1920 × 1080 or lower. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '8AE1CB3A-6510-442E-A6B9-EF03D05B3E09', 'title' => ''], + 'TimeShiftData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DataModule' => [ + 'description' => 'The time shifting usage data for each time interval.', + 'type' => 'array', + 'items' => [ + 'description' => 'The time shifting usage data for each time interval.', + 'type' => 'object', + 'properties' => [ + 'Type' => ['description' => 'The time shifting type, such as HLS_D1 or HLS_D7.', 'type' => 'string', 'example' => 'HLS_D7', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'example' => '2021-03-03T00:00:00Z', 'title' => ''], + 'Size' => ['description' => 'The time shifting storage usage. Unit: bytes.', 'type' => 'string', 'example' => '1664165660', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB', - ], - 'SingleAudioSummaryDuration' => [ - 'description' => 'The total single-stream relay duration for audio. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - 'SingleVideoSummaryDuration' => [ - 'description' => 'The total single-stream relay duration for video. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - 'TotalSummaryDuration' => [ - 'description' => 'The total duration. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '150', - ], - 'V480SummaryDuration' => [ - 'description' => 'The total standard definition (SD) duration. The video resolution is 640 × 480 or lower. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - 'V720SummaryDuration' => [ - 'description' => 'The total high definition (HD) duration. The video resolution is 1280 × 720 or lower. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '40', - ], - 'V1080SummaryDuration' => [ - 'description' => 'The total Full HD duration. The video resolution is 1920 × 1080 or lower. Unit: minutes.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', - ], - ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', - ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"8AE1CB3A-6510-442E-A6B9-EF03D05B3E09\\",\\n \\"TimeShiftData\\": {\\n \\"DataModule\\": [\\n {\\n \\"Type\\": \\"HLS_D7\\",\\n \\"TimeStamp\\": \\"2021-03-03T00:00:00Z\\",\\n \\"Size\\": \\"1664165660\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query time shifting usage data for live streaming', + 'description' => '- Queries time shifting usage data for each time interval.'."\n" + .'- Retrieves data for up to the last 90 days.'."\n" + .'- The data interval is fixed at 1 hour.'."\n" + .'- The maximum data timestamp span for a single query is 31 days.'."\n" + ."\n\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, the API invoke is throttled, which may affect your business. Invoke this operation as needed.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '### Special error codes'."\n" + .'| Error code | Description | HTTP status code | Meaning |'."\n" + .'|------------|--------|---------|------|'."\n" + .'| Throttling | Request was denied due to request throttling. | 503 | The request is throttled.|'."\n" + .'| InvalidDomain.NotFound | The domain provided does not belong to you. | 404 | The domain does not exist or does not belong to the current user.|.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainTimeShiftData'], ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainTimeShiftData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"AudioSummaryDuration\\": 20,\\n \\"Data\\": [\\n {\\n \\"AudioDuration\\": 20,\\n \\"Single_Audio\\": 20,\\n \\"Single_Video\\": 30,\\n \\"Timestamp\\": \\"2022-10-10T20:00:00Z\\",\\n \\"TotalDuration\\": 150,\\n \\"V480Duration\\": 30,\\n \\"V720Duration\\": 40,\\n \\"V1080Duration\\": 10\\n }\\n ],\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-910811DEBFEB\\",\\n \\"SingleAudioSummaryDuration\\": 20,\\n \\"SingleVideoSummaryDuration\\": 30,\\n \\"TotalSummaryDuration\\": 150,\\n \\"V480SummaryDuration\\": 30,\\n \\"V720SummaryDuration\\": 40,\\n \\"V1080SummaryDuration\\": 10\\n}","errorExample":""},{"type":"xml","example":"\\n 93FAB4C8-42AD-5BB9-BE9B-0AA8C6C0CC2F\\n 30\\n 10\\n 40\\n 150\\n 20\\n \\n 20\\n 40\\n 10\\n 30\\n 2022-10-10T20:00:00Z\\n 150\\n 30\\n 20\\n \\n 20\\n 30\\n","errorExample":""}]', - 'title' => 'DescribeMeterLiveBypassDuration', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'* The maximum time range for a query is 31 days.'."\n" - .'* The minimum time granularity for a query is 5 minutes.'."\n" - .'* You can query the data in the last 90 days.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", ], - 'DescribeLiveDrmUsageData' => [ - 'summary' => '获取直播DRM用量数据', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveDomainTrafficData' => [ + 'summary' => 'Queries network traffic monitoring data for live streaming domains.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], - ], + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name.'."\n" - ."\n" - .'* You can query one or more domain names. If you specify multiple domain names, separate them with commas (,).'."\n" - .'* If you leave this parameter empty, the data of all domain names within your Alibaba Cloud account is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain. You can specify a single domain name or multiple domain names. Separate multiple domain names with commas (,). If this parameter is left empty, the merged data of all live streaming domains is returned by default.'."\n" + .'> - When you specify DomainName, make sure that the specified domain names are live streaming domains and that you have the required permissions to operate on the specified domain names.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. The minimum time granularity is 5 minutes.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2021-05-01T16:00:00Z', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.'."\n" + .'>You can query data from the past **90** days.', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T14:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2021-05-02T16:00:00Z', - ], + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'required' => false, 'example' => '2017-12-10T15:00:00Z', 'title' => ''], ], [ 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity of the query. Unit: seconds. Valid values:'."\n" - ."\n" - .'* 300'."\n" - .'* 3600'."\n" - .'* 86400'."\n" - ."\n" - .'Default value: 3600.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '3600', - 'default' => '3600', - 'enum' => [ - '300', - '3600', - '86400', - ], - ], + 'schema' => ['description' => 'The time granularity for querying data. Unit: seconds. Valid values:'."\n" + .'- **300** (default).'."\n" + .'- **3600**.'."\n" + .'- **86400**.'."\n" + ."\n" + .'> If you do not set this parameter or set it to an unsupported value, the default value **300** seconds is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], [ - 'name' => 'SplitBy', + 'name' => 'IspNameEn', 'in' => 'query', - 'schema' => [ - 'description' => 'The key that is used to group data. The following keys are supported: domain, region, and drm_type. If you want to specify multiple keys, separate them with commas (,). Default value: domain,region,drm_type. If you leave this parameter empty or set it to null, the returned data is not grouped.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'domain,region,drm_type', - ], + 'schema' => ['description' => 'The name of the Internet service provider (ISP) in English. You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain the ISP name. If you do not set this parameter, data of all ISPs is returned.', 'type' => 'string', 'required' => false, 'example' => 'alibaba', 'title' => ''], + ], + [ + 'name' => 'LocationNameEn', + 'in' => 'query', + 'schema' => ['description' => 'The name of the region in English. You can call the [DescribeCdnRegionAndIsp](~~91077~~) operation to obtain the region name. If you do not set this parameter, data of all regions is returned.', 'type' => 'string', 'required' => false, 'example' => 'tianjin', 'title' => ''], ], ], 'responses' => [ @@ -30673,871 +24265,770 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'DrmUsageData' => [ + 'EndTime' => ['description' => 'The end time. The time is in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'example' => '2017-12-10T15:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'example' => '2017-12-10T14:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'DataInterval' => ['description' => 'The time granularity for querying data.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'TrafficDataPerInterval' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'DataModule' => [ - 'description' => 'The usage of the DRM encryption service at each time interval.'."\n", + 'description' => 'The traffic data for each time interval.', 'type' => 'array', 'items' => [ - 'description' => 'The usage of the DRM encryption service at each time interval.'."\n", + 'description' => 'The traffic data for each time interval.', 'type' => 'object', 'properties' => [ - 'Count' => [ - 'description' => 'The number of times DRM-encrypted live streams are requested.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'Domain' => [ - 'description' => 'The domain name. If the value of SplitBy includes domain, the returned data is grouped by domain name.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'DrmType' => [ - 'description' => 'The DRM type. If the value of SplitBy includes drm_type, the returned data is grouped by DRM type.'."\n", - 'type' => 'string', - 'example' => 'Widevine', - ], - 'Region' => [ - 'description' => 'The ID of the region. If the value of SplitBy includes region, the returned data is grouped by region.'."\n", - 'type' => 'string', - 'example' => 'cn-beijing', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2021-05-01T16:00:00Z', - ], + 'TrafficValue' => ['description' => 'The total traffic. Unit: bytes.', 'type' => 'string', 'example' => '454680793', 'title' => ''], + 'HttpTrafficValue' => ['description' => 'The HTTP traffic. Unit: bytes.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format in UTC.', 'type' => 'string', 'example' => '2017-12-10T15:00:05Z', 'title' => ''], + 'HttpsTrafficValue' => ['description' => 'The HTTPS traffic. Unit: bytes.', 'type' => 'string', 'example' => '454680793', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '91FC2D9D-B042-4634-8A5C-7B8E7482C22D', + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DrmUsageData\\": {\\n \\"DataModule\\": [\\n {\\n \\"Count\\": 1,\\n \\"Domain\\": \\"example.com\\",\\n \\"DrmType\\": \\"Widevine\\",\\n \\"Region\\": \\"cn-beijing\\",\\n \\"TimeStamp\\": \\"2021-05-01T16:00:00Z\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"91FC2D9D-B042-4634-8A5C-7B8E7482C22D\\"\\n}","errorExample":""},{"type":"xml","example":"\\n \\n 1\\n example.com\\n Widevine\\n cn-beijing\\n 2021-05-01T16:00:00Z\\n \\n 91FC2D9D-B042-4634-8A5C-7B8E7482C22D\\n","errorExample":""}]', - 'title' => 'DescribeLiveDrmUsageData', - 'description' => '### [](#)Usage notes'."\n" - ."\n" - .'* You can query data in the previous 90 days.'."\n" - .'* The maximum time range to query is 31 days.'."\n" - ."\n" - .'### [](#qps-)QPS limit'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2017-12-10T15:00:00Z\\",\\n \\"StartTime\\": \\"2017-12-10T14:00:00Z\\",\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DataInterval\\": \\"300\\",\\n \\"TrafficDataPerInterval\\": {\\n \\"DataModule\\": [\\n {\\n \\"TrafficValue\\": \\"454680793\\",\\n \\"HttpTrafficValue\\": \\"0\\",\\n \\"TimeStamp\\": \\"2017-12-10T15:00:05Z\\",\\n \\"HttpsTrafficValue\\": \\"454680793\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query traffic data for live streaming domains', + 'description' => '- If you do not specify StartTime or EndTime, data from the past 24 hours is returned by default.'."\n" + .'- This is a monitoring data API. The data collection and processing method differs from that used for billing. Do not use this API to calculate usage for billing reconciliation.'."\n" ."\n" - .'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeLiveRtcRecordUsageData' => [ - 'summary' => '云端录制用量', - 'path' => '', - 'methods' => [ - 'get', - 'post', + .'## QPS limit'."\n" + .'The single-user QPS limit for this API is 100 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Call this API at a reasonable frequency.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainTrafficData'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainTrafficData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveDrmUsageData' => [ + 'summary' => 'Queries DRM usage data within a specified time range.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'StartTime', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2017-12-21T08:00:00Z', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '2022-10-10T21:00:00Z', - ], + 'schema' => ['description' => 'The live streaming domain name.'."\n" + .'- You can specify a single domain name or multiple domain names. Separate multiple domain names with commas (,).'."\n" + .'- If this parameter is left empty, the merged data of all live streaming domain names is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'AppId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'intl7f92-a5a8*************7ce4eb44a6', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC. The minimum data granularity is 5 minutes.', 'type' => 'string', 'required' => true, 'example' => '2021-05-01T16:00:00Z', 'title' => ''], ], [ - 'name' => 'RecordMode', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '0', - ], + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2021-05-02T16:00:00Z', 'title' => ''], ], [ 'name' => 'Interval', 'in' => 'query', 'schema' => [ - 'description' => '', + 'description' => 'The time granularity of the queried data. Unit: seconds. Valid values:'."\n" + .'- 300'."\n" + .'- 3600'."\n" + .'- 86400'."\n" + ."\n" + .'If you do not set this parameter or set it to an unsupported value, the default value 3600 is used.', + 'enumValueTitles' => [300 => '300 seconds.', 3600 => '3600 seconds.', 86400 => '86400 seconds.'], 'type' => 'string', 'required' => false, + 'default' => '3600', + 'enum' => ['300', '3600', '86400'], 'example' => '3600', + 'title' => '', ], ], + [ + 'name' => 'SplitBy', + 'in' => 'query', + 'schema' => ['description' => 'The grouping key. Default value: domain,region,drm_type. You can specify one or more of the following values: domain, region, and drm_type. Separate multiple values with commas (,). Set this parameter to an empty string or null to disable grouping by these keys.', 'type' => 'string', 'required' => false, 'example' => 'domain,region,drm_type', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'Id of the request', - 'type' => 'string', - 'example' => '16A96B9A-F2*************B92E68F4CD8', - ], - 'RecordMode' => [ - 'description' => '', - 'type' => 'string', - 'example' => '0', - ], - 'AppId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '7fd341b3-c6fa-43e1-96b8-7295a1dd****', - ], - 'TotalSummaryDuration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '150', - ], - 'AudioSummaryDuration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '20', - ], - 'V480SummaryDuration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '30', - ], - 'V720SummaryDuration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '40', - ], - 'V1080SummaryDuration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '10', - ], - 'Data' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Timestamp' => [ - 'description' => '', - 'type' => 'string', - 'example' => '2022-10-10T20:00:00Z', - ], - 'TotalDuration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '150', - ], - 'AudioDuration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '20', - ], - 'V480Duration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '30', - ], - 'V720Duration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '40', - ], - 'V1080Duration' => [ - 'description' => '', - 'type' => 'number', - 'format' => 'double', - 'example' => '10', + 'DrmUsageData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DataModule' => [ + 'description' => 'The DRM usage data for each time interval.', + 'type' => 'array', + 'items' => [ + 'description' => 'The DRM usage data for each time interval.', + 'type' => 'object', + 'properties' => [ + 'Count' => ['description' => 'The number of calls.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'Domain' => ['description' => 'The domain name. This field is returned when domain is specified in SplitBy.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'DrmType' => ['description' => 'The DRM type. This field is returned when drm_type is specified in SplitBy.', 'type' => 'string', 'example' => 'Widevine', 'title' => ''], + 'Region' => ['description' => 'The live center. This field is returned when region is specified in SplitBy.', 'type' => 'string', 'example' => 'cn-beijing', 'title' => ''], + 'TimeStamp' => ['description' => 'The beginning of the time interval. The time is in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-05-01T16:00:00Z', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '91FC2D9D-B042-4634-8A5C-7B8E7482C22D', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', - ], - [ - 'errorCode' => 'InvalidRecordModeParameter', - 'errorMessage' => 'RecordMode parameter error.', - ], - [ - 'errorCode' => 'InvalidAppIdParameter', - 'errorMessage' => 'AppId parameter error.', - ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F2*************B92E68F4CD8\\",\\n \\"RecordMode\\": \\"0\\",\\n \\"AppId\\": \\"7fd341b3-c6fa-43e1-96b8-7295a1dd****\\",\\n \\"TotalSummaryDuration\\": 150,\\n \\"AudioSummaryDuration\\": 20,\\n \\"V480SummaryDuration\\": 30,\\n \\"V720SummaryDuration\\": 40,\\n \\"V1080SummaryDuration\\": 10,\\n \\"Data\\": [\\n {\\n \\"Timestamp\\": \\"2022-10-10T20:00:00Z\\",\\n \\"TotalDuration\\": 150,\\n \\"AudioDuration\\": 20,\\n \\"V480Duration\\": 30,\\n \\"V720Duration\\": 40,\\n \\"V1080Duration\\": 10\\n }\\n ]\\n}","type":"json"}]', - ], - 'CreateCaster' => [ - 'summary' => 'Creates a production studio.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DrmUsageData\\": {\\n \\"DataModule\\": [\\n {\\n \\"Count\\": 1,\\n \\"Domain\\": \\"example.com\\",\\n \\"DrmType\\": \\"Widevine\\",\\n \\"Region\\": \\"cn-beijing\\",\\n \\"TimeStamp\\": \\"2021-05-01T16:00:00Z\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"91FC2D9D-B042-4634-8A5C-7B8E7482C22D\\"\\n}","type":"json"}]', + 'title' => 'Query live DRM usage data', + 'description' => '### Operation description'."\n" + .'- You can query data from the last 90 days.'."\n" + .'- The maximum time span is 31 days.'."\n" + .'### QPS limit'."\n" + .'Each user can make up to 20 queries per second (QPS). If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation properly. For more information, see [QPS limit](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDrmUsageData'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDrmUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLiveEdgeTransfer' => [ + 'summary' => 'Retrieves the configuration of edge stream relay.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeCode' => '106890', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'CasterName', + 'name' => 'DomainName', 'in' => 'query', + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'demo.aliyundoc.com'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the production studio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveCaster****', + 'type' => 'object', + 'properties' => [ + 'HttpDns' => ['description' => 'The URL of the HTTPDNS service used to resolve the addresses of the target domains.', 'type' => 'string', 'title' => '', 'example' => 'http://developer.aliyundoc.com/****'], + 'AppName' => ['description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'title' => '', 'example' => 'liveApp****'], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '53FCB985-C67C-467B-B2B3-398430A21E14'], + 'TransferArgs' => ['description' => 'Indicates whether the query parameters from the original ingest URL are passed through to the target URL.'."\n" + ."\n" + .'- **yes**: The parameters are passed through.'."\n" + ."\n" + .'- **no**: The parameters are not passed through.', 'type' => 'string', 'title' => '', 'example' => 'yes'], + 'StreamName' => ['description' => 'The name of the ingested live stream.', 'type' => 'string', 'title' => '', 'example' => 'liveStream****'], + 'TargetDomainList' => ['description' => 'A comma-separated list of the target domains where the stream is forwarded.', 'type' => 'string', 'title' => '', 'example' => 'learn.aliyundoc.com,guide.aliyundoc.com'], + 'DomainName' => ['description' => 'The ingest domain.', 'type' => 'string', 'title' => '', 'example' => 'demo.aliyundoc.com'], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], + ], + ], + 'title' => 'DescribeLiveEdgeTransfer', + 'description' => 'Get the ingest domain, then call this operation to query the configuration of edge stream relay.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveEdgeTransfer'], + ], + ], + 'ramActions' => [ [ - 'name' => 'ClientToken', - 'in' => 'query', - 'schema' => [ - 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" - ."\n" - .'You can specify a custom value for this parameter, but you must make sure that the value is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '53200b81-b761-4c10-842a-a0726d97****', - 'maxLength' => 64, - 'minLength' => 0, + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveEdgeTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"HttpDns\\": \\"http://developer.aliyundoc.com/****\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"RequestId\\": \\"53FCB985-C67C-467B-B2B3-398430A21E14\\",\\n \\"TransferArgs\\": \\"yes\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"TargetDomainList\\": \\"learn.aliyundoc.com,guide.aliyundoc.com\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\"\\n}","type":"json"}]', + ], + 'DescribeLiveGrtnDuration' => [ + 'summary' => 'Call DescribeLiveGrtnDuration to query co-hosting call duration usage data.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'NormType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the production studio. Valid values:'."\n" - ."\n" - .'* **1**: general mode'."\n" - .'* **6**: playlist mode (for carousel playback)'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '1', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], + ], + 'parameters' => [ [ - 'name' => 'ChargeType', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The billing method. Only the pay-as-you-go billing method is supported.**** Valid values:'."\n" - ."\n" - .'* **PrePaid**: subscription. This billing method is not yet supported.'."\n" - .'* **PostPaid**: pay-as-you-go'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'PostPaid', - ], + 'schema' => ['description' => 'Region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PurchaseTime', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The time when the production studio was purchased. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> This parameter is valid only if you set the **ChargeType** parameter to **PrePaid**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-08-20T12:10:10Z', - ], + 'schema' => ['description' => 'The start time for data retrieval. The date format follows the ISO 8601 notation and uses UTC time in the format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => true, 'example' => '2022-10-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'ExpireTime', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The expiration time of the production studio. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> This parameter is valid only if you set the **ChargeType** parameter to **PrePaid**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-08-22T12:10:10Z', - ], + 'schema' => ['description' => 'The end time must be later than the start time. The query granularity must be ≥ 5 minutes and ≤ 31 days. The date format follows the ISO 8601 notation and uses UTC time in the format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => true, 'example' => '2022-10-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'CasterTemplate', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The preset resolution of the production studio. If the subscription billing method is used, this parameter supports the following valid values:'."\n" - ."\n" - .'* **lp_ld**: low definition'."\n" - .'* **lp_sd**: standard definition'."\n" - .'* **lp_hd**: high definition'."\n" - .'* **lp_ud**: ultra high definition'."\n" - .'* **lp_ld_v**: low definition (portrait mode)'."\n" - .'* **lp_sd_v**: standard definition (portrait mode)'."\n" - .'* **lp_hd_v**: high definition (portrait mode)'."\n" - .'* **lp_ud_v**: ultra high definition (portrait mode)'."\n" - ."\n" - .'> If the pay-as-you-go billing method is used, you must call the [SetCasterConfig](~~60271~~) operation to specify the resolution.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'lp_sd', - ], + 'schema' => ['description' => 'Application ID. You can query multiple application IDs separated by commas (half-width). A maximum of 30 IDs can be queried. By default, aggregated data for all applications is returned.', 'type' => 'string', 'required' => false, 'example' => '4346289a-a790-4869-9e23-22766d5e****', 'title' => ''], ], [ - 'name' => 'ResourceGroupId', + 'name' => 'Area', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the resource group. For more information about resource groups, see [Resource groups](~~2381067~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rg-aekzw******', - ], + 'schema' => ['description' => 'The area code. Valid values:'."\n" + .'- CN: Chinese mainland.'."\n" + .'- OverSeas: Overseas regions.'."\n" + .'- AP1: Asia Pacific 1, including Hong Kong (China), Macao (China), Taiwan (China), Japan, and Southeast Asian countries except Vietnam and Indonesia.'."\n" + .'- AP2: Asia Pacific 2, including Indonesia, South Korea, and Vietnam.'."\n" + .'- AP3: Asia Pacific 3, including Australia and New Zealand.'."\n" + .'- NA: North America, including the United States and Canada.'."\n" + .'- SA: South America, specifically Brazil.'."\n" + .'- EU: Europe, including Ukraine, the United Kingdom, France, the Netherlands, Spain, Italy, Sweden, and Germany.'."\n" + .'- MEAA: Middle East and Africa, including South Africa, Oman, the United Arab Emirates, and Kuwait.'."\n" + ."\n" + .'If not specified, aggregated data for all areas is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'CN', 'title' => ''], ], [ - 'name' => 'Tag', + 'name' => 'Interval', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The key of the tag.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TestKey', - ], - 'Value' => [ - 'description' => 'The value of the tag.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TestValue', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 100, - ], + 'schema' => ['description' => 'The time granularity for querying data. Unit: seconds. Valid values:'."\n" + ."\n" + .'- 300'."\n" + .'- 3600'."\n" + .'- 86400'."\n" + ."\n" + .'If not specified or an unsupported value is passed, the default value of 3600 seconds is used.', 'type' => 'string', 'required' => false, 'example' => '3600', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can specify the ID in a request to query the streaming URLs of the production studio, start the production studio, add a video resource, a layout, a component, or a playlist to the production studio, or query layouts of the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB', 'title' => ''], + 'StreamDetailData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamData' => [ + 'description' => 'The details of co-hosting usage data.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of co-hosting usage data.', + 'type' => 'object', + 'properties' => [ + 'AppId' => ['description' => 'The application ID.', 'type' => 'string', 'example' => '4346289a-a790-4869-9e23-22766d5e****', 'title' => ''], + 'Duration' => ['description' => 'The co-hosting duration. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'title' => ''], + 'MediaProfile' => ['description' => 'The media profile. Valid values:'."\n" + ."\n" + .'- 0: Audio-only duration. Basic profile.'."\n" + .'- 480P: Standard definition duration. Video resolution is 640 × 480 or lower.'."\n" + .'- 720P: High definition duration. Video resolution is 1280 × 720 or lower.'."\n" + .'- 1080P: Full high definition duration. Video resolution is 1920 × 1080 or lower.', 'type' => 'string', 'example' => '480P', 'title' => ''], + 'MediaType' => ['description' => 'The media type. Valid values:'."\n" + ."\n" + .'- audio: Audio.'."\n" + .'- video: Video.', 'type' => 'string', 'example' => 'audio', 'title' => ''], + 'TimeStamp' => ['description' => 'The beginning of the time slice. The date format follows the ISO 8601 notation and uses UTC time in the format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'example' => '2022-12-10T20:00:00Z', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter.PurchaseTime', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.ExpireTime', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidChargeType.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidChargeType.PostSupport', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.ChargeType', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidPeriod.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s', - ], - ], - [ - [ - 'errorCode' => 'CasterNumberExceed', - 'errorMessage' => '%s', - ], - ], - 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified StartTime or EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidAreaParameter', 'errorMessage' => 'The specified Area parameter is invalid.', 'description' => 'The specified Area parameter is invalid. Specify a correct region code.'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidAppIdParameter', 'errorMessage' => 'The specified AppId parameter is invalid.', 'description' => ''], + ['errorCode' => 'InvalidInstanceIdParameter', 'errorMessage' => 'The specified InstanceId parameter is invalid.', 'description' => ''], + ['errorCode' => 'InvalidTime.ValueNotSupported', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'The specified time is invalid.'], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-910811DEBFEB\\",\\n \\"StreamDetailData\\": {\\n \\"StreamData\\": [\\n {\\n \\"AppId\\": \\"4346289a-a790-4869-9e23-22766d5e****\\",\\n \\"Duration\\": 30,\\n \\"MediaProfile\\": \\"480P\\",\\n \\"MediaType\\": \\"audio\\",\\n \\"TimeStamp\\": \\"2022-12-10T20:00:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query co-hosting call duration usage data', + 'description' => '- Maximum query span: 31 days.'."\n" + .'- Minimum query granularity: 5 minutes.'."\n" + .'- Maximum query range: Data from the last 90 days.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this API is 10 requests per second. If the limit is exceeded, API calls will be throttled, which may affect your business. Please call this API appropriately.', + 'extraInfo' => '### Special error codes'."\n" + .'|Error code|Description|HTTP status code|Meaning|'."\n" + .'|----|----|------|-----|'."\n" + .'|Throttling|Request was denied due to request throttling.|503|The request is throttled.|'."\n" + .'|IllegalOperation|Illegal domain, operation is not permitted.|403|Illegal domain name. The operation cannot be performed.'."\n" + .'|OperationDenied|Your account does not open LIVE service yet.|403|The LIVE service is not activated.|'."\n" + .'|OperationDenied|Your LIVE service is suspended.|403|The LIVE service has been suspended.|'."\n" + .'|InvalidStartTime.Malformed|Specified StartTime is malformed.|400|Invalid parameter.|'."\n" + .'|InvalidEndTime.Malformed|Specified EndTime is malformed.|400|Invalid time format.|'."\n" + .'|InvalidTime.Malformed|Specified StartTime or EndTime is malformed.|400|The start time or end time format is invalid.|'."\n" + .'|InvalidEndTime.Mismatch|Specified end time does not math the specified start time.|400|The start time and end time do not match.|'."\n" + .'|InvalidTimeSpan|The time span exceeds the limit.|400|Invalid query span.|'."\n" + .'|InvalidAppIdParameter|The specified AppId parameter is invalid.|400|Invalid AppId parameter.|'."\n" + .'|InvalidParameterInterval|Invalid Parameter Interval.|400|Invalid Interval parameter.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidParameter.NormType', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s', - ], - ], - 408 => [ - [ - 'errorCode' => 'CreateCaster.Timeout', - 'errorMessage' => '%s', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveGrtnDuration', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\na2b8e671-2fe5-4642-a2ec-bf93880e1****\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e1a49\\"\\n}\\n"}]', - 'title' => 'CreateCaster', - 'description' => 'You must enable the production studio feature before you can call this operation to create a production studio. For more information, see [Enable the production studio feature](~~60361~~).'."\n" - ."\n" - .'You can call this operation to create production studios in general mode or playlist mode. Production studios in playlist mode can be used for carousel playback.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'SetCasterConfig' => [ - 'summary' => 'Configures a production studio. For example, you can specify the name of the production studio, configure the transcoding settings, and configure the recording settings.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveHttpsDomainList' => [ + 'summary' => 'Queries all configured certificate information for the certificate service of a user.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107215', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '191821', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The page number to return. Valid values: **[1,10000]**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '5', 'title' => ''], ], [ - 'name' => 'CasterName', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the production studio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveCaster****', - ], + 'schema' => ['description' => 'The number of entries per page. Default value: **20**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '20', 'example' => '20', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Keyword', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n" - ."\n" - .'Complete the configuration of the domain name before the production studio is started. If you do not specify this parameter, the domain configuration for the production studio is cleared.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => false, 'example' => 'demo.aliyun.com', 'title' => ''], ], - [ - 'name' => 'TranscodeConfig', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The transcoding configuration.'."\n" - ."\n" - .'The value is a JSON string. Use upper camel case for fields of the string. If you do not specify this parameter, the transcoding configuration is cleared. If no transcoding template is available, an error occurs when the production studio is started.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"casterTemplate": "lp_ld"}', + 'description' => 'The response parameters.', + 'type' => 'object', + 'properties' => [ + 'CertInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'CertInfo' => [ + 'description' => 'The list of certificate information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the list.', + 'type' => 'object', + 'properties' => [ + 'CertCommonName' => ['description' => 'The primary domain name of the certificate.', 'type' => 'string', 'example' => 'example.org', 'title' => ''], + 'CertExpireTime' => ['description' => 'The expiration time of the certificate. The date is in the yyyy-MM-dd HH:mm:ss format and displayed in UTC+8.', 'type' => 'string', 'example' => '2018-12-26 14:45:09', 'title' => ''], + 'CertName' => ['description' => 'The certificate name.', 'type' => 'string', 'example' => 'test', 'title' => ''], + 'CertStartTime' => ['description' => 'The start time of the certificate. The date is in the yyyy-MM-dd HH:mm:ss format and displayed in UTC+8.', 'type' => 'string', 'example' => '2018-11-26 14:45:09', 'title' => ''], + 'CertStatus' => ['description' => 'The certificate status. Valid values:'."\n" + .'- **ok**: Normal.'."\n" + .'- **mismatch**: The domain name does not match the certificate.'."\n" + .'- **expired**: Expired.'."\n" + .'- **expire_soon**: About to expire.', 'type' => 'string', 'example' => 'mismatch', 'title' => ''], + 'CertType' => ['description' => 'The certificate type. Valid values:'."\n" + .'- **cas**: China Security certificate.'."\n" + .'- **upload**: Custom upload.', 'type' => 'string', 'example' => 'cas', 'title' => ''], + 'CertUpdateTime' => ['description' => 'The time when the certificate was last updated. The date is in the yyyy-MM-dd HH:mm:ss format and displayed in UTC+8.', 'type' => 'string', 'example' => '2019-01-08 18:33:16', 'title' => ''], + 'DomainName' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'F5E8DF64-7175-4186-9B06-F002C0BBD0C5', 'title' => ''], + 'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int32', 'example' => '16', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'RecordConfig', - 'in' => 'query', - 'schema' => [ - 'description' => 'The recording configuration. The value is a JSON string. You can configure the following fields:'."\n" - ."\n" - .'* **endpoint**: the API server address of an Alibaba Cloud service.'."\n" - .'* **ossBucket**: the name of the Object Storage Service (OSS) bucket.'."\n" - .'* **videoFormat**: the format in which the video file can be exported. Example: `[{\\"OssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{StartTime}_{EndTime}\\",\\"Format\\":\\"m3u8\\",\\"CycleDuration\\":21600,\\"SliceOssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{UnixTimestamp}\\"},{\\"OssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{StartTime}_{EndTime}\\",\\"Format\\":\\"flv\\",\\"CycleDuration\\":21600}]`.'."\n" - .'* **interval**: the interval between recordings. Unit: milliseconds.'."\n" - ."\n" - .'> If you do not specify this parameter, the recording feature is disabled and the recording configuration for the production studio is cleared.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{ "endpoint": "http://oss-cn-********.aliyuncs.com/api", "ossBucket****": "liveBucket****", "VideoFormat":[{\\"OssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{StartTime}_{EndTime}\\",\\"Format\\":\\"m3u8\\",\\"CycleDuration\\":21600,\\"SliceOssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{UnixTimestamp}\\"},{\\"OssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{StartTime}_{EndTime}\\",\\"Format\\":\\"flv\\",\\"CycleDuration\\":21600}] "interval": 5 }', - ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'NoHttpsDomain', 'errorMessage' => 'Your account doesn\'t have https domain.', 'description' => ''], ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CertInfos\\": {\\n \\"CertInfo\\": [\\n {\\n \\"CertCommonName\\": \\"example.org\\",\\n \\"CertExpireTime\\": \\"2018-12-26 14:45:09\\",\\n \\"CertName\\": \\"test\\",\\n \\"CertStartTime\\": \\"2018-11-26 14:45:09\\",\\n \\"CertStatus\\": \\"mismatch\\",\\n \\"CertType\\": \\"cas\\",\\n \\"CertUpdateTime\\": \\"2019-01-08 18:33:16\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"F5E8DF64-7175-4186-9B06-F002C0BBD0C5\\",\\n \\"TotalCount\\": 16\\n}","type":"json"}]', + 'title' => 'Query certificate service list', + 'description' => 'Calls this operation to query all configured certificates and domain name information for the user in the certificate service.'."\n" + ."\n" + .'Before calling this operation, make sure that at least one live streaming domain under the account has HTTPS certificates enabled through SetLiveDomainCertificate. Otherwise, the error NoHttpsDomain(400) is returned.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 100 calls per second. If the limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'Delay', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable stream delay. Unit: seconds. Valid values:'."\n" - ."\n" - .'* **0** (default): disables stream delay.'."\n" - ."\n" - .'* **A value greater than 0**: enables stream delay.'."\n" - ."\n" - .'* **Empty**: clears the stream delay configuration.'."\n" - ."\n" - .' **'."\n" - ."\n" - .' **Note **The maximum value can be 300 seconds.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveHttpsDomainList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + ], + 'DescribeLiveInteractionMetricData' => [ + 'summary' => 'Queries metric data for ApsaraVideo Real-time Communication (ARTC).', + 'methods' => ['get', 'post'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'UrgentMaterialId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the standby video from the media library. If you do not specify this parameter, the standby video configuration for the production studio is cleared.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '193672', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], + ], + 'parameters' => [ [ - 'name' => 'UrgentLiveStreamUrl', + 'name' => 'MetricType', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the standby live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The metric type. Valid values:'."\n" + ."\n" + .'- `JoinChannelSucRate`: the success rate of joining a channel within 5 seconds.'."\n" + ."\n" + .'- `VideoStuckRate`: the video stuttering rate.'."\n" + ."\n" + .'- `AudioStuckRate`: the audio stuttering rate.'."\n" + ."\n" + .'- `FirstFrameCost`: the time to first frame.', 'type' => 'string', 'required' => true, 'example' => 'FirstFrameCost', 'title' => ''], ], [ - 'name' => 'SideOutputUrl', + 'name' => 'BeginTs', 'in' => 'query', - 'schema' => [ - 'description' => 'The custom stream redirect URL.'."\n" - ."\n" - .'If you do not specify this parameter, the production studio uses the redirect URL generated by the system.'."\n" - ."\n" - .'> Redirect URLs support only the Real-Time Messaging Protocol (RTMP) protocol.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://****/aliyundoc.com:8000/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', - ], + 'schema' => ['description' => 'The start time of the query, specified as a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '1698195600000', 'title' => ''], ], [ - 'name' => 'SideOutputUrlList', + 'name' => 'EndTs', 'in' => 'query', - 'schema' => [ - 'description' => 'The stream relay URLs. A relay URL can be an Alibaba Cloud URL or a URL from a third-party CDN provider. You can specify up to 20 relay URLs over the RTMP protocol.'."\n" - ."\n" - .'> Use the following format to specify multiple relay URLs: "rtmp://domain/app1/stream1","rtmp://domain/app2/stream2".', - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://domain/app/stream?***', - ], + 'schema' => ['description' => 'The end time of the query, specified as a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '1698201013000', 'title' => ''], ], [ - 'name' => 'CallbackUrl', + 'name' => 'Os', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL. Enter a valid HTTP address for receiving callback notifications. If you do not specify this parameter, the production studio does not send callback notifications.'."\n" - ."\n" - .'> For more information about production studio callbacks, see [Production studio callbacks](~~213633~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://****/aliyundoc.com:8000/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', - ], + 'schema' => ['description' => 'The operating system. Valid values: `iOS` and `Android`.', 'type' => 'string', 'required' => false, 'example' => 'Android', 'title' => ''], ], [ - 'name' => 'ProgramEffect', + 'name' => 'TerminalType', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable the carousel playback feature. Valid values:'."\n" - ."\n" - .'* **0**: disables carousel playback.'."\n" - .'* **1**: enables carousel playback.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The terminal type. Valid values: `web` and `mobile`.', 'type' => 'string', 'required' => false, 'example' => 'mobile', 'title' => ''], ], [ - 'name' => 'ProgramName', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the playlist for carousel playback. You can specify this parameter if you enable the carousel playback feature.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'program_name', - ], + 'schema' => ['description' => 'The ARTC application ID.', 'type' => 'string', 'required' => true, 'example' => 'e4d7f08a-01fe-41b5-a091-fe41060a****', 'title' => ''], ], [ - 'name' => 'ChannelEnable', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable channels. Valid values:'."\n" - ."\n" - .'* **0** (default): disables channels.'."\n" - .'* **1**: enables channels.'."\n" - ."\n" - .'> You cannot disable channels after you enable them. If you set this parameter to 0, the production studio references video resources in a layout without using channels. If you enable channels for the first time, make sure that the production studio is in the idle state. After you enable channels, a new layout that references video resources by using channels is generated to replace the original one. Therefore, you must specify video resources for channels. You can use the channels to change the playback progress or status. If the video resource, preview, and program modules of the production studio use the same video source, the three modules display the same content.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The channel ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => '770513'], ], - [ - 'name' => 'SyncGroupsConfig', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The multi-view synchronization configuration. You can specify this parameter to synchronize multiple video sources.'."\n" - ."\n" - .'There are two modes of multi-view synchronization.'."\n" - ."\n" - .'* A value of 0 for the mode field specifies the streamer mode. In this mode, multiple video sources are synchronized based on the settings by the streamer.'."\n" - .'* A value of 1 for the mode field specifies the conference mode. In this mode, all video sources are synchronized.'."\n" - ."\n" - .'In the streamer mode, the hostResourceId field specifies the video source on the streamer side.'."\n" - ."\n" - .'In the conference mode, the hostResourceId field is not available. You need to provide only resource IDs that are required.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '"[{\\"mode\\":0,\\"resourceIds\\":[\\"5a6c1c33-8424-46f6-813c-c152220a****\\",\\"4e6521dc-a40a-4077-b6bf-1fb12a76****\\"],\\"hostResourceId\\":\\"3aa2b39a-fd0e-4b8c-be73-b7af31c4****\\"}]"', + 'title' => 'Schema of Response', + 'description' => 'The response parameters.', + 'type' => 'object', + 'properties' => [ + 'Nodes' => [ + 'description' => 'An array of data points.', + 'type' => 'array', + 'items' => [ + 'description' => 'A data point.', + 'type' => 'object', + 'properties' => [ + 'Timestamp' => ['description' => 'The timestamp of the data point, specified as a UNIX timestamp in milliseconds.', 'type' => 'string', 'example' => '1548670257000', 'title' => ''], + 'Value' => ['description' => 'The value of the metric.', 'type' => 'string', 'example' => '66.670000', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['title' => 'Id', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'A01C98C5-25AE-124A-83FE-514DF5C5BE36'], + 'SummaryData' => ['description' => 'The summarized data for the query time range.', 'type' => 'string', 'example' => '2000', 'title' => ''], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], + ], + 403 => [ + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Nodes\\": [\\n {\\n \\"Timestamp\\": \\"1548670257000\\",\\n \\"Value\\": \\"66.670000\\"\\n }\\n ],\\n \\"RequestId\\": \\"A01C98C5-25AE-124A-83FE-514DF5C5BE36\\",\\n \\"SummaryData\\": \\"2000\\"\\n}","type":"json"}]', + 'title' => 'DescribeLiveInteractionMetricData', + 'description' => '- You can query data from the past 30 days. The query time range for a single request is limited to 24 hours.'."\n" + ."\n" + .'- The data granularity is 5 minutes.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The QPS limit for this operation is 50 requests per second per account. Exceeding this limit triggers throttling, which can disrupt your services.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'UrgentImageId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the standby image from the media library.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a089175eb5f4427684fc0715159a****', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveInteractionMetricData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + ], + 'DescribeLiveIpInfo' => [ + 'summary' => 'Checks whether a specified IP address belongs to an Alibaba Cloud point of presence (POP).', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'UrgentImageUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the standby image.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '107056', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'AutoSwitchUrgentOn', + 'name' => 'RegionId', 'in' => 'query', - 'allowEmptyValue' => false, - 'schema' => [ - 'description' => 'Specifies whether the production studio automatically switches to the standby resource in case of a stream interruption.'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AutoSwitchUrgentConfig', + 'name' => 'IP', 'in' => 'query', - 'allowEmptyValue' => false, - 'schema' => [ - 'description' => 'The configuration for automatic switchover to the standby resource.'."\n" - ."\n" - .'The `eofThres` field specifies the duration after which the production studio automatically switches to the standby resource if a stream interruption occurs. Unit: seconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"eofThres":3}', - ], + 'schema' => ['description' => 'The IP address that you want to check. You can specify only one IP address in each call.', 'type' => 'string', 'required' => true, 'example' => '192.168.0.1', 'title' => ''], ], ], 'responses' => [ @@ -31545,95 +25036,52 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can specify the ID in a request to query the streaming URLs of the production studio, start the production studio, add a video resource, a layout, a component, or a playlist to the production studio, or query layouts of the production studio.'."\n", - 'type' => 'string', - 'example' => 'b4810848-bcf9-4aef-bd4a-e6bba2d9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'IspEname' => ['description' => 'The English name of the Internet service provider (ISP).', 'type' => 'string', 'example' => 'telecom', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1B1D0EE7-9559-489D-BC4E-279495EB8FB8', 'title' => ''], + 'RegionEname' => ['description' => 'The English name of the IP region.', 'type' => 'string', 'example' => 'China-Guizhou-guiyang', 'title' => ''], + 'ISP' => ['description' => 'The Chinese name of the ISP.', 'type' => 'string', 'example' => '电信', 'title' => ''], + 'Region' => ['description' => 'The Chinese name of the IP region.', 'type' => 'string', 'example' => '中国-贵州省-贵阳市', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.Inuse', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidCaster.ChannelDisableUnsupported', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.EnableChannel', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s', - ], + ['errorCode' => 'CdnIP.NotFound', 'errorMessage' => 'Cannot find this ip in alicdn', 'description' => ''], ], - 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s', - ], + ], + 'title' => 'DescribeLiveIpInfo', + 'description' => '### QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveIpInfo'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveIpInfo', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"b4810848-bcf9-4aef-bd4a-e6bba2d9****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\tb4810848-bcf9-4aef-bd4a-e6bba2d9****\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"casterId\\": \\"b4810848-bcf9-4aef-bd4a-e6bba2d966c8\\"\\n}"}]', - 'title' => 'SetCasterConfig', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to configure the production studio. This operation completely replaces existing configurations. If you leave a parameter empty, the corresponding configuration is cleared for the production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"IspEname\\": \\"telecom\\",\\n \\"RequestId\\": \\"1B1D0EE7-9559-489D-BC4E-279495EB8FB8\\",\\n \\"RegionEname\\": \\"China-Guizhou-guiyang\\",\\n \\"ISP\\": \\"电信\\",\\n \\"Region\\": \\"中国-贵州省-贵阳市\\"\\n}","type":"json"}]', ], - 'DescribeCasterConfig' => [ - 'summary' => 'Queries the configurations of a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveLazyPullStreamConfig' => [ + 'summary' => 'Retrieves the configurations of triggered stream pulling for a streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -31644,1566 +25092,979 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106967', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The application name of the stream.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The configuration information about the production studio.'."\n", + 'description' => 'The stream pulling configurations.', 'type' => 'object', 'properties' => [ - 'AutoSwitchUrgentConfig' => [ - 'description' => 'The configuration for automatic switchover to the standby resource. The `eofThres` field specifies the duration after which the production studio automatically switches to the standby resource if a stream interruption occurs. Unit: seconds.'."\n", - 'type' => 'string', - 'example' => '{"eofThres":3}', - ], - 'AutoSwitchUrgentOn' => [ - 'description' => 'Indicates whether the production studio automatically switches to the standby resource in case of a stream interruption.'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n", - 'type' => 'string', - 'example' => 'true', - ], - 'CallbackUrl' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://learn.aliyundoc.com/callBackLive', - ], - 'CasterId' => [ - 'description' => 'The ID of the production studio.'."\n", - 'type' => 'string', - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - 'CasterName' => [ - 'description' => 'The name of the production studio.'."\n", - 'type' => 'string', - 'example' => 'coco-caster10', - ], - 'ChannelEnable' => [ - 'description' => 'Indicates whether channels are enabled for the production studio. Valid values:'."\n" - ."\n" - .'* **0**: Channels are disabled.'."\n" - .'* **1**: Channels are enabled.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'Delay' => [ - 'description' => 'Indicates whether stream delay is enabled. Unit: seconds.'."\n" - ."\n" - .'* **0**: Stream delay is disabled.'."\n" - .'* **A value greater than 0**: Stream delay is enabled.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'ProgramEffect' => [ - 'description' => 'Indicates whether the carousel playback feature is enabled. Valid values:'."\n" - ."\n" - .'* **0**: The carousel playback feature is disabled.'."\n" - .'* **1**: The carousel playback feature is enabled.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'ProgramName' => [ - 'description' => 'The name of the playlist for carousel playback.'."\n", - 'type' => 'string', - 'example' => 'program_name', - ], - 'RecordConfig' => [ - 'description' => 'The recording configuration. If this parameter is empty, the recording feature is disabled.'."\n", - 'type' => 'object', - 'properties' => [ - 'OnDemand' => [ - 'description' => 'On-demand recording. Values:'."\n" - .'- 0: Off. '."\n" - .'- 1: Via HTTP callback. '."\n" - .'- 2: Parse streaming parameters for on-demand recording. '."\n" - .'- 7: Default to not record. ', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'OssBucket' => [ - 'description' => 'The OSS bucket for storage.'."\n", - 'type' => 'string', - 'example' => 'liveBucket****', - ], - 'OssEndpoint' => [ - 'description' => 'The Object Storage Service (OSS) endpoint.'."\n", - 'type' => 'string', - 'example' => 'oss-cn-shanghai.aliyundoc.com', - ], - 'RecordFormat' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RecordFormat' => [ - 'description' => 'The recording configuration.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The recording details.'."\n", - 'type' => 'object', - 'properties' => [ - 'CycleDuration' => [ - 'description' => 'The length of the recording.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3600', - ], - 'Format' => [ - 'description' => 'The format of the recording.'."\n", - 'type' => 'string', - 'example' => 'M3U8', - ], - 'OssObjectPrefix' => [ - 'description' => 'The name of the recording.'."\n", - 'type' => 'string', - 'example' => 'record/{liveApp****}/{liveStream****}', - ], - 'SliceOssObjectPrefix' => [ - 'description' => 'The name of the segment.'."\n", - 'type' => 'string', - 'example' => 'record/{liveApp****}/{liveStream****}/{UnixTimestamp****}', - ], - ], - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '97df6b7f-3490-47d2-ac50-8833e1b64597', - ], - 'SideOutputUrl' => [ - 'description' => 'The custom stream redirect URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://sophon-developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', - ], - 'SideOutputUrlList' => [ - 'description' => 'The list of custom stream redirect URLs.'."\n", - 'type' => 'string', - 'example' => 'rtmp://sophon-developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', - ], - 'SyncGroupsConfig' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', 'title' => ''], + 'LiveLazyPullConfigList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'SyncGroup' => [ - 'description' => 'The storage configuration.'."\n", + 'LiveLazyPullConfig' => [ + 'itemNode' => true, + 'description' => 'The stream pulling configurations.', + 'title' => '', 'type' => 'array', 'items' => [ - 'description' => 'The storage configuration.', + 'description' => 'The stream pulling configuration.', 'type' => 'object', 'properties' => [ - 'HostResourceId' => [ - 'description' => 'The ID of the resource in the production studio.'."\n", - 'type' => 'string', - 'example' => '28768383240243****', - ], - 'Mode' => [ - 'description' => 'The cache mode of the Static Page Caching policy. Valid values:'."\n" - ."\n" - .'* 0: standard mode'."\n" - .'* 1: force mode'."\n" - .'* 2: no cache'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'ResourceIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'ResourceId' => [ - 'description' => 'The IDs of the resources for which you want to modify the resource group. The number of resource IDs is 1 to 50.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the resource for which you want to modify the resource group. The number of resource IDs is 1 to 50.'."\n", - 'type' => 'string', - 'example' => '1', - ], - ], - ], - ], - ], - ], - ], - ], - ], - 'TranscodeConfig' => [ - 'description' => 'The transcoding configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'CasterTemplate' => [ - 'description' => 'The transcoding template of the production studio. Valid values:'."\n" - ."\n" - .'* **lp_ld**: low definition'."\n" - .'* **lp_sd**: standard definition'."\n" - .'* **lp_hd**: high definition'."\n" - .'* **lp_ud**: ultra high definition'."\n" - .'* **lp_ld_v**: low definition (portrait mode)'."\n" - .'* **lp_sd_v**: standard definition (portrait mode)'."\n" - .'* **lp_hd_v**: high definition (portrait mode)'."\n" - .'* **lp_ud_v**: ultra high definition (portrait mode)'."\n", - 'type' => 'string', - 'example' => 'lp_hd', - ], - 'LiveTemplateIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LocationId' => [ - 'description' => 'The transcoding setting for live streams.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Live streaming transcoding configuration. Values:'."\n" - .'- **lsd**: Standard Definition (SD). '."\n" - .'- **lld**: Smooth. '."\n" - .'- **lud**: Ultra High Definition (UHD). '."\n" - .'- **lhd**: High Definition (HD) adaptive transcoding template. '."\n" - .'- **daobo-lsd**: Standard Definition (SD). '."\n" - .'- **daobo-lld**: Smooth. '."\n" - .'- **daobo-lud**: Ultra High Definition (UHD). '."\n" - .'- **daobo-lhd**: High Definition (HD).', - 'type' => 'string', - 'example' => 'lld', - ], - ], - ], - ], - 'CustomParams' => [ - 'description' => 'The custom settings.'."\n", - 'type' => 'object', - 'properties' => [ - 'video' => [ - 'description' => 'The video parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'fps' => [ - 'description' => 'The video frame rate.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '300', - ], - 'bitrate' => [ - 'description' => 'The video bitrate.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '300', - ], - 'width' => [ - 'description' => 'The video width. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1080', - ], - 'height' => [ - 'description' => 'The video height. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '720', - ], - ], + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'PullArgs' => ['description' => 'A string of key-value parameters for the origin pull.', 'type' => 'string', 'example' => 'k=v', 'title' => ''], + 'PullAppName' => ['description' => 'The application name on the origin. If this is empty, the AppName from the streaming URL is used.', 'type' => 'string', 'example' => 'livePullApp****', 'title' => ''], + 'PullProtocol' => ['description' => 'The protocol to use for the origin pull. Valid values:'."\n" + ."\n" + .'- **rtmp**'."\n" + ."\n" + .'- **httpflv**'."\n" + ."\n" + .'- **hls**', 'type' => 'string', 'example' => 'RTMP', 'title' => ''], + 'PullDomainName' => ['description' => 'The origin domain from which the stream is pulled.', 'type' => 'string', 'example' => 'guide.aliyundoc.com', 'title' => ''], + 'DomainName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'TranscodeLazy' => ['description' => 'Indicates if a request for a transcoded stream also triggers the pull. Valid values:'."\n" + ."\n" + .'- **yes**'."\n" + ."\n" + .'- **no**'."\n" + ."\n" + .'Default value: no.', 'type' => 'string', 'example' => 'no', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], - ], - 'UrgentImageId' => [ - 'description' => 'Prepared broadcast image media asset ID.', - 'type' => 'string', - 'example' => 'a089175eb5f4427684fc0715159a****', - ], - 'UrgentImageUrl' => [ - 'description' => 'URL of the standby image material.', - 'type' => 'string', - 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', - ], - 'UrgentLiveStreamUrl' => [ - 'description' => 'The URL of the standby live stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://demo.aliyundoc.com', - ], - 'UrgentMaterialId' => [ - 'description' => 'The ID of the material that is used as the standby video from the media library.'."\n", - 'type' => 'string', - 'example' => '98646538-bcf9-4aef-bd4a-e6bb76588****', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"AutoSwitchUrgentConfig\\": \\"{\\\\\\"eofThres\\\\\\":3}\\",\\n \\"AutoSwitchUrgentOn\\": \\"true\\",\\n \\"CallbackUrl\\": \\"http://learn.aliyundoc.com/callBackLive\\",\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"CasterName\\": \\"coco-caster10\\",\\n \\"ChannelEnable\\": 1,\\n \\"Delay\\": 0,\\n \\"DomainName\\": \\"example.com\\",\\n \\"ProgramEffect\\": 0,\\n \\"ProgramName\\": \\"program_name\\",\\n \\"RecordConfig\\": {\\n \\"OnDemand\\": 0,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"OssEndpoint\\": \\"oss-cn-shanghai.aliyundoc.com\\",\\n \\"RecordFormat\\": {\\n \\"RecordFormat\\": [\\n {\\n \\"CycleDuration\\": 3600,\\n \\"Format\\": \\"M3U8\\",\\n \\"OssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}\\",\\n \\"SliceOssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}/{UnixTimestamp****}\\"\\n }\\n ]\\n }\\n },\\n \\"RequestId\\": \\"97df6b7f-3490-47d2-ac50-8833e1b64597\\",\\n \\"SideOutputUrl\\": \\"rtmp://sophon-developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****\\",\\n \\"SideOutputUrlList\\": \\"[\\\\\\"rtmp://domain/app1/stream1\\\\\\",\\\\\\"rtmp://domain/app2/stream2\\\\\\"]\\",\\n \\"SyncGroupsConfig\\": {\\n \\"SyncGroup\\": [\\n {\\n \\"HostResourceId\\": \\"28768383240243****\\",\\n \\"Mode\\": 0,\\n \\"ResourceIds\\": {\\n \\"ResourceId\\": [\\n \\"1\\"\\n ]\\n }\\n }\\n ]\\n },\\n \\"TranscodeConfig\\": {\\n \\"CasterTemplate\\": \\"lp_hd\\",\\n \\"LiveTemplateIds\\": {\\n \\"LocationId\\": [\\n \\"lld\\"\\n ]\\n },\\n \\"CustomParams\\": {\\n \\"video\\": {\\n \\"fps\\": 300,\\n \\"bitrate\\": 300,\\n \\"width\\": 1080,\\n \\"height\\": 720\\n }\\n }\\n },\\n \\"UrgentImageId\\": \\"a089175eb5f4427684fc0715159a****\\",\\n \\"UrgentImageUrl\\": \\"http://learn.aliyundoc.com/AppName/image.jpg\\",\\n \\"UrgentLiveStreamUrl\\": \\"rtmp://demo.aliyundoc.com\\",\\n \\"UrgentMaterialId\\": \\"98646538-bcf9-4aef-bd4a-e6bb76588****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0\\n rtmp://demo.aliyundoc.com\\n 98646538-bcf9-4aef-bd4a-e6bb76588****\\n a089175eb5f4427684fc0715159a****\\n http://learn.aliyundoc.com/AppName/image.jpg\\n http://learn.aliyundoc.com/callBackLive\\n program_name\\n coco-caster10\\n LIVEPRODUCER_POST-cn-0pp1czt****\\n 0\\n 1\\n example.com\\n 97df6b7f-3490-47d2-ac50-8833e1b64597\\n [\\"rtmp://domain/app1/stream1\\",\\"rtmp://domain/app2/stream2\\"]\\n rtmp://sophon-developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****\\n true\\n {\\"eofThres\\":3}\\n \\n lp_hd\\n lld\\n \\n \\n oss-cn-shanghai.aliyundoc.com\\n liveBucket****\\n 0\\n \\n 3600\\n record/{liveApp****}/{liveStream****}/{UnixTimestamp****}\\n record/{liveApp****}/{liveStream****}\\n M3U8\\n \\n \\n \\n 28768383240243****\\n 0\\n 1\\n \\n","errorExample":""}]', - 'title' => 'DescribeCasterConfig', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to query the configurations of the production studio.'."\n" + 'title' => 'DescribeLiveLazyPullStreamConfig', + 'description' => 'This operation supports retrieving only the configurations of triggered stream pulling.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - 'translator' => 'machine', - ], - 'DescribeCasters' => [ - 'summary' => 'Queries the list of production studios.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '## Special error codes'."\n" + .'| Error code | Error message | Error message| Description|'."\n" + .'| ------------- |------------ | ----- | ----- |'."\n" + .'| Missing DomainName | DomainName is mandatory for this action.| 400 |One or more required parameters are not specified.|'."\n" + .'| InvalidDomain.NotFound |The domain provided does not exist in our records. |404 |The domain name is not found within your Alibaba Cloud account. |', + 'changeSet' => [ + ['createdAt' => '2024-01-23T08:48:29.000Z', 'description' => 'Response parameters changed, Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveLazyPullStreamConfig', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"LiveLazyPullConfigList\\": {\\n \\"LiveLazyPullConfig\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"PullArgs\\": \\"k=v\\",\\n \\"PullAppName\\": \\"livePullApp****\\",\\n \\"PullProtocol\\": \\"RTMP\\",\\n \\"PullDomainName\\": \\"guide.aliyundoc.com\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"TranscodeLazy\\": \\"no\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveMessageApp' => [ + 'summary' => 'Query Interactive Message App', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106972', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeCode' => '193804', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['title' => '', 'description' => 'The ID of the interactive messaging application to query.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo'], ], [ - 'name' => 'CasterId', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848012~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the ApsaraVideo Live console and click Production Studios in the left-side navigation pane.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* You can find the ID of the production studio in the Instance ID/Name column.'."\n" - ."\n" - .'* If you leave this parameter empty, the data of all production studios is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], - [ - 'name' => 'CasterName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the production studio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveCaster****', + 'title' => 'Schema of Response', + 'description' => 'The returned result.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '9FB68B5B-ED07-18F0-A3CF-083F4E74****', 'title' => ''], + 'AppId' => ['description' => 'The ID of the interactive messaging application.'."\n", 'type' => 'string', 'example' => 'demo', 'title' => ''], + 'AppName' => ['description' => 'The name of the interactive messaging application.'."\n", 'type' => 'string', 'example' => 'testApp', 'title' => ''], + 'AppKey' => ['description' => 'The AppKey of the interactive messaging application. It is used to authorize operations related to the application ID.'."\n", 'type' => 'string', 'example' => '**********************************', 'title' => ''], + 'AppSign' => ['description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", 'type' => 'string', 'example' => '**************************************************************************', 'title' => ''], + 'AuditType' => ['description' => 'The content moderation method. Valid values:'."\n" + ."\n" + .'* 0: Content moderation is disabled.'."\n" + .'* 1: Built-in content moderation is used.'."\n" + .'* 2: Custom content moderation is used.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'AuditUrl' => ['description' => 'The URL for content moderation. This parameter is returned when the value of AuditType is 2.'."\n", 'type' => 'string', 'example' => 'http://example.aliyundoc.com/exampleaudit', 'title' => ''], + 'EventCallbackUrl' => ['description' => 'The callback URL for events such as user logon, logoff, joining a group, and leaving a group. An empty value indicates that callbacks are disabled.'."\n", 'type' => 'string', 'example' => 'http://example.aliyundoc.com/examplecallback', 'title' => ''], + 'Disable' => ['description' => 'Indicates whether the interactive messaging application is disabled.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'CreateTime' => ['description' => 'The time when the interactive messaging application was created. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1698305471', 'title' => ''], + 'ModifyTime' => ['description' => 'The time when the interactive messaging application was modified. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1698305471', 'title' => ''], + 'MsgLifeCycle' => ['description' => 'The retention period of group messages in the application. Valid values:'."\n" + ."\n" + .'* 0 (default): 30 days'."\n" + .'* 1: 90 days'."\n" + .'* 2: 180 days'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'DataCenter' => ['description' => 'The data center.'."\n", 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + ], + 'example' => '', ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T09:00:00Z', - ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T11:00:00Z', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - 'name' => 'PageNum', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of the page to return.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], - [ - 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of templates to return on each page. If you leave this parameter empty, the default value is used. Default value: 100.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '100', - ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], - [ - 'name' => 'Status', - 'in' => 'query', - 'schema' => [ - 'description' => 'The status of the production studio. Valid values:'."\n" - ."\n" - .'* 0: idle'."\n" - .'* 1: streaming'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9FB68B5B-ED07-18F0-A3CF-083F4E74****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppName\\": \\"testApp\\",\\n \\"AppKey\\": \\"**********************************\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"AuditType\\": 2,\\n \\"AuditUrl\\": \\"http://example.aliyundoc.com/exampleaudit\\",\\n \\"EventCallbackUrl\\": \\"http://example.aliyundoc.com/examplecallback\\",\\n \\"Disable\\": false,\\n \\"CreateTime\\": 1698305471,\\n \\"ModifyTime\\": 1698305471,\\n \\"MsgLifeCycle\\": 1,\\n \\"DataCenter\\": \\"cn-shanghai\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9FB68B5B-ED07-18F0-A3CF-083F4E74****\\n demo\\n testApp\\n **********************************\\n **************************************************************************\\n 2\\n http://example.aliyundoc.com/exampleaudit\\n http://example.aliyundoc.com/examplecallback\\n false\\n 1698305471\\n 1698305471\\n 1\\n cn-shanghai\\n","errorExample":""}]', + 'title' => 'DescribeLiveMessageApp', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2025-03-26T02:53:05.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2025-01-23T12:00:01.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-08-01T02:18:29.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-02-22T06:01:33.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-01-09T03:34:27.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveMessageApp'], ], + ], + 'ramActions' => [ [ - 'name' => 'ChargeType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The billing method. Valid values:'."\n" - ."\n" - .'* 0: the subscription billing method'."\n" - .'* 1: the pay-as-you-go billing method'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], + ], + ], + 'DescribeLiveMessageGroup' => [ + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'OrderByModifyAsc', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to sort the production studios in ascending order based on the modification time.'."\n" - ."\n" - .'> If you leave this parameter empty, the default value is used. Default value: false.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'false', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '194284', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], + ], + 'parameters' => [ [ - 'name' => 'NormType', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the production studio. Valid values:'."\n" - ."\n" - .'* 1: general mode'."\n" - .'* 3: lightweight carousel playback mode'."\n" - .'* 4: virtual studio'."\n" - .'* 6: playlist mode'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'ResourceGroupId', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The resource group ID. For more information about resource groups, see [Resource groups](~~2381067~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rg-aekzw******', - ], + 'schema' => ['description' => 'The ID of the interactive messaging group whose information you want to query.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'Tag', + 'name' => 'DataCenter', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The key of the tag.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TestKey'."\n", - ], - 'Value' => [ - 'description' => 'The value of the tag.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TestValue'."\n", - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 100, - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The number of production studios.'."\n", + 'title' => '', + 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'CasterList' => [ + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '1815A27D-BAE2-10E6-89FD-D477951C****'], + 'GroupId' => ['description' => 'The group ID.'."\n", 'type' => 'string', 'example' => 'grouptest', 'title' => ''], + 'CreatorId' => ['description' => 'The ID of the group creator.'."\n", 'type' => 'string', 'example' => 'uid1', 'title' => ''], + 'AdminList' => [ + 'description' => 'The list of the group administrators.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The ID of the administrator.'."\n", 'type' => 'string', 'example' => '["uid1","uid2"]', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'Createtime' => ['description' => 'The time when the group was created. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1698305471', 'title' => ''], + 'GroupName' => ['description' => 'The name of the group.'."\n", 'type' => 'string', 'example' => 'mytestgroup', 'title' => ''], + 'GroupInfo' => ['description' => 'Additional information about the group.'."\n", 'type' => 'string', 'example' => 'testgroupinfo', 'title' => ''], + 'Delete' => ['description' => 'Indicates whether the group was deleted.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'TotalTimes' => ['description' => 'The total number of sessions. This parameter is returned only if the group exists.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '50', 'title' => ''], + 'OnlineUserCounts' => ['description' => 'The number of online users in the group. This parameter is returned only if the group exists.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '2', 'title' => ''], + 'MsgAmount' => [ + 'description' => 'The categorized message statistics. This parameter is returned only if the group exists.'."\n", 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Caster' => [ - 'description' => 'The production studios.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the production studio.'."\n", - 'type' => 'object', - 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can specify the ID in a request to query the streaming URLs of the production studio, start the production studio, add a video resource, a layout, a component, or a playlist to the production studio, or query layouts of the production studio.'."\n", - 'type' => 'string', - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - 'CasterName' => [ - 'description' => 'The name of the production studio.'."\n", - 'type' => 'string', - 'example' => 'liveCaster****', - ], - 'CasterTemplate' => [ - 'description' => 'The resolution in which the production studio plays videos. This parameter is returned if the subscription billing method is used. Valid values:'."\n" - ."\n" - .'* lp_ld: low definition'."\n" - .'* lp_sd: standard definition'."\n" - .'* lp_hd: high definition'."\n" - .'* lp_ud: ultra high definition.'."\n" - .'* lp_ld_v: low definition (portrait mode)'."\n" - .'* lp_sd_v: standard definition (portrait mode)'."\n" - .'* lp_hd_v: high definition (portrait mode)'."\n" - .'* lp_ud_v: ultra high definition (portrait mode)'."\n", - 'type' => 'string', - 'example' => 'lp_ld', - ], - 'ChannelEnable' => [ - 'description' => 'Indicates whether the channel is enabled for the production studio.'."\n" - ."\n" - .'* 0: The channel is disabled.'."\n" - .'* 1: The channel is enabled.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'ChargeType' => [ - 'description' => 'The billing method. Valid values:'."\n" - ."\n" - .'* PrePaid: the subscription billing method'."\n" - .'* PostPaid: the pay-as-you-go billing method'."\n", - 'type' => 'string', - 'example' => 'PrePaid', - ], - 'CreateTime' => [ - 'description' => 'The time when the production studio was created.'."\n", - 'type' => 'string', - 'example' => '2017-08-30 12:02:57.0', - ], - 'Duration' => [ - 'description' => 'The streaming duration. Format: hh:mm:ss.'."\n", - 'type' => 'string', - 'example' => '1:02:33', - ], - 'ExpireTime' => [ - 'description' => 'The time when the production studio expires.'."\n", - 'type' => 'string', - 'example' => '2018-08-30 12:02:57.0', - ], - 'LastModified' => [ - 'description' => 'The time when the production studio was last modified. For example, the time when the production studio was last started, stopped, or modified is returned.'."\n", - 'type' => 'string', - 'example' => '2021-12-01T05:08:45Z', - ], - 'NormType' => [ - 'description' => 'The type of the production studio. Valid values:'."\n" - ."\n" - .'* 0: playlist mode'."\n" - .'* 1: general mode'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PurchaseTime' => [ - 'description' => 'The time when the production studio was purchased.'."\n", - 'type' => 'string', - 'example' => '2017-08-30 12:02:57.0', - ], - 'StartTime' => [ - 'description' => 'The time when the production studio was started. This parameter is returned if the production studio is in the streaming status.'."\n", - 'type' => 'string', - 'example' => '2017-08-30 18:02:57.0', - ], - 'Status' => [ - 'description' => 'The status of the production studio. Valid values:'."\n" - ."\n" - .'* 0: idle'."\n" - .'* 1: streaming'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'ClientTokenId' => [ - 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n", - 'type' => 'string', - 'example' => '53200b81-b761-4c10-842a-a0726d97****'."\n", - ], - 'Tags' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'tag' => [ - 'description' => 'The tags.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The tag.'."\n", - 'type' => 'object', - 'properties' => [ - 'TagKey' => [ - 'description' => 'The key of the tag.'."\n", - 'type' => 'string', - 'example' => 'TestKey', - ], - 'TagValue' => [ - 'description' => 'The value of the tag.'."\n", - 'type' => 'string', - 'example' => 'TestValue', - ], - ], - ], - ], - ], - ], - 'ResourceGroupId' => [ - 'description' => 'The resource group ID. For more information about resource groups, see [Resource groups](~~2381067~~).'."\n", - 'type' => 'string', - 'format' => 'int32', - 'example' => 'rg-aekzw******', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b9676b3', - ], - 'Total' => [ - 'description' => 'The number of production studios.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'additionalProperties' => ['type' => 'integer', 'format' => 'int64', 'example' => '{1 : 20, 2 : 30}', 'description' => 'Number of messages.', 'title' => ''], + 'title' => '', + 'example' => '', ], + 'Deletatime' => ['description' => 'The time when the group was deleted. This parameter is returned only if the group was deleted.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1698299827', 'title' => ''], + 'Deletor' => ['description' => 'The ID of the user who deleted the group. This parameter is returned only if the group was deleted.'."\n", 'type' => 'string', 'example' => 'uid1', 'title' => ''], + 'SuperLargeGroup' => ['description' => 'Indicates whether the group is a super group. Valid values:'."\n" + ."\n" + .'* True'."\n" + .'* False'."\n", 'type' => 'boolean', 'example' => 'False', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.PageSize', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.PageNum', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.Status', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.StartTime', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.EndTime', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => '%s', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterList\\": {\\n \\"Caster\\": [\\n {\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"CasterName\\": \\"liveCaster****\\",\\n \\"CasterTemplate\\": \\"lp_ld\\",\\n \\"ChannelEnable\\": 1,\\n \\"ChargeType\\": \\"PrePaid\\",\\n \\"CreateTime\\": \\"2017-08-30 12:02:57.0\\",\\n \\"Duration\\": \\"1:02:33\\",\\n \\"ExpireTime\\": \\"2018-08-30 12:02:57.0\\",\\n \\"LastModified\\": \\"2021-12-01T05:08:45Z\\",\\n \\"NormType\\": 1,\\n \\"PurchaseTime\\": \\"2017-08-30 12:02:57.0\\",\\n \\"StartTime\\": \\"2017-08-30 18:02:57.0\\",\\n \\"Status\\": 1,\\n \\"ClientTokenId\\": \\"53200b81-b761-4c10-842a-a0726d97****\\\\n\\",\\n \\"Tags\\": {\\n \\"tag\\": [\\n {\\n \\"TagKey\\": \\"TestKey\\",\\n \\"TagValue\\": \\"TestValue\\"\\n }\\n ]\\n },\\n \\"ResourceGroupId\\": \\"rg-acfmz******\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b******\\",\\n \\"Total\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 5c6a2a0df228-4a64- af62-20e91b9676b3\\n \\n 1\\n 2017-08-30 12:02:57.0\\n 2018-08-30 12:02:57.0\\n 2017-08-30 12:02:57.0\\n liveCaster****\\n PrePaid\\n lp_ld\\n LIVEPRODUCER_POST-cn-0pp1czt****\\n 1\\n 2021-12-01T05:08:45Z\\n 2017-08-30 18:02:57.0\\n 1\\n 1:02:33\\n \\n","errorExample":""}]', - 'title' => 'DescribeCasters', - 'description' => 'You can call the [CreateCaster](~~2848012~~) operation to create a production studio and then call this operation to query the production studio list. The status of a production studio can be idle or streaming.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeLiveMessageGroup', + 'summary' => 'Queries the information about an interactive messaging group.', + 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848162~~) operation to create an interactive messaging group.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeCasterStreamUrl' => [ - 'summary' => 'Queries the streaming URLs of a production studio.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2025-03-26T02:50:33.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1815A27D-BAE2-10E6-89FD-D477951C****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"CreatorId\\": \\"uid1\\",\\n \\"AdminList\\": [\\n \\"[\\\\\\"uid1\\\\\\",\\\\\\"uid2\\\\\\"]\\"\\n ],\\n \\"Createtime\\": 1698305471,\\n \\"GroupName\\": \\"mytestgroup\\",\\n \\"GroupInfo\\": \\"testgroupinfo\\",\\n \\"Delete\\": false,\\n \\"TotalTimes\\": 50,\\n \\"OnlineUserCounts\\": 2,\\n \\"MsgAmount\\": {\\n \\"key\\": 0\\n },\\n \\"Deletatime\\": 1698299827,\\n \\"Deletor\\": \\"uid1\\",\\n \\"SuperLargeGroup\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 1815A27D-BAE2-10E6-89FD-D477951C67C7\\n grouptest1\\n uid1\\n uid1\\n 1698305471\\n mytestgroup\\n testgroupinfo\\n false\\n 50\\n 2\\n 1698299827\\n uid1\\n","errorExample":""}]', + ], + 'DescribeLiveMessageGroupBand' => [ + 'summary' => 'Queries the mute status of users.'."\n", + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'If you create a production studio through the [CreateCaster](~~69338#doc-api-live-CreateCaster~~) interface, check the value of the CasterId parameter in the response.'."\n" - ."\n" - .'If you create a production studio through the ApsaraVideo Live Console, log in to the console, then check the ID of the production studio through the following path:'."\n" - ."\n" - .'Production Studios > Production Studio Management'."\n" - ."\n" - .'> The CasterId is reflected in the Name column on the Production Studio Management page.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The ID of the interactive messaging group.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], + ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'CasterStreams' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'CasterStream' => [ - 'description' => 'The information about the streams of the production studio.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'OutputType' => [ - 'description' => 'Indicates whether the output stream is in preview mode or program mode.'."\n" - ."\n" - .'* **0**: indicates that the output videos of the scene are in preview mode.'."\n" - .'* **1**: indicates that the output videos of the scene are in program mode.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'RtmpUrl' => [ - 'description' => 'The Real Time Messaging Protocol (RTMP) URL.', - 'type' => 'string', - 'example' => 'rtmp://live/caster/example.edu', - ], - 'SceneId' => [ - 'description' => 'The ID of the scene.'."\n", - 'type' => 'string', - 'example' => '23ca74e0-aca3-4e7a-8561-9d96f525****', - ], - 'StreamInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'StreamInfo' => [ - 'description' => 'The information about the stream.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'OutputStreamUrl' => [ - 'description' => 'The streaming URL.'."\n", - 'type' => 'string', - 'example' => 'http://out/caster/example.net', - ], - 'TranscodeConfig' => [ - 'description' => 'The resolution to which the scene transcodes the stream for playback. Valid values:'."\n" - ."\n" - .'* **lsd**: standard definition.'."\n" - .'* **lld**: low definition.'."\n" - .'* **lud**: ultra high definition.'."\n" - .'* **lhd**: high definition.'."\n", - 'type' => 'string', - 'example' => 'lld', - ], - 'VideoFormat' => [ - 'description' => 'The format to which the scene transcodes the stream for playback. Valid values:'."\n" - ."\n" - .'* **flv**.'."\n" - .'* **rtmp**.'."\n" - .'* **m3u8**.'."\n", - 'type' => 'string', - 'example' => 'flv', - ], - ], - ], - ], - ], - ], - 'StreamUrl' => [ - 'description' => 'The streaming URL.'."\n", - 'type' => 'string', - 'example' => 'http://live/caster/example.org', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '021D1FE7-2E87-16AC-9364-4E7EA47C****'], + 'GroupId' => ['description' => 'The group ID.'."\n", 'type' => 'string', 'example' => 'grouptest', 'title' => ''], + 'BannedUserList' => [ + 'description' => 'The list of users that were muted separately, but not by muting the entire group.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The ID of the users.'."\n", 'type' => 'string', 'example' => '["uid1","uid2"]', 'title' => ''], + 'title' => '', + 'example' => '', ], - 'Total' => [ - 'description' => 'The number of streams that were returned.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'UnbannedUserList' => [ + 'description' => 'The list of users who were not muted when the entire group was muted.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The ID of the users.'."\n", 'type' => 'string', 'example' => '["uid3"]', 'title' => ''], + 'title' => '', + 'example' => '', ], + 'IsbannedAll' => ['description' => 'Indicates whether all users in the interactive messaging group are muted.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"CasterStreams\\": {\\n \\"CasterStream\\": [\\n {\\n \\"OutputType\\": 1,\\n \\"RtmpUrl\\": \\"rtmp://live/caster/example.edu\\",\\n \\"SceneId\\": \\"23ca74e0-aca3-4e7a-8561-9d96f525****\\",\\n \\"StreamInfos\\": {\\n \\"StreamInfo\\": [\\n {\\n \\"OutputStreamUrl\\": \\"http://out/caster/example.net\\",\\n \\"TranscodeConfig\\": \\"lld\\",\\n \\"VideoFormat\\": \\"flv\\"\\n }\\n ]\\n },\\n \\"StreamUrl\\": \\"http://live/caster/example.org\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E6******\\",\\n \\"Total\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n \\n 1\\n rtmp://live/caster/example.edu\\n 23ca74e0-aca3-4e7a-8561-9d96f525****\\n \\n http://out/caster/example.net\\n lld\\n flv\\n \\n http://live/caster/example.org\\n \\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n 1\\n","errorExample":""}]', - 'title' => 'DescribeCasterStreamUrl', - 'description' => 'You must create a production studio before calling this operation to query the information.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"021D1FE7-2E87-16AC-9364-4E7EA47C****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"BannedUserList\\": [\\n \\"[\\\\\\"uid1\\\\\\",\\\\\\"uid2\\\\\\"]\\"\\n ],\\n \\"UnbannedUserList\\": [\\n \\"[\\\\\\"uid3\\\\\\"]\\"\\n ],\\n \\"IsbannedAll\\": false\\n}","errorExample":""},{"type":"xml","example":"\\n 021D1FE7-2E87-16AC-9364-4E7EA47C****\\n grouptest\\n [\\"uid1\\",\\"uid2\\"]\\n [\\"uid3\\"]\\n false\\n","errorExample":""}]', + 'title' => 'DescribeLiveMessageGroupBand', + 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" ."\n" - .'## QPS limit'."\n" + .'## [](#qps-)QPS limit'."\n" ."\n" - .'A single user can perform a maximum of 15 queries per second (QPS). Throttling is triggered when the number of calls per second exceeds the QPS limit. The throttling may affect your business. Thus, we recommend that you observe the QPS limit on this operation. For more information about what a single user means and the QPS details, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live#topic-2136805).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'CopyCaster' => [ - 'summary' => 'Duplicates a production studio.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveMessageGroupBand'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveMessageGroupBand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'DescribeLivePackageConfig' => [ + 'summary' => 'Queries the live packaging configuration under a streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveJAENGU'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterName', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the new production studio.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'caster001', - ], + 'schema' => ['description' => 'The live streaming domain (primary playback domain).', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'SrcCasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the original production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The app name. Leave empty to match all names.', 'type' => 'string', 'required' => false, 'example' => 'AppName', 'title' => ''], ], [ - 'name' => 'ClientToken', + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The live stream name. Leave empty to match all stream names.', 'type' => 'string', 'required' => false, 'example' => 'StreamName', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The current page number. Default value: 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The page size. Default value: 10. Valid values: 5 to 30.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '5', 'default' => '10', 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'Order', 'in' => 'query', 'schema' => [ - 'description' => 'The user-generated request token. This token is used to ensure the idempotence of the request.'."\n" + 'description' => 'The sort order. Valid values:'."\n" + ."\n" + .'- **asc** (default): ascending order.'."\n" ."\n" - .'You can use the client to generate the value, but you must ensure that it is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", + .'- **desc**: descending order.', + 'enumValueTitles' => ['asc' => 'Ascending', 'desc' => 'Descending'], 'type' => 'string', - 'required' => true, - 'example' => '53200b81-b761-4c10-842a-a0726d97****', + 'required' => false, + 'default' => 'asc', + 'enum' => ['asc', 'desc'], + 'example' => 'asc', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The packaging configuration information.', 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the new production studio.'."\n", - 'type' => 'string', - 'example' => '1909f043-e3d3-49e9-82d6-4329ec4a****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'LivePackageConfigList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LivePackageConfig' => [ + 'description' => 'The packaging configuration list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The packaging configuration list.', + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'The app name.', 'type' => 'string', 'example' => 'AppName', 'title' => ''], + 'DomainName' => ['description' => 'The live streaming domain (primary playback domain).', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'IgnoreTranscode' => ['description' => 'Specifies whether to ignore transcoded streams. Valid values:'."\n" + ."\n" + .'- **true** (default): ignores transcoded streams.'."\n" + ."\n" + .'- **false**: does not ignore transcoded streams.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'PartDuration' => ['description' => 'The part segment duration, in milliseconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'Protocol' => ['description' => 'The live streaming protocol and packaging format.', 'type' => 'string', 'example' => 'HLS_CMAF', 'title' => ''], + 'SegmentDuration' => ['description' => 'The segment duration, in seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '5', 'title' => ''], + 'SegmentNum' => ['description' => 'The number of M3U8 segments for live streaming.', 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], + 'StreamName' => ['description' => 'The live stream name.', 'type' => 'string', 'example' => 'StreamName', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'Order' => ['description' => 'The sort order. Valid values:'."\n" + ."\n" + .'- **asc** (default): ascending order.'."\n" + ."\n" + .'- **desc**: descending order.', 'type' => 'string', 'example' => 'asc', 'title' => ''], + 'PageNum' => ['description' => 'The current page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The page size.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1FEDCFD8-4C5D-5CB3-A5A1-0B59E5AE57B0', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of records.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'CasterNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'InvalidParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is invalid, please check and try again.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'InvalidProtocol', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter Protocol is invalid, please check and try again.'], + ['errorCode' => 'InvalidSegmentNum', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SegmentNum is invalid, please check and try again.'], + ['errorCode' => 'InvalidSegmentDuration', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SegmentDuration is invalid, please check and try again.'], + ['errorCode' => 'InvalidPartDuration', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PartDuration is invalid, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalErr', 'errorMessage' => '%s, please try again.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"1909f043-e3d3-49e9-82d6-4329ec4a****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t1909f043-e3d3-49e9-82d6-4329ec4a****\\n\\t","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"CasterId\\": \\"1909f043-e3d3-49e9-82d6-4329ec4a0293\\"\\n}"}]', - 'title' => 'CopyCaster', - 'description' => 'You can call this operation to duplicate a production studio. This way, a new, identical production studio is created.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LivePackageConfigList\\": {\\n \\"LivePackageConfig\\": [\\n {\\n \\"AppName\\": \\"AppName\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"IgnoreTranscode\\": true,\\n \\"PartDuration\\": 0,\\n \\"Protocol\\": \\"HLS_CMAF\\",\\n \\"SegmentDuration\\": 5,\\n \\"SegmentNum\\": 3,\\n \\"StreamName\\": \\"StreamName\\"\\n }\\n ]\\n },\\n \\"Order\\": \\"asc\\",\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"1FEDCFD8-4C5D-5CB3-A5A1-0B59E5AE57B0\\",\\n \\"TotalNum\\": 1,\\n \\"TotalPage\\": 10\\n}","type":"json"}]', + 'title' => 'Query live packaging configuration', + 'description' => 'Obtain the primary streaming domain first, and then call this operation to query the live packaging configuration under the streaming domain.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'StartCaster' => [ - 'summary' => 'Starts a production studio. If the production studio does not have a PVW scene or a PGM scene, this operation creates and starts such scenes and starts audio and video processing tasks.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 300 calls per minute. If the limit is exceeded, API calls will be throttled, which may affect your business. Please call this operation as appropriate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePackageConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLivePrivateLineAreas' => [ + 'summary' => 'Queries the available origin points for Global Accelerator links.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The streaming domain for ingest.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The information about the production studio.'."\n", + 'description' => 'The data returned.', 'type' => 'object', 'properties' => [ - 'PgmSceneInfos' => [ + 'LiveAreasList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'SceneInfo' => [ - 'description' => 'The PGM scenes.'."\n", + 'LiveArea' => [ + 'description' => 'The list of region details.', 'type' => 'array', 'items' => [ - 'description' => 'The information about the PGM scene.'."\n", + 'description' => 'The details of the region.', 'type' => 'object', 'properties' => [ - 'SceneId' => [ - 'description' => 'The ID of the scene.'."\n", - 'type' => 'string', - 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', - ], - 'StreamInfos' => [ + 'RegionType' => ['description' => 'The type of the region. Valid values:'."\n" + ."\n" + .'- domestic: the Chinese mainland.'."\n" + ."\n" + .'- overseas: countries and regions outside the Chinese mainland.', 'type' => 'string', 'example' => 'domestic', 'title' => ''], + 'Regions' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'StreamInfo' => [ - 'description' => 'The stream relay URLs.'."\n", + 'Region' => [ + 'description' => 'The list of regions.', 'type' => 'array', 'items' => [ - 'description' => 'The detailed information.'."\n", + 'description' => 'The information about the region.', 'type' => 'object', 'properties' => [ - 'OutputStreamUrl' => [ - 'description' => 'The URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://abclive/caster/example.net', - ], - 'TranscodeConfig' => [ - 'description' => 'The transcoding configuration. Valid values:'."\n" - ."\n" - .'* **lsd**: standard definition'."\n" - .'* **lld**: low definition'."\n" - .'* **lud**: ultra-high definition'."\n" - .'* **lhd**: high definition'."\n", - 'type' => 'string', - 'example' => 'lld', - ], - 'VideoFormat' => [ - 'description' => 'The format. Valid values:'."\n" - ."\n" - .'* **flv**'."\n" - .'* **rtmp**'."\n" - .'* **m3u8**'."\n", - 'type' => 'string', - 'example' => 'flv', - ], + 'LocalName' => ['description' => 'The name of the region.', 'type' => 'string', 'example' => '深圳', 'title' => ''], + 'RegionId' => ['description' => 'The region ID.', 'type' => 'string', 'example' => 'cn-shenzhen', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'StreamUrl' => [ - 'description' => 'The streaming URL of the PGM scene in the production studio. The value is not a stream relay URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://abclive/caster/example.edu', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], - 'PvwSceneInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'SceneInfo' => [ - 'description' => 'The PVW scenes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the PVW scene.'."\n", - 'type' => 'object', - 'properties' => [ - 'SceneId' => [ - 'description' => 'The ID of the scene.'."\n", - 'type' => 'string', - 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', - ], - 'StreamUrl' => [ - 'description' => 'The streaming URL of the PVW scene in the production studio. The value is not a stream relay URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://abclive/caster/example.net', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '6EBD1AC4-C34D-4AE1-963E-B688A228BE31', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'C4865B85-664B-19D3-BB16-C62FB83C8226', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidShowList.EmptyList', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.Cease', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.Expire', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.Inuse', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Inuse', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectChannel.Disable', - 'errorMessage' => '%s', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s', - ], - ], - 403 => [ - [ - 'errorCode' => 'UserQuotaExceed', - 'errorMessage' => '%s', - ], - ], - [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidTranscode.NotFound', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidDelay.NotFound', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.NotFound', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"PgmSceneInfos\\": {\\n \\"SceneInfo\\": [\\n {\\n \\"SceneId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e86****\\",\\n \\"StreamInfos\\": {\\n \\"StreamInfo\\": [\\n {\\n \\"OutputStreamUrl\\": \\"rtmp://abclive/caster/example.net\\",\\n \\"TranscodeConfig\\": \\"lld\\",\\n \\"VideoFormat\\": \\"flv\\"\\n }\\n ]\\n },\\n \\"StreamUrl\\": \\"rtmp://abclive/caster/example.edu\\"\\n }\\n ]\\n },\\n \\"PvwSceneInfos\\": {\\n \\"SceneInfo\\": [\\n {\\n \\"SceneId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e86****\\",\\n \\"StreamUrl\\": \\"rtmp://abclive/caster/example.net\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\n\\n \\n b5f8c837-ceeb-424f-b30b-68e94e86****\\n \\n rtmp://abclive/caster/example.net\\n \\n\\n\\n \\n b5f8c837-ceeb-424f-b30b-68e94e86****\\n rtmp://abclive/caster/example.edu\\n \\n \\n rtmp://abclive/caster/example.net\\n flv\\n lld\\n \\n \\n \\n\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"PvwSceneInfos\\": [\\n {\\n \\"SceneId\\":\\"b5f8c837-ceeb-424f-b30b-68e94e864995\\",\\n \\"StreamUrl\\":\\"rtmp://XXXXXX/caster/1975ee99db904ebb83908d43bc878188?auth_key=1506396160-0-0-063397072a9980fd418d43eb00e02e09\\"\\n }\\n ],\\n \\"PgmSceneInfos\\": [\\n {\\n \\"SceneId\\":\\"b5f8c837-ceeb-424f-b30b-68e94e864996\\",\\n \\"StreamUrl\\":\\"rtmp://XXXXXX/caster/1975ee99db904ebb83908d43bc878188?auth_key=1506396160-0-0-063397072a9980fd418d43eb00e02e10\\",\\n \\"StreamInfos\\": [\\n {\\n \\"VideoFormat\\": \\"flv\\",\\n \\"OutputStreamUrl\\": \\"http://XXXXXX/caster/fb628e2469f94f2aa2c0c219af8b2527_lld.flv?auth_key=1506396160-0-0-7de771a77102680861853af862d5eaf0\\",\\n \\"TranscodeConfig\\": \\"lld\\"\\n },\\n {\\n \\"VideoFormat\\": \\"rtmp\\",\\n \\"OutputStreamUrl\\": \\"rtmp://XXXXXX/caster/fb628e2469f94f2aa2c0c219af8b2527_lld?auth_key=1506396160-0-0-77ed32cd82ed32ccd51a832b5765814c\\",\\n \\"TranscodeConfig\\": \\"lld\\"\\n },\\n {\\n \\"VideoFormat\\": \\"m3u8\\",\\n \\"OutputStreamUrl\\": \\"http://XXXXXX/caster/fb628e2469f94f2aa2c0c219af8b2527.m3u8?auth_key=1506396160-0-0-d51f0512dcf76aa749f79f53ae6421d2\\",\\n \\"TranscodeConfig\\": \\"lld\\"\\n }\\n ]\\n }\\n ]\\n}"}]', - 'title' => 'StartCaster', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to start the production studio. If the production studio does not have a PVW scene or a PGM scene, this operation creates and starts such scenes and starts audio and video processing tasks.'."\n" + 'title' => 'DescribeLivePrivateLineAreas', + 'description' => 'You can call this operation to query available Global Accelerator regions before you call the CreateLivePrivateLine operation. These regions can be used as origin points for acceleration.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## Limits'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'StopCaster' => [ - 'summary' => 'Stops a production studio. This stops the PVW and PGM scenes of the production studio.', - 'methods' => [ - 'post', - 'get', + .'You can make up to 50 queries per second (QPS) per user. If you exceed this limit, API calls are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate.', + 'extraInfo' => '### 特殊错误码'."\n" + .'| 错误代码 | 描述 | HTTP状态码 | 语义 |'."\n" + .'| ----- | --------- | ----------- | ------- |'."\n" + .'| InvalidDomain.NotFound | The domain provided does not exist in our records. | 404 | 当前账户下未查到域名。 |'."\n" + .'| InvalidParam | Parameter invalid. | 400 | 参数错误。 |'."\n" + .'| InternalError | The request processing has failed due to some unknown error. | 500 | 后台发生未知错误。 |', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePrivateLineAreas', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LiveAreasList\\": {\\n \\"LiveArea\\": [\\n {\\n \\"RegionType\\": \\"domestic\\",\\n \\"Regions\\": {\\n \\"Region\\": [\\n {\\n \\"LocalName\\": \\"深圳\\",\\n \\"RegionId\\": \\"cn-shenzhen\\"\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"RequestId\\": \\"C4865B85-664B-19D3-BB16-C62FB83C8226\\"\\n}","type":"json"}]', + ], + 'DescribeLivePrivateLineAvailGA' => [ + 'summary' => 'Queries the binding information between an Alibaba Cloud Global Accelerator (GA) instance and a live channel.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The application name.', 'type' => 'string', 'required' => false, 'example' => 'live', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => false, 'example' => 'testStream', 'title' => ''], + ], + [ + 'name' => 'AccelerationArea', + 'in' => 'query', + 'schema' => ['description' => 'The acceleration channel.', 'type' => 'string', 'required' => false, 'example' => 'ap-southeast-1', 'title' => ''], + ], + [ + 'name' => 'VideoCenter', + 'in' => 'query', + 'schema' => ['description' => 'The live center. Valid values: cn-beijing (Beijing), cn-shanghai (Shanghai), cn-shenzhen (Shenzhen), cn-qingdao (Qingdao), ap-northeast-1 (Tokyo), ap-southeast-5 (Jakarta), eu-central-1 (Frankfurt), ap-southeast-1 (Singapore), and ap-south-1 (Mumbai).', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'IsGaInstance', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" + 'description' => 'Specifies whether to query a GA instance. Valid values:'."\n" ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" + .'- yes: queries the status of the GA instance.'."\n" ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", + .'- no: queries the binding details between the GA instance and the live channel.', 'type' => 'string', 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', + 'enum' => ['yes', 'no'], + 'example' => 'no', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'LivePrivateLineAvailGAs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LivePrivateLineAvailGA' => [ + 'itemNode' => true, + 'description' => 'The configuration details of the GA instance.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The configuration details of the GA instance.', + 'type' => 'object', + 'properties' => [ + 'AccelerationArea' => ['description' => 'The acceleration channel.', 'type' => 'string', 'example' => 'ap-southeast-1', 'title' => ''], + 'AccelerationType' => ['description' => 'The acceleration type. Valid values:'."\n" + ."\n" + .'- play: stream playback acceleration.'."\n" + ."\n" + .'- publish: stream ingest acceleration.', 'type' => 'string', 'example' => 'play', 'title' => ''], + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'live', 'title' => ''], + 'BindingStatus' => ['description' => 'Indicates whether the instance is attached to a live channel. Valid values:'."\n" + ."\n" + .'- yes: The instance is attached.'."\n" + ."\n" + .'- no: The instance is not attached.', 'type' => 'string', 'example' => 'yes', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'IP' => ['description' => 'The accelerated IP address.', 'type' => 'string', 'example' => '127.0.0.1', 'title' => ''], + 'InstanceId' => ['description' => 'The ID of the GA instance.', 'type' => 'string', 'example' => 'ga-bp1iovsdpf01ym9su****', 'title' => ''], + 'Status' => ['description' => 'The status of the instance. Valid values:'."\n" + ."\n" + .'- active: The instance is active.'."\n" + ."\n" + .'- inactive: The instance is inactive.', 'type' => 'string', 'example' => 'active', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'testStream', 'title' => ''], + 'Uid' => ['description' => 'The UID.', 'type' => 'string', 'example' => '1833220971116****', 'title' => ''], + 'VideoCenter' => ['description' => 'The live center.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'C4865B85-664B-19D3-BB16-C62FB83C8226', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'StopCaster', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and call this operation to stop the production studio. When a production studio is stopped, its PVW and PGM scenes are stopped.'."\n" + 'title' => 'DescribeLivePrivateLineAvailGA', + 'description' => 'Set the IsGaInstance parameter to yes to query the status of the GA instance. Set the parameter to no to query the binding details between the GA instance and the live channel.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteCaster' => [ - 'summary' => 'Deletes a production studio.', - 'methods' => [ - 'post', - 'get', + .'Each user can make up to 50 queries per second (QPS). If you exceed this limit, API calls are throttled, which may affect your business. We recommend that you call this API at a reasonable rate.', + 'extraInfo' => '### 特殊错误码'."\n" + .'| 错误代码 | 描述 | HTTP状态码 | 语义 |'."\n" + .'| ----- | --------- | ----------- | ------- |'."\n" + .'| InvalidDomain.NotFound | The domain provided does not exist in our records. | 404 | 当前账户下未查到域名。 |'."\n" + .'| InvalidParam | Parameter invalid. | 400 | 参数错误。 |'."\n" + .'| InternalError | The request processing has failed due to some unknown error. | 500 | 后台发生未知错误。 |'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLivePrivateLineAvailGA'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePrivateLineAvailGA', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LivePrivateLineAvailGAs\\": {\\n \\"LivePrivateLineAvailGA\\": [\\n {\\n \\"AccelerationArea\\": \\"ap-southeast-1\\",\\n \\"AccelerationType\\": \\"play\\",\\n \\"AppName\\": \\"live\\",\\n \\"BindingStatus\\": \\"yes\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"IP\\": \\"127.0.0.1\\",\\n \\"InstanceId\\": \\"ga-bp1iovsdpf01ym9su****\\",\\n \\"Status\\": \\"active\\",\\n \\"StreamName\\": \\"testStream\\",\\n \\"Uid\\": \\"1833220971116****\\",\\n \\"VideoCenter\\": \\"cn-shanghai\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"C4865B85-664B-19D3-BB16-C62FB83C8226\\"\\n}","type":"json"}]', + ], + 'DescribeLiveProducerUsageData' => [ + 'summary' => 'Calls DescribeLiveProducerUsageData to query producer studio usage data.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeCode' => '106904', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'Region', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The region to which the domain name belongs. If this parameter is left empty, merged data of all regions is returned by default. Batch query is supported. Separate multiple regions with commas (,).', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain name of the cloud producer studio.'."\n" + ."\n" + .'- Supports single or batch domain name queries. Separate multiple domain names with commas (,) for batch queries.'."\n" + .'- If this parameter is left empty, merged data of all live streaming domain names is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'Instance', + 'in' => 'query', + 'schema' => ['description' => 'The instance to query. Batch query is supported. Separate multiple instances with commas (,).'."\n" + ."\n" + .'> If this parameter is left empty, merged data of all instances is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'a17d0184-462d-4630-b2a6-8c26dde2****', 'title' => ''], + ], + [ + 'name' => 'Type', + 'in' => 'query', + 'schema' => ['description' => 'The producer type. Batch query is supported. Separate multiple types with commas (,). Valid values:'."\n" + ."\n" + .'- **slidelive**: playlist-based.'."\n" + ."\n" + .'- **universal**: general-purpose.'."\n" + ."\n" + .'> If this parameter is left empty, merged data of all producer types is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'slidelive', 'title' => ''], + ], + [ + 'name' => 'SplitBy', + 'in' => 'query', + 'schema' => ['description' => 'The grouping key. You can specify one or more of the following: domain, region, instance, or type. Separate multiple values with commas (,). The specified fields will be grouped in the output.'."\n" + ."\n\n" + .'> If this parameter is left empty, only aggregated data is returned.', 'type' => 'string', 'required' => false, 'example' => 'type', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2018-09-30T16:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" + ."\n" + .'> The end time must be later than the start time.', 'type' => 'string', 'required' => false, 'example' => '2018-10-31T15:59:59Z', 'title' => ''], + ], + [ + 'name' => 'Interval', + 'in' => 'query', + 'schema' => ['description' => 'The time granularity of the queried data. Valid values: 3600 (1 hour) and 86400 (1 day). Unit: seconds.', 'type' => 'string', 'required' => false, 'example' => '3600', 'title' => ''], + ], + [ + 'name' => 'app', + 'in' => 'query', + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], ], 'responses' => [ @@ -33211,116 +26072,261 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can use the ID as a request parameter in the API operation that is used to add input sources, layouts, components, or an episode list to the production studio or query the layouts of the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'BillProducerData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'BillProducerDataItem' => [ + 'description' => 'The usage data of the producer studio.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'DomainName' => ['description' => 'The domain name for usage data. Grouped in the output when SplitBy is set to domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Instance' => ['description' => 'The usage instance. Grouped in the output when SplitBy is set to instance.', 'type' => 'string', 'example' => 'a17d0184-462d-4630-b2a6-8c26dde2****', 'title' => ''], + 'OutputHdDuration' => ['description' => 'The duration of high-definition (HD) resolution output. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '6000', 'title' => ''], + 'OutputLdDuration' => ['description' => 'The duration of low-definition (LD) resolution output. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '1001', 'title' => ''], + 'OutputSdDuration' => ['description' => 'The duration of standard-definition (SD) resolution output. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '500', 'title' => ''], + 'Region' => ['description' => 'The region for usage data. Grouped in the output when SplitBy is set to region.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2018-09-30T00:00:00Z', 'title' => ''], + 'TranHdDuration' => ['description' => 'The transcoding duration of high-definition (HD) resolution. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '6777', 'title' => ''], + 'TranLdDuration' => ['description' => 'The transcoding duration of low-definition (LD) resolution. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '111', 'title' => ''], + 'TranSdDuration' => ['description' => 'The transcoding duration of standard-definition (SD) resolution. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '666', 'title' => ''], + 'Type' => ['description' => 'The producer type. Grouped in the output when SplitBy is set to type.', 'type' => 'string', 'example' => 'slidelive', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'EndTime' => ['description' => 'The end time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2018-09-30T16:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'C370DAF1-C838-4288-A1A0-9A87633D248E', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2018-10-31T15:59:59Z', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvaildCaster.Delete', - 'errorMessage' => 'Caster can not be deleted when ChargeType is Prepaid', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.Inuse', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s', - ], - ], - 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s', - ], - ], - [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified StartTime or EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidTime.ValueNotSupported', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'The specified time is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\na2b8e671-2fe5-4642-a2ec-bf93880e****\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e1a49\\"\\n}"}]', - 'title' => 'DeleteCaster', - 'description' => '* You can delete only production studios that are closed.'."\n" - .'* When a production studio is deleted, the scenes, components, and layouts of the production studio are also deleted.'."\n" - .'* You cannot recover a deleted production studio.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"BillProducerData\\": {\\n \\"BillProducerDataItem\\": [\\n {\\n \\"DomainName\\": \\"example.com\\",\\n \\"Instance\\": \\"a17d0184-462d-4630-b2a6-8c26dde2****\\",\\n \\"OutputHdDuration\\": 6000,\\n \\"OutputLdDuration\\": 1001,\\n \\"OutputSdDuration\\": 500,\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"TimeStamp\\": \\"2018-09-30T00:00:00Z\\",\\n \\"TranHdDuration\\": 6777,\\n \\"TranLdDuration\\": 111,\\n \\"TranSdDuration\\": 666,\\n \\"Type\\": \\"slidelive\\"\\n }\\n ]\\n },\\n \\"EndTime\\": \\"2018-09-30T16:00:00Z\\",\\n \\"RequestId\\": \\"C370DAF1-C838-4288-A1A0-9A87633D248E\\",\\n \\"StartTime\\": \\"2018-10-31T15:59:59Z\\"\\n}","type":"json"}]', + 'title' => 'Query producer studio usage data', + 'description' => 'The minimum data query granularity is 1 hour. The maximum query time span is 31 days. The maximum historical query range is the last 90 days.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this API operation is 5 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation properly.', + 'extraInfo' => '## Example 2: splitBy=type'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'RestartCaster' => [ - 'summary' => 'Restarts a production studio.', - 'methods' => [ - 'post', - 'get', + .'Request example'."\n" + ."\n" + .'```'."\n" + .'http://live.aliyuncs.com?Action=DescribeLiveProducerUsageData '."\n" + .'&StartTime=2018-09-30T16:00:00Z '."\n" + .'&EndTime=2018-10-31T15:59:59Z '."\n" + .'&SplitBy=type '."\n" + .'&'."\n" + .'```'."\n" + .'Normal response examples'."\n" + ."\n" + .'`XML` format'."\n" + ."\n" + .'```'."\n" + .''."\n" + .' C370DAF1-C838-4288-A1A0-9A87633D248E'."\n" + .' 2018-09-30T16:00:00Z'."\n" + .' 2018-10-31T15:59:59Z'."\n" + .' '."\n" + .' '."\n" + .' universal'."\n" + .' 1001'."\n" + .' 500'."\n" + .' 6000'."\n" + .' 111'."\n" + .' 666'."\n" + .' 6777'."\n" + .' 2018-09-30T00:00:00Z'."\n" + .' '."\n" + .' '."\n" + .' slidelive'."\n" + .' 1001'."\n" + .' 500'."\n" + .' 6000'."\n" + .' 111'."\n" + .' 666'."\n" + .' 6777'."\n" + .' 2018-09-30T00:00:00Z'."\n" + .' '."\n" + .' '."\n" + .' universal'."\n" + .' 1001'."\n" + .' 500'."\n" + .' 6000'."\n" + .' 111'."\n" + .' 666'."\n" + .' 6777'."\n" + .' 2018-10-01T00:00:00Z'."\n" + .' '."\n" + .' '."\n" + .' slidelive'."\n" + .' 1001'."\n" + .' 500'."\n" + .' 6000'."\n" + .' 111'."\n" + .' 666'."\n" + .' 6777'."\n" + .' 2018-10-01T00:00:00Z'."\n" + .' '."\n" + .' '."\n" + .' universal'."\n" + .' 1001'."\n" + .' 500'."\n" + .' 6000'."\n" + .' 111'."\n" + .' 666'."\n" + .' 6777'."\n" + .' 2018-10-02T00:00:00Z'."\n" + .' '."\n" + .' '."\n" + .' slidelive'."\n" + .' 1001'."\n" + .' 500'."\n" + .' 6000'."\n" + .' 111'."\n" + .' 666'."\n" + .' 6777'."\n" + .' 2018-10-02T00:00:00Z'."\n" + .' '."\n" + .' '."\n" + .''."\n" + .'```'."\n" + .'`JSON` format'."\n" + ."\n" + .'```'."\n" + .'{'."\n" + .' "RequestId": "C370DAF1-C838-4288-A1A0-9A87633D248E",'."\n" + .' "EndTime": "2018-09-30T16:00:00Z",'."\n" + .' "StartTime": "2018-10-31T15:59:59Z",'."\n" + .' "BillProducerData": {'."\n" + .' "BillProducerDataItem": ['."\n" + .' {'."\n" + .' "Type": "universal",'."\n" + .' "OutputLdDuration": 1001,'."\n" + .' "OutputSdDuration": 500,'."\n" + .' "OutputHdDuration": 6000,'."\n" + .' "TranLdDuration": 111,'."\n" + .' "TranSdDuration": 666,'."\n" + .' "TranHdDuration": 6777,'."\n" + .' "TimeStamp": "2018-09-30T00:00:00Z"'."\n" + .' }, {'."\n" + .' "Type": "slidelive",'."\n" + .' "OutputLdDuration": 1001,'."\n" + .' "OutputSdDuration": 500,'."\n" + .' "OutputHdDuration": 6000,'."\n" + .' "TranLdDuration": 111,'."\n" + .' "TranSdDuration": 666,'."\n" + .' "TranHdDuration": 6777,'."\n" + .' "TimeStamp": "2018-09-30T00:00:00Z"'."\n" + .' },{'."\n" + .' "Type": "universal",'."\n" + .' "OutputLdDuration": 1001,'."\n" + .' "OutputSdDuration": 500,'."\n" + .' "OutputHdDuration": 6000,'."\n" + .' "TranLdDuration": 111,'."\n" + .' "TranSdDuration": 666,'."\n" + .' "TranHdDuration": 6777,'."\n" + .' "TimeStamp": "2018-10-01T00:00:00Z"'."\n" + .' },{'."\n" + .' "Type": "slidelive",'."\n" + .' "OutputLdDuration": 1001,'."\n" + .' "OutputSdDuration": 500,'."\n" + .' "OutputHdDuration": 6000,'."\n" + .' "TranLdDuration": 111,'."\n" + .' "TranSdDuration": 666,'."\n" + .' "TranHdDuration": 6777,'."\n" + .' "TimeStamp": "2018-10-01T00:00:00Z"'."\n" + .' },{'."\n" + .' "Type": "universal",'."\n" + .' "OutputLdDuration": 1001,'."\n" + .' "OutputSdDuration": 500,'."\n" + .' "OutputHdDuration": 6000,'."\n" + .' "TranLdDuration": 111,'."\n" + .' "TranSdDuration": 666,'."\n" + .' "TranHdDuration": 6777,'."\n" + .' "TimeStamp": "2018-10-02T00:00:00Z"'."\n" + .' },{'."\n" + .' "Type": "slidelive",'."\n" + .' "OutputLdDuration": 1001,'."\n" + .' "OutputSdDuration": 500,'."\n" + .' "OutputHdDuration": 6000,'."\n" + .' "TranLdDuration": 111,'."\n" + .' "TranSdDuration": 666,'."\n" + .' "TranHdDuration": 6777,'."\n" + .' "TimeStamp": "2018-10-02T00:00:00Z"'."\n" + .' }]'."\n" + .' }'."\n" + .'}'."\n" + .'```', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveProducerUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLivePullStreamConfig' => [ + 'summary' => 'Retrieves the scheduled stream pulling configurations for a domain name.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -33328,856 +26334,826 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '6EBD1AC4-C34D-4AE1-963E-B688A228BE31', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', 'title' => ''], + 'LiveAppRecordList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveAppRecord' => [ + 'itemNode' => true, + 'description' => 'The stream pulling configurations.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'EndTime' => ['description' => 'The end time. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2016-05-20T01:33:00Z', 'title' => ''], + 'AppName' => ['description' => 'The name of the application.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'SourceUrl' => ['description' => 'The origin URL for stream pulling.', 'type' => 'string', 'example' => 'guide.aliyundoc.com', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2016-05-15T01:30:00Z', 'title' => ''], + 'StreamName' => ['description' => 'The name of the pulled stream.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'SourceUsing' => ['description' => 'The origin URL that is currently active and being used to pull the stream.', 'type' => 'string', 'example' => 'guide.aliyundoc.com', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain where the ingested stream is hosted.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidNormType.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\n","errorExample":""}]', - 'title' => 'RestartCaster', - 'description' => '* Only product studios in playlist mode and general mode are supported. Virtual studios are not supported.'."\n" - .'* After you restart a production studio, the current settings such as the resolution and screen orientation are reloaded to restore the previous playback status.'."\n" + 'title' => 'DescribeLivePullStreamConfig', + 'description' => 'This operation supports retrieving only the configurations of scheduled stream pulling.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'UpdateCasterResourceGroup' => [ - 'summary' => 'Changes the resource group to which a production studio belongs.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePullStreamConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"LiveAppRecordList\\": {\\n \\"LiveAppRecord\\": [\\n {\\n \\"EndTime\\": \\"2016-05-20T01:33:00Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"SourceUrl\\": \\"guide.aliyundoc.com\\",\\n \\"StartTime\\": \\"2016-05-15T01:30:00Z\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"SourceUsing\\": \\"guide.aliyundoc.com\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLivePullToPush' => [ + 'summary' => 'Calls DescribeLivePullToPush to query a pull-to-push streaming task.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '233607', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '238179', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'default' => 'cn-shanghai', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'NewResourceGroupId', + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the destination resource group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rg-aekz7***34cn5ty', - ], + 'schema' => ['description' => 'The task ID.', 'type' => 'string', 'required' => true, 'example' => 'fd245384-4067-4f91-9d75-9666a6bc****', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'Region', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the production studio.'."\n", + 'description' => 'The region where the task is launched. Valid values:'."\n" + .'- ap-southeast-1 (Singapore)'."\n" + .'- ap-southeast-5 (Indonesia)'."\n" + .'- cn-beijing (Beijing)'."\n" + .'- cn-shanghai (Shanghai)', + 'enumValueTitles' => ['cn-shenzhen' => 'Shenzhen', 'cn-qingdao' => 'Qingdao', 'preregion' => 'Pre-release', 'cn-beijing' => 'Beijing', 'cn-shanghai' => 'Shanghai', 'ap-southeast-1' => 'Singapore', 'eu-central-1' => 'Germany (Frankfurt)', 'ap-northeast-1' => 'Japan (Tokyo)', 'ap-southeast-5' => 'Indonesia', 'me-central-1' => 'Saudi Arabia (Riyadh)'], 'type' => 'string', 'required' => true, - 'example' => 'a41300c9-23d3-470e-b9bd-****663e0700', + 'enum' => ['ap-northeast-1', 'ap-southeast-1', 'ap-southeast-5', 'eu-central-1', 'me-central-1', 'cn-beijing', 'cn-shanghai', 'cn-shenzhen', 'cn-qingdao', 'preregion'], + 'example' => 'cn-shanghai', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '0D776BD1-****-59D0-9A1B-272832D999F6', + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'a05e6b15-15af-405b-a4a2-0152245d****'], + 'RetCode' => ['description' => 'The return code.'."\n" + .'> - "0" is returned under normal circumstances.'."\n" + .'> - For abnormal cases, refer to the error code list below.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'Description' => ['description' => 'The error description.', 'type' => 'string', 'example' => 'OK', 'title' => ''], + 'TaskId' => ['description' => 'The newly created task ID.', 'type' => 'string', 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', 'title' => ''], + 'TaskStatus' => ['description' => 'The current task status:'."\n" + .'- 0: Not started (the start time has not been reached).'."\n" + .'- 1: Running normally (pull streaming and push streaming are normal).'."\n" + .'- 2: Running abnormally.'."\n" + .'- 3: Stopped (pull streaming or push streaming is abnormal, or the task was actively stopped by calling the API).'."\n" + .'- -1: Exited.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'TaskInvalidReason' => ['description' => 'The reason why the task stopped running:'."\n" + ."\n" + .'- PullStreamFailed: Source stream pull exception, retrying.'."\n" + .'- PushStreamFailed: Destination stream push exception, retrying.'."\n" + .'- UnknownError: Unknown exception.'."\n" + ."\n" + .'> Only returned when the task is in stopped state.', 'type' => 'string', 'example' => 'PullStreamFailed', 'title' => ''], + 'TaskExitTime' => ['description' => 'The task exit time, in Unix seconds timestamp.'."\n" + .'> Only returned when the task is in exited state.', 'type' => 'integer', 'format' => 'int32', 'example' => '1726354625', 'title' => ''], + 'TaskExitReason' => ['description' => 'The reason for task exit:'."\n" + ."\n" + .'- TriggerByUser: Actively ended by the user.'."\n" + .'- OverEndTime: Exceeded the preset end time.'."\n" + ."\n" + .'> Only returned when the task is in exited state.', 'type' => 'string', 'example' => 'TriggerByUser', 'title' => ''], + 'CurrentOffset' => ['description' => 'The currently effective video playback offset.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'CurrentFileIndex' => ['description' => 'The currently effective playlist sequence offset.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'TaskInfo' => [ + 'description' => 'The task information.', + 'type' => 'object', + 'properties' => [ + 'TaskId' => ['description' => 'The task ID.', 'type' => 'string', 'example' => 'fd245384-4067-4f91-9d75-9666a6bc9****', 'title' => ''], + 'TaskName' => ['description' => 'The task name.', 'type' => 'string', 'example' => 'test', 'title' => ''], + 'StartTime' => ['description' => 'The task start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC time).', 'type' => 'string', 'example' => '2024-08-26T10:30:00Z', 'title' => ''], + 'EndTime' => ['description' => 'The task end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC time).', 'type' => 'string', 'example' => '2024-08-27T14:30:00Z', 'title' => ''], + 'SourceType' => ['description' => 'The source stream type. Valid values:'."\n" + ."\n" + .'- live: Live stream.'."\n" + .'- vod: Alibaba Cloud VOD resource.'."\n" + .'- url: Third-party video file resource.', 'type' => 'string', 'example' => 'vod', 'title' => ''], + 'SourceProtocol' => ['description' => 'The source stream protocol name.', 'type' => 'string', 'example' => 'RTMP', 'title' => ''], + 'SourceUrls' => [ + 'description' => 'The source stream URL addresses.', + 'type' => 'array', + 'items' => ['description' => 'The source stream URL address.', 'type' => 'string', 'example' => 'rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434', 'title' => ''], + 'example' => 'rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434', + 'title' => '', + ], + 'DstUrl' => ['description' => 'The push stream destination address.', 'type' => 'string', 'example' => 'rtmp://pushtest.********.aliyunlive.com/pulltest493/pulltest-w434', 'title' => ''], + 'CallbackURL' => ['description' => 'The HTTP callback URL.', 'type' => 'string', 'example' => 'https://callback*****.com', 'title' => ''], + 'Offset' => ['description' => 'The start offset, which is the starting offset value for the video file. Unit: seconds. Value: greater than 0.'."\n" + .'> - Indicates starting to read from a position offset relative to the first frame.'."\n" + .'> - Only valid for VOD resources or video files.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'FileIndex' => ['description' => 'The file index, starting playback from the nth file.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'RetryCount' => ['description' => 'The number of retries.', 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], + 'RetryInterval' => ['description' => 'The retry interval, in seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '60', 'title' => ''], + 'RepeatNumber' => ['description' => 'The number of times to repeat playback after completion. Valid values:'."\n" + .'- 0 (default): No repeat playback.'."\n" + .'- -1: Loop indefinitely.'."\n" + .'- Other positive integers: The number of times to repeat playback after completion.'."\n" + ."\n" + .'> This parameter only applies to VOD or third-party video streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter.PurchaseTime', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.ExpireTime', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidChargeType.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidChargeType.PostSupport', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidParameter.ChargeType', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidPeriod.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'CodeInvalidAliUid', 'errorMessage' => 'This aliuid does not have a live domain name.', 'description' => 'This aluid does not have a live domain name.'], + ['errorCode' => 'CodeTaskNotExist', 'errorMessage' => 'Task does not exist.', 'description' => 'The task does not exist.'], ], - [ - [ - 'errorCode' => 'CasterNumberExceed', - 'errorMessage' => '%s', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], - 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"a05e6b15-15af-405b-a4a2-0152245d****\\",\\n \\"RetCode\\": 0,\\n \\"Description\\": \\"OK\\",\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\",\\n \\"TaskStatus\\": 0,\\n \\"TaskInvalidReason\\": \\"PullStreamFailed\\",\\n \\"TaskExitTime\\": 1726354625,\\n \\"TaskExitReason\\": \\"TriggerByUser\\",\\n \\"CurrentOffset\\": 0,\\n \\"CurrentFileIndex\\": 0,\\n \\"TaskInfo\\": {\\n \\"TaskId\\": \\"fd245384-4067-4f91-9d75-9666a6bc9****\\",\\n \\"TaskName\\": \\"test\\",\\n \\"StartTime\\": \\"2024-08-26T10:30:00Z\\",\\n \\"EndTime\\": \\"2024-08-27T14:30:00Z\\",\\n \\"SourceType\\": \\"vod\\",\\n \\"SourceProtocol\\": \\"RTMP\\",\\n \\"SourceUrls\\": [\\n \\"rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434\\"\\n ],\\n \\"DstUrl\\": \\"rtmp://pushtest.********.aliyunlive.com/pulltest493/pulltest-w434\\",\\n \\"CallbackURL\\": \\"https://callback*****.com\\",\\n \\"Offset\\": 0,\\n \\"FileIndex\\": 0,\\n \\"RetryCount\\": 3,\\n \\"RetryInterval\\": 60,\\n \\"RepeatNumber\\": 0\\n }\\n}","type":"json"}]', + 'title' => 'Query pull-to-push streaming task', + 'description' => '- Call this API operation to query a pull-to-push streaming task.'."\n" + .'- Supports querying the configuration information and status information of a task with a specified ID.'."\n" + ."\n" + .'## QPS Limit'."\n" + .'The single-user QPS limit for this API is 10 calls per second. Exceeding the limit will result in API throttling, which may affect your business. Please call this API appropriately.', + 'changeSet' => [ + ['createdAt' => '2025-04-27T08:03:58.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2025-04-01T03:46:19.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLivePullToPush'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidParameter.NormType', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0D776BD1-****-59D0-9A1B-272832D999F6\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0D776BD1-****-59D0-9A1B-272832D999F6\\n","errorExample":""}]', - 'title' => 'UpdateCasterResourceGroup', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'To call this operation to change the resource group to which a production studio belongs, you must have access permissions on the original resource group and the destination resource group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", ], - 'AddCasterVideoResource' => [ - 'summary' => 'Adds an input source to a production studio. The number of input sources is limited by the number of input channels of the production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLivePullToPushList' => [ + 'summary' => 'Fuzzy query for stream pulling and pushing tasks.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106832', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '257040', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'Region ID.', 'type' => 'string', 'default' => 'cn-shanghai', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'Region', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~69338~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance Name column.'."\n", + 'description' => 'Specifies the live center for query. Valid values:'."\n" + .'- ap-southeast-1 (Singapore)'."\n" + .'- ap-southeast-5 (Indonesia)'."\n" + .'- cn-beijing (Beijing)'."\n" + .'- cn-shanghai (Shanghai)', + 'enumValueTitles' => ['cn-shenzhen' => 'Shenzhen', 'cn-qingdao' => 'Qingdao', 'preregion' => 'Pre-release', 'cn-beijing' => 'Beijing', 'cn-shanghai' => 'Shanghai', 'ap-southeast-1' => 'Singapore', 'eu-central-1' => 'Germany-Frankfurt', 'ap-northeast-1' => 'Japan-Tokyo', 'ap-southeast-5' => 'Indonesia', 'me-central-1' => 'Saudi Arabia-Riyadh'], 'type' => 'string', 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', + 'enum' => ['ap-northeast-1', 'ap-southeast-1', 'ap-southeast-5', 'eu-central-1', 'me-central-1', 'cn-beijing', 'cn-shanghai', 'cn-shenzhen', 'cn-qingdao', 'preregion'], + 'example' => 'cn-shanghai', + 'title' => '', ], ], [ - 'name' => 'ResourceName', + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the video source.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'test001', - ], + 'schema' => ['description' => 'Task ID. Fuzzy search based on task ID.'."\n" + .'> The task ID consists of uppercase and lowercase letters, digits, underscores, and hyphens (-), with a maximum of 55 characters.', 'type' => 'string', 'required' => false, 'example' => '861009', 'title' => ''], ], [ - 'name' => 'LocationId', + 'name' => 'TaskName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID that is used to identify the position of the video source.'."\n" - ."\n" - .'Define the reference numbers in the layout. Each reference number is associated with only one resource. The value of this parameter must be in the RV\\[Number] format, where Number is `01 to 99`.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'RV01', - ], + 'schema' => ['description' => 'Task name. Fuzzy search based on task name.', 'type' => 'string', 'required' => false, 'example' => 'task', 'title' => ''], ], [ - 'name' => 'LiveStreamUrl', + 'name' => 'DstUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming URL.'."\n" - ."\n" - .'**'."\n" - ."\n" - .'**Important** This parameter is required if the video source is a live stream.'."\n" - ."\n" - .'> Do not specify this parameter in the request if the video source is not a live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://guide.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', - ], + 'schema' => ['description' => 'Destination push stream URL. Fuzzy search based on destination push stream URL.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://qd', 'title' => ''], ], [ - 'name' => 'MaterialId', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the material from the media library.'."\n" - ."\n" - .'**'."\n" - ."\n" - .'**Important** This parameter takes effect and is required only if the video source is a material.'."\n" - ."\n" - .'If you query the configurations of the production studio by calling the [DescribeCasterConfig](~~60259~~) operation, obtain the value of the response parameter UrgentMaterialId.'."\n" - ."\n" - .'> The value of the UrgentMaterialId parameter is the ID of the material from the media library.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'f080575eb5f4427684fc0715159a****', - ], + 'schema' => ['description' => 'Page number.'."\n" + .'> The value of this parameter must be greater than 0 and cannot exceed the maximum value of Integer data type. Default value: 1.', 'type' => 'integer', 'format' => 'int32', 'default' => '1', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'VodUrl', + 'name' => 'PageSize', 'in' => 'query', + 'schema' => ['description' => 'Number of records displayed per page.'."\n" + .'> Default value: 10. Value range: [1, 100].', 'type' => 'integer', 'format' => 'int32', 'maximum' => '100', 'minimum' => '1', 'default' => '10', 'required' => false, 'example' => '10', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The URL of the VOD file.'."\n" - ."\n" - .'**'."\n" - ."\n" - .'**Important** This parameter takes effect only if the video source is a file that is not from the media library.'."\n" - ."\n" - .'> The VOD file must be in the MP4, FLV, or TS format.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://learn.aliyundoc.com/AppName/StreamName.flv', + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'Request ID.', 'type' => 'string', 'example' => 'a05e6b15-15af-405b-a4a2-0152245*****'], + 'Total' => ['description' => 'Total number of query results.', 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], + 'PageNumber' => ['description' => 'Page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'Number of query records per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'TaskList' => [ + 'description' => 'Task information list.', + 'type' => 'array', + 'items' => [ + 'description' => 'Task information list.', + 'type' => 'object', + 'properties' => [ + 'TaskId' => ['description' => 'Task ID.', 'type' => 'string', 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', 'title' => ''], + 'TaskStatus' => ['description' => 'Current task status:'."\n" + .'- 0: Not started (start time has not been reached).'."\n" + .'- 1: Running normally (stream pulling and pushing are normal).'."\n" + .'- 2: Running abnormally.'."\n" + .'- 3: Stopped (stream pulling or pushing is abnormal, or the task was actively stopped by calling the API).'."\n" + .'- -1: Exited.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'TaskInvalidReason' => ['description' => 'Reason for task stopping:'."\n" + ."\n" + .'- PullStreamFailed: Source stream pulling exception, retrying.'."\n" + .'- PushStreamFailed: Destination stream pushing exception, retrying.'."\n" + .'- UnknownError: Unknown exception.'."\n" + ."\n" + .'> Only returned when the task is in stopped state.', 'type' => 'string', 'example' => 'PullStreamFailed', 'title' => ''], + 'TaskExitTime' => ['description' => 'Task exit time, Unix timestamp in seconds.'."\n" + .'> Only returned when the task is in exited state.', 'type' => 'integer', 'format' => 'int32', 'example' => '1726354625', 'title' => ''], + 'TaskExitReason' => ['description' => 'Task exit reason:'."\n" + ."\n" + .'- TriggerByUser: Actively ended by user.'."\n" + .'- OverEndTime: Exceeded the preset end time.'."\n" + ."\n" + .'> Only returned when the task is in exited state.', 'type' => 'string', 'example' => 'TriggerByUser', 'title' => ''], + 'CurrentOffset' => ['description' => 'Currently effective video playback offset.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'CurrentFileIndex' => ['description' => 'Currently effective playlist sequence offset.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'TaskInfo' => [ + 'description' => 'Task information.', + 'type' => 'object', + 'properties' => [ + 'TaskId' => ['description' => 'Task ID.', 'type' => 'string', 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', 'title' => ''], + 'TaskName' => ['description' => 'Task name.', 'type' => 'string', 'example' => 'taskname', 'title' => ''], + 'StartTime' => ['description' => 'Task start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC time).', 'type' => 'string', 'example' => '2024-12-04T09:16:00Z', 'title' => ''], + 'EndTime' => ['description' => 'Task end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC time).', 'type' => 'string', 'example' => '2024-12-30T14:30:00Z', 'title' => ''], + 'SourceType' => ['description' => 'Source stream type. Valid values:'."\n" + ."\n" + .'- live: Live stream.'."\n" + .'- vod: Alibaba Cloud Video on Demand resource.'."\n" + .'- url: Third-party video file resource.', 'type' => 'string', 'example' => 'vod', 'title' => ''], + 'SourceProtocol' => ['description' => 'Source stream protocol name.', 'type' => 'string', 'example' => 'flv', 'title' => ''], + 'SourceUrls' => [ + 'description' => 'Source stream URL addresses.', + 'type' => 'array', + 'items' => ['description' => 'Source stream URL address.', 'type' => 'string', 'example' => 'rtmp://118.178.***.*5:****/wwtestlive1/pulltest.jiugong.aliyunlive.com_livelight2?vhost=pulltest.jiugong.aliyun*******', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'DstUrl' => ['description' => 'Destination push stream URL.', 'type' => 'string', 'example' => 'rtmp://qd.push.lgg.alivecdn.com/testhsc/streamhsc?live_rtmp_*******', 'title' => ''], + 'CallbackURL' => ['description' => 'HTTP callback URL.', 'type' => 'string', 'example' => 'hahaha.com', 'title' => ''], + 'Offset' => ['description' => 'Start offset, the starting offset value of the video file. Unit: seconds. Value: greater than 0.'."\n" + .'> - Indicates the position to start reading from, relative to the first frame.'."\n" + .'> - Only valid for VOD resources or video files.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'FileIndex' => ['description' => 'File index, starts playback from the nth file.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'RetryCount' => ['description' => 'Number of retries.', 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], + 'RetryInterval' => ['description' => 'Retry interval, in seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '60', 'title' => ''], + 'RepeatNumber' => ['description' => 'Number of times to repeat playback after completion. Valid values:'."\n" + .'- 0 (default): No repeat playback.'."\n" + .'- -1: Loop indefinitely.'."\n" + .'- Other positive integers: Number of times to repeat playback after completion.'."\n" + ."\n" + .'> This parameter only applies to VOD or third-party video streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => 'Your account does not open Live service yet', 'description' => 'Your account has not yet activated ApsaraVideo Live.'], + ['errorCode' => 'CodeInvalidAliUid', 'errorMessage' => 'This aliuid does not have a live domain name.', 'description' => 'This aluid does not have a live domain name.'], + ['errorCode' => 'CodeTaskNotExist', 'errorMessage' => 'Task does not exist.', 'description' => 'The task does not exist.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"a05e6b15-15af-405b-a4a2-0152245*****\\",\\n \\"Total\\": 3,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TaskList\\": [\\n {\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\",\\n \\"TaskStatus\\": 0,\\n \\"TaskInvalidReason\\": \\"PullStreamFailed\\",\\n \\"TaskExitTime\\": 1726354625,\\n \\"TaskExitReason\\": \\"TriggerByUser\\",\\n \\"CurrentOffset\\": 0,\\n \\"CurrentFileIndex\\": 0,\\n \\"TaskInfo\\": {\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\",\\n \\"TaskName\\": \\"taskname\\",\\n \\"StartTime\\": \\"2024-12-04T09:16:00Z\\",\\n \\"EndTime\\": \\"2024-12-30T14:30:00Z\\",\\n \\"SourceType\\": \\"vod\\",\\n \\"SourceProtocol\\": \\"flv\\",\\n \\"SourceUrls\\": [\\n \\"rtmp://118.178.***.*5:****/wwtestlive1/pulltest.jiugong.aliyunlive.com_livelight2?vhost=pulltest.jiugong.aliyun*******\\"\\n ],\\n \\"DstUrl\\": \\"rtmp://qd.push.lgg.alivecdn.com/testhsc/streamhsc?live_rtmp_*******\\",\\n \\"CallbackURL\\": \\"hahaha.com\\",\\n \\"Offset\\": 0,\\n \\"FileIndex\\": 0,\\n \\"RetryCount\\": 3,\\n \\"RetryInterval\\": 60,\\n \\"RepeatNumber\\": 0\\n }\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'Fuzzy Query for Pull-to-Push Tasks', + 'description' => '- Call this API to query the list of stream pulling and pushing tasks.'."\n" + .'- Supports paginated query of the task list, and supports fuzzy search by task ID, task name, and destination push stream URL.'."\n" + ."\n" + .'## QPS Limit'."\n" + .'The single-user QPS limit for this API is 10 calls per second. Exceeding the limit will result in API throttling, which may affect your business. Please call this API appropriately.', + 'changeSet' => [ + ['createdAt' => '2025-04-27T08:03:58.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2025-04-01T03:46:19.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLivePullToPushList'], + ], + ], + 'ramActions' => [ [ - 'name' => 'BeginOffset', - 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the position where the system starts to read the video source. Unit: milliseconds.'."\n" - ."\n" - .'**'."\n" - ."\n" - .'**Important** This parameter takes effect only if the video source is a file.'."\n" - ."\n" - .'> A value greater than **0** specifies an offset from the first frame.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1000', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePullToPushList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + ], + 'DescribeLivePushProxyLog' => [ + 'summary' => 'Retrieves the download URLs of offline logs for live stream relay by calling DescribeLivePushProxyLog.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'EndOffset', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATURElive066BXV'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the position where the system stops reading the video source. Unit: milliseconds.'."\n" - ."\n" - .'**'."\n" - ."\n" - .'**Important** This parameter takes effect only if the video source is a file.'."\n" - ."\n" - .'* A value greater than **0** specifies an offset from the first frame.'."\n" - .'* A value less than **0** specifies an offset from the last frame.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10000', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'RepeatNum', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of playbacks after the first playback is complete. Valid values:'."\n" - ."\n" - .'**'."\n" - ."\n" - .'**Important** This parameter takes effect only if the video source is a file.'."\n" - ."\n" - .'* **0**: specifies that the video source is played only once. This is the default value.'."\n" - .'* **-1**: specifies that the video source is played in loop mode.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '60', - 'minimum' => '-1', - 'example' => '0', - ], + 'schema' => ['description' => 'The ingest domain. Multi-domain queries are not supported.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'PtsCallbackInterval', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The interval between presentation timestamp (PTS) callbacks. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'minimum' => '0', - 'example' => '2000', - ], + 'schema' => ['description' => 'The page size. Valid values: \\[1, 1000\\]. Default value: 300.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'default' => '300', 'example' => '300', 'title' => ''], ], [ - 'name' => 'FixedDelayDuration', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The fixed delay of the video layer. This parameter is used to synchronize the video with subtitles. Unit: milliseconds. Default value: 0. Valid values: `0 to 5000`.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'The page number. Default value: 1. Valid values: [1, 9223372036854775807].', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'default' => '1', 'example' => '2', 'title' => ''], ], [ - 'name' => 'ImageId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'ID of the media library image material. '."\n" - .'>This parameter is only available and must be provided when the video source type is an image.', - 'type' => 'string', - 'required' => false, - 'example' => 'a089175eb5f4427684fc0715159a****', - ], + 'schema' => ['description' => 'The beginning of the time range to query logs.'."\n" + ."\n" + .'Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2023-09-20T08:00:00Z', 'title' => ''], ], [ - 'name' => 'ImageUrl', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'Image material URL. '."\n" - .'>This parameter is available only when the video source type is an image and the image file has not been imported into the material library. Supports uploading images in jpg, png formats, with a maximum file size of 10MB.', - 'type' => 'string', - 'required' => false, - 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', - ], + 'schema' => ['description' => 'The end of the time range to query logs.'."\n" + ."\n" + .'Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2023-09-20T09:00:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', - ], - 'ResourceId' => [ - 'description' => 'The ID of the resource. This parameter can be used as a request parameter in the API operation that you can call to delete the video source in the production studio or modify the video source in the production studio.'."\n", - 'type' => 'string', - 'example' => 'e5542d98-b08c-46bf-83e9-5b09d08c****', + 'DomainLogDetails' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DomainLogDetail' => [ + 'description' => 'The data that consists of DomainLogDetail entries.', + 'type' => 'array', + 'items' => [ + 'description' => 'The data that consists of DomainLogDetail entries.', + 'type' => 'object', + 'properties' => [ + 'LogCount' => ['description' => 'The total number of entries returned on the current page.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + 'LogInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LogInfoDetail' => [ + 'description' => 'The data that consists of LogInfoDetail entries.', + 'type' => 'array', + 'items' => [ + 'description' => 'The data that consists of LogInfoDetail entries.', + 'type' => 'object', + 'properties' => [ + 'EndTime' => ['description' => 'The end time.'."\n" + ."\n" + .'The value is a UNIX timestamp.', 'type' => 'string', 'example' => '1695189600', 'title' => ''], + 'LogName' => ['description' => 'The log name.', 'type' => 'string', 'example' => 'example.com'."\n" + .'_2023_09_20_160000_170000.****.gz', 'title' => ''], + 'LogPath' => ['description' => 'The log path.', 'type' => 'string', 'example' => '****.aliyuncs.com/push_proxy/****/example.com/2023_09_20/1600/example.com'."\n" + .'_2023_09_20_160000_170000.****.gz', 'title' => ''], + 'LogSize' => ['description' => 'The log size.', 'type' => 'integer', 'format' => 'int64', 'example' => '512', 'title' => ''], + 'StartTime' => ['description' => 'The start time.'."\n" + ."\n" + .'The value is a UNIX timestamp.', 'type' => 'string', 'example' => '1695193200', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'PageInfos' => [ + 'description' => 'The data that consists of PageInfoDetail entries.', + 'type' => 'object', + 'properties' => [ + 'PageIndex' => ['description' => 'The page number of the returned data.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The page size.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + 'Total' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'DomainName' => ['description' => 'The ingest domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidLiveStreamUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidMaterialId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVodUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ResourceNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'DuplicateLocationID', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'UnexpectedLocationID', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'Invalid Parameter', 'errorMessage' => 'The specified Invalid Parameter', 'description' => ''], + ['errorCode' => 'Internal Error', 'errorMessage' => 'Internal Error contact admin', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"ResourceId\\": \\"e5542d98-b08c-46bf-83e9-5b09d08c****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\tCF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n\\te5542d98-b08c-46bf-83e9-5b09d08c****\\n\\t","errorExample":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"ResourceId\\": \\"e5542d98-b08c-46bf-83e9-5b09d08c692f\\"\\n}"}]', - 'title' => 'AddCasterVideoResource', - 'description' => '##'."\n" - ."\n" - .'Create a production studio, and then call this operation to add a video source to the production studio. The number of video sources is limited by the number of input channels of the production studio. For information about how to create a production studio by calling an API operation, see [CreateCaster](~~69338~~).'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainLogDetails\\": {\\n \\"DomainLogDetail\\": [\\n {\\n \\"LogCount\\": 10,\\n \\"LogInfos\\": {\\n \\"LogInfoDetail\\": [\\n {\\n \\"EndTime\\": \\"1695189600\\",\\n \\"LogName\\": \\"example.com\\\\n_2023_09_20_160000_170000.****.gz\\",\\n \\"LogPath\\": \\"****.aliyuncs.com/push_proxy/****/example.com/2023_09_20/1600/example.com\\\\n_2023_09_20_160000_170000.****.gz\\",\\n \\"LogSize\\": 512,\\n \\"StartTime\\": \\"1695193200\\"\\n }\\n ]\\n },\\n \\"PageInfos\\": {\\n \\"PageIndex\\": 1,\\n \\"PageSize\\": 20,\\n \\"Total\\": 20\\n }\\n }\\n ]\\n },\\n \\"DomainName\\": \\"example.com\\",\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","type":"json"}]', + 'title' => 'Query download uRLs of offline relay logs', + 'description' => '- Data time granularity: 1 hour.'."\n" + .'- Maximum query range: data from the last 31 days.'."\n" + .'- If you do not specify StartTime or EndTime, this operation reads data from the last 24 hours by default. If you specify StartTime and EndTime, data is queried based on the specified time range.'."\n" ."\n" .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - 'requestParamsDescription' => '> The type of the video source can be indicated by the URL.'."\n", - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - 'translator' => 'machine', - ], - 'DeleteCasterVideoResource' => [ - 'summary' => 'Removes an input source from a production studio.', - 'methods' => [ - 'post', - 'get', + .'The QPS limit for a single user on this operation is 100 calls per second. If the limit is exceeded, API invocations are throttled, which may affect your business. Invoke this operation as needed.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLivePushProxyLog'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePushProxyLog', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLivePushProxyUsageData' => [ + 'summary' => 'Queries the usage data of live center relay by calling DescribeLivePushProxyUsageData.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'Region', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~69338~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The live center to query. You can specify multiple regions separated by commas (,). Valid values:'."\n" + .'- cn-beijing: Beijing'."\n" + .'- cn-shanghai: Shanghai'."\n" + .'- cn-shenzhen: Shenzhen'."\n" + .'- cn-qingdao: Qingdao'."\n" + .'- ap-southeast-1: Singapore'."\n" + .'- eu-central-1: Germany'."\n" + .'- ap-northeast-1: Tokyo'."\n" + .'- ap-southeast-5: Jakarta'."\n" + ."\n" + .'If this parameter is left empty, the aggregated data of all regions is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'cn-beijing', 'title' => ''], ], [ - 'name' => 'ResourceId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The resource ID. If the input source was added by calling the AddCasterVideoResource operation, check the value of the response parameter ResourceId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', - ], + 'schema' => ['description' => 'The ingest domain name of the streamer to query.'."\n" + .'- You can specify a single domain name or multiple domain names separated by commas (,).'."\n" + .'- If this parameter is left empty, the aggregated data of all live streaming domain names is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC. By default, data from the last seven days is returned.', 'type' => 'string', 'required' => false, 'example' => '2022-10-10T20:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2022-10-10T21:00:00Z', 'title' => ''], + ], + [ + 'name' => 'SplitBy', + 'in' => 'query', + 'schema' => ['description' => 'The grouping key. If this parameter is left empty, the default value is region, and the aggregated data is returned. You can specify multiple values separated by commas (,). Valid values:'."\n" + .'- domain: the domain name. If SplitBy is set to domain, the Domain field in the response takes effect.'."\n" + .'- region (default): the live center region. If SplitBy is set to region, the Region field in the response takes effect.', 'type' => 'string', 'required' => false, 'default' => 'region', 'example' => 'region', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122C*******', + 'EndTime' => ['description' => 'The end time. The time is in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is in UTC.', 'type' => 'string', 'example' => '2022-10-10T21:00:00Z', 'title' => ''], + 'PushProxyData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PushProxyDataItem' => [ + 'description' => 'The live center relay usage data.', + 'type' => 'array', + 'items' => [ + 'description' => 'The live center relay usage data.', + 'type' => 'object', + 'properties' => [ + 'DomainName' => ['description' => 'The domain name for usage. This field is returned when SplitBy is set to domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Region' => ['description' => 'The live center. This field is returned when SplitBy is set to region.', 'type' => 'string', 'example' => 'cn-beijing', 'title' => ''], + 'StreamCount' => ['description' => 'The peak number of concurrent relay streams in the live center. Unit: streams.', 'type' => 'integer', 'format' => 'int64', 'example' => '8', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is in UTC.', 'type' => 'string', 'example' => '2022-10-10T20:00:00Z', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is in UTC.', 'type' => 'string', 'example' => '2022-10-10T20:00:00Z', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified StartTime or EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidTime.ValueNotSupported', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'The specified time is invalid.'], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2022-10-10T21:00:00Z\\",\\n \\"PushProxyData\\": {\\n \\"PushProxyDataItem\\": [\\n {\\n \\"DomainName\\": \\"example.com\\",\\n \\"Region\\": \\"cn-beijing\\",\\n \\"StreamCount\\": 8,\\n \\"TimeStamp\\": \\"2022-10-10T20:00:00Z\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-910811DEBFEB\\",\\n \\"StartTime\\": \\"2022-10-10T20:00:00Z\\"\\n}","type":"json"}]', + 'title' => 'Query live center relay usage data', + 'description' => '- Queries the usage data of live center relay.'."\n" + .'- Maximum query span: 31 days.'."\n" + .'- Minimum query granularity: 1 day.'."\n" + .'- Maximum query range: data from the last 90 days.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 5 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePushProxyUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122C*******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\tCF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n\\t","errorExample":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}"}]', - 'title' => 'DeleteCasterVideoResource', - 'description' => 'Before you call this operation to remove an input source from a production studio, make sure that you have called the [CreateCaster](~~69338~~) operation to create the production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'ModifyCasterVideoResource' => [ - 'summary' => 'Changes the video source for a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveRealtimeDeliveryAcc' => [ + 'summary' => 'Invokes DescribeLiveRealtimeDeliveryAcc to query the number of real-time log delivery attempts.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'If you create a production studio through the [CreateCaster](~~69338#doc-api-live-CreateCaster~~ "Creates a production studio.") interface, check the value of the CasterId parameter in the response.'."\n" - ."\n" - .'If you create a production studio through the ApsaraVideo Live Console, log in to the console, then check the ID of the production studio through the following path:'."\n" - ."\n" - .'Production Studios > Production Studio Management'."\n" - ."\n" - .'> The CasterId is reflected in the Name column on the Production Studio Management page.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - ], - [ - 'name' => 'ResourceId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the video resource. It is reflected in the ResourceId parameter when you call the [AddCasterVideoResource](~~60250#doc-api-live-AddCasterVideoResource~~ "Adds a video resource to a production studio.") operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', - ], - ], - [ - 'name' => 'ResourceName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the video resource.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'test001', - ], - ], - [ - 'name' => 'LiveStreamUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the live stream.'."\n" - ."\n" - .'This parameter takes effect and is required only when the video resource is a live stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://guide.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', - ], - ], - [ - 'name' => 'MaterialId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the material.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'f080575eb5f4427684fc0715159a****', - ], - ], - [ - 'name' => 'VodUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the video-on-demand (VOD) file. This parameter takes effect only when the video resource is a video file that is not from the media library.'."\n" - ."\n" - .'> The VOD file must be in the MP4, FLV, or TS format.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://developer.aliyundoc.com/AppName/StreamName.flv', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'BeginOffset', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the position where the system starts to read the video resource.'."\n" - ."\n" - .'This parameter takes effect only when the video resource is a video file. Unit: milliseconds.'."\n" - ."\n" - .'> A value greater than 0 indicates an offset from the first frame.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'required' => false, 'example' => '2015-12-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'EndOffset', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'This parameter takes effect only when the video resource is a video file. Unit: milliseconds.'."\n" - ."\n" - .'* A value greater than **0** indicates an offset from the first frame.'."\n" - .'* A value smaller than **0** indicates an offset from the last frame.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10000', - ], + 'schema' => ['description' => 'The end time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + ."\n" + .'The end time must be later than the start time. The interval between the start time and end time cannot exceed one year.', 'type' => 'string', 'required' => false, 'example' => '2015-12-10T21:05:00Z', 'title' => ''], ], [ - 'name' => 'RepeatNum', + 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of playback times after the first playback is complete. This parameter takes effect only when the video resource is a file. Valid values:'."\n" - ."\n" - .'* **0**: indicates that the video is played only once. This is the default value.'."\n" - .'* **-1**: indicates that the video is played in loop mode.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '60', - 'minimum' => '-1', - 'example' => '0', - ], + 'schema' => ['description' => 'The time granularity of the queried data. Unit: seconds. Valid values:'."\n" + ."\n" + .'- **300**'."\n" + .'- **3600**'."\n" + .'- **86400**'."\n" + ."\n" + .'If this parameter is not specified or the specified value is not supported, the default value is 300 seconds when the time span does not exceed 3 days, 3600 seconds when the time span exceeds 3 days, and 86400 seconds when the time span exceeds 30 days.', 'type' => 'string', 'required' => false, 'example' => '3600', 'title' => ''], ], [ - 'name' => 'PtsCallbackInterval', + 'name' => 'Project', 'in' => 'query', - 'schema' => [ - 'description' => 'The interval between presentation timestamp (PTS) callbacks. Unit: milliseconds. This parameter takes effect only when the video resource is a VOD file.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'minimum' => '0', - 'example' => '2000', - ], + 'schema' => ['description' => 'The Project for real-time log delivery. If this parameter is not specified, the merged data of all Projects is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'project_example', 'title' => ''], ], [ - 'name' => 'ImageId', + 'name' => 'LogStore', 'in' => 'query', - 'schema' => [ - 'description' => 'ID of the media library image material.'."\n" - .'> This parameter is only available and must be provided when the video source type is an image.', - 'type' => 'string', - 'required' => false, - 'example' => 'a089175eb5f4427684fc0715159a****', - ], + 'schema' => ['description' => 'The Logstore for real-time log delivery. If this parameter is not specified, the merged data of all Logstores is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'logstore_example', 'title' => ''], ], [ - 'name' => 'ImageUrl', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'Image material URL. '."\n" - .'>This parameter is only available when the video source type is an image and the image file has not been imported into the material library. Supports uploading images in jpg, png formats, with a maximum file size of 10MB.', - 'type' => 'string', - 'required' => false, - 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', - ], + 'schema' => ['description' => 'The streaming domain.'."\n" + .'- You can specify a single domain name or multiple domain names. Separate multiple domain names with commas (,).'."\n" + .'- If this parameter is not specified, the merged data of all live streaming domain names is returned by default.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -34185,103 +27161,87 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. This parameter is used in the requests of the following operations: DescribeCasterVideoResources, AddCasterLayout, and DescribeCasterLayouts.'."\n", - 'type' => 'string', - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', - ], - 'ResourceId' => [ - 'description' => 'The ID of the resource.'."\n", - 'type' => 'string', - 'example' => '98461064-1c94-4dc1-85ce-94098764****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '684306D2-2511-4977-991D-CE97E91FD7C0', 'title' => ''], + 'RealTimeDeliveryAccData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AccData' => [ + 'description' => 'The real-time log delivery count information.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2015-12-10T20:00:00Z', 'title' => ''], + 'FailedNum' => ['description' => 'The number of failed real-time log delivery attempts.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'SuccessNum' => ['description' => 'The number of successful real-time log delivery attempts.', 'type' => 'integer', 'format' => 'int32', 'example' => '321321', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidResourceId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLiveStreamUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidMaterialId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVodUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"ResourceId\\": \\"98461064-1c94-4dc1-85ce-94098764****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\tCF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n LIVEPRODUCER_POST-cn-0pp1czt****\\n 98461064-1c94-4dc1-85ce-94098764****\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}"}]', - 'title' => 'ModifyCasterVideoResource', - 'description' => '## Usage notes'."\n" - ."\n" - .'You must call the [CreateCaster](~~69338~~) operation to create a production studio before you call this operation to modify input sources of the production studio.'."\n" - ."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"684306D2-2511-4977-991D-CE97E91FD7C0\\",\\n \\"RealTimeDeliveryAccData\\": {\\n \\"AccData\\": [\\n {\\n \\"TimeStamp\\": \\"2015-12-10T20:00:00Z\\",\\n \\"FailedNum\\": 0,\\n \\"SuccessNum\\": 321321\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query real-time log delivery count', + 'description' => '- Queries statistics on real-time log delivery attempts, including the number of successful and failed log delivery attempts.'."\n" + .'- Supports queries by UID dimension.'."\n" + .'- The billable count includes both successful and failed log delivery attempts.'."\n" + ."\n\n" .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", + .'The single-user QPS limit for this API is 100 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Invoke this API appropriately.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - 'translator' => 'machine', - ], - 'DescribeCasterVideoResources' => [ - 'summary' => 'Queries the input sources of a production studio.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '### Special error codes'."\n" + .'|Error code|Description|HTTP status code|Meaning|'."\n" + .'|--------|--------|--------|--------|'."\n" + .'|InvalidStartTime.ValueNotSupported|The specified value of parameter StartTime is not supported.|400|The difference between EndTime and StartTime exceeds 90 days.|'."\n" + .'|InvalidEndTime.Mismatch|Specified EndTime does not math the specified StartTime.|400|EndTime is earlier than StartTime.|.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveRealtimeDeliveryAcc'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRealtimeDeliveryAcc', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveRealtimeLogAuthorized' => [ + 'summary' => 'Queries the authorization status for real-time log delivery.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -34292,34 +27252,18 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'LiveOpenapiReserve', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'This parameter is not used.', 'type' => 'string', 'required' => false, 'example' => '无', 'title' => ''], ], ], 'responses' => [ @@ -34327,373 +27271,101 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', - ], - 'Total' => [ - 'description' => 'The total number of returned entries.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'VideoResources' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'VideoResource' => [ - 'description' => 'The input sources.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the input source.'."\n", - 'type' => 'object', - 'properties' => [ - 'BeginOffset' => [ - 'description' => 'The offset of the position where the system starts to read the video resource. This parameter takes effect only if the input source is a video file. Unit: milliseconds.'."\n" - ."\n" - .'A value **greater than 0** indicates an offset from the first frame.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1000', - ], - 'EndOffset' => [ - 'description' => 'The offset of the position where the system stops reading the video file. This parameter takes effect only if the input source is a video file. Unit: milliseconds.'."\n" - ."\n" - .'* A value greater than **0** indicates an offset from the first frame.'."\n" - .'* A value smaller than **0** indicates an offset from the last frame.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10000', - ], - 'FlvUrl' => [ - 'description' => 'The source URL.'."\n", - 'type' => 'string', - 'example' => 'http://guide.aliyundoc.com/example.org', - ], - 'ImageId' => [ - 'description' => 'The image ID.'."\n", - 'type' => 'string', - 'example' => 'a089175eb5f4427684fc0715159a****', - ], - 'ImageUrl' => [ - 'description' => 'The image URL.'."\n", - 'type' => 'string', - 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', - ], - 'LiveStreamUrl' => [ - 'description' => 'The URL of the live stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://abcLive/appName/b5447c21fcfe444c9e9b6f7ba208****', - ], - 'LocationId' => [ - 'description' => 'The position of the video resource.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - 'MaterialId' => [ - 'description' => 'The material ID.'."\n", - 'type' => 'string', - 'example' => 'd2c429cd907742ee8f6e76465ad3****', - ], - 'PtsCallbackInterval' => [ - 'description' => 'The interval between presentation timestamp (PTS) callbacks. If you set the value to 0, the PTS callback is disabled. This parameter is returned only when the video resource is a video-on-demand (VOD) file.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'RepeatNum' => [ - 'description' => 'The number of playback times after the first playback is complete. This parameter takes effect only when the input source is a video file. Valid values:'."\n" - ."\n" - .'* **0** (default): The video file is played only once.'."\n" - .'* **-1**: The video file is played in loop mode.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'ResourceId' => [ - 'description' => 'The resource ID.'."\n", - 'type' => 'string', - 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', - ], - 'ResourceName' => [ - 'description' => 'The resource name.'."\n", - 'type' => 'string', - 'example' => 'resource-Name1', - ], - 'VodUrl' => [ - 'description' => 'The URL of the VOD file.'."\n" - ."\n" - .'This parameter is returned only when the video resource is an MP4, FLV, or TS file that is not from the media library.'."\n", - 'type' => 'string', - 'example' => 'http://developer.aliyundoc.com/caster1.flv', - ], - ], - ], - ], - ], - ], + 'AuthorizedStatus' => ['description' => 'The authorization status. Valid values:'."\n" + ."\n" + .'**true****false**', 'type' => 'string', 'example' => 'true', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b******'."\n", 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + 'errorCodes' => [], + 'title' => 'DescribeLiveRealtimeLogAuthorized', + 'description' => 'You can call this operation to query the authorization status for real-time log delivery.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 100 calls per second per user. If you exceed this limit, throttling is triggered, which may affect your business. Plan your API calls accordingly. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveRealtimeLogAuthorized'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRealtimeLogAuthorized', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"Total\\": 2,\\n \\"VideoResources\\": {\\n \\"VideoResource\\": [\\n {\\n \\"BeginOffset\\": 1000,\\n \\"EndOffset\\": 10000,\\n \\"FlvUrl\\": \\"http://guide.aliyundoc.com/example.org\\",\\n \\"ImageId\\": \\"a089175eb5f4427684fc0715159a****\\",\\n \\"ImageUrl\\": \\"http://learn.aliyundoc.com/AppName/image.jpg\\",\\n \\"LiveStreamUrl\\": \\"rtmp://abcLive/appName/b5447c21fcfe444c9e9b6f7ba208****\\",\\n \\"LocationId\\": \\"RV01\\",\\n \\"MaterialId\\": \\"d2c429cd907742ee8f6e76465ad3****\\",\\n \\"PtsCallbackInterval\\": 0,\\n \\"RepeatNum\\": 0,\\n \\"ResourceId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e86****\\",\\n \\"ResourceName\\": \\"resource-Name1\\",\\n \\"VodUrl\\": \\"http://developer.aliyundoc.com/caster1.flv\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\nCF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n2\\n\\n \\n 10000\\n 1000\\n d2c429cd907742ee8f6e76465ad3****\\n http://guide.aliyundoc.com/example.org\\n b5f8c837-ceeb-424f-b30b-68e94e86****\\n resource-Name1\\n RV01\\n 0\\n rtmp://abcLive/appName/b5447c21fcfe444c9e9b6f7ba208****\\n 0\\n http://developer.aliyundoc.com/caster1.flv\\n \\n\\n","errorExample":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"SceneList\\": [{\\n \\"ResourceId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e864995\\",\\n \\"ResourceName\\": \\"resource-Name1\\",\\n \\"LocationId\\": \\"RV01\\",\\n \\"LiveStreamUrl\\": \\"rtmp://XXXXXX/appName/b5447c21fcfe444c9e9b6f7ba208f141\\",\\n },\\n {\\n \\"ResourceId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e864995\\",\\n \\"MaterialId\\": \\"d2c429cd907742ee8f6e76465ad3c784\\",\\n \\"ResourceName\\": \\"resource-Name3\\",\\n \\"LocationId\\": \\"RV02\\",\\n \\"repeatNum\\": 2\\n }\\n ]\\n}"}]', - 'title' => 'DescribeCasterVideoResources', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to query the input sources of the production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AuthorizedStatus\\": \\"true\\",\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b******\\\\n\\"\\n}","type":"json"}]', ], - 'AddCasterLayout' => [ - 'summary' => 'Adds a layout for a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveRecordConfig' => [ + 'summary' => 'Queries all APP recording configurations under a live streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The streaming domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'VideoLayer', + 'name' => 'AppName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'Video layout.', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'FillMode' => [ - 'description' => 'The scaling mode of video layer N. Valid values:'."\n" - ."\n" - .'* **none**: The image is not scaled to fill in the specified layout section. Set video layer N based on the image size of the video resource. This is the default value.'."\n" - .'* **fit**: The image is scaled with the original aspect ratio to fill in the specified layout section. Set video layer N based on the section size. The image is centered in the layout section with the long side of the image equaling that of the section. If the aspect ratio of the image is inconsistent with that of the section, the short side of the image may be shorter than that of the section. The area outside the image displays the next video layer or the background if no next video layer exists. By default, the background color is black.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'fit', - ], - 'FixedDelayDuration' => [ - 'description' => 'The fixed delay of video layer N. You can use this parameter to synchronize the video with subtitles. Unit: milliseconds. Valid values: **0 to 5000**. Default value: **0**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5000', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the height of the image of video layer N.'."\n" - ."\n" - .'* If the FillMode parameter of video layer N is set to none, the width of the video image is scaled based on this parameter. The default value is **0**, which indicates that the video image is displayed in the original size.'."\n" - .'* If the FillMode parameter of video layer N is set to fit, you must set this parameter to a value greater than **0**. In this case, the video image is scaled with the original aspect ratio to fill in the specified layout section based on this parameter.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '1', - ], - 'PositionNormalized' => [ - 'description' => 'The normalized value of the `[x,y]` coordinates of video layer N in the production studio. The default coordinates are `[0,0]`.'."\n" - ."\n" - .'> The coordinates indicate the location of video layer N in the production studio. Set this parameter to the normalized value of the coordinates.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'description' => 'value.', - 'example' => '0', - ], - 'required' => false, - 'example' => '0.3', - 'maxItems' => 2, - ], - 'PositionRefer' => [ - 'description' => 'The reference coordinates of video layer N in the production studio. Valid values:'."\n" - ."\n" - .'* **topLeft**: the upper-left corner. This is the default value.'."\n" - .'* **topRight**: the upper-right corner.'."\n" - .'* **bottomLeft**: the lower-left corner.'."\n" - .'* **bottomRight**: the lower-right corner.'."\n" - .'* **center**: the center position.'."\n" - .'* **topCenter**: the upper center position.'."\n" - .'* **bottomCenter**: the lower center position.'."\n" - .'* **leftCenter**: the left center position.'."\n" - .'* **rightCenter**: the right center position.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'topLeft', - ], - 'WidthNormalized' => [ - 'description' => 'The normalized value of the width of the image of video layer N.'."\n" - ."\n" - .'* If the FillMode parameter of video layer N is set to none, the height of the video image is scaled based on this parameter. The default value is **0**, which indicates that the video image is displayed in the original size.'."\n" - .'* If the FillMode parameter of video layer N is set to fit, you must set this parameter to a value greater than **0**. In this case, the video image is scaled with the original aspect ratio to fill in the specified layout section based on this parameter.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '1', - ], - ], - 'required' => false, - 'description' => 'Video layout.', - ], - 'required' => true, - 'maxItems' => 12, - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'AudioLayer', + 'name' => 'StreamName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'Audio layout.', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'FixedDelayDuration' => [ - 'description' => 'The fixed delay of audio layer N. You can use this parameter to synchronize the audio with subtitles. Unit: milliseconds. Valid values: **0 to 5000**. Default value: **0**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5000', - ], - 'ValidChannel' => [ - 'description' => 'The valid voice channels of audio layer N. Valid values:'."\n" - ."\n" - .'* **leftChannel**: the left channel.'."\n" - .'* **rightChannel**: the right channel.'."\n" - .'* **all**: both the left and right channels. This is the default value.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'all', - ], - 'VolumeRate' => [ - 'description' => 'The multiples of the original volume at which audio layer N plays audio streams. Valid values: **0 to 10.0**.'."\n" - ."\n" - .'* The default value **1.0** indicates that audio layer N plays audio streams at the original volume.'."\n" - .'* A value smaller than **1.0** indicates that audio layer N plays audio streams at a lower volume than the original one.'."\n" - .'* A value greater than **1.0** indicates that audio layer N plays audio streams at a higher volume than the original one.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '1.0', - ], - ], - 'required' => false, - 'description' => 'Audio layout.', - ], - 'required' => true, - 'maxItems' => 12, - ], + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'BlendList', + 'name' => 'PageNum', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The element represents the location ID of the video resource, i.e., LocationId. Refer to [Adding Video Source](~~60250~~) for LocationId, which corresponds in order with the VideoLayers elements.', - 'type' => 'array', - 'items' => [ - 'type' => 'string', - 'required' => false, - 'description' => 'LocationId.'."\n", - 'example' => 'RV01', - ], - 'required' => true, - 'example' => 'RV01', - 'maxItems' => 12, - ], + 'schema' => ['description' => 'The current page number. Default value: **1**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], ], [ - 'name' => 'MixList', + 'name' => 'PageSize', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The element represents the location ID of the audio resource, i.e., LocationId.'."\n" - .'LocationId is referred to in [Adding Video Source](~~60250~~), and corresponds in order with the AudioLayers elements.', - 'type' => 'array', - 'items' => [ - 'type' => 'string', - 'required' => false, - 'description' => 'LocationId.', - 'example' => 'RV01', - ], - 'required' => true, - 'example' => 'RV01', - 'maxItems' => 12, - ], + 'schema' => ['description' => 'The number of entries per page. Default value: **10**. Valid values: **5 to 30**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '5', 'default' => '10', 'example' => '5', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'Order', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'If you create a production studio through the [CreateCaster](~~69338#doc-api-live-CreateCaster~~ "Creates a production studio.") interface, check the value of the CasterId parameter in the response.'."\n" - ."\n" - .'If you create a production studio through the ApsaraVideo Live Console, log in to the console, then check the ID of the production studio through the following path:'."\n" - ."\n" - .'Production Studios > Production Studio Management'."\n" - ."\n" - .'> The CasterId is reflected in the Name column on the Production Studio Management page.'."\n", + 'description' => 'The sorting order by creation time. Valid values:'."\n" + .'- **asc** (default): ascending order.'."\n" + .'- **desc**: descending order.', + 'enumValueTitles' => ['asc' => 'Ascending', 'desc' => 'Descending'], 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', + 'required' => false, + 'default' => 'asc', + 'enum' => ['asc', 'desc'], + 'example' => 'asc', + 'title' => '', ], ], ], @@ -34702,152 +27374,181 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'LayoutId' => [ - 'description' => 'The ID of the layout.'."\n" - ."\n" - .'Record the ID as it can be used to manage the layout being created.'."\n", - 'type' => 'string', - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '5', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5056369B-D337-499E-B8B7-B761BD37B08A', 'title' => ''], + 'Order' => ['description' => 'The sorting order.', 'type' => 'string', 'example' => 'desc', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that meet the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '12', 'title' => ''], + 'LiveAppRecordList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveAppRecord' => [ + 'description' => 'The list of recording configurations.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of recording configurations.', + 'type' => 'object', + 'properties' => [ + 'EndTime' => ['description' => 'The scheduled recording end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2018-11-08T03:49:18Z', 'title' => ''], + 'StartTime' => ['description' => 'The scheduled recording start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2018-11-08T02:49:18Z', 'title' => ''], + 'AppName' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'StreamName' => ['description' => 'The live stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'DelayTime' => ['description' => 'The stream interruption concatenation duration.'."\n" + .'If the live stream interruption duration exceeds the configured concatenation duration, a new file is generated. The stream interruption concatenation duration supports values from 15 to 21600 seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '180', 'title' => ''], + 'CreateTime' => ['description' => 'The creation time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2016-05-20T09:33:38Z', 'title' => ''], + 'OnDemond' => ['description' => 'On-demand recording. Valid values:'."\n" + ."\n" + .'- **0**: disabled.'."\n" + .'- **1**: via HTTP callback.'."\n" + .'- **2**: via stream ingest parameters.'."\n" + .'- **7**: recording is disabled by default. You can use the [RealTimeRecordCommand](~~85907~~) operation to manually start or stop recording.'."\n" + ."\n" + .'>When OnDemand is set to **1**, you must first configure the OnDemandUrl by calling the [AddLiveRecordNotifyConfig](~~51831~~) operation. Otherwise, recording is disabled by default.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'OssBucket' => ['description' => 'The OSS storage bucket name.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'OssEndpoint' => ['description' => 'The OSS storage endpoint.', 'type' => 'string', 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + 'RecordFormatList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RecordFormat' => [ + 'description' => 'The format list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The format list.', + 'type' => 'object', + 'properties' => [ + 'SliceDuration' => ['description' => 'The duration of a single recording slice for the transcoded stream. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '30', 'title' => ''], + 'CycleDuration' => ['description' => 'The cyclic recording duration. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '3600', 'title' => ''], + 'SliceOssObjectPrefix' => ['description' => 'The slice name.', 'type' => 'string', 'example' => 'record/{liveApp****}/{liveStream****}/{UnixTimestamp}', 'title' => ''], + 'OssObjectPrefix' => ['description' => 'The recording file name.', 'type' => 'string', 'example' => 'record/{liveApp****}/{liveStream****}', 'title' => ''], + 'Format' => ['description' => 'The format.', 'type' => 'string', 'example' => 'M3U8', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'TranscodeRecordFormatList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RecordFormat' => [ + 'description' => 'The transcoded stream recording format list.', + 'type' => 'array', + 'items' => [ + 'description' => 'The recording configuration file format list.', + 'type' => 'object', + 'properties' => [ + 'SliceDuration' => ['description' => 'The duration of a single recording slice for the transcoded stream. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '30', 'title' => ''], + 'CycleDuration' => ['description' => 'The cyclic recording duration. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '3600', 'title' => ''], + 'SliceOssObjectPrefix' => ['description' => 'The transcoded stream recording slice name.', 'type' => 'string', 'example' => 'record/{liveApp****}/{liveStream****}/{UnixTimestamp}', 'title' => ''], + 'OssObjectPrefix' => ['description' => 'The transcoded stream recording file name.', 'type' => 'string', 'example' => 'record/{liveApp****}/{liveStream****}', 'title' => ''], + 'Format' => ['description' => 'The transcoded stream recording format.', 'type' => 'string', 'example' => 'M3U8', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'TranscodeTemplates' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Templates' => [ + 'description' => 'The transcoding templates.', + 'type' => 'array', + 'items' => ['description' => 'The transcoding templates for transcoded stream recording. If recording of all transcoded streams is configured, the returned value is ["*"].', 'type' => 'string', 'example' => '["sd","hd"]', 'title' => ''], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVideoLayersAndBlendListSize.Mismatch', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidAudioLayersAndMixListSize.Mismatch', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidBlendList.ExceedNorm', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPositionNormalized.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidHeightOrWidthNormalized', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidMixList.ExceedNorm', - 'errorMessage' => '%s, please check and try again later.', - ], - ], + 'errorCodes' => [], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PageNum\\": 5,\\n \\"RequestId\\": \\"5056369B-D337-499E-B8B7-B761BD37B08A\\",\\n \\"Order\\": \\"desc\\",\\n \\"TotalPage\\": 20,\\n \\"PageSize\\": 10,\\n \\"TotalNum\\": 12,\\n \\"LiveAppRecordList\\": {\\n \\"LiveAppRecord\\": [\\n {\\n \\"EndTime\\": \\"2018-11-08T03:49:18Z\\",\\n \\"StartTime\\": \\"2018-11-08T02:49:18Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"DelayTime\\": 180,\\n \\"CreateTime\\": \\"2016-05-20T09:33:38Z\\",\\n \\"OnDemond\\": 0,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"RecordFormatList\\": {\\n \\"RecordFormat\\": [\\n {\\n \\"SliceDuration\\": 30,\\n \\"CycleDuration\\": 3600,\\n \\"SliceOssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}/{UnixTimestamp}\\",\\n \\"OssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}\\",\\n \\"Format\\": \\"M3U8\\"\\n }\\n ]\\n },\\n \\"TranscodeRecordFormatList\\": {\\n \\"RecordFormat\\": [\\n {\\n \\"SliceDuration\\": 30,\\n \\"CycleDuration\\": 3600,\\n \\"SliceOssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}/{UnixTimestamp}\\",\\n \\"OssObjectPrefix\\": \\"record/{liveApp****}/{liveStream****}\\",\\n \\"Format\\": \\"M3U8\\"\\n }\\n ]\\n },\\n \\"TranscodeTemplates\\": {\\n \\"Templates\\": [\\n \\"[\\\\\\"sd\\\\\\",\\\\\\"hd\\\\\\"]\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query All App Recording Configurations Under a Domain', + 'description' => 'First obtain the streaming domain name, and then call this operation to query all APP recording configurations under the live streaming domain.'."\n" + ."\n\n" + .'## QPS Limit'."\n" + .'The single-user QPS limit for this operation is 100 calls per second. If the limit is exceeded, API calls will be throttled, which may affect your business. Please make calls at a reasonable frequency.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRecordConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t21926b36-7dd2-4fde-ae25-51b5bc8e****\\n\\t","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e52d8\\"\\n}"}]', - 'title' => 'AddCasterLayout', - 'description' => "\n" - .'First, create a director desk and add video resources to the director desk, then call this interface to add the director desk layout. To create a director desk using the API, refer to [Create Director Desk](~~69338~~).'."\n" - .'## QPS Limitation '."\n" - .'The per-user QPS limit for this interface is 10 times/second. Exceeding this limit will result in API calls being throttled, which may impact your business operations. Please use the API reasonably. For more information, see [QPS Limitation](~~343507~~).', - 'requestParamsDescription' => '> The variable N in request parameter names indicates the sequence number of the video or audio layer. For example, the VideoLayer.N.FillMode parameter specifies the scaling mode of video layer N. The VideoLayer.1.FillMode parameter specifies the scaling mode of the first video layer. The VideoLayer.2.FillMode parameter specifies the scaling mode of the second video layer.'."\n", - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'DeleteCasterLayout' => [ - 'summary' => 'Deletes a layout in a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveRecordNotifyConfig' => [ + 'summary' => 'This operation queries the recording callback configuration for a domain name.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~69338~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - ], - [ - 'name' => 'LayoutId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the layout. If the layout was added by calling the [AddCasterLayout](~~60249~~) operation, check the value of the response parameter LayoutId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], + 'schema' => ['description' => 'The streaming domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -34855,425 +27556,251 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can use the ID as a request parameter in the API operation that is used to modify a layout in the production studio, query layouts in the production studio, add a component in the production studio, or query components in the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'LayoutId' => [ - 'description' => 'The ID of the layout. You can use the ID as a request parameter in the API operation that is used to query layouts in the production studio.'."\n", - 'type' => 'string', - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5056369B-D337-499E-B8B7-B761BD37B08A', 'title' => ''], + 'LiveRecordNotifyConfig' => [ + 'description' => 'The recording callback configuration for the domain name.', + 'type' => 'object', + 'properties' => [ + 'NotifyReqAuth' => ['description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" + ."\n" + .'- **yes**: enabled.'."\n" + ."\n" + .'- **no**: disabled.', 'type' => 'boolean', 'example' => 'no', 'title' => ''], + 'NotifyAuthKey' => ['description' => 'The authentication key for the callback.', 'type' => 'string', 'example' => 'KbT8mN2pQ9rS4vX7wZ1aB3cE5fG6hJ8kL', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'NotifyUrl' => ['description' => 'The webhook address for recording callbacks.', 'type' => 'string', 'example' => 'http://learn.aliyundoc.com/examplecallback.action', 'title' => ''], + 'NeedStatusNotify' => ['description' => 'Specifies whether to receive callbacks for the status of recording tasks. Valid values:'."\n" + ."\n" + .'- **true**: Yes.'."\n" + ."\n" + .'- **false** (default): No.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'OnDemandUrl' => ['description' => 'The callback URL for on-demand recording.', 'type' => 'string', 'example' => 'http://guide.aliyundoc.com/ondemandcallback.action', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidLayoutId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidConfig.NotFound', 'errorMessage' => 'Config does not exist.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n 21926b36-7dd2-4fde-ae25-51b5bc8e****\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteCasterLayout', - 'description' => 'You can call the [CreateCaster](~~69338~~) operation to create a production studio and then call this operation to delete a layout in the production studio.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5056369B-D337-499E-B8B7-B761BD37B08A\\",\\n \\"LiveRecordNotifyConfig\\": {\\n \\"NotifyReqAuth\\": true,\\n \\"NotifyAuthKey\\": \\"KbT8mN2pQ9rS4vX7wZ1aB3cE5fG6hJ8kL\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"NotifyUrl\\": \\"http://learn.aliyundoc.com/examplecallback.action\\",\\n \\"NeedStatusNotify\\": false,\\n \\"OnDemandUrl\\": \\"http://guide.aliyundoc.com/ondemandcallback.action\\"\\n }\\n}","type":"json"}]', + 'title' => 'DescribeLiveRecordNotifyConfig', + 'description' => 'You can call this operation to query the recording callback configuration for a streaming domain name.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'This operation supports up to 50 queries per second (QPS) per user. If you exceed this limit, your API calls are throttled. Throttling may affect your business operations, so make sure to stay within the specified limit.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'ModifyCasterLayout' => [ - 'summary' => 'Modifies the layout configurations pf a production studio. You need to pass only parameters that you want to modify.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveRecordNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRecordNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveRecordNotifyRecords' => [ + 'summary' => 'Queries the callback records for live stream recordings stored in OSS.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'VideoLayer', + 'name' => 'DomainName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The video layers.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the video layer.'."\n", - 'type' => 'object', - 'properties' => [ - 'FillMode' => [ - 'description' => 'The scaling mode of the video layer. Valid values:'."\n" - ."\n" - .'* **none** (default): indicates that the video layer is not scaled. The video layer is displayed based on its original size.'."\n" - .'* **fit**: indicates that the video layer is adapted to the fill area. In this case, the video layer is scaled proportionally, with its original aspect ratio retained. The video layer is placed in the center, with its longer sides aligned with the fill area. If the aspect ratio of the video layer is different from that of the fill area, the content of the lower layer is displayed alongside the shorter sides. If there is no lower layer, black bars are displayed instead.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'fit', - ], - 'FixedDelayDuration' => [ - 'description' => 'The fixed delay of the video layer. This parameter is used to synchronize the video with subtitles. Unit: milliseconds. Default value: **0**. Valid values: **0 to 5000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5000', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the height of the video layer.'."\n" - ."\n" - .'* If the FillMode parameter of the video layer is set to none, the width of the video layer is proportionally scaled based on this parameter. The default value is **0**, which indicates that the video layer is not scaled.'."\n" - .'* If the FillMode parameter of the video layer is set to fit, the value of this parameter is greater than **0**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '1', - ], - 'PositionNormalized' => [ - 'description' => 'The normalized value of the position of the video layer, in the format of `[x,y]`. Default value: `[0,0]`.'."\n" - ."\n" - .'> The values of x and y are normalized.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The normalized value of the position of the video layer, in the format of `[x,y]`. Default value: `[0,0]`.'."\n" - ."\n" - .'> The values of x and y are normalized.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '[0,3]', - ], - 'required' => false, - 'example' => '0.3', - 'maxItems' => 2, - ], - 'PositionRefer' => [ - 'description' => 'The reference coordinates of the video layer. Valid values:'."\n" - ."\n" - .'* **topLeft** (default): the upper-left corner'."\n" - .'* **topRight**: the upper-right corner'."\n" - .'* **bottomLeft**: the lower-left corner'."\n" - .'* **bottomRight**: the lower-right corner'."\n" - .'* **center**: the center'."\n" - .'* **topCenter**: the upper center'."\n" - .'* **bottomCenter**: the lower center'."\n" - .'* **leftCenter**: the left center'."\n" - .'* **rightCenter**: the right center'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'topLeft', - ], - 'WidthNormalized' => [ - 'description' => 'The normalized value of the width of the video layer.'."\n" - ."\n" - .'* If the FillMode parameter of the video layer is set to none, the height of the video layer is proportionally scaled based on this parameter. The default value is **0**, which indicates that the video layer is not scaled.'."\n" - .'* If the FillMode parameter of the video layer is set to fit, the value of this parameter is greater than **0**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '1', - ], - ], - 'required' => false, - ], - 'required' => true, - 'maxItems' => 12, - ], + 'schema' => ['description' => 'The streamer\'s streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'AudioLayer', + 'name' => 'AppName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The audio layers.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the audio layer.'."\n", - 'type' => 'object', - 'properties' => [ - 'FixedDelayDuration' => [ - 'description' => 'The fixed delay of the audio layer. This parameter is used to synchronize the audio with subtitles. Unit: milliseconds. Default value: **0**. Valid values: **0 to 5000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5000', - ], - 'ValidChannel' => [ - 'description' => 'The sound channels that are used for volume input in the audio layer. Valid values:'."\n" - ."\n" - .'* **leftChannel**: the left channel'."\n" - .'* **rightChannel**: the right channel'."\n" - .'* **all** (default): both the left and right channels'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'all', - ], - 'VolumeRate' => [ - 'description' => 'The normalized value of the height of the audio layer. The width of the audio layer is proportionally scaled based on this parameter.'."\n" - ."\n" - .'The default value is **0**, which indicates that the audio layer is not scaled.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '1', - ], - ], - 'required' => false, - ], - 'required' => true, - 'maxItems' => 12, - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'BlendList', + 'name' => 'StreamName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The location IDs of the video layers, which are in the same order as the video layers.'."\n" - ."\n" - .'For more information, see [AddCasterVideoResource](~~2848020~~).'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The location ID.'."\n" - ."\n" - .'For more information, see [AddCasterVideoResource](~~2848020~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'RV02', - ], - 'required' => true, - 'example' => 'RV02', - 'maxItems' => 12, - ], + 'schema' => ['description' => 'The name of the stream.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'MixList', + 'name' => 'PageSize', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The location IDs of the audio layers, which are in the same order as the audio layers.'."\n" - ."\n" - .'For more information, see [AddCasterVideoResource](~~2848020~~).'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The location ID.'."\n" - ."\n" - .'For more information, see [AddCasterVideoResource](~~2848020~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'RV02', - ], - 'required' => true, - 'example' => 'RV02', - 'maxItems' => 12, - ], + 'schema' => ['description' => 'The number of entries per page. Default value: 20. Maximum value: 500. Valid values: any integer from 1 to 500.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '10', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The page number. Default value: 1. Valid values: 1 to 100000.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '1', 'title' => ''], ], [ - 'name' => 'LayoutId', + 'name' => 'Status', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether the callback was successful. Valid values:'."\n" + .'- success: The callback was successful.'."\n" + .'- failed: The callback failed.', 'type' => 'string', 'required' => false, 'example' => 'success', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n" + ."\n" + .'> You can query data within the last 7 days.', 'type' => 'string', 'required' => true, 'example' => '2023-02-10T21:03:47Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2023-02-10T21:03:47Z', 'title' => ''], + ], + [ + 'name' => 'StorageType', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the layout. If the layout was added by calling the [AddCasterLayout](~~2848025~~) operation, check the value of the response parameter LayoutId to obtain the ID.'."\n", + 'description' => 'The storage type of the recording for which you want to query callback records. Valid values:'."\n" + ."\n" + .'- oss: recordings stored in OSS.'."\n" + ."\n" + .'- vod: recordings stored in ApsaraVideo VOD.'."\n" + ."\n" + .'- all: callback records for all storage types without distinction.', 'type' => 'string', - 'required' => true, - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', + 'enum' => ['all', 'oss', 'vod'], + 'required' => false, + 'example' => 'oss', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The callback records.', 'type' => 'object', 'properties' => [ - 'LayoutId' => [ - 'description' => 'The ID of the layout. You can use this ID to query information about the layout.'."\n", - 'type' => 'string', - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'CallbackList' => [ + 'description' => 'The callback records.', + 'type' => 'array', + 'items' => [ + 'description' => 'The callback records.', + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'Description' => ['description' => 'The result description. The value is success if the callback was successful. Otherwise, an error message is returned.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'DomainName' => ['description' => 'The streamer\'s streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'NotifyContent' => ['description' => 'The specific content of the callback.', 'type' => 'string', 'example' => '7月26日 16:14{"domain":"al.xxxx.com","stream":"livestream01","pull _stream_result":true,"cdn":"al"}', 'title' => ''], + 'NotifyResult' => ['description' => 'The callback result. Valid values:'."\n" + .'- success: The callback was successful.'."\n" + .'- failed: The callback failed.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'NotifyTime' => ['description' => 'The callback time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2022-10-19T19:09:28Z', 'title' => ''], + 'NotifyType' => ['description' => 'The callback type. Valid values:'."\n" + .'- file_created: The recording was created.'."\n" + .'- record_error: A recording error occurred.'."\n" + .'- record_started: The recording started.'."\n" + .'- record_paused: The recording was paused.'."\n" + .'- record_resumed: The recording was resumed.'."\n" + .'- record_force_transcode_fail: The recording task failed to trigger transcoding.'."\n" + .'- transformat_error: An error occurred while parsing the live stream content.', 'type' => 'string', 'example' => 'record_started', 'title' => ''], + 'NotifyUrl' => ['description' => 'The recording callback URL.', 'type' => 'string', 'example' => 'http://learn.aliyundoc.com/examplecallback.action', 'title' => ''], + 'NotifyHeader' => ['description' => 'The header of the callback request.', 'type' => 'string', 'example' => '{'."\n" + .' "Content-Type": ['."\n" + .' "application/json; charset=utf-8"'."\n" + .' ]'."\n" + .'}', 'title' => ''], + 'StreamName' => ['description' => 'The name of the stream.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'NotifyResponse' => ['description' => 'The response returned by the user after receiving the callback.', 'type' => 'string', 'example' => '{"Code":0,"Msg":"Success"}', 'title' => ''], + 'StorageType' => ['description' => 'The recording storage type. Valid values:'."\n" + ."\n" + .'- oss: recordings stored in OSS.'."\n" + .'- vod: recordings stored in ApsaraVideo VOD.'."\n" + .'- all: all storage types.', 'type' => 'string', 'example' => 'oss', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'Code' => ['description' => 'The error code.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'Msg' => ['description' => 'The prompt message.', 'type' => 'string', 'example' => 'ok', 'title' => ''], + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '180FA0D2-1A02-5158-A36B-115DBF7B218D', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that match the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidLayoutId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidVideoLayersAndBlendListSize.Mismatch', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidAudioLayersAndMixListSize.Mismatch', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPositionNormalized.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidBlendList.ExceedNorm', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidMixList.ExceedNorm', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidHeightOrWidthNormalized', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVideoLayersConfig', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidAudioLayersConfig', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParams', 'errorMessage' => 'Invalid JSON', 'description' => ''], + ['errorCode' => 'MissingParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'MalformedParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is invalid, please check and try again.'], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CallbackList\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"Description\\": \\"success\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"NotifyContent\\": \\"7月26日 16:14{\\\\\\"domain\\\\\\":\\\\\\"al.xxxx.com\\\\\\",\\\\\\"stream\\\\\\":\\\\\\"livestream01\\\\\\",\\\\\\"pull _stream_result\\\\\\":true,\\\\\\"cdn\\\\\\":\\\\\\"al\\\\\\"}\\",\\n \\"NotifyResult\\": \\"success\\",\\n \\"NotifyTime\\": \\"2022-10-19T19:09:28Z\\",\\n \\"NotifyType\\": \\"record_started\\",\\n \\"NotifyUrl\\": \\"http://learn.aliyundoc.com/examplecallback.action\\",\\n \\"NotifyHeader\\": \\"{\\\\n \\\\\\"Content-Type\\\\\\": [\\\\n \\\\\\"application/json; charset=utf-8\\\\\\"\\\\n ]\\\\n}\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"NotifyResponse\\": \\"{\\\\\\"Code\\\\\\":0,\\\\\\"Msg\\\\\\":\\\\\\"Success\\\\\\"}\\",\\n \\"StorageType\\": \\"oss\\"\\n }\\n ],\\n \\"Code\\": 0,\\n \\"Msg\\": \\"ok\\",\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 20,\\n \\"RequestId\\": \\"180FA0D2-1A02-5158-A36B-115DBF7B218D\\",\\n \\"TotalNum\\": 20,\\n \\"TotalPage\\": 20\\n}","type":"json"}]', + 'title' => 'Query live stream recording callback records', + 'description' => 'The China site (Chinese) single-user QPS limit for this API is 100 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Manage your calls appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveRecordNotifyRecords'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRecordNotifyRecords', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t21926b36-7dd2-4fde-ae25-51b5bc8e52d8\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e52d8\\"\\n}"}]', - 'title' => 'ModifyCasterLayout', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to modify a layout of the production studio. This operation supports the default and adaptive scaling modes.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '> N in the preceding request parameters specifies the sequence number. VideoLayer.N.FillMode specifies the scaling mode of video layer N. For example, VideoLayer.1.FillMode specifies the scaling mode of the first video layer, and VideoLayer.2.FillMode specifies the scaling mode of the second video layer.'."\n", - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'DescribeCasterLayouts' => [ - 'summary' => 'Queries a specified layout or all layouts of a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveRecordVodConfigs' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -35284,46 +27811,38 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'LayoutId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the layout.'."\n" - ."\n" - .'If you do not specify a layout ID, all layouts of the production studio are queried.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '72d2ec7a-4cd7-4a01-974b-7cd53947****', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Default value: **1**.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Default value: **10**. Valid values: **5 to 100**.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'maximum' => '100', 'minimum' => '5', 'default' => '10', 'example' => '10', 'title' => ''], ], ], 'responses' => [ @@ -35331,442 +27850,306 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Layouts' => [ + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5056369B-D337-499E-B8B7-B761BD37B08A', 'title' => ''], + 'PageSize' => ['description' => 'The page size.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'Total' => ['description' => 'The total number of entries.', 'type' => 'string', 'example' => '100', 'title' => ''], + 'LiveRecordVodConfigs' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'Layout' => [ - 'description' => 'The layouts.'."\n", + 'LiveRecordVodConfig' => [ + 'description' => 'A list of live-to-VOD configurations.', 'type' => 'array', 'items' => [ - 'description' => 'The information about the layout.'."\n", 'type' => 'object', 'properties' => [ - 'AudioLayers' => [ + 'StorageLocation' => ['description' => 'The storage address.', 'type' => 'string', 'example' => '****-tjptr2vatm.oss-cn-shanghai.aliyuncs.com', 'title' => ''], + 'AppName' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'AutoCompose' => ['description' => 'Indicates whether automatic composition is enabled. Valid values:'."\n" + ."\n" + .'- **ON**: enabled.'."\n" + ."\n" + .'- **OFF**: disabled.', 'type' => 'string', 'example' => 'ON', 'title' => ''], + 'OnDemand' => ['description' => 'The trigger mode of live stream recording. Valid values:'."\n" + ."\n" + .'- **0** (default): Automatic recording.'."\n" + ."\n" + .'- **1**: Triggered by callback notifications of on-demand recording.'."\n" + ."\n" + .'- **2**: Triggered by corresponding parameters in the stream ingest URL.'."\n" + ."\n" + .'- **7**: Triggered manually. By default, recording is disabled. You can call the `RealTimeRecordCommand` operation to manually start or stop recording.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'CreateTime' => ['description' => 'The creation time, in UTC. The time is formatted as *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'example' => '2015-12-01T17:37:00Z', 'title' => ''], + 'VodTranscodeGroupId' => ['description' => 'The ID of the ApsaraVideo VOD transcoding template group for transcoding the recording files.', 'type' => 'string', 'example' => 'e2d796d3bb5fd8049d32bff62f94****', 'title' => ''], + 'CycleDuration' => ['description' => 'The maximum duration of each recording file. Unit: seconds. Default value: **3600**. Range: **300** to 21600.', 'type' => 'integer', 'format' => 'int32', 'example' => '360', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'ComposeVodTranscodeGroupId' => ['description' => 'The ID of the ApsaraVideo VOD transcoding template group for transcoding the composed video created by automatic composition.'."\n" + ."\n" + .'> This parameter is returned only when `AutoCompose` is set to `ON`.', 'type' => 'string', 'example' => 'dadfcaadde****', 'title' => ''], + 'RecordContent' => ['description' => 'The content to record. Valid values:'."\n" + ."\n" + .'- `raw` (default): Records the source stream.'."\n" + ."\n" + .'- `transcode`: Records the transcoded streams.', 'type' => 'string', 'title' => '', 'example' => 'raw'], + 'DelayTime' => ['description' => 'The reconnect timeout, in seconds. If a stream is interrupted but recovers within this window, the new content is automatically appended to the exisiting recording file. Otherwise, the previous session is considered ended, and a new recording file will be created. Valid values: 15 to 21600.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '180'], + 'TranscodeTemplates' => ['description' => 'The [transcoding templates](~~45039~~) configured in ApsaraVideo Live. It specifies which transcoded streams to record. A value of `*` indicates that all transcoded streams are recorded.', 'type' => 'string', 'example' => '["sd","hd"]', 'title' => ''], + 'FormatConfig' => ['description' => 'Specifies whether to enable format-specific configuration for VOD processing settings. The default value is true.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'SpaceId' => ['description' => 'The ID of the ApsaraVideo VOD application space. You can find the ID in the **ApsaraVideo VOD console** or by calling the [ListAppInfo](~~454873~~) operation. This parameter is required only if you have enabled application spaces.', 'type' => 'string', 'example' => 'app-1000000', 'title' => ''], + 'RecordFormatList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'AudioLayer' => [ - 'description' => 'The configurations of the audio layers.'."\n", + 'RecordFormat' => [ 'type' => 'array', 'items' => [ - 'description' => 'The configuration of the audio layer.'."\n", 'type' => 'object', 'properties' => [ - 'FixedDelayDuration' => [ - 'description' => 'The fixed delay of the audio layer. This parameter is used to synchronize the audio with subtitles.'."\n" - ."\n" - .'Unit: milliseconds. Default value: **0**. Valid values: **0 to 5000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'ValidChannel' => [ - 'description' => 'The sound channels that are used for volume input in the audio layer. Valid values:'."\n" - ."\n" - .'* **leftChannel**: the left channel'."\n" - .'* **rightChannel**: the right channel'."\n" - .'* **all** (default): both the left and right channels'."\n", - 'type' => 'string', - 'example' => 'all', - ], - 'VolumeRate' => [ - 'description' => 'The normalized value of the height of the audio layer. The width of the audio layer is proportionally scaled based on this parameter.'."\n" - ."\n" - .'> The default value is **0**, which indicates that the audio layer is not scaled.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '1', - ], - ], - ], - ], - ], - ], - 'BlendList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LocationId' => [ - 'description' => 'The location IDs of the video layers, which are in the same order as the video layers.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The location ID.'."\n", - 'type' => 'string', - 'example' => 'List of location associations, maintaining the same order as VideoLayers.', - ], - ], - ], - ], - 'LayoutId' => [ - 'description' => 'The ID of the layout.'."\n", - 'type' => 'string', - 'example' => '72d2ec7a-4cd7-4a01-974b-7cd53947****', - ], - 'MixList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LocationId' => [ - 'description' => 'The location IDs of the audio layers, which are in the same order as the audio layers.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The location ID.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - ], - ], - ], - 'VideoLayers' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'VideoLayer' => [ - 'description' => 'The configurations of the video layers, which are in the default array sequence.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The configuration of the video layer.'."\n", - 'type' => 'object', - 'properties' => [ - 'FillMode' => [ - 'description' => 'The scaling mode of the video layer. Valid values:'."\n" - ."\n" - .'* **none** (default): specifies that the video layer is not scaled. The video layer is displayed based on its original size.'."\n" - .'* **fit**: specifies that the video layer is adapted to the fill area. The video layer is displayed based on the fill area. In this case, the video layer is scaled proportionally, with its original aspect ratio retained. The video layer is placed in the center, with its longer sides aligned with the fill area. If the aspect ratio of the video layer is different from that of the fill area, the content of the lower layer is displayed alongside the shorter sides. If there is no lower layer, black bars are displayed instead.'."\n", - 'type' => 'string', - 'example' => 'fit', - ], - 'FixedDelayDuration' => [ - 'description' => 'The fixed delay of the video layer. This parameter is used to synchronize the video with subtitles.'."\n" - ."\n" - .'Unit: milliseconds. Default value: **0**. Valid values: **0 to 5000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the height of the video layer.'."\n" - ."\n" - .'* If the FillMode parameter of the video layer is set to none, the width of the video layer is proportionally scaled based on this parameter. The default value is **0**, which indicates that the video layer is not scaled.'."\n" - .'* If the FillMode parameter of the video layer is set to fit, the value of this parameter is greater than **0**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.5', - ], - 'PositionNormalizeds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Position' => [ - 'description' => 'The normalized value of the position of the video layer, in the format of `[x,y]`. Default value: `[0,0]`.'."\n" - ."\n" - .'> The values of x and y are normalized.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The value.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => 'The normalized value of the `[x,y]` coordinates of the video layer in the production studio. The default coordinates are `[0,0]`.'."\n" - ."\n" - .'> The coordinates indicate the location of the video layer in the production studio. The value of the parameter is normalized.'."\n", - ], - ], - ], - ], - 'PositionRefer' => [ - 'description' => 'The reference coordinates of the video layer. Valid values:'."\n" - ."\n" - .'* **topLeft** (default): the upper-left corner'."\n" - .'* **topRight**: the upper-right corner'."\n" - .'* **bottomLeft**: the lower-left corner'."\n" - .'* **bottomRight**: the lower-right corner'."\n" - .'* **center**: the center'."\n" - .'* **topCenter**: the upper center'."\n" - .'* **bottomCenter**: the lower center'."\n" - .'* **leftCenter**: the left center'."\n" - .'* **rightCenter**: the right center'."\n", - 'type' => 'string', - 'example' => 'topLeft', - ], - 'WidthNormalized' => [ - 'description' => 'The normalized value of the width of the video layer.'."\n" - ."\n" - .'* If the FillMode parameter of the video layer is set to none, the height of the video layer is scaled based on this parameter. The default value is **0**, which indicates that the video layer is not scaled.'."\n" - .'* If the FillMode parameter of the video layer is set to fit, the value of this parameter is greater than **0**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.5', - ], + 'Format' => ['description' => 'The recording format.', 'type' => 'string', 'example' => 'm3u8', 'title' => ''], + 'SliceDuration' => ['description' => 'The duration of a TS segment, in seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '30', 'title' => ''], + 'AutoCompose' => ['description' => 'Indicates whether automatic composition is enabled.'."\n" + ."\n" + .'- **ON**: enabled.'."\n" + ."\n" + .'- **OFF**: disabled.', 'type' => 'string', 'example' => 'ON', 'title' => ''], + 'VideoProcess' => ['description' => 'The video to process. Valid values:'."\n" + ."\n" + .'- `origin` (default): Processes the source recording files.'."\n" + ."\n" + .'- `compose`: Processes the composed video.', 'type' => 'string', 'example' => 'origin', 'title' => ''], + 'ProcessMethod' => ['description' => 'The video processing method. Valid values:'."\n" + ."\n" + .'- `transcode`: Processes the video by using a transcoding template group set in ApsaraVideo VOD.'."\n" + ."\n" + .'- `workflow`: Processes the video by using a workflow set in ApsaraVideo VOD.', 'type' => 'string', 'example' => 'transcode', 'title' => ''], + 'ProcessTemplateId' => ['description' => 'The ID of the transcoding template group or workflow to use for video processing.', 'type' => 'string', 'example' => 'e2d796d3bb5fd8049d32bff62f94****', 'title' => ''], + 'Tags' => ['description' => 'The video category.', 'type' => 'string', 'example' => 'sports', 'title' => ''], ], + 'description' => 'A recording format configuration.', + 'title' => '', + 'example' => '', ], + 'description' => 'A list of recording format configurations.', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => 'A live-to-VOD configuration.', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'The normalized value of the width of the video layer image.'."\n" - ."\n" - .'* If the FillMode parameter of the video layer is set to none, the height of the video image is scaled based on this parameter. The default value is **0**, which indicates that the video image is displayed in the original size.'."\n" - .'* If the FillMode parameter of the video layer is set to fit, the value of the parameter is greater than **0**.'."\n", - ], - 'Total' => [ - 'description' => 'The total number of entries.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3', + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Layouts\\": {\\n \\"Layout\\": [\\n {\\n \\"AudioLayers\\": {\\n \\"AudioLayer\\": [\\n {\\n \\"FixedDelayDuration\\": 20,\\n \\"ValidChannel\\": \\"all\\",\\n \\"VolumeRate\\": 1\\n }\\n ]\\n },\\n \\"BlendList\\": {\\n \\"LocationId\\": [\\n \\"RV01\\"\\n ]\\n },\\n \\"LayoutId\\": \\"72d2ec7a-4cd7-4a01-974b-7cd53947****\\",\\n \\"MixList\\": {\\n \\"LocationId\\": [\\n \\"RV01\\"\\n ]\\n },\\n \\"VideoLayers\\": {\\n \\"VideoLayer\\": [\\n {\\n \\"FillMode\\": \\"fit\\",\\n \\"FixedDelayDuration\\": 20,\\n \\"HeightNormalized\\": 0.5,\\n \\"PositionNormalizeds\\": {\\n \\"Position\\": [\\n 0\\n ]\\n },\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"WidthNormalized\\": 0.5\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"RequestId\\": \\"3be7ade8-d907-483c-b24a-0dad45****\\",\\n \\"Total\\": 3\\n}","errorExample":""},{"type":"xml","example":"\\n3be7ade8-d907-483c-b24a-0dad4595beaf\\n\\n \\n 72d2ec7a-4cd7-4a01-974b-7cd53947****\\n \\n \\n all\\n 1\\n 20\\n \\n \\n \\n \\n fit\\n 0.5\\n topLeft\\n 20\\n 0.5\\n \\n [0,3]\\n \\n \\n \\n \\n \\"RV01\\", \\"RV02\\"\\n \\n \\n RV01\\n \\n \\n\\n3\\n","errorExample":"{\\n \\"RequestId\\": \\"3be7ade8-d907-483c-b24a-0dad4595beaf\\",\\n \\"Layouts\\": [\\n {\\n \\"MixList\\": [\\n \\"RV01\\"\\n ],\\n \\"AudioLayers\\": [\\n {\\n \\"ValidChannel\\": \\"all\\",\\n \\"VolumeRate\\": 1\\n }\\n ],\\n \\"VideoLayers\\": [\\n {\\n \\"HeightNormalized\\": 0.5,\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"WidthNormalized\\": 0.5,\\n \\"PositionNormalized\\": [\\n 0,\\n 0.3\\n ]\\n },\\n {\\n \\"HeightNormalized\\": 0.5,\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"WidthNormalized\\": 0.5,\\n \\"PositionNormalized\\": [\\n 0.5,\\n 0.3\\n ]\\n }\\n ],\\n \\"LayoutId\\": \\"72d2ec7a-4cd7-4a01-974b-7cd53947f053\\",\\n \\"BlendList\\": [\\n \\"RV01\\",\\n \\"RV02\\"\\n ]\\n },\\n {\\n \\"MixList\\": [\\n \\"RV01\\"\\n ],\\n \\"AudioLayers\\": [\\n {\\n \\"ValidChannel\\": \\"all\\",\\n \\"VolumeRate\\": 0.5\\n }\\n ],\\n \\"VideoLayers\\": [\\n {\\n \\"HeightNormalized\\": 1,\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"WidthNormalized\\": 1,\\n \\"PositionNormalized\\": [\\n 0,\\n 0\\n ]\\n },\\n {\\n \\"HeightNormalized\\": 0.4,\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"WidthNormalized\\": 0.4,\\n \\"PositionNormalized\\": [\\n 0.1,\\n 0.1\\n ]\\n }\\n ],\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e52d8\\",\\n \\"BlendList\\": [\\n \\"RV01\\",\\n \\"RV02\\"\\n ]\\n }\\n ]\\n}"}]', - 'title' => 'DescribeCasterLayouts', - 'description' => 'You can call this operation to query layouts of a production studio. If no layout ID is specified, the operation returns all layouts of the production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'title' => 'DescribeLiveRecordVodConfigs', + 'summary' => 'Queries live-to-VOD configurations of a streaming domain.', + 'description' => '### **QPS limit**'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'This API is limited to 1,000 queries per minute for each account. If you exceed this limit, API calls are throttled, which can affect your business.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddCasterComponent' => [ - 'summary' => 'Adds a component to a production studio.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRecordVodConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PageNum\\": 1,\\n \\"RequestId\\": \\"5056369B-D337-499E-B8B7-B761BD37B08A\\",\\n \\"PageSize\\": 1,\\n \\"Total\\": \\"100\\",\\n \\"LiveRecordVodConfigs\\": {\\n \\"LiveRecordVodConfig\\": [\\n {\\n \\"StorageLocation\\": \\"****-tjptr2vatm.oss-cn-shanghai.aliyuncs.com\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"AutoCompose\\": \\"ON\\",\\n \\"OnDemand\\": 0,\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"CreateTime\\": \\"2015-12-01T17:37:00Z\\",\\n \\"VodTranscodeGroupId\\": \\"e2d796d3bb5fd8049d32bff62f94****\\",\\n \\"CycleDuration\\": 360,\\n \\"DomainName\\": \\"example.com\\",\\n \\"ComposeVodTranscodeGroupId\\": \\"dadfcaadde****\\",\\n \\"RecordContent\\": \\"raw\\",\\n \\"DelayTime\\": 180,\\n \\"TranscodeTemplates\\": \\"[\\\\\\"sd\\\\\\",\\\\\\"hd\\\\\\"]\\",\\n \\"FormatConfig\\": true,\\n \\"SpaceId\\": \\"app-1000000\\",\\n \\"RecordFormatList\\": {\\n \\"RecordFormat\\": [\\n {\\n \\"Format\\": \\"m3u8\\",\\n \\"SliceDuration\\": 30,\\n \\"AutoCompose\\": \\"ON\\",\\n \\"VideoProcess\\": \\"origin\\",\\n \\"ProcessMethod\\": \\"transcode\\",\\n \\"ProcessTemplateId\\": \\"e2d796d3bb5fd8049d32bff62f94****\\",\\n \\"Tags\\": \\"sports\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveRtcRecordUsageData' => [ + 'path' => '', + 'methods' => ['get', 'post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CasterId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The start time to query data. The format is yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], ], [ - 'name' => 'ComponentName', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The component name. By default, the component name is the component ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'text01', - ], + 'schema' => ['description' => 'The end time. The query time range must be greater than or equal to 5 minutes and less than or equal to 31 days. The format is *yyyy-MM-dd*T*HH:mm:ss*Z (UTC).', 'type' => 'string', 'required' => true, 'example' => '2022-10-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'LocationId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The location ID of the component. Each location ID can be assigned to only one component and must be in the RC\\[Number] format. The values specified by this parameter must be in ascending order, such as RC01 to RC99.'."\n" - ."\n" - .'> If the ComponentType parameter is set to caption, the LocationId parameter specifies the location ID of the video source referenced by the component.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'RC01', - ], + 'schema' => ['description' => 'The ID of the ApsaraVideo Real-time Communication application. For more information, see [Application Management](~~2355593~~).', 'type' => 'string', 'required' => true, 'example' => 'intl7f92-a5a8*************7ce4eb44a6', 'title' => ''], ], [ - 'name' => 'ComponentType', + 'name' => 'RecordMode', 'in' => 'query', - 'schema' => [ - 'description' => 'The component type. Valid values:'."\n" - ."\n" - .'* **text**: a text component. If you set ComponentType to text, you must also specify TextLayerContent.'."\n" - .'* **image**: an image component. If you set ComponentType to image, you must also specify ImageLayerContent.'."\n" - .'* **caption**: a caption component. If you set ComponentType to caption, you must also specify CaptionLayerContent.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'text', - ], + 'schema' => ['description' => 'The recording mode:'."\n" + ."\n" + .'- 0: Single-stream recording.'."\n" + ."\n" + .'- 1: Stream mixing recording.', 'type' => 'string', 'required' => true, 'example' => '0', 'title' => ''], ], [ - 'name' => 'Effect', + 'name' => 'Interval', 'in' => 'query', - 'schema' => [ - 'description' => 'The effect of the component. Valid values:'."\n" - ."\n" - .'* **none (default)**'."\n" - .'* **animateH**: horizontal scrolling'."\n" - .'* **animateV**: vertical scrolling'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'animateH', - ], + 'schema' => ['description' => 'The time granularity to query data. Unit: seconds. Valid values:'."\n" + ."\n" + .'- 3600 (default)'."\n" + ."\n" + .'- 86400', 'type' => 'string', 'required' => false, 'example' => '3600', 'title' => ''], ], - [ - 'name' => 'ComponentLayer', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The information about the component layer, such as the size and layout. This parameter contains the following fields:'."\n" - ."\n" - .'* **HeightNormalized**: the normalized value of heights for the elements in the component layer'."\n" - .'* **WidthNormalized**: the normalized value of widths for the elements in the component layer'."\n" - .'* **PositionNormalized**: the normalized value of the coordinates of the component layer'."\n" - .'* **PositionRefer**: the reference coordinates of the component layer.'."\n" - ."\n" - .'The value is a JSON string. Use upper camel case for field names.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '{"HeightNormalized":"1","PositionRefer":"topRight","WidthNormalized":"0","PositionNormalized":["0.1","0.2"]}', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'title' => '', 'example' => '16A96B9A-F2*************B92E68F4CD8'], + 'RecordMode' => ['description' => 'The recording mode.'."\n" + ."\n" + .'- 0: Single-stream recording.'."\n" + ."\n" + .'- 1: Stream mixing recording.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'AppId' => ['description' => 'The ID of the ApsaraVideo Real-time Communication application that was queried.', 'type' => 'string', 'example' => '7fd341b3-c6fa-43e1-96b8-7295a1dd****', 'title' => ''], + 'TotalSummaryDuration' => ['description' => 'The total duration. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '150', 'title' => ''], + 'AudioSummaryDuration' => ['description' => 'The total duration of audio-only recordings. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '20', 'title' => ''], + 'V480SummaryDuration' => ['description' => 'The total duration of videos with a resolution of 480p or lower. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '30', 'title' => ''], + 'V720SummaryDuration' => ['description' => 'The total duration of videos with a resolution of 720p or lower. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '40', 'title' => ''], + 'V1080SummaryDuration' => ['description' => 'The total duration of videos with a resolution higher than 720p, including 1080p. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '10', 'title' => ''], + 'Data' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Timestamp' => ['description' => 'The timestamp of the data point. The format is yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2022-10-10T20:00:00Z', 'title' => ''], + 'TotalDuration' => ['description' => 'The total duration. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '150', 'title' => ''], + 'AudioDuration' => ['description' => 'The duration of audio-only recordings. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '20', 'title' => ''], + 'V480Duration' => ['description' => 'The duration of videos with a resolution of 480p or lower. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '30', 'title' => ''], + 'V720Duration' => ['description' => 'The duration of videos with a resolution of 720p or lower. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '40', 'title' => ''], + 'V1080Duration' => ['description' => 'The duration of videos with a resolution higher than 720p. Unit: seconds.', 'type' => 'number', 'format' => 'double', 'example' => '10', 'title' => ''], + ], + 'description' => 'The usage statistics.', + 'title' => '', + 'example' => '', + ], + 'description' => 'The usage statistics.', + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'description' => 'Schema of Response', + 'example' => '', ], ], - [ - 'name' => 'LayerOrder', - 'in' => 'query', - 'schema' => [ - 'description' => 'The layer stacking order of the component. Valid values:'."\n" - ."\n" - .'* cover'."\n" - .'* background'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cover', - ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidRecordModeParameter', 'errorMessage' => 'RecordMode parameter error.', 'description' => 'RecordMode parameter error'], + ['errorCode' => 'InvalidAppIdParameter', 'errorMessage' => 'AppId parameter error.', 'description' => 'AppId parameter error'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeLiveRtcRecordUsageData', + 'summary' => 'Queries the usage data of cloud recording.', + 'description' => '- Returns daily statistics on the recording duration for different cloud recording specifications.'."\n" + ."\n" + .'- You can query data at the application level for ApsaraVideo Real-time Communication.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per second for this API. If you exceed the limit, API calls are throttled, which may affect your business. We recommend that you make API calls at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'TextLayerContent', - 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the text layer. This parameter contains the following fields:'."\n" - ."\n" - .'> This parameter is available and required only when the ComponentType parameter is set to text.'."\n" - ."\n" - .'* **SizeNormalized**: the normalized font size. The font size is set to font_size/output_height. The value range is `[0,1]`. If the font size calculated by the system based on the normalization method is greater than 1024, 1024 is used.'."\n" - .'* **BorderWidthNormalized**: the normalized value of the text border width. The normalized value is calculated based on the size of the text, that is, "BorderWidth/FontSize". The value range is `[0,1]`. If the value calculated based on the normalization method exceeds 16, 16 is used. The default value is 0.'."\n" - .'* **FontName**: the font name. For more information about the value, see **Font description**. The default value is KaiTi.'."\n" - .'* **BorderColor**: the color of the text border. Valid values: 0x000000 to 0xffffff. By default, this parameter is not set. In this case, the color of the text border is transparent.'."\n" - .'* **Text**: the content of the text. By default, this parameter is not set. In this case, the text contains no content.'."\n" - .'* **Color**: the color of the text. The default value is 0xff0000, which indicates that the text is in red.'."\n" - ."\n" - .'The value is a JSON string. Use upper camel case for field names.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"BorderWidthNormalized":"1","SizeNormalized":"0.2","Color":"0x000000","FontName":"KaiTi","BorderColor":"0x000000","Text":"hello world!"}', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRtcRecordUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F2*************B92E68F4CD8\\",\\n \\"RecordMode\\": \\"0\\",\\n \\"AppId\\": \\"7fd341b3-c6fa-43e1-96b8-7295a1dd****\\",\\n \\"TotalSummaryDuration\\": 150,\\n \\"AudioSummaryDuration\\": 20,\\n \\"V480SummaryDuration\\": 30,\\n \\"V720SummaryDuration\\": 40,\\n \\"V1080SummaryDuration\\": 10,\\n \\"Data\\": [\\n {\\n \\"Timestamp\\": \\"2022-10-10T20:00:00Z\\",\\n \\"TotalDuration\\": 150,\\n \\"AudioDuration\\": 20,\\n \\"V480Duration\\": 30,\\n \\"V720Duration\\": 40,\\n \\"V1080Duration\\": 10\\n }\\n ]\\n}","type":"json"}]', + ], + 'DescribeLiveShiftConfigs' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'ImageLayerContent', - 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the image layer. This parameter contains the following fields:'."\n" - ."\n" - .'> This parameter is required when the ComponentType parameter is set to image.'."\n" - ."\n" - .'MaterialId: the ID of the asset from the media asset library. The name that you set when you upload an asset is the ID of the asset.'."\n" - ."\n" - .'The value is a JSON string. Use upper camel case for field names.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"MaterialId":"6cf724c6ebfd4a59b5b3cec6f10d****"}', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveGDJYFA'], + ], + 'parameters' => [ [ - 'name' => 'CaptionLayerContent', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the caption layer. This parameter contains the following fields:'."\n" - ."\n" - .'> This parameter is required when the ComponentType parameter is set to caption.'."\n" - ."\n" - .'* **SizeNormalized**: the normalized font size. The font size is set to font_size/output_height. The value range is `[0,1]` and accurate to two decimal places. If the font size calculated by the system based on the normalization method is greater than **1024**, **1024** is used.'."\n" - .'* **BorderWidthNormalized**: the normalized value of the text border width, which is calculated based on the size of the text, namely "BorderWidth/FontSize". The value range is `[0,1]` and accurate to two decimal places. If the value calculated according to the normalization method exceeds **16**, **16** is used. The default value is **0**.'."\n" - .'* **FontName**: the font name. For more information about the value, see **Font description**. The default font name is KaiTi.'."\n" - .'* **BorderColor**: the color of the text border. Valid values: 0x000000 to 0xffffff. By default, this parameter is not set. In this case, the color of the text border is transparent.'."\n" - .'* **LocationId**: the channel ID of the source subtitle.'."\n" - .'* **SourceLan**: the source language of the audio in the source video. Valid values: en, cn, es, and ru, which indicate English, Chinese, Spanish, and Russian respectively. Default value: cn.'."\n" - .'* **TargetLan**: the target audio language in the source video. If you do not specify this field, speech recognition is used. If you specify this field, translation is used. Valid values: en, cn, es, and ru, which indicate English, Chinese, Spanish, and Russian respectively. Default value: cn.'."\n" - .'* **ShowSourceLan**: specifies whether to display the source language. Valid values: true: displays the source language. false: hides the source language. Default value: false.'."\n" - .'* **Truncation**: specifies whether to allow caption truncation. Valid values: true: specifies that the caption can be truncated. false: specifies that the caption cannot be truncated. Default value: false.'."\n" - .'* **SourceLanPerLineWordCount**: the number of words displayed in each line when the subtitle is in the source language. Default value: 20.'."\n" - .'* **TargetLanPerLineWordCount**: the number of words displayed in each line when the subtitle is in the destination language. Default value: 20.'."\n" - .'* **SourceLanReservePages**: the number of lines reserved when the subtitle is in the source language. This field takes effect only when the Truncation field is set to true. Default value: 2.'."\n" - .'* **TargetLanReservePages**: the number of lines reserved when the subtitle is in the destination language. This field takes effect only when the Truncation field is set to true. Default value: 2.'."\n" - ."\n" - .'The value is a JSON string. Use upper camel case for field names.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"BorderWidthNormalized":0.01,"SizeNormalized":0.05,"Color":"0x000000","LocationId":"RV01","SourceLan":"cn","FontName":"KaiTi","BorderColor":"0xffffff"}', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'HtmlLayerContent', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the HTML5 layer.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"htmlUrl":http://caster.example.com}', - ], + 'schema' => ['description' => 'The streaming domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -35774,149 +28157,148 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'ComponentId' => [ - 'description' => 'The component ID. The value can be used as the value of a request parameter to query, modify, or delete a production studio.'."\n", - 'type' => 'string', - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'B49E6DDA-F413-422B-B58E-2FA23F286726', 'title' => ''], + 'Content' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Config' => [ + 'description' => 'The list of configurations.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'Vision' => ['description' => 'The retention period in days.', 'type' => 'integer', 'format' => 'int32', 'example' => '7', 'title' => ''], + 'DomainName' => ['description' => 'The domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'IgnoreTranscode' => ['description' => 'Indicates whether to generate time-shifted streams for transcoded streams. Valid values:'."\n" + ."\n" + .'- **true**: Time-shifted streams are not generated for transcoded streams.'."\n" + ."\n" + .'- **false**: Time-shifted streams are generated for transcoded streams.'."\n" + ."\n" + .'The default value is true.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + ], + 'description' => 'The list of configurations.', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'description' => 'The time shifting configurations.', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidPositionNormalized.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'DuplicateLocationID', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], ], 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'CanvasNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidDataNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Data does not exist, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + 409 => [ + ['errorCode' => 'InvalidStreamNum', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of streams is abnormal. Please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ComponentId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t21926b36-7dd2-4fde-ae25-51b5bc8e****\\n\\t","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ComponentId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e52d8\\"\\n}"}]', - 'title' => 'AddCasterComponent', - 'description' => 'Before you call this operation to add a component to a production studio, you must first create the production studio and learn about the production studio layouts. You can call this operation to add three types of components: image, text, and subtitle. For information about how to create a production studio, see [CreateCaster](~~2848009~~).'."\n" + 'title' => 'DescribeLiveShiftConfigs', + 'summary' => 'Queries the time-shifting configurations for a specified domain name.', + 'description' => 'After you obtain a streaming domain name, you can call this operation to query the time-shifting configurations for the specified domain name.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## Font description'."\n" - ."\n" - .'|Font|Values of FontName|'."\n" - .'|---|---|'."\n" - .'|KaiTi|KaiTi|'."\n" - .'|Alibaba PuHuiTi-Regular|AlibabaPuHuiTi-Regular|'."\n" - .'|Alibaba PuHuiTi-Bold|AlibabaPuHuiTi-Bold|'."\n" - .'|Alibaba PuHuiTi-Light|AlibabaPuHuiTi-Light|'."\n" - .'|Source Han Sans-Regular|NotoSansHans-Regular|'."\n" - .'|Source Han Sans-Bold|NotoSansHans-Bold|'."\n" - .'|Source Han Sans-Light|NotoSansHans-Light|', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteCasterComponent' => [ - 'summary' => 'Deletes a component in a production studio.', - 'methods' => [ - 'post', - 'get', + .'You can make up to 10 queries per second (QPS) for each user. If you exceed this limit, API calls are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => '\\## Special error codes'."\n" + .'\\| Error code | Error message | HTTP status code | Description |'."\n" + .'\\| ---------- | ------------- | ---------------- | ----------- |'."\n" + .'\\| InvalidParam | Invalid parameter | 400 | One or more specified parameters are invalid. |'."\n" + .'\\| InvalidDataNotFound | Data not found | 404 | The user data cannot be found. |', + 'extraInfo' => '### 特殊错误码'."\n" + .'| 错误代码 | 描述 | HTTP 状态码 | 语义 |'."\n" + .'|------------|--------|---------|------|'."\n" + .'| InvalidParam | param error | 400 | 用户参数错误。 |'."\n" + .'| InvalidDataNotFound | data not found | 404 | 用户数据未找到。 |'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveShiftConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B49E6DDA-F413-422B-B58E-2FA23F286726\\",\\n \\"Content\\": {\\n \\"Config\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"Vision\\": 7,\\n \\"DomainName\\": \\"example.com\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"IgnoreTranscode\\": true\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveSnapshotConfig' => [ + 'summary' => 'Queries the snapshot configurations under a streaming domain.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'ComponentId', + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Default value: **1**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Valid values: **5 to 30**. Default value: **10**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '5', 'default' => '10', 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'Order', 'in' => 'query', 'schema' => [ - 'description' => 'The component ID. If the component was added by calling the [AddCasterComponent](~~2848030~~) operation, check the value of the response parameter ComponentId to obtain the ID.'."\n", + 'description' => 'The sort order. Valid values:'."\n" + ."\n" + .'- **asc** (default): ascending order.'."\n" + .'- **desc**: descending order.', + 'enumValueTitles' => ['asc' => 'Ascending order.', 'desc' => 'Descending order.'], 'type' => 'string', - 'required' => true, - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', + 'required' => false, + 'default' => 'asc', + 'enum' => ['asc', 'desc'], + 'example' => 'asc', + 'title' => '', ], ], ], @@ -35925,235 +28307,262 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can use the ID as a request parameter in the API operation that is called to query the components in the production studio, add an episode list to the production studio, or modify a component in the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880****', - ], - 'ComponentId' => [ - 'description' => 'The component ID. You can use the ID as a request parameter in the API operation that is called to query the component in the production studio or modify the component in the production studio.'."\n", - 'type' => 'string', - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', 'title' => ''], + 'Order' => ['description' => 'The sort order.', 'type' => 'string', 'example' => 'asc', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '11', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that meet the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '6', 'title' => ''], + 'LiveStreamSnapshotConfigList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveStreamSnapshotConfig' => [ + 'description' => 'The list of snapshot configurations.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'OverwriteOssObject' => ['description' => 'The name of the file that stores overwritten snapshots.', 'type' => 'string', 'example' => '{liveApp****}/{liveStream****}.jpg', 'title' => ''], + 'TimeInterval' => ['description' => 'The snapshot interval. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'AppName' => ['description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'CreateTime' => ['description' => 'The time when the configuration was created. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2016-05-20T01:33:38Z', 'title' => ''], + 'OssBucket' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Callback' => ['description' => 'The snapshot callback URL.', 'type' => 'string', 'example' => 'https://learn.aliyundoc.com', 'title' => ''], + 'SequenceOssObject' => ['description' => 'The name of the file that stores real-time snapshots.', 'type' => 'string', 'example' => 'snapshot/{liveApp****}/{liveStream****}/{UnixTimestamp}.jpg', 'title' => ''], + 'OssEndpoint' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880****\\",\\n \\"ComponentId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n a2b8e671-2fe5-4642-a2ec-bf93880****\\n 21926b36-7dd2-4fde-ae25-51b5bc8e****\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteCasterComponent', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to delete a component in the production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'errorCodes' => [], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PageNum\\": 2,\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"Order\\": \\"asc\\",\\n \\"TotalPage\\": 10,\\n \\"PageSize\\": 11,\\n \\"TotalNum\\": 6,\\n \\"LiveStreamSnapshotConfigList\\": {\\n \\"LiveStreamSnapshotConfig\\": [\\n {\\n \\"OverwriteOssObject\\": \\"{liveApp****}/{liveStream****}.jpg\\",\\n \\"TimeInterval\\": 10,\\n \\"AppName\\": \\"liveApp****\\",\\n \\"CreateTime\\": \\"2016-05-20T01:33:38Z\\",\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"Callback\\": \\"https://learn.aliyundoc.com\\",\\n \\"SequenceOssObject\\": \\"snapshot/{liveApp****}/{liveStream****}/{UnixTimestamp}.jpg\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query snapshot configurations under a domain name', + 'description' => 'Obtain the streaming domain first, and then call this operation to query the snapshot configurations under the streaming domain.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 100 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation as needed.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'ModifyCasterComponent' => [ - 'summary' => 'Modifies a component of a production studio.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveSnapshotConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveSnapshotConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveSnapshotDetectPornConfig' => [ + 'summary' => 'Queries the content moderation configurations for live streaming.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The streamer streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'ComponentId', + 'name' => 'PageNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the component. If the component was added by calling the [AddCasterComponent](~~2848030~~) operation, check the value of the response parameter ComponentId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', - ], + 'schema' => ['description' => 'The page number. Default value: **1**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], ], [ - 'name' => 'ComponentName', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the component. By default, the name is the ID of the component.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'text01', - ], + 'schema' => ['description' => 'The number of entries per page. Default value: **10**. Valid values: **5 to 30**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '5', 'default' => '10', 'example' => '10', 'title' => ''], ], [ - 'name' => 'ComponentType', + 'name' => 'Order', 'in' => 'query', 'schema' => [ - 'description' => 'The type of the component. Valid values:'."\n" + 'description' => 'The order in which entries are sorted by creation time. Valid values:'."\n" ."\n" - .'* **text**: text component. The TextLayerContent parameter is required if you set ComponentType to text.'."\n" - .'* **image**: image component. The ImageLayerContent parameter is required if you set ComponentType to image.'."\n" - .'* **caption**: subtitle component. The CaptionLayerContent parameter is required if you set ComponentType to caption.'."\n", + .'- **Asc** (default): ascending order.'."\n" + .'- **Desc**: descending order.', + 'enumValueTitles' => ['asc' => 'ascending order.', 'desc' => 'descending order.'], 'type' => 'string', 'required' => false, - 'example' => 'text', + 'default' => 'asc', + 'enum' => ['asc', 'desc'], + 'example' => 'Asc', + 'title' => '', ], ], - [ - 'name' => 'Effect', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The display effect for the component. Valid values:'."\n" - ."\n" - .'* **none** (default)'."\n" - .'* **animateH**: horizontal scrolling'."\n" - .'* **animateV**: vertical scrolling'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'animateV', + 'type' => 'object', + 'properties' => [ + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'Order' => ['description' => 'The sort order.', 'type' => 'string', 'example' => 'Asc', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '11', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that meet the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '6', 'title' => ''], + 'LiveSnapshotDetectPornConfigList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveSnapshotDetectPornConfig' => [ + 'description' => 'The list of content moderation configurations.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'OssObject' => ['description' => 'The name of the file stored in OSS.', 'type' => 'string', 'example' => ' {liveApp****}/{liveStream****}/{Date}/{Hour}/{Minute}_{Second}.jpg', 'title' => ''], + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'Interval' => ['description' => 'The sampling interval. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '80', 'title' => ''], + 'OssBucket' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'DomainName' => ['description' => 'The streamer streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'OssEndpoint' => ['description' => 'The name of the OSS endpoint.', 'type' => 'string', 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + 'Scenes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'scene' => [ + 'description' => 'The array of detection scenes.', + 'type' => 'array', + 'items' => ['description' => 'The detection scene. Valid values:'."\n" + ."\n" + .'- **porn** (default): pornography detection.'."\n" + .'- **terrorism**: terrorist content and political sensitivity detection.'."\n" + .'- **ad**: image and text violation detection.'."\n" + .'- **live**: inappropriate live streaming scene detection.'."\n" + .'- **logo**: logo detection.', 'type' => 'string', 'example' => 'porn', 'title' => ''], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PageNum\\": 1,\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"Order\\": \\"Asc\\",\\n \\"TotalPage\\": 11,\\n \\"PageSize\\": 2,\\n \\"TotalNum\\": 6,\\n \\"LiveSnapshotDetectPornConfigList\\": {\\n \\"LiveSnapshotDetectPornConfig\\": [\\n {\\n \\"OssObject\\": \\" {liveApp****}/{liveStream****}/{Date}/{Hour}/{Minute}_{Second}.jpg\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"Interval\\": 80,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"Scenes\\": {\\n \\"scene\\": [\\n \\"porn\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query live streaming content moderation configurations', + 'description' => '- Obtain the streamer streaming domain first, and then invoke this operation to query the content moderation configurations for live streaming. This operation supports sorting in ascending and descending order.'."\n" + ."\n" + .'- Currently, only some live centers support intelligent content moderation for live streaming. For information about the live centers that support this feature, see [Service regions](~~193730~~).'."\n" + ."\n\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 50 calls per second. If the limit is exceeded, the API call is throttled, which may affect your business. Call this operation as needed.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveSnapshotDetectPornConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'ComponentLayer', - 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the component layer, such as the size and layout, The value must be a JSON string. This parameter contains the following fields:'."\n" - ."\n" - .'* **HeightNormalized**: the normalized value of the height of the component layer.'."\n" - .'* **WidthNormalized**: the normalized value of the width of the component layer.'."\n" - .'* **PositionNormalized**: the normalized value of the position of the component layer.'."\n" - .'* **PositionRefer**: the reference coordinates of the component layer.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"HeightNormalized":"1","PositionRefer":"topRight","WidthNormalized":"0","PositionNormalized":["0.1","0.2"]}', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveSnapshotDetectPornConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + ], + 'DescribeLiveSnapshotNotifyConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'TextLayerContent', - 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the text component. The value must be a JSON string. This parameter contains the following fields:'."\n" - ."\n" - .'> This parameter is required if you set ComponentType to text.'."\n" - ."\n" - .'* **SizeNormalized**: the normalized value of the font size. The value of this field equals the font size divided by the output height. Valid values: `0 to 1`. The maximum font size is 1,024, even if the font size calculated based on this field is greater than 1,024.'."\n" - .'* **BorderWidthNormalized**: the normalized value of the border width. The value of this field equals the border width divided by the font size. Valid values: `0 to 1`. Default value: 0. The maximum border width is 16, even if the border width calculated based on this field is greater than 16.'."\n" - .'* **FontName**: the font name. Default value: KaiTi. For more information about the valid values, see **Fonts used in a production studio**.'."\n" - .'* **BorderColor**: the color of the text border. Valid values: 0x000000 to 0xffffff. By default, this parameter is left empty. In this case, the color of the text border is transparent.'."\n" - .'* **Text**: the content of the text. By default, this parameter is left empty. In this case, the text contains no content.'."\n" - .'* **Color**: the color of the text. The default value is 0xff0000, which indicates that the text is in red.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"BorderWidthNormalized":"1","SizeNormalized":"0.2","Color":"0x000000","FontName":"KaiTi","BorderColor":"0x000000","Text":"hello world!"}', - ], + 'AK' => [], ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], + ], + 'parameters' => [ [ - 'name' => 'ImageLayerContent', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the image component. The value must be a JSON string.'."\n" - ."\n" - .'> This parameter is required if you set ComponentType to image.'."\n" - ."\n" - .'The MaterialId field specifies the ID of the material from the media asset library.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"MaterialId":"6cf724c6ebfd4a59b5b3cec6f10d5ecf"}', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CaptionLayerContent', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the subtitle component. The value must be a JSON string. This parameter contains the following fields:'."\n" - ."\n" - .'> This parameter is required if you set ComponentType to caption.'."\n" - ."\n" - .'* **SizeNormalized**: the normalized value of the font size. The value of this field equals the font size divided by the output height. Valid values: `0 to 1`. The maximum font size is 1,024, even if the font size calculated based on this field is greater than 1,024.'."\n" - .'* **BorderWidthNormalized**: the normalized value of the border width. The value of this field equals the border width divided by the font size. Valid values: `0 to 1`. Default value: 0. The maximum border width is 16, even if the border width calculated based on this field is greater than 16.'."\n" - .'* **FontName**: the font name. Default value: KaiTi. For more information about the valid values, see **Fonts used in a production studio**.'."\n" - .'* **BorderColor**: the color of the text border. Valid values: 0x000000 to 0xffffff. By default, this parameter is left empty. In this case, the color of the text border is transparent.'."\n" - .'* **LocationId**: the channel ID of the source subtitles.'."\n" - .'* **SourceLan**: the source language of the subtitles in the video. Valid values: en (English), cn (Chinese), es (Spanish), and ru (Russian). Default value: cn.'."\n" - .'* **TargetLan**: the target language of the subtitles in the video. If you do not specify this field, speech recognition is used. If you specify this field, translation is used. Valid values: en (English), cn (Chinese), es (Spanish), and ru (Russian).'."\n" - .'* **ShowSourceLan**: specifies whether to display the source language. A value of true specifies that the source language is displayed. A value of false specifies that the source language is not displayed. Default value: false.'."\n" - .'* **Truncation**: specifies whether to allow subtitle truncation. A value of true specifies that the subtitles can be truncated. A value of false specifies that the subtitles cannot be truncated. Default value: false.'."\n" - .'* **SourceLanPerLineWordCount**: the number of words displayed in each line of the source language. This field takes effect only if you set Truncation to true. Default value: 20.'."\n" - .'* **TargetLanPerLineWordCount**: the number of words displayed in each line of the target language. This field takes effect only if you set Truncation to true. Default value: 20.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"BorderWidthNormalized":0.01,"SizeNormalized":0.05,"Color":"0x000000","LocationId":"RV01","SourceLan":"cn","FontName":"KaiTi","BorderColor":"0xffffff"}', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'www.yourdomain***.com', 'title' => ''], ], ], 'responses' => [ @@ -36161,102 +28570,58 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'ComponentId' => [ - 'description' => 'The ID of the component. You can use the ID as a request parameter in the API operation that is called to query components in a production studio.'."\n", - 'type' => 'string', - 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], + 'DomainName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'www.yourdomain***.com', 'title' => ''], + 'NotifyAuthKey' => ['description' => 'The authentication key for the callback.', 'type' => 'string', 'example' => 'yourkey', 'title' => ''], + 'NotifyReqAuth' => ['description' => 'Indicates whether callback authentication is enabled. Valid values:'."\n" + ."\n" + .'- **yes**: Enabled.'."\n" + ."\n" + .'- **no**: Disabled.', 'type' => 'string', 'example' => 'yes', 'title' => ''], + 'NotifyUrl' => ['description' => 'The callback URL.', 'type' => 'string', 'example' => 'http://callback.yourdomain***.com', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5056369B-D337-499E-B8B7-B761BD37B08A', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidPositionNormalized.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'CanvasNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'title' => 'DescribeLiveSnapshotNotifyConfig', + 'summary' => 'Queries the configuration for snapshot callbacks.', + 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveSnapshotNotifyConfig'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveSnapshotNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ComponentId\\": \\"05ab713c-676e-49c0-96ce-cc408da1****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 05ab713c-676e-49c0-96ce-cc408da1****\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'ModifyCasterComponent', - 'description' => 'You can call this operation to modify a text, image, or subtitle component.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## Fonts used in a production studio'."\n" - ."\n" - .'|Font|Values of FontName|'."\n" - .'|---|---|'."\n" - .'|KaiTi|KaiTi|'."\n" - .'|Alibaba PuHuiTi-Regular|AlibabaPuHuiTi-Regular|'."\n" - .'|Alibaba PuHuiTi-Bold|AlibabaPuHuiTi-Bold|'."\n" - .'|Alibaba PuHuiTi-Light|AlibabaPuHuiTi-Light|'."\n" - .'|Source Han Sans-Regular|NotoSansHans-Regular|'."\n" - .'|Source Han Sans-Bold|NotoSansHans-Bold|'."\n" - .'|Source Han Sans-Light|NotoSansHans-Light|', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainName\\": \\"www.yourdomain***.com\\",\\n \\"NotifyAuthKey\\": \\"yourkey\\",\\n \\"NotifyReqAuth\\": \\"yes\\",\\n \\"NotifyUrl\\": \\"http://callback.yourdomain***.com\\",\\n \\"RequestId\\": \\"5056369B-D337-499E-B8B7-B761BD37B08A\\"\\n}","type":"json"}]', ], - 'DescribeCasterComponents' => [ - 'summary' => 'Queries the components of a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveStreamAuthChecking' => [ + 'summary' => 'Queries the authentication status of an active stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -36267,44 +28632,23 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The ingest domain or streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'ComponentId', + 'name' => 'Url', 'in' => 'query', - 'schema' => [ - 'description' => 'The component ID. If the component was added by calling the [AddCasterComponent](~~2848030~~) operation, check the value of the response parameter ComponentId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], + 'schema' => ['description' => 'The complete ingest or streaming URL. You can use the [URL generator](~~197400~~) to generate a URL.', 'type' => 'string', 'required' => true, 'example' => 'http://example.com/live/test.flv?auth_key=1664248******', 'title' => ''], ], ], 'responses' => [ @@ -36312,415 +28656,105 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Components' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Component' => [ - 'description' => 'The components.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'CaptionLayerContent' => [ - 'description' => 'The information about the subtitle component.'."\n", - 'type' => 'object', - 'properties' => [ - 'BorderColor' => [ - 'description' => 'The color of the text border.'."\n" - ."\n" - .'Valid values: **0x000000 to 0xffffff**. If the value of this parameter is "", this parameter does not take effect.'."\n", - 'type' => 'string', - 'example' => '0x000000', - ], - 'BorderWidthNormalized' => [ - 'description' => 'The normalized value of the width of the text border. The value of this parameter equals the border width divided by the font size.'."\n" - ."\n" - .'The maximum width of the text border is **16**, even if the border width calculated based on this parameter is greater than **16**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0', - ], - 'Color' => [ - 'description' => 'The color of the text. Valid values: **0x000000 to 0xffffff**.'."\n", - 'type' => 'string', - 'example' => '0x000000', - ], - 'FontName' => [ - 'description' => 'The font of the text, which is specified by the system. Valid values:'."\n" - ."\n" - .'* **KaiTi**'."\n" - .'* **AlibabaPuHuiTi-Regular**'."\n" - .'* **AlibabaPuHuiTi-Bold**'."\n" - .'* **NAlibabaPuHuiTi-Light**'."\n" - .'* **NotoSansHans-Regular**'."\n" - .'* **NotoSansHans-Bold**'."\n" - .'* **NotoSansHans-Light**'."\n" - ."\n" - .'****'."\n", - 'type' => 'string', - 'example' => 'KaiTi', - ], - 'LineSpaceNormalized' => [ - 'description' => 'The line spacing, which indicates the interval between every two lines.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0', - ], - 'LocationId' => [ - 'description' => 'The location ID of the component. If the value of the ComponentType parameter is caption, the LocationId parameter indicates the channel ID of the video source that is referenced by the component.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - 'PtsOffset' => [ - 'description' => 'The offset between the presentation timestamps (PTS) of the subtitles and the audio.'."\n" - ."\n" - .'Valid values: **-10000 to 10000**. Default value: **0**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'ShowSourceLan' => [ - 'description' => 'Indicates whether the source language of the subtitles is displayed. Valid values:'."\n" - ."\n" - .'* **true**: The source language is displayed.'."\n" - .'* **false**: The source language is not displayed.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'SizeNormalized' => [ - 'description' => 'The normalized value of the font size of the subtitles. The value of this parameter equals the font size divided by the output height.``'."\n" - ."\n" - .'The maximum font size of the subtitles is **1,024**, even if the font size calculated based on this parameter is greater than **1,024**. If the value of this parameter is **-1**, this parameter does not take effect.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.1', - ], - 'SourceLan' => [ - 'description' => 'The source language of the audio in the video source. Valid values:'."\n" - ."\n" - .'* **en**: English'."\n" - .'* **cn**: Chinese'."\n" - .'* **es**: Spanish'."\n" - .'* **ru**: Russian'."\n", - 'type' => 'string', - 'example' => 'cn', - ], - 'TargetLan' => [ - 'description' => 'The target language of the audio in the video source. Valid values:'."\n" - ."\n" - .'* **en**: English'."\n" - .'* **cn**: Chinese'."\n" - .'* **es**: Spanish'."\n" - .'* **ru**: Russian'."\n", - 'type' => 'string', - 'example' => 'cn', - ], - 'WordCountPerLine' => [ - 'description' => 'The maximum number of words displayed in each line.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '15', - ], - 'WordSpaceNormalized' => [ - 'description' => 'The word spacing, which indicates the interval between every two words.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0', - ], - 'WordsCount' => [ - 'description' => 'The number of words displayed on the component. The value of this parameter can be specified based on the font size.'."\n" - ."\n" - .'Valid values: **10 to 50**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '35', - ], - ], - ], - 'ComponentId' => [ - 'description' => 'The component ID.'."\n", - 'type' => 'string', - 'example' => '72d2ec7a-4cd7-4a01-974b-7cd53947****', - ], - 'ComponentLayer' => [ - 'description' => 'The information about the component layer, such as the size and layout.'."\n", - 'type' => 'object', - 'properties' => [ - 'HeightNormalized' => [ - 'description' => 'The normalized value for heights of the elements in the layer. The widths of the elements are proportionally scaled based on this parameter.'."\n" - ."\n" - .'If the value of this parameter is **0**, the elements in the layer are not scaled.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.5', - ], - 'PositionNormalizeds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Position' => [ - 'description' => 'The normalized value of the position of the layer, in the format of `[x,y]`. Example: `[0,0]`.'."\n" - ."\n" - .'> The values of x and y need to be normalized.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The value.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.3', - ], - ], - ], - ], - 'PositionRefer' => [ - 'description' => 'The reference coordinates of the layer. Valid values:'."\n" - ."\n" - .'* **topLeft**: the upper-left corner'."\n" - .'* **topRight**: the upper-right corner'."\n" - .'* **bottomLeft**: the lower-left corner'."\n" - .'* **bottomRight**: the lower-right corner'."\n", - 'type' => 'string', - 'example' => 'topLeft', - ], - 'Transparency' => [ - 'description' => 'The transparency of the layer. Valid values: 0 to 255.'."\n" - ."\n" - .'A value of **0** indicates that the layer is completely transparent. A value of **255** indicates that the layer is completely opaque.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '200', - ], - 'WidthNormalized' => [ - 'description' => 'The normalized value for widths of the elements in the layer. The heights of the elements are proportionally scaled based on this parameter. If the value of this parameter is **0**, the elements in the layer are not scaled.'."\n" - ."\n" - .'> This parameter conflicts with the HeightNormalized parameter. If both of them are specified, only the HeightNormalized parameter takes effect. If only one of them is specified, the latest specified value is used.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.5', - ], - ], - ], - 'ComponentName' => [ - 'description' => 'The name of the component. By default, the name is the ID of the component.'."\n", - 'type' => 'string', - 'example' => 'component_name', - ], - 'ComponentType' => [ - 'description' => 'The type of the component. Valid values:'."\n" - ."\n" - .'* **text**: a text component'."\n" - .'* **image**: an image component'."\n" - .'* **caption**: a caption component'."\n", - 'type' => 'string', - 'example' => 'text', - ], - 'Effect' => [ - 'description' => 'The display effect for the component. Valid values:'."\n" - ."\n" - .'* **none**'."\n" - .'* **animateH**: horizontal scrolling'."\n" - .'* **animateV**: vertical scrolling'."\n", - 'type' => 'string', - 'example' => 'animateV', - ], - 'ImageLayerContent' => [ - 'description' => 'The information about the image component. This parameter is returned only for image components.'."\n", - 'type' => 'object', - 'properties' => [ - 'MaterialId' => [ - 'description' => 'The ID of the material from the media library.'."\n", - 'type' => 'string', - 'example' => '6cf724c6ebfd4a59b5b3cec6f10d****', - ], - ], - ], - 'LocationId' => [ - 'description' => 'The location ID of the component.'."\n" - ."\n" - .'Each location ID can be assigned to only one component and must be in the RC\\[Number] format. The values of this parameter are in ascending order, for example, from RC01 to RC12.'."\n", - 'type' => 'string', - 'example' => 'RC01', - ], - 'TextLayerContent' => [ - 'description' => 'The information about the text component. This parameter is returned only for text components.'."\n", - 'type' => 'object', - 'properties' => [ - 'BorderColor' => [ - 'description' => 'The color of the text border. Valid values: **0x000000 to 0xffffff**. If the value of this parameter is **""**, this parameter does not take effect.'."\n", - 'type' => 'string', - 'example' => '0x000000', - ], - 'BorderWidthNormalized' => [ - 'description' => 'The normalized value of the width of the text border. The value of this parameter equals the border width divided by the font size.****'."\n" - ."\n" - .'The maximum width of the text border is **16**, even if the border width calculated based on this parameter is greater than **16**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0', - ], - 'Color' => [ - 'description' => 'The color of the text. Valid values: **0x000000 to 0xffffff**.'."\n", - 'type' => 'string', - 'example' => '0xff0000', - ], - 'FontName' => [ - 'description' => 'The font of the text, which is specified by the system. Valid values:'."\n" - ."\n" - .'* **KaiTi**'."\n" - .'* **AlibabaPuHuiTi-Regular**'."\n" - .'* **AlibabaPuHuiTi-Bold**'."\n" - .'* **NAlibabaPuHuiTi-Light**'."\n" - .'* **NotoSansHans-Regular**'."\n" - .'* **NotoSansHans-Bold**'."\n" - .'* **NotoSansHans-Light**'."\n" - ."\n" - .'****'."\n", - 'type' => 'string', - 'example' => 'KaiTi', - ], - 'SizeNormalized' => [ - 'description' => 'The normalized value of the font size of the text.'."\n" - ."\n" - .'The value of this parameter equals the font size divided by the output height.**** The maximum font size of the text is **1,024**, even if the font size calculated based on this parameter is greater than **1,024**. If the value of this parameter is **-1**, this parameter does not take effect.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '16', - ], - 'Text' => [ - 'description' => 'The content of the text.'."\n", - 'type' => 'string', - 'example' => 'hello world', - ], - ], - ], - ], - 'description' => '', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3be7ade8-d907-483c-b24a-0dad45******', - ], - 'Total' => [ - 'description' => 'The total number of entries.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3', - ], + 'Description' => ['description' => 'The error message returned if authentication failed.', 'type' => 'string', 'example' => 'INVALID AUTH_KEY', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16F08B4E-14FD-5D72-AB2F-BAFA4C4D57F1', 'title' => ''], + 'Status' => ['description' => 'Indicates whether the authentication is passed.'."\n" + ."\n" + .'- pass: The authentication is passed.'."\n" + ."\n" + .'- false: The authentication failed.', 'type' => 'string', 'example' => 'pass', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Components\\": {\\n \\"Component\\": [\\n {\\n \\"CaptionLayerContent\\": {\\n \\"BorderColor\\": \\"0x000000\\",\\n \\"BorderWidthNormalized\\": 0,\\n \\"Color\\": \\"0x000000\\",\\n \\"FontName\\": \\"KaiTi\\",\\n \\"LineSpaceNormalized\\": 0,\\n \\"LocationId\\": \\"RV01\\",\\n \\"PtsOffset\\": 0,\\n \\"ShowSourceLan\\": false,\\n \\"SizeNormalized\\": 0.1,\\n \\"SourceLan\\": \\"cn\\",\\n \\"TargetLan\\": \\"cn\\",\\n \\"WordCountPerLine\\": 15,\\n \\"WordSpaceNormalized\\": 0,\\n \\"WordsCount\\": 35\\n },\\n \\"ComponentId\\": \\"72d2ec7a-4cd7-4a01-974b-7cd53947****\\",\\n \\"ComponentLayer\\": {\\n \\"HeightNormalized\\": 0.5,\\n \\"PositionNormalizeds\\": {\\n \\"Position\\": [\\n 0.3\\n ]\\n },\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"Transparency\\": 200,\\n \\"WidthNormalized\\": 0.5\\n },\\n \\"ComponentName\\": \\"component_name\\",\\n \\"ComponentType\\": \\"text\\",\\n \\"Effect\\": \\"animateV\\",\\n \\"ImageLayerContent\\": {\\n \\"MaterialId\\": \\"6cf724c6ebfd4a59b5b3cec6f10d****\\"\\n },\\n \\"LocationId\\": \\"RC01\\",\\n \\"TextLayerContent\\": {\\n \\"BorderColor\\": \\"0x000000\\",\\n \\"BorderWidthNormalized\\": 0,\\n \\"Color\\": \\"0xff0000\\",\\n \\"FontName\\": \\"KaiTi\\",\\n \\"SizeNormalized\\": 16,\\n \\"Text\\": \\"hello world\\"\\n }\\n }\\n ]\\n },\\n \\"RequestId\\": \\"3be7ade8-d907-483c-b24a-0dad45******\\",\\n \\"Total\\": 3\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n 0x000000\\n 0\\n 0x000000\\n KaiTi\\n 0\\n RV01\\n 0\\n false\\n 0.1\\n cn\\n cn\\n 15\\n 0\\n 35\\n \\n 72d2ec7a-4cd7-4a01-974b-7cd53947****\\n \\n 0.5\\n 0.3\\n topLeft\\n 200\\n 0.5\\n \\n component_name\\n text\\n animateV\\n \\n 6cf724c6ebfd4a59b5b3cec6f10d****\\n \\n RC01\\n \\n 0x000000\\n 0\\n 0xff0000\\n KaiTi\\n 16\\n hello world\\n \\n \\n 3be7ade8-d907-483c-b24a-0dad4595beaf\\n 3\\n","errorExample":""}]', - 'title' => 'DescribeCasterComponents', - 'description' => 'You can call the [AddCasterComponent](~~2848030~~) operation to add components to a production studio and then call this operation to query the components of the production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'title' => 'DescribeLiveStreamAuthChecking', + 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'responseParamsDescription' => '### Reasons for authentication failure'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'CopyCasterSceneConfig' => [ - 'summary' => 'Applies the configuration of a PVW scene to a PGM scene.', - 'methods' => [ - 'post', - 'get', + .'| Reason | Description |'."\n" + .'| ----------------- | --------------------------------------------------------- |'."\n" + .'| INVALID AUTH_KEY | The auth_key parameter in the signed URL is invalid. |'."\n" + .'| INVALID TIMESTAMP | The timestamp in the signed URL is invalid. |'."\n" + .'| INVALID ALIAUTH | The configured authentication method is invalid. |'."\n" + .'| INVALID MD5HASH | The string calculated using the MD5 algorithm is invalid. |', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamAuthChecking'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamAuthChecking', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"INVALID AUTH_KEY\\",\\n \\"RequestId\\": \\"16F08B4E-14FD-5D72-AB2F-BAFA4C4D57F1\\",\\n \\"Status\\": \\"pass\\"\\n}","type":"json"}]', + ], + 'DescribeLiveStreamBitRateData' => [ + 'summary' => 'Queries the frame rates and bitrates of an RTMP live stream within a specified time range. This operation is applicable to retrieving historical data.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ingest domain.'."\n" + .'> - When you specify DomainName, make sure that the domain name is a live streaming domain name and that the user calling this operation has the required permissions on the domain name.'."\n" + .'> - You can call the DescribeLiveUserDomains operation to query available domain names.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs. You can view AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'FromSceneId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the source scene, which must be a PVW scene.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'f1a361f4-bee3-436d-ae6e-d38e6943****', - ], + 'schema' => ['description' => 'The name of the stream. You can view StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'ToSceneId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the destination scene, which must be a PGM scene.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', - ], + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'required' => false, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + ."\n" + .'> '."\n" + .'> - EndTime must be later than StartTime, and the interval between EndTime and StartTime cannot exceed 30 days.', 'type' => 'string', 'required' => false, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], ], 'responses' => [ @@ -36728,162 +28762,109 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A5****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'FrameRateAndBitRateInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'FrameRateAndBitRateInfo' => [ + 'description' => 'The frame rate and bitrate information of each live stream.', + 'type' => 'array', + 'items' => [ + 'description' => 'The frame rate and bitrate information of each live stream.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The statistical time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2016-09-13T16:04:00Z', 'title' => ''], + 'VideoFrameRate' => ['description' => 'The video frame rate of the live stream. Unit: FPS.', 'type' => 'number', 'format' => 'float', 'example' => '30', 'title' => ''], + 'AudioFrameRate' => ['description' => 'The audio frame rate of the live stream. Unit: FPS.', 'type' => 'number', 'format' => 'float', 'example' => '100', 'title' => ''], + 'StreamUrl' => ['description' => 'The URL of the live stream.', 'type' => 'string', 'example' => 'rtmp://guide.aliyundoc.com/liveAppName****/liveSteamName****', 'title' => ''], + 'BitRate' => ['description' => 'The bitrate of the live stream. Unit: Bps.', 'type' => 'number', 'format' => 'float', 'example' => '600', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidSceneId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.ConfigError', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidAppName.Malformed', 'errorMessage' => 'Specified AppName is malformed.', 'description' => ''], + ['errorCode' => 'InvalidStreamName.Malformed', 'errorMessage' => 'Specified StreamName is malformed.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidTime.ValueNotSupported', 'errorMessage' => 'StartTime or EndTime is miss match.', 'description' => ''], + ['errorCode' => 'InvalidStreamNumber.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid number of streams, please check and try again.'], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid StartTime and EndTime interval, please check and try again.'], ], - 404 => [ - [ - 'errorCode' => 'ResourceInChannel.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 412 => [ - [ - 'errorCode' => 'ResourceInChannel.PreConditionFailed', - 'errorMessage' => '%s, please try again later.', - ], - [ - 'errorCode' => 'ResourceInChannel.Invalid', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"FrameRateAndBitRateInfos\\": {\\n \\"FrameRateAndBitRateInfo\\": [\\n {\\n \\"Time\\": \\"2016-09-13T16:04:00Z\\",\\n \\"VideoFrameRate\\": 30,\\n \\"AudioFrameRate\\": 100,\\n \\"StreamUrl\\": \\"rtmp://guide.aliyundoc.com/liveAppName****/liveSteamName****\\",\\n \\"BitRate\\": 600\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query frame rates and bitrates of an RTMP live stream', + 'description' => 'Queries the frame rates and bitrates of an RTMP live stream within a specified time range. This operation is applicable to retrieving historical data.'."\n" + ."\n\n" + .'## QPS limit'."\n" + .'The maximum number of queries per second (QPS) per user for this operation is 50. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation as appropriate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamBitRateData'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamBitRateData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A5****\\"\\n}","type":"json"}]', - 'title' => 'CopyCasterSceneConfig', - 'description' => '* Streaming fees and transcoding fees are calculated based on the corresponding output resolutions and durations. For more information, see [Billing of production studios](~~64531~~).'."\n" - .'* You can call this operation to apply the configuration of a source scene to a destination scene. This operation takes effect only if the source scene is a PVW scene and the destination scene is a PGM scene. A PVW scene is a preview scene, and a PGM scene is a program scene.'."\n" - .'* The PVW scene and PGM scene must be in the same production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'DeleteCasterSceneConfig' => [ - 'summary' => 'Deletes the settings of a scene.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveStreamCount' => [ + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~69338~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'b4810848-bcf9-4aef-bd4a-e6bba2d9****', - ], - ], - [ - 'name' => 'SceneId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Type', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the setting that you want to delete. Valid values:'."\n" - ."\n" - .'* **Component**: component setting'."\n" - .'* **Layout**: layout setting'."\n" - .'* **All**: component and layout settings'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'Component', - ], + 'schema' => ['description' => 'The streaming domain.'."\n" + ."\n" + .'> Make sure that the domain name is added to ApsaraVideo Live and that you have the permissions to operate on it.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -36891,187 +28872,135 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB9*********', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'FCFFE4A4-F34F-4EEF-B401-36A01689AFBC', 'title' => ''], + 'StreamCountInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamCountInfo' => [ + 'description' => 'The stream statistics.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Type' => ['description' => 'The type of the active stream. Valid values:'."\n" + ."\n" + .'- **raw**: original stream.'."\n" + ."\n" + .'- **trans**: transcoded stream.', 'type' => 'string', 'example' => 'raw', 'title' => ''], + 'Count' => ['description' => 'The number of active streams.', 'type' => 'integer', 'format' => 'int64', 'example' => '3', 'title' => ''], + 'Limit' => ['description' => 'The limit on the number of concurrent ingested streams. This parameter is returned only for users on the whitelist.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + 'StreamCountDetails' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamCountDetail' => [ + 'description' => 'The stream details.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'VideoDataRate' => ['description' => 'The video bitrate. This parameter is returned only when statistics for transcoded streams are queried.', 'type' => 'integer', 'format' => 'int64', 'example' => '390', 'title' => ''], + 'Format' => ['description' => 'The video codec. Valid values:'."\n" + ."\n" + .'- **h264**.'."\n" + ."\n" + .'- **h265**.', 'type' => 'string', 'example' => 'h264', 'title' => ''], + 'Count' => ['description' => 'The number of active streams.', 'type' => 'integer', 'format' => 'int64', 'example' => '2', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectSceneStatus.Inuse', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSceneId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.ConfigError', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVideo.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB9*********\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteCasterSceneConfig', - 'description' => 'You can call this operation to delete the settings of a scene, such as the component setting, layout setting, or both of them.'."\n" + 'title' => 'DescribeLiveStreamCount', + 'summary' => 'Retrieves the real-time count of active original and transcoded streams for a specified streaming domain.', + 'description' => 'Before you call this operation, obtain the streaming domain name in the console. The returned stream count includes streams encoded in H.264 and H.265 formats.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'You can call this operation only one time per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UpdateCasterSceneConfig' => [ - 'summary' => 'Modifies a scene, including the layout, without invalidating the previous configurations. This operation is more efficient than the SetCasterSceneConfig operation.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamCount'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamCount', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"FCFFE4A4-F34F-4EEF-B401-36A01689AFBC\\",\\n \\"StreamCountInfos\\": {\\n \\"StreamCountInfo\\": [\\n {\\n \\"Type\\": \\"raw\\",\\n \\"Count\\": 3,\\n \\"Limit\\": 10,\\n \\"StreamCountDetails\\": {\\n \\"StreamCountDetail\\": [\\n {\\n \\"VideoDataRate\\": 390,\\n \\"Format\\": \\"h264\\",\\n \\"Count\\": 2\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamDelayConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'ComponentId', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The IDs of the components. Components in the scene are listed from the bottom to the top in an array.'."\n" - ."\n" - .'> N indicates a sequence number. Examples:\\'."\n" - .'ComponentId.1 indicates the ID of the first component.\\'."\n" - .'ComponentId.2 indicates the ID of the second component.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of component N. Components in the scene are listed from the bottom to the top in an array.'."\n" - ."\n" - .'> N indicates a sequence number. Examples:\\'."\n" - .'ComponentId.1 indicates the ID of the first component.\\'."\n" - .'ComponentId.2 indicates the ID of the second component.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '["98778372-c30f-4442-85ba-2e3e4e3d****"]', - ], - 'required' => false, - 'example' => '["98778372-c30f-4442-85ba-2e3e4e3d****"]', - 'maxItems' => 10, - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], - ], - [ - 'name' => 'SceneId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'LayoutId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the layout. If you call the [DescribeCasterLayouts](~~2848028~~) operation to query the layouts of the production studio, check the value of the response parameter LayoutId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'eeab74fb-379d-4599-a93d-86d16a05****', - ], + 'schema' => ['description' => 'The playback domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -37079,341 +29008,220 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '785C9CB0-EB8A-4912-BBF2-966BEFD32DC3', 'title' => ''], + 'LiveStreamHlsDelayConfig' => [ + 'description' => 'The latency of HLS-based playback.', + 'type' => 'object', + 'properties' => [ + 'Delay' => ['description' => 'The playback latency. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], + 'Level' => ['description' => 'The latency level. Valid values:'."\n" + ."\n" + .'- **short**: The latency is 2 seconds or less.'."\n" + ."\n" + .'- **medium**: The latency is greater than 2 seconds and 4 seconds or less.'."\n" + ."\n" + .'- **long**: The latency is greater than 4 seconds.', 'type' => 'string', 'example' => 'short', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'LiveStreamFlvDelayConfig' => [ + 'description' => 'The latency of FLV-based playback.', + 'type' => 'object', + 'properties' => [ + 'Delay' => ['description' => 'The playback latency. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '5', 'title' => ''], + 'Level' => ['description' => 'The latency level. Valid values:'."\n" + ."\n" + .'- **short**: The latency is 2 seconds or less.'."\n" + ."\n" + .'- **medium**: The latency is greater than 2 seconds and 4 seconds or less.'."\n" + ."\n" + .'- **long**: The latency is greater than 4 seconds.', 'type' => 'string', 'example' => 'medium', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'LiveStreamRtmpDelayConfig' => [ + 'description' => 'The latency of RTMP-based playback.', + 'type' => 'object', + 'properties' => [ + 'Delay' => ['description' => 'The playback latency. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'example' => '4', 'title' => ''], + 'Level' => ['description' => 'The latency level. Valid values:'."\n" + ."\n" + .'- **short**: The latency is 2 seconds or less.'."\n" + ."\n" + .'- **medium**: The latency is greater than 2 seconds and 4 seconds or less.'."\n" + ."\n" + .'- **long**: The latency is greater than 4 seconds.', 'type' => 'string', 'example' => 'short', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.ConfigError', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ComponentNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'SceneNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Waiting', - 'errorMessage' => '%s, please try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaptionResource', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], + 'errorCodes' => [], + 'title' => 'DescribeLiveStreamDelayConfig', + 'summary' => 'Queries the live streaming latency.', + 'description' => 'You must first obtain a streaming domain name. You can then call this operation to query the live streaming latency.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'This operation supports up to 1,000 queries per second (QPS) per user. If you exceed the limit, your calls are throttled, which may affect your business. Plan your calls accordingly.', + 'extraInfo' => '| HttpCode | 错误码|错误信息| 描述|'."\n" + .'|---------------|--------|'."\n" + .'| 500| Internal|The request processing has failed due to some unknown error.| 后台发生未知错误。|'."\n" + .'| 404| InvalidDomain.NotFound|The domain provided does not exist in our records.| 当前账户下未查到域名。|'."\n" + .'| 403| IllegalOperation|Illegal domain operate is not permitted.| 不支持当前操作,如:非直播类域名。|'."\n" + ."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeLiveStreamDelayConfig'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVideo.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ResourceInChannel.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 412 => [ - [ - 'errorCode' => 'ResourceInChannel.PreConditionFailed', - 'errorMessage' => '%s, please try again later.', - ], - [ - 'errorCode' => 'ResourceInChannel.Invalid', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\tCF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}"}]', - 'title' => 'UpdateCasterSceneConfig', - 'description' => 'You can call this operation to modify a scene, including the layout, without invalidating the previous configurations. This operation is more efficient than the SetCasterSceneConfig operation.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"785C9CB0-EB8A-4912-BBF2-966BEFD32DC3\\",\\n \\"LiveStreamHlsDelayConfig\\": {\\n \\"Delay\\": 3,\\n \\"Level\\": \\"short\\"\\n },\\n \\"LiveStreamFlvDelayConfig\\": {\\n \\"Delay\\": 5,\\n \\"Level\\": \\"medium\\"\\n },\\n \\"LiveStreamRtmpDelayConfig\\": {\\n \\"Delay\\": 4,\\n \\"Level\\": \\"short\\"\\n }\\n}","type":"json"}]', ], - 'SetCasterSceneConfig' => [ - 'summary' => 'Configures all settings of a scene. This is done by clearing all previous settings of the scene and applying new settings, including the layout setting, to the scene.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveStreamDetailFrameRateAndBitRateData' => [ + 'methods' => ['get', 'post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '215287', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ComponentId', + 'name' => 'DomainName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The IDs of the components. Components in the scene are listed from the bottom to the top in an array.'."\n" - ."\n" - .'> N indicates a sequence number. Examples:\\'."\n" - .'ComponentId.1 indicates the ID of the first component.\\'."\n" - .'ComponentId.2 indicates the ID of the second component.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of component N. Components in the scene are listed from the bottom to the top in an array.'."\n" - ."\n" - .'> N indicates a sequence number. Examples:\\'."\n" - .'ComponentId.1 indicates the ID of the first component.\\'."\n" - .'ComponentId.2 indicates the ID of the second component.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '[ "a2b8e671-2fe5-4642-a2ec-bf931826****", "a2b8e671-2fe5-4642-a2ec-28374657****"]', - ], - 'required' => false, - 'example' => '[ "a2b8e671-2fe5-4642-a2ec-bf931826****", "a2b8e671-2fe5-4642-a2ec-28374657****"]', - 'maxItems' => 10, - ], + 'schema' => ['description' => 'Your ingest domain or streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~69338~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'AppName', 'title' => ''], ], [ - 'name' => 'SceneId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', - ], + 'schema' => ['description' => 'The name of the live stream. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'exampleStreamName', 'title' => ''], ], [ - 'name' => 'LayoutId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the layout. If you call the [DescribeCasterLayouts](~~60260~~) operation to query the layouts of the production studio, check the value of the response parameter LayoutId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0c6da077-f037-49e8-8440-3be13393****', - ], + 'schema' => ['description' => 'The start of the time range to query. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" + ."\n" + .'> If you specify an invalid time range, or if you leave both StartTime and EndTime empty, data from the last hour is queried by default.', 'type' => 'string', 'required' => false, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', - ], - ], - 'description' => '', + 'FrameRateAndBitRateInfos' => [ + 'description' => 'The detailed audio and video frame rate and bitrate data for each time interval.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AudioBitRate' => ['description' => 'The audio bitrate of the live stream. Unit: Bps.', 'type' => 'number', 'format' => 'float', 'example' => '200', 'title' => ''], + 'AudioFrameRate' => ['description' => 'The audio frame rate of the live stream. Unit: FPS.', 'type' => 'number', 'format' => 'float', 'example' => '60', 'title' => ''], + 'BitRate' => ['description' => 'The bitrate of the live stream. Unit: Bps.', 'type' => 'number', 'format' => 'float', 'example' => '1420', 'title' => ''], + 'StreamUrl' => ['description' => 'The URL of the live stream.', 'type' => 'string', 'example' => 'rtmp://example.com/AppName/exampleStreamName', 'title' => ''], + 'Time' => ['description' => 'The timestamp of the data. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'example' => '2016-09-13T16:04:00Z', 'title' => ''], + 'VideoBitRate' => ['description' => 'The video bitrate of the live stream. Unit: Bps.', 'type' => 'number', 'format' => 'float', 'example' => '1200', 'title' => ''], + 'VideoFrameRate' => ['description' => 'The video frame rate of the live stream. Unit: FPS.', 'type' => 'number', 'format' => 'float', 'example' => '30', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7'], + ], + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidSceneId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaptionResource', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ComponentNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.ConfigError', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'DescribeLiveStreamDetailFrameRateAndBitRateData', + 'summary' => 'Queries the detailed audio and video frame rates and bitrates of a live stream that uses the Real-Time Messaging Protocol (RTMP).', + 'description' => '- You can call this operation to query the audio and video frame rates and bitrates of a live stream that uses RTMP within a specified time range.'."\n" + ."\n" + .'- This operation is used to query monitoring data. Because the data collection method is different from the one used for billing, do not use the returned data for billing purposes.'."\n" + ."\n" + .'- You can query data from the last 90 days.'."\n" + ."\n" + .'- The data returned by this operation has a latency of 3 to 5 minutes.'."\n" + ."\n" + .'- The maximum time range that you can specify in a single request is 1 hour.', + 'responseParamsDescription' => '> The data collection methods for the total, audio, and video bitrates are different. Therefore, the sum of the audio and video bitrates may not equal the total bitrate. The data returned by this operation is for reference and monitoring only. Do not use this data for usage calculation or billing.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamDetailFrameRateAndBitRateData'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ResourceInChannel.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 412 => [ - [ - 'errorCode' => 'ResourceInChannel.PreConditionFailed', - 'errorMessage' => '%s, please try again later.', - ], - [ - 'errorCode' => 'ResourceInChannel.Invalid', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamDetailFrameRateAndBitRateData', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\tCF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}"}]', - 'title' => 'SetCasterSceneConfig', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'This operation configures a scene by clearing all previous settings of the scene and applying new settings, including the layout setting, to the scene.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"FrameRateAndBitRateInfos\\": [\\n {\\n \\"AudioBitRate\\": 200,\\n \\"AudioFrameRate\\": 60,\\n \\"BitRate\\": 1420,\\n \\"StreamUrl\\": \\"rtmp://example.com/AppName/exampleStreamName\\",\\n \\"Time\\": \\"2016-09-13T16:04:00Z\\",\\n \\"VideoBitRate\\": 1200,\\n \\"VideoFrameRate\\": 30\\n }\\n ],\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\"\\n}","type":"json"}]', ], - 'DescribeCasterScenes' => [ - 'summary' => 'Queries the scenes of a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveStreamHistoryUserNum' => [ + 'summary' => 'Queries the number of historical online users for a live stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -37424,44 +29232,37 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~69338~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'SceneId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', - ], + 'schema' => ['description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" + ."\n" + .'> You can query data in the last **30** days.', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" + ."\n" + .'> The time range specified by the StartTime and EndTime parameters cannot exceed one day. The end time must not be later than the current time.', 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], ], 'responses' => [ @@ -37469,330 +29270,125 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'The ID of the scene.'."\n", - ], - 'SceneList' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F5FF8', 'title' => ''], + 'LiveStreamUserNumInfos' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'Scene' => [ - 'description' => 'The scenes.'."\n", + 'LiveStreamUserNumInfo' => [ + 'description' => 'The number of historical online users for the live stream.', 'type' => 'array', 'items' => [ - 'description' => 'The information about the scene.'."\n", 'type' => 'object', 'properties' => [ - 'ComponentIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'componentId' => [ - 'description' => 'The components.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the component.'."\n", - 'type' => 'string', - 'example' => '["1506396160-0-0-7de771a77102680861853af862d5****"]', - ], - ], - ], - ], - 'LayoutId' => [ - 'description' => 'The ID of the layout.'."\n", - 'type' => 'string', - 'example' => '37cb2f8b-f152-4338-b928-6704f71d****', - ], - 'OutputType' => [ - 'description' => 'Indicates whether the output video is in PVW mode or PGM mode. Valid values:'."\n" - ."\n" - .'* **0**: in PVW mode.'."\n" - .'* **1**: in PGM mode.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'SceneId' => [ - 'description' => 'The ID of the scene. You can use the ID as a request parameter in the API operation that is used to modify the audio configurations of the scene, query the audio configurations of the scene, start the scene, or stop the scene.'."\n", - 'type' => 'string', - 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', - ], - 'SceneName' => [ - 'description' => 'The name of the scene.'."\n", - 'type' => 'string', - 'example' => 'scene1', - ], - 'Status' => [ - 'description' => 'The status of the scene. Valid values:'."\n" - ."\n" - .'* **0**: disabled'."\n" - .'* **1**: enabled'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'StreamInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'StreamInfo' => [ - 'description' => 'The information about the stream.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the stream.'."\n", - 'type' => 'object', - 'properties' => [ - 'OutputStreamUrl' => [ - 'description' => 'The streaming URL.'."\n", - 'type' => 'string', - 'example' => 'http://live/caster/example.net', - ], - 'TranscodeConfig' => [ - 'description' => 'The transcoding configuration. Valid values:'."\n" - ."\n" - .'* **sd**: standard definition'."\n" - .'* **lld**: low definition'."\n" - .'* **lud**: ultra-high definition'."\n" - .'* **lhd**: high definition'."\n", - 'type' => 'string', - 'example' => 'lld', - ], - 'VideoFormat' => [ - 'description' => 'The format. Valid values:'."\n" - ."\n" - .'* **flv**'."\n" - .'* **mp4**'."\n" - .'* **m3u8**'."\n", - 'type' => 'string', - 'example' => 'flv', - ], - ], - ], - ], - ], - ], - 'StreamUrl' => [ - 'description' => 'The URL of the output stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', - ], + 'UserNum' => ['description' => 'The number of users at the current point in time.', 'type' => 'string', 'example' => '1', 'title' => ''], + 'StreamTime' => ['description' => 'The time when the stream started. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2017-10-20T06:20:00Z', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'Total' => [ - 'description' => 'The total number of entries.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSceneId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time or current time.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1*****\\",\\n \\"SceneList\\": {\\n \\"Scene\\": [\\n {\\n \\"ComponentIds\\": {\\n \\"componentId\\": [\\n \\"[\\\\\\"1506396160-0-0-7de771a77102680861853af862d5****\\\\\\"]\\"\\n ]\\n },\\n \\"LayoutId\\": \\"37cb2f8b-f152-4338-b928-6704f71d****\\",\\n \\"OutputType\\": \\"0\\",\\n \\"SceneId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e86****\\",\\n \\"SceneName\\": \\"scene1\\",\\n \\"Status\\": 0,\\n \\"StreamInfos\\": {\\n \\"StreamInfo\\": [\\n {\\n \\"OutputStreamUrl\\": \\"http://live/caster/example.net\\",\\n \\"TranscodeConfig\\": \\"lld\\",\\n \\"VideoFormat\\": \\"flv\\"\\n }\\n ]\\n },\\n \\"StreamUrl\\": \\"rtmp://developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****\\"\\n }\\n ]\\n },\\n \\"Total\\": 2\\n}","errorExample":""},{"type":"xml","example":"\\n CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n \\n [\\"1506396160-0-0-7de771a77102680861853af862d5****\\"]\\n 37cb2f8b-f152-4338-b928-6704f71d****\\n 0\\n b5f8c837-ceeb-424f-b30b-68e94e86****\\n scene1\\n 0\\n \\n http://live/caster/example.net\\n lld\\n flv\\n \\n rtmp://developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****\\n \\n 2\\n","errorExample":""}]', - 'title' => 'DescribeCasterScenes', - 'description' => 'You can call the [CreateCaster](~~69338~~) operation to create a production studio and then call this operation to query the scenes of the production studio.'."\n" + 'title' => 'DescribeLiveStreamHistoryUserNum', + 'description' => '- The data returned by this operation is delayed for an average of 2 to 5 minutes.'."\n" + ."\n" + .'- This operation queries the number of historical online users for only Flash Video (FLV) and Real-Time Messaging Protocol (RTMP) streams.'."\n" + ."\n" + .'- This operation does not query the number of viewers that are watching transcoded streams.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UpdateCasterSceneAudio' => [ - 'summary' => 'Modifies the audio configurations of a scene. This operation also allows you to add an audio configuration or apply an existing audio configuration to a new scene.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamHistoryUserNum'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamHistoryUserNum', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F5FF8\\",\\n \\"LiveStreamUserNumInfos\\": {\\n \\"LiveStreamUserNumInfo\\": [\\n {\\n \\"UserNum\\": \\"1\\",\\n \\"StreamTime\\": \\"2017-10-20T06:20:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamMerge' => [ + 'summary' => 'Query primary/backup stream merge configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveBLHP6S'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'AudioLayer', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The audio configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The audio configuration.'."\n", - 'type' => 'object', - 'properties' => [ - 'Filter' => [ - 'description' => 'Specifies whether to enable the features provided by the audio 3A algorithms. This parameter consists of the following fields:'."\n" - ."\n" - .'* **enableAgc**: specifies whether to enable automatic gain control (AGC). This field is optional. Valid values: 0 and 1. **0** is the default value, which specifies that AGC is disabled. **1** specifies that AGC is enabled.'."\n" - .'* **enableAns**: specifies whether to enable active noise suppression (ANS). This field is optional. Valid values: 0 and 1. **0** is the default value, which specifies that ANS is disabled. **1** specifies that ANS is enabled.'."\n" - .'* **ansMode**: specifies the mode for ANS. This field is optional and takes effect only if you set **enableAns** to **1**. Valid values: 0 and 1. **0** is the default value, which specifies the speech noise reduction mode. **1** specifies the music noise reduction mode.'."\n" - ."\n" - .'> To ensure a better noise reduction effect, we recommend that you set ansMode to 1.'."\n" - ."\n" - .'* **enableBeautify**: specifies whether to enable voice change. This field is optional. Valid values: 0 and 1. **0** is the default value, which specifies that voice change is disabled. **1** specifies that voice change is enabled.'."\n" - .'* **voiceBeautifyMode**: specifies the mode for voice change. This field is optional and takes effect only if you set **enableBeautify** to **1**. Valid values: 0 and 1. **0** is the default value, which specifies the magnetic male voice mode. **1** specifies the fresh female voice mode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{ "enableAgc":0, "enableAns":1 }', - ], - 'FixedDelayDuration' => [ - 'description' => 'The fixed delay of the audio layer. This parameter is used to synchronize the audio with subtitles.'."\n" - ."\n" - .'Unit: milliseconds. Valid values: **0 to 5000**. Default value: **0**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], - 'ValidChannel' => [ - 'description' => 'The sound channels that are used for volume input in the audio layer. Valid values:'."\n" - ."\n" - .'* **leftChannel**: the left channel'."\n" - .'* **rightChannel**: the right channel'."\n" - .'* **all** (default): both the left and right channels'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'all', - ], - 'VolumeRate' => [ - 'description' => 'The multiple of the original volume at which the audio layer plays audio. Valid values: **0 to 10.0**. Default value: **1.0**.'."\n" - ."\n" - .'* **1.0**: specifies that the audio layer plays audio at the original volume.'."\n" - .'* A value smaller than **1**: specifies that the audio layer plays audio at a volume that is less than the original volume.'."\n" - .'* A value greater than **1**: specifies that the audio layer plays audio at a volume that is more than the original volume.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '1', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 12, - ], + 'schema' => ['description' => 'Region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'MixList', + 'name' => 'DomainName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The location IDs of the audio layers, which are in the same order as the audio layers.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The location ID of the audio layer N in the production studio.'."\n" - ."\n" - .'Make sure that the value is consistent with the specified order of the audio layer. If channels are enabled, set this parameter to the location ID of the channel. If channels are disabled, set this parameter to the location ID of the input source.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'RV01', - ], - 'required' => false, - 'example' => 'RV01', - 'maxItems' => 12, - ], + 'schema' => ['description' => 'Streaming domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'Merged output App name. You can view this on the [Primary/Backup Stream Merge Configuration](~~606583~~) page.', 'type' => 'string', 'required' => false, 'example' => 'app', 'title' => ''], ], [ - 'name' => 'SceneId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene. If you call the [DescribeCasterScenes](~~2848039~~) operation to query scenes of the production studio, check the value of the response parameter ComponentId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e1****', - ], + 'schema' => ['description' => 'Merged output Stream name. You can view this on the [Primary/Backup Stream Merge Configuration](~~606583~~) page.', 'type' => 'string', 'required' => false, 'example' => 'StreamName', 'title' => ''], ], [ - 'name' => 'FollowEnable', + 'name' => 'Protocol', 'in' => 'query', - 'schema' => [ - 'description' => 'The audio mode. By default, the AFV mode is used. If you do not specify this parameter, the scene retains the last configuration. Valid values:'."\n" - ."\n" - .'* **0**: the audio mixing mode.'."\n" - .'* **1**: the AFV mode.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'Streaming protocol. Valid values:'."\n" + ."\n" + .'- **rtmp** (default)'."\n" + ."\n" + .'- **rtc**', 'type' => 'string', 'required' => false, 'example' => 'rtmp', 'title' => ''], ], ], 'responses' => [ @@ -37800,341 +29396,397 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'LiveStreamMergeList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveStreamMerge' => [ + 'description' => 'List of live stream information.', + 'type' => 'array', + 'items' => [ + 'description' => 'List of live stream information.', + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'Merged output App name.', 'type' => 'string', 'example' => 'app', 'title' => ''], + 'AppUsing' => ['description' => 'Currently used App.', 'type' => 'string', 'example' => 'app1', 'title' => ''], + 'DomainName' => ['description' => 'Streaming domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'EndTime' => ['description' => 'Stream merge end time. The date format follows the ISO 8601 standard in UTC+0 time, in the format of yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2020-05-29T01:00:00Z', 'title' => ''], + 'ExtraInAppStreams' => ['description' => 'The app and stream of the 3rd to Nth input streams for merging.', 'type' => 'string', 'example' => 'app3/stream3,app4/stream4,app5/stream5,…,appN/streamN', 'title' => ''], + 'InAppName1' => ['description' => 'Primary input stream application name for merging.', 'type' => 'string', 'example' => 'app1', 'title' => ''], + 'InAppName2' => ['description' => 'Backup input stream application name for merging.', 'type' => 'string', 'example' => 'app2', 'title' => ''], + 'InStreamName1' => ['description' => 'Primary input stream name for merging.', 'type' => 'string', 'example' => 'InStream1', 'title' => ''], + 'InStreamName2' => ['description' => 'Backup input stream name for merging.', 'type' => 'string', 'example' => 'stream2', 'title' => ''], + 'Protocol' => ['description' => 'Live stream protocol.', 'type' => 'string', 'example' => 'rtmp', 'title' => ''], + 'StartTime' => ['description' => 'Stream merge start time. The date format follows the ISO 8601 standard in UTC+0 time, in the format of yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2020-05-29T00:00:00Z', 'title' => ''], + 'StreamName' => ['description' => 'Merged output Stream name.', 'type' => 'string', 'example' => 'StreamName', 'title' => ''], + 'StreamUsing' => ['description' => 'Currently used Stream.', 'type' => 'string', 'example' => 'InStream1', 'title' => ''], + 'LiveMerger' => [ + 'description' => 'Whether the current task uses the merge engine.', + 'enumValueTitles' => ['off' => 'off', 'on' => 'on'], + 'type' => 'string', + 'example' => 'on', + 'title' => '', + ], + 'MergeParameters' => ['description' => 'Configuration parameters related to stream switching for the queried task.'."\n" + ."\n" + .'1. When a stream disconnection is explicitly detected (EOF or network error), primary/backup switching is triggered immediately.'."\n" + .'2. If the stutter rate exceeds 60% within the last 5 seconds, primary/backup switching is triggered immediately.'."\n" + .'3. If the stream pull times out and no frame data is received for 2 consecutive seconds, primary/backup switching is triggered.'."\n" + .'4. If there is no stream disconnection or stuttering, but the average frame rate within the last ali_max_no_frame_timeout period is less than ali_low_frame_rate_threshold, primary/backup switching is triggered immediately. If the user has set the ali_max_no_frame_timeout parameter, the timeout in rule 3 will also be updated to ali_max_no_frame_timeout.'."\n" + ."\n" + .'Enabling block_all_jitter disables rules 2, 3, and 4.'."\n" + ."\n" + .'Valid value ranges:'."\n" + ."\n" + .'- 10 > ali_max_no_frame_timeout > 2'."\n" + .'- 200 > ali_low_frame_rate_threshold > 1'."\n" + .'- block_all_jitter: 0 (disabled by default) or 1 (enabled).', 'type' => 'string', 'example' => 'ali_low_frame_rate_threshold=10&ali_max_no_frame_timeout=5&block_all_jitter=0'."\n", 'title' => ''], + 'SwitchMode' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidAudioLayersAndMixListSize.Mismatch', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.ConfigError', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidMixList.ExceedNorm', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'QuotaExceeded.Merge', 'errorMessage' => 'Exceed max merge count limit', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ResourceInChannel.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], - 412 => [ - [ - 'errorCode' => 'ResourceInChannel.PreConditionFailed', - 'errorMessage' => '%s, please try again later.', - ], - [ - 'errorCode' => 'ResourceInChannel.Invalid', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LiveStreamMergeList\\": {\\n \\"LiveStreamMerge\\": [\\n {\\n \\"AppName\\": \\"app\\",\\n \\"AppUsing\\": \\"app1\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2020-05-29T01:00:00Z\\",\\n \\"ExtraInAppStreams\\": \\"app3/stream3,app4/stream4,app5/stream5,…,appN/streamN\\",\\n \\"InAppName1\\": \\"app1\\",\\n \\"InAppName2\\": \\"app2\\",\\n \\"InStreamName1\\": \\"InStream1\\",\\n \\"InStreamName2\\": \\"stream2\\",\\n \\"Protocol\\": \\"rtmp\\",\\n \\"StartTime\\": \\"2020-05-29T00:00:00Z\\",\\n \\"StreamName\\": \\"StreamName\\",\\n \\"StreamUsing\\": \\"InStream1\\",\\n \\"LiveMerger\\": \\"on\\",\\n \\"MergeParameters\\": \\"ali_low_frame_rate_threshold=10&ali_max_no_frame_timeout=5&block_all_jitter=0\\\\n\\",\\n \\"SwitchMode\\": \\"\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + 'title' => 'Query primary/backup stream merge configuration', + 'description' => 'The QPS limit for a single user of this API is 100 calls per second. If this limit is exceeded, API calls will be throttled, which may affect your business. Please call this API appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamMerge'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamMerge', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n}"}]', - 'title' => 'UpdateCasterSceneAudio', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to modify the audio configurations of a scene in the production studio. This operation supports the audio mixing mode and the audio follows video (AFV) mode.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => 'N in the preceding request parameters indicates the sequence number. Examples:'."\n" - ."\n" - .'* The AudioLayer.N.VolumeRate parameter specifies the multiple of the original volume at which the audio layer N plays audio.'."\n" - .'* The AudioLayer.1.VolumeRate parameter specifies the multiple of the original volume at which the first audio layer plays audio.'."\n" - .'* The AudioLayer.2.VolumeRate parameter specifies the multiple of the original volume at which the second audio layer plays audio.'."\n", - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'DescribeCasterSceneAudio' => [ - 'summary' => 'Queries the audio configurations of a scene.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveStreamMetricDetailData' => [ + 'summary' => 'Queries stream-level batch data for a specified domain name. A maximum of 5,000 rows of data can be returned per query.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', 'schema' => [ + 'description' => 'The region ID.', + 'enumValueTitles' => ['cn-shenzhen' => 'cn-shenzhen'], 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', + 'example' => 'cn-shenzhen', + 'title' => '', ], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~69338~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '97df6b7f-3490-47d2-ac50-88338765****', - ], + 'schema' => ['description' => '- The accelerated domain name to query. Only a single domain name can be queried at a time. An error is returned if multiple domain names are specified.'."\n" + .'- If AppName and StreamName are not specified, stream-level data for all streams under the domain name is returned.'."\n" + .'- If the domain name is left empty, aggregate data for all accelerated domain names under the account is returned.'."\n" + .'- If DomainName is specified and both AppName and StreamName are set to all, aggregate data for the specified accelerated domain name is returned.'."\n" + .'- When you specify DomainName, make sure the domain name is a live streaming domain and the user calling this operation has the required permissions on the domain name.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'SceneId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '97df6b7f-3490-47d2-ac50-88339087****', - ], + 'schema' => ['description' => 'The start of the time range to query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2015-12-10T20:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time, and the difference cannot exceed 1 day. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2015-12-10T21:00:00Z', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The application name. Specify this parameter to query stream-level data for a specific application.'."\n" + ."\n" + .'> If you specify StreamName, you must also specify AppName.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name. Specify this parameter together with AppName to return stream-level data.'."\n" + ."\n" + .'> If you specify StreamName, you must also specify AppName.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'Protocol', + 'in' => 'query', + 'schema' => ['description' => 'The stream protocol. Valid values: **flv**, **hls**, **rtmp**, **rts**, and **p2p**.'."\n" + ."\n" + .'You can query data for multiple protocols by separating them with commas (,). Data for multiple protocols is not aggregated and is output at the stream level.'."\n" + ."\n" + .'> The **rts** option queries Real-Time Streaming (RTS) streams that use the ARTC protocol.'."\n" + .'> - When using rts, you may need to additionally collect statistics for the xxx_AliRTS-opus transcoding stream. This is because when playing an RTS stream on the web, a transcoding stream with the _AliRTS-opus suffix appended to the stream name is automatically generated. For more information, see [RTS sub-second latency automatic transcoding](~~2948703~~).', 'type' => 'string', 'required' => false, 'example' => 'flv', 'title' => ''], + ], + [ + 'name' => 'NextPageToken', + 'in' => 'query', + 'schema' => ['description' => 'The paged query token. A maximum of 5,000 rows of data can be returned per query. If the data to query exceeds 5,000 rows, the response includes the starting index for the next paging request. Pass this token in the request to continue querying data from where the previous query ended.', 'type' => 'string', 'required' => false, 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67CIBKLw*****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The query data.', 'type' => 'object', 'properties' => [ - 'AudioLayers' => [ + 'DomainName' => ['description' => 'The accelerated domain name queried.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'EndTime' => ['description' => 'The end time. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2015-12-10T21:00:00Z', 'title' => ''], + 'NextPageToken' => ['description' => 'The starting index for the next query. This value is returned when the queried data has not been fully retrieved.', 'type' => 'string', 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', 'title' => ''], + 'PageSize' => ['description' => 'The number of returned data rows.', 'type' => 'integer', 'format' => 'int32', 'example' => '5000', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B955107D-E658-4E77-B913-E0AC3D31693E', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2015-12-10T20:00:00Z', 'title' => ''], + 'StreamDetailData' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'AudioLayer' => [ - 'description' => 'The configurations of the audio layers.'."\n", + 'StreamData' => [ + 'description' => 'The returned data set.', 'type' => 'array', 'items' => [ + 'description' => 'The returned data set.', 'type' => 'object', 'properties' => [ - 'FixedDelayDuration' => [ - 'description' => 'The fixed delay of the audio layer. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2000', - ], - 'ValidChannel' => [ - 'description' => 'The sound channel type of the audio layer. Valid values:'."\n" - ."\n" - .'* **left**: the left channel'."\n" - .'* **right**: the right channel'."\n" - .'* **all** (default): both the left and right channels'."\n", - 'type' => 'string', - 'example' => 'all', - ], - 'VolumeRate' => [ - 'description' => 'The volume of the audio layer.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '1', - ], + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'app', 'title' => ''], + 'Bps' => ['description' => 'The average bandwidth per minute for the stream. Unit: bit/s.', 'type' => 'number', 'format' => 'float', 'example' => '423304182.66', 'title' => ''], + 'Count' => ['description' => 'The total number of online viewers per minute for the stream.', 'type' => 'integer', 'format' => 'int64', 'example' => '423304182', 'title' => ''], + 'FlvBps' => ['description' => 'The bandwidth for the FLV protocol. Unit: bit/s.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '454', 'title' => ''], + 'FlvCount' => ['description' => 'The number of online viewers for the FLV protocol.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '32', 'title' => ''], + 'FlvTraffic' => ['description' => 'The traffic for the FLV protocol. Unit: bytes.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '1254', 'title' => ''], + 'HlsBps' => ['description' => 'The bandwidth for the HLS protocol. Unit: bit/s.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '4456', 'title' => ''], + 'HlsCount' => ['description' => 'The number of online viewers for the HLS protocol.'."\n" + ."\n" + .'> Currently not supported.', 'type' => 'integer', 'format' => 'int64', 'example' => '56', 'title' => ''], + 'HlsTraffic' => ['description' => 'The traffic for the HLS protocol. Unit: bytes.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '568', 'title' => ''], + 'NewConns' => ['description' => 'The number of new connections per minute for the stream.', 'type' => 'string', 'example' => '450', 'title' => ''], + 'P2pBps' => ['description' => 'The bandwidth for the P2P protocol. Unit: bit/s.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '6845', 'title' => ''], + 'P2pCount' => ['description' => 'The number of online viewers for the P2P protocol.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '78', 'title' => ''], + 'P2pTraffic' => ['description' => 'The traffic for the P2P protocol. Unit: bytes.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '4102', 'title' => ''], + 'RtmpBps' => ['description' => 'The bandwidth for the RTMP protocol. Unit: bit/s.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '3323', 'title' => ''], + 'RtmpCount' => ['description' => 'The number of online viewers for the RTMP protocol.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '63', 'title' => ''], + 'RtmpTraffic' => ['description' => 'The traffic for the RTMP protocol. Unit: bytes.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '5568', 'title' => ''], + 'RtsBps' => ['description' => 'The bandwidth for the RTS protocol. Unit: bit/s.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '2361', 'title' => ''], + 'RtsCount' => ['description' => 'The number of online viewers for the RTS protocol.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '89', 'title' => ''], + 'RtsTraffic' => ['description' => 'The traffic for the RTS protocol. Unit: bytes.'."\n" + ."\n" + .'> This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '2322', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'test.flv', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time slice. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2015-12-10T20:00:00Z', 'title' => ''], + 'Traffic' => ['description' => 'The total traffic per minute for the stream. Unit: bytes.', 'type' => 'integer', 'format' => 'int64', 'example' => '423304182', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can specify the ID in a request to start a scene in the production studio.'."\n", - 'type' => 'string', - 'example' => '97df6b7f-3490-47d2-ac50-88338765****', - ], - 'FollowEnable' => [ - 'description' => 'The audio mode. By default, the audio follows video (AFV) mode is used. Valid values:'."\n" - ."\n" - .'* **0**: the audio mixing mode'."\n" - .'* **1**: the AFV mode'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'MixList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LocationId' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => 'The location IDs of the audio layers, which are listed in the same order as their corresponding audio layers.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '98745637-3490-47d2-ac50-883387567098', + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidPageToken', 'errorMessage' => 'The token of page is invalid.', 'description' => 'The specified paging token is incorrect. Specify the correct token returned by the last query and confirm that your request parameters are not modified.'], + ['errorCode' => 'InvalidAppName.Mismatch', 'errorMessage' => 'The AppName param must be passed.', 'description' => 'The AppName parameter does not match. Make sure that you specify the correct AppName.'], + ['errorCode' => 'InvalidStreamProtocol.NotSupport', 'errorMessage' => 'The specified stream protocol is not support.', 'description' => ''], + ['errorCode' => 'InvalidStreamName.LengthTooLong', 'errorMessage' => 'The specified stream name is too long.', 'description' => ''], + ['errorCode' => 'InvalidAppName.LengthTooLong', 'errorMessage' => 'The specified app name is too long.', 'description' => ''], + ['errorCode' => 'InvalidTime.ValueNotSupported', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'The specified time is invalid.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"AudioLayers\\": {\\n \\"AudioLayer\\": [\\n {\\n \\"FixedDelayDuration\\": 2000,\\n \\"ValidChannel\\": \\"all\\",\\n \\"VolumeRate\\": 1\\n }\\n ]\\n },\\n \\"CasterId\\": \\"97df6b7f-3490-47d2-ac50-88338765****\\",\\n \\"FollowEnable\\": 1,\\n \\"MixList\\": {\\n \\"LocationId\\": [\\n \\"RV01\\"\\n ]\\n },\\n \\"RequestId\\": \\"98745637-3490-47d2-ac50-883387567098\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t97df6b7f-3490-47d2-ac50-8833e1b64597\\n\\tRV01\\n 1\\n 97df6b7f-3490-47d2-ac50-88338765****\\n\\t\\n\\t\\tall\\n 1\\n 2000\\n\\t\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"97df6b7f-3490-47d2-ac50-8833e1b64597\\",\\n \\"Content\\": {\\n \\"MixList\\": [\\n \\"1\\"\\n ],\\n \\"AudioLayers\\": [\\n {\\n \\"ValidChannel\\": \\"all\\",\\n \\"VolumeRate\\": 1\\n }\\n ],\\n \\"FollowEnable\\": 1\\n }\\n}"}]', - 'title' => 'DescribeCasterSceneAudio', - 'description' => '## [](#)Usage notes'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2015-12-10T21:00:00Z\\",\\n \\"NextPageToken\\": \\"UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\",\\n \\"PageSize\\": 5000,\\n \\"RequestId\\": \\"B955107D-E658-4E77-B913-E0AC3D31693E\\",\\n \\"StartTime\\": \\"2015-12-10T20:00:00Z\\",\\n \\"StreamDetailData\\": {\\n \\"StreamData\\": [\\n {\\n \\"AppName\\": \\"app\\",\\n \\"Bps\\": 423304182.66,\\n \\"Count\\": 423304182,\\n \\"FlvBps\\": 454,\\n \\"FlvCount\\": 32,\\n \\"FlvTraffic\\": 1254,\\n \\"HlsBps\\": 4456,\\n \\"HlsCount\\": 56,\\n \\"HlsTraffic\\": 568,\\n \\"NewConns\\": \\"450\\",\\n \\"P2pBps\\": 6845,\\n \\"P2pCount\\": 78,\\n \\"P2pTraffic\\": 4102,\\n \\"RtmpBps\\": 3323,\\n \\"RtmpCount\\": 63,\\n \\"RtmpTraffic\\": 5568,\\n \\"RtsBps\\": 2361,\\n \\"RtsCount\\": 89,\\n \\"RtsTraffic\\": 2322,\\n \\"StreamName\\": \\"test.flv\\",\\n \\"TimeStamp\\": \\"2015-12-10T20:00:00Z\\",\\n \\"Traffic\\": 423304182\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query stream-level batch data for a specified domain name', + 'description' => 'If this is the first time you use this operation to query stream-level data for a specified domain name, [submit a ticket](https://workorder.console.aliyun.com/console.htm#/ticket/add?productCode=live&commonQuestionId=4545&isSmart=true&iatraceid=1608439120675-2a5c48de0b84805313c708&channel=selfservice)[submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex) to request backend configuration before using this operation.'."\n" + .'Provide the following information in the ticket:'."\n" + .'- The domain name to query.'."\n" + .'- The maximum number of concurrent live streams under the domain name.'."\n" + .'- The maximum number of concurrent viewers per live stream.'."\n" + .'- The protocol types included in client requests.'."\n" ."\n" - .'You can call the [CreateCaster](~~69338~~) operation to create a production studio and then call this operation to query the audio configurations of a scene in the production studio.'."\n" + .'>This operation will no longer be maintained after September 31, 2025. Switch to the new stream-level operation [DescribeLiveUserStreamMetricData](~~2948552~~) promptly. The new stream-level operation does not require backend configuration.>.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## Before you begin'."\n" + .'- Online viewer counting for HLS is not supported by default.'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'StartCasterScene' => [ - 'summary' => 'Starts a specified preview (PVW) scene.', - 'methods' => [ - 'post', - 'get', + .'- Only a single domain name can be queried at a time.'."\n" + ."\n" + .'- Maximum large query time span: 24 hours.'."\n" + ."\n" + .'- Minimum query granularity: 1 minute.'."\n" + ."\n" + .'- Maximum query range: 31 days.'."\n" + ."\n" + .'## Rate limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [ + ['createdAt' => '2023-12-21T06:31:03.000Z', 'description' => 'Error codes changed, Request parameters changed, Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamMetricDetailData'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamMetricDetailData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLiveStreamMonitorList' => [ + 'summary' => 'Queries the list of created monitoring sessions.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveSM955S'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'MonitorId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The ID of the monitoring session.'."\n" + ."\n" + .'> Obtain the MonitorId value from the response parameters of the [CreateLiveStreamMonitor](~~2848129~~) operation. If you leave this parameter empty, the data of all monitoring sessions is returned.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'SceneId', + 'name' => 'PageNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene.'."\n" - ."\n" - .'This parameter takes effect only if the scene is a PVW scene.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', - ], + 'schema' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of monitoring sessions to return on each page.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => ['description' => 'The status of the monitoring session. Valid values:'."\n" + ."\n" + .'- 1: The session is being monitored.'."\n" + ."\n" + .'- 0: The session is not being monitored.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'OrderRule', + 'in' => 'query', + 'schema' => ['description' => 'The order in which to sort the monitoring sessions. Valid values:'."\n" + ."\n" + .'- 0: Default. The monitoring sessions are sorted by monitoring status in descending order (active sessions are listed first). The start time is not used for sorting.'."\n" + ."\n" + .'- 1: The monitoring sessions are sorted by start time in descending order.'."\n" + ."\n" + .'- 2: The monitoring sessions are sorted by start time in ascending order.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], ], 'responses' => [ @@ -38142,161 +29794,250 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', - ], - 'StreamUrl' => [ - 'description' => 'The streaming URL of the scene. It is used for playback, but not for stream relay.'."\n", - 'type' => 'string', - 'example' => 'http://live/caster/example.org', + 'Total' => ['description' => 'The total number of monitoring sessions.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '2234baba-a586-46ea-8bd4-c8f7891abcdef', 'title' => ''], + 'LiveStreamMonitorList' => [ + 'description' => 'The list of monitoring sessions.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'MonitorConfig' => ['description' => 'The settings for monitoring alert thresholds. The value is a JSON string that includes the following fields:'."\n" + ."\n" + .'- fpsLowThres: the alert threshold for the video frame rate. This is a float.'."\n" + ."\n" + .'- brHighThres: the alert threshold for the audio and video bitrate. This is a float.'."\n" + ."\n" + .'- eofDurationThresSec: the alert threshold for the stream interruption duration. This is a float.', 'type' => 'string', 'example' => '"{\\"fpsLowThres\\": 0.6,\\"brLowThres\\": 1.1,\\"eofDurationThresSec\\": 10}"', 'title' => ''], + 'Status' => ['description' => 'The status of the monitoring session. Valid values:'."\n" + ."\n" + .'- 1: The session is being monitored.'."\n" + ."\n" + .'- 0: The session is not being monitored.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'MonitorId' => ['description' => 'The ID of the monitoring session.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'Domain' => ['description' => 'The output domain name for monitoring.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'CallbackUrl' => ['description' => 'The webhook address for monitoring alert notifications.', 'type' => 'string', 'example' => 'http://guide.aliyundoc.com/notify', 'title' => ''], + 'AudioFrom' => ['description' => 'The audio source in the layout.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'DingTalkWebHookUrl' => ['description' => 'The URL of the DingTalk chatbot.', 'type' => 'string', 'example' => 'https://oapi.dingtalk.com/robot/send?access_token=7a7d404056eee1f2fd944ace9bcfc361dc6448583e1d3d3baa****', 'title' => ''], + 'MonitorName' => ['description' => 'The name of the monitoring session.', 'type' => 'string', 'example' => 'liveMonito****', 'title' => ''], + 'StopTime' => ['description' => 'The time when monitoring stops. The time is in UTC format.', 'type' => 'string', 'example' => '2017-01-11T12:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The time when monitoring starts. The time is in UTC format.', 'type' => 'string', 'example' => '2017-01-11T12:00:00Z', 'title' => ''], + 'OutputTemplate' => ['description' => 'The template for the output resolution. Valid values:'."\n" + ."\n" + .'- **lp\\_ld**: low definition'."\n" + ."\n" + .'- **lp\\_sd**: standard definition'."\n" + ."\n" + .'- **lp\\_hd**: high definition'."\n" + ."\n" + .'- **lp\\_ud**: ultra-high definition', 'type' => 'string', 'example' => 'lp_ud', 'title' => ''], + 'Region' => ['description' => 'The region. Valid values:'."\n" + ."\n" + .'- cn-shanghai: China (Shanghai)'."\n" + ."\n" + .'- cn-beijing: China (Beijing)'."\n" + ."\n" + .'- ap-southeast-1: Singapore', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'InputList' => [ + 'description' => 'The list of input streams for monitoring.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Index' => ['description' => 'The index. This parameter is used by the frontend.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'InputUrl' => ['description' => 'The URL of the input stream.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'LayoutId' => ['description' => 'The layout ID. The value must start from 1.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'StreamName' => ['description' => 'The display name of the stream for monitoring.', 'type' => 'string', 'example' => 'monitorStream****', 'title' => ''], + 'LayoutConfig' => [ + 'description' => 'The layout information.', + 'type' => 'object', + 'properties' => [ + 'FillMode' => ['description' => 'The fill mode. For frontend development, set this parameter to none.', 'type' => 'string', 'example' => 'none', 'title' => ''], + 'PositionRefer' => ['description' => 'The reference point for the element\'s position. Valid values:'."\n" + ."\n" + .'- topLeft'."\n" + ."\n" + .'- topRight'."\n" + ."\n" + .'- bottomLeft'."\n" + ."\n" + .'- bottomRight', 'type' => 'string', 'example' => 'topLeft', 'title' => ''], + 'PositionNormalized' => [ + 'description' => 'The normalized coordinates of the element\'s position, in the format of \\[x,y]. The default value is \\[0,0]. The values of x and y must be normalized.', + 'type' => 'array', + 'items' => ['description' => 'The position of the element\'s fill area, in the format of \\[x,y]. The values of x and y are normalized percentages.
'."\n" + .'For example, \\[0.1,0.1] indicates a horizontal offset of 10% and a vertical offset of 10% from the top-left corner.', 'type' => 'number', 'format' => 'float', 'example' => '0.1', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'SizeNormalized' => [ + 'description' => 'The normalized size of the element\'s fill area, in the format of \\[w,h].', + 'type' => 'array', + 'items' => ['description' => 'The size of the element\'s fill area, in the format of \\[w,h]. The values of w and h are normalized percentages.
'."\n" + .'For example, \\[0.2,0.3] indicates a horizontal proportion of 20% and a vertical proportion of 30%.', 'type' => 'number', 'format' => 'float', 'example' => '0.3', 'title' => ''], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'PlayConfig' => [ + 'description' => 'The playback configuration.', + 'type' => 'object', + 'properties' => [ + 'VolumeRate' => ['description' => 'The volume. The value must be between 0 and 1, inclusive, with up to two decimal places.', 'type' => 'number', 'format' => 'float', 'example' => '0.50', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'OutputUrls' => [ + 'description' => 'The output URLs for monitoring.', + 'type' => 'object', + 'properties' => [ + 'FlvUrl' => ['description' => 'The output URL in FLV format.', 'type' => 'string', 'example' => 'http://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****.flv', 'title' => ''], + 'RtmpUrl' => ['description' => 'The output URL in RTMP format.', 'type' => 'string', 'example' => 'rtmp://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Inuse', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSceneId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'UserQuotaExceed', - 'errorMessage' => 'Quota exceeded: %s.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], ], [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"StreamUrl\\": \\"http://live/caster/example.org\\"\\n}","errorExample":""},{"type":"xml","example":"\\n CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n http://live/caster/example.org\\n","errorExample":""}]', - 'title' => 'StartCasterScene', - 'description' => 'You can call this operation to start a specified PVW scene.'."\n" + 'title' => 'DescribeLiveStreamMonitorList', + 'description' => 'First, [create a monitoring session](~~2848129~~). You can then call this operation to query the list of monitoring sessions. When you call this operation, ensure that the required parameters are configured.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'This operation is limited to 15 queries per second (QPS) for each user. API calls that exceed this limit are throttled. This may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'StopCasterScene' => [ - 'summary' => 'Stops a specified preview (PVW) scene.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '15', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamMonitorList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamMonitorList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Total\\": 1,\\n \\"RequestId\\": \\"2234baba-a586-46ea-8bd4-c8f7891abcdef\\",\\n \\"LiveStreamMonitorList\\": [\\n {\\n \\"MonitorConfig\\": \\"\\\\\\"{\\\\\\\\\\\\\\"fpsLowThres\\\\\\\\\\\\\\": 0.6,\\\\\\\\\\\\\\"brLowThres\\\\\\\\\\\\\\": 1.1,\\\\\\\\\\\\\\"eofDurationThresSec\\\\\\\\\\\\\\": 10}\\\\\\"\\",\\n \\"Status\\": 1,\\n \\"MonitorId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"Domain\\": \\"demo.aliyundoc.com\\",\\n \\"CallbackUrl\\": \\"http://guide.aliyundoc.com/notify\\",\\n \\"AudioFrom\\": 1,\\n \\"DingTalkWebHookUrl\\": \\"https://oapi.dingtalk.com/robot/send?access_token=7a7d404056eee1f2fd944ace9bcfc361dc6448583e1d3d3baa****\\",\\n \\"MonitorName\\": \\"liveMonito****\\",\\n \\"StopTime\\": \\"2017-01-11T12:00:00Z\\",\\n \\"StartTime\\": \\"2017-01-11T12:00:00Z\\",\\n \\"OutputTemplate\\": \\"lp_ud\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"InputList\\": [\\n {\\n \\"Index\\": 1,\\n \\"InputUrl\\": \\"demo.aliyundoc.com\\",\\n \\"LayoutId\\": 1,\\n \\"StreamName\\": \\"monitorStream****\\",\\n \\"LayoutConfig\\": {\\n \\"FillMode\\": \\"none\\",\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"PositionNormalized\\": [\\n 0.1\\n ],\\n \\"SizeNormalized\\": [\\n 0.3\\n ]\\n },\\n \\"PlayConfig\\": {\\n \\"VolumeRate\\": 0.5\\n }\\n }\\n ],\\n \\"OutputUrls\\": {\\n \\"FlvUrl\\": \\"http://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****.flv\\",\\n \\"RtmpUrl\\": \\"rtmp://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****\\"\\n }\\n }\\n ]\\n}","type":"json"}]', + ], + 'DescribeLiveStreamPreloadTasks' => [ + 'summary' => 'Only data from the last 3 days can be queried.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'TaskId', + 'in' => 'query', + 'schema' => ['description' => 'The task ID. You can obtain the preload task ID by calling the [SetLiveStreamPreloadTasks](~~2519938~~) operation.', 'type' => 'string', 'required' => false, 'example' => 'yourTaskId', 'title' => ''], + ], + [ + 'name' => 'PlayUrl', + 'in' => 'query', + 'schema' => ['description' => 'The live streaming URL. You can specify multiple URLs separated by commas (,), up to 100.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Maximum value: 100. Valid values: any integer from 1 to 100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '20', 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The page number to return. Default value: 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'Status', + 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the region.'."\n", + 'description' => 'The task status. Valid values:'."\n" + .'- complete: completed.'."\n" + .'- pending: waiting for preload.'."\n" + .'- preloading: preloading in progress.'."\n" + .'- failed: preload failed.', + 'enumValueTitles' => ['pending' => 'Waiting for preload.', 'preloading' => 'Preloading in progress.', 'failed' => 'Preload failed.', 'complete' => 'Completed.'], 'type' => 'string', 'required' => false, - 'example' => 'cn-shanghai', - 'default' => 'cn-shanghai', + 'enum' => ['complete', 'pending', 'preloading', 'failed'], + 'example' => 'complete', + 'title' => '', ], ], [ - 'name' => 'CasterId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'If you create a production studio through the [CreateCaster](~~69338#doc-api-live-CreateCaster~~ "Creates a production studio.") interface, check the value of the CasterId parameter in the response.'."\n" - ."\n" - .'If you create a production studio through the ApsaraVideo Live Console, log in to the console, then check the ID of the production studio through the following path:'."\n" - ."\n" - .'Production Studios > Production Studio Management'."\n" - ."\n" - .'> The CasterId is reflected in the Name column on the Production Studio Management page.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The start time in ISO 8601 format in UTC. Format: yyyy-MM-ddTHH:mm:ssZ. The start time must be within the last 3 days.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T19:00:00Z', 'title' => ''], ], [ - 'name' => 'SceneId', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene.'."\n" - ."\n" - .'This operation is available only when the scene is a preview scene. For more information about the scene types, see [Query the scenes of production studios](~~60262~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', - ], + 'schema' => ['description' => 'The end time in ISO 8601 format in UTC. Format: yyyy-MM-ddTHH:mm:ssZ. The interval between EndTime and StartTime cannot exceed 3 days.', 'type' => 'string', 'required' => false, 'example' => '2016-06-30T19:00:00Z', 'title' => ''], ], ], 'responses' => [ @@ -38304,274 +30045,261 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'PreloadTasks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PreloadTask' => [ + 'description' => 'The details of the live stream preload task.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the live stream preload task.', + 'type' => 'object', + 'properties' => [ + 'Area' => ['description' => 'The preload region. Valid values:'."\n" + .'- domestic: the Chinese mainland.'."\n" + .'- overseas: outside the Chinese mainland.'."\n" + .'- global: global acceleration.'."\n" + ."\n" + .'> If this parameter is not specified, the default preload region is the acceleration region configured for your domain name.', 'type' => 'string', 'example' => 'domestic', 'title' => ''], + 'CreateTime' => ['description' => 'The time when the preload task was created, in ISO 8601 format in UTC. Format: yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2016-06-29T19:00:00Z', 'title' => ''], + 'Description' => ['description' => 'Indicates whether the preload task succeeded. Valid values:'."\n" + .'- Successfully: succeeded.'."\n" + .'- InternalError: failed.', 'type' => 'string', 'example' => 'Successfully', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'PlayUrl' => ['description' => 'The live streaming URL.', 'type' => 'string', 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****', 'title' => ''], + 'PreloadedEndTime' => ['description' => 'The time when the preload ended, in ISO 8601 format in UTC. Format: yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2016-06-30T19:00:00Z', 'title' => ''], + 'PreloadedStartTime' => ['description' => 'The time when the preload started, in ISO 8601 format in UTC. Format: yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2016-06-29T19:00:00Z', 'title' => ''], + 'Process' => ['description' => 'The progress percentage.', 'type' => 'string', 'example' => '100%', 'title' => ''], + 'Status' => ['description' => 'The task status. Valid values:'."\n" + .'- Success: succeeded.'."\n" + .'- Failed: failed.'."\n" + ."\n" + .'> The task is considered failed if any subtask fails to be created.', 'type' => 'string', 'example' => 'Success', 'title' => ''], + 'TaskId' => ['description' => 'The task ID.', 'type' => 'string', 'example' => 'yourTaskId', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'E1564CBC-DCFE-5E1B-8B78-8DED9A39F334', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that match the conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidSceneId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not match the specified start time.', 'description' => ''], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'Duration between StartTime and EndTime is too long.', 'description' => ''], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 2,\\n \\"PreloadTasks\\": {\\n \\"PreloadTask\\": [\\n {\\n \\"Area\\": \\"domestic\\",\\n \\"CreateTime\\": \\"2016-06-29T19:00:00Z\\",\\n \\"Description\\": \\"Successfully\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"PlayUrl\\": \\"rtmp://guide.aliyundoc.com/liveApp****/liveStream****\\",\\n \\"PreloadedEndTime\\": \\"2016-06-30T19:00:00Z\\",\\n \\"PreloadedStartTime\\": \\"2016-06-29T19:00:00Z\\",\\n \\"Process\\": \\"100%\\",\\n \\"Status\\": \\"Success\\",\\n \\"TaskId\\": \\"yourTaskId\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"E1564CBC-DCFE-5E1B-8B78-8DED9A39F334\\",\\n \\"TotalNum\\": 1,\\n \\"TotalPage\\": 1\\n}","type":"json"}]', + 'title' => 'Query live stream preload tasks', + 'description' => 'This operation only supports querying data from the last 3 days.'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamPreloadTasks'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamPreloadTasks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\tCF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}"}]', - 'title' => 'StopCasterScene', - 'description' => '## Usage note'."\n" - ."\n" - .'This operation is only applicable to the PVW scenes.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'SetCasterChannel' => [ - 'summary' => 'Configures a channel of a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveStreamPushMetricDetailData' => [ + 'summary' => 'Queries stream ingest data at the app and stream granularity for a specified domain name.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => '- The accelerated domain name to query. Only a single domain name can be queried. An error is returned if you specify multiple domain names.'."\n" + .'- If you do not specify AppName or StreamName, data at the stream granularity for all streams under the specified accelerated domain name is returned without aggregation.'."\n" + .'- If DomainName is specified and both AppName and StreamName are set to all, aggregate data at the stream granularity for all streams under the specified accelerated domain name is returned.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'ChannelId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the channel.'."\n" - ."\n" - .'When channels are enabled, the layout references the channel IDs. You can specify up to one resource for a channel. The number of resources is limited by the number of the channels of the production studio. The value must be in the RV\\[Number] format, such as RV01 and RV12.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'RV01', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the UTC time zone.'."\n" + ."\n" + .'Format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => true, 'example' => '2022-09-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'ResourceId', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the video source.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the UTC time zone. The end time must be later than the start time, and the difference cannot exceed 1 day.'."\n" + ."\n" + .'Format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'required' => true, 'example' => '2022-09-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'SeekOffset', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the position where the production studio starts reading the video source. The value must be greater than or equal to 0, indicating an offset from the first frame. This parameter take effects for video files, but not for live streams. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1000', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. Specify the application name to query data at the stream granularity for the corresponding application.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'PlayStatus', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The playback status. This parameter take effects for video files, but not for live streams. Valid values:'."\n" - ."\n" - .'* **1**: specifies that the video source is playing. This is the default value.'."\n" - .'* **0**: specifies that the playback of the video source is paused.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The name of the live stream. If you specify StreamName, data at the stream granularity is returned for the specified StreamName under the specified AppName. You must specify AppName when you specify StreamName.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'FaceBeauty', + 'name' => 'NextPageToken', 'in' => 'query', - 'schema' => [ - 'description' => 'The face retouching effect. Valid values: 0 (all effects), 1 (skin smoothing), 2 (skin whitening), 3 (dark circles removal), and 4 (nasolabial folds removal).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'The paging query token. Each query returns a maximum of 5,000 rows of data. If the data to be queried exceeds 5,000 rows, the response includes the start index for the next query.'."\n" + ."\n" + .'Pass this token in the request to continue querying data from the row after the last row returned in the previous query.', 'type' => 'string', 'required' => false, 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'DomainName' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'EndTime' => ['description' => 'The end of the time range for the returned data. The time follows the ISO 8601 standard in the UTC time zone.'."\n" + ."\n" + .'Format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'example' => '2022-09-10T21:00:00Z', 'title' => ''], + 'NextPageToken' => ['description' => 'The paging query token. Each query returns a maximum of 5,000 rows of data. If the data to be queried exceeds 5,000 rows, the response includes the start index for the next query.'."\n" + ."\n" + .'Pass this token in the request to continue querying data from the row after the last row returned in the previous query.', 'type' => 'string', 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', 'title' => ''], + 'PageSize' => ['description' => 'The number of returned data rows.', 'type' => 'integer', 'format' => 'int32', 'example' => '5000', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5EBF2AC3-4B73-40A5-8B32-83F49D5F035E', 'title' => ''], + 'StartTime' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the UTC time zone.'."\n" + ."\n" + .'Format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'example' => '2022-09-10T20:00:00Z', 'title' => ''], + 'StreamDetailData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamData' => [ + 'description' => 'The returned data entries.', + 'type' => 'array', + 'items' => [ + 'description' => 'The returned data entries.', + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'ReqBps' => ['description' => 'The total bandwidth per minute for the stream. Unit: Bps.', 'type' => 'number', 'format' => 'float', 'example' => '133.33', 'title' => ''], + 'ReqTraffic' => ['description' => 'The total traffic per minute for the stream. Unit: bytes.', 'type' => 'integer', 'format' => 'int64', 'example' => '1000', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'TimeStamp' => ['description' => 'The beginning of the time slice. The time follows the ISO 8601 standard in the UTC time zone.'."\n" + ."\n" + .'Format: YYYY-MM-DDThh:mm:ssZ.', 'type' => 'string', 'example' => '2022-09-10T20:00:00Z', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'DuplicateLocationID', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.PlayStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidChannelId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.SeekOffset', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectChannel.Disable', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'ResourceOfChannelExist', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified StartTime or EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidPageToken', 'errorMessage' => 'The token of page is invalid.', 'description' => 'The specified paging token is incorrect. Specify the correct token returned by the last query and confirm that your request parameters are not modified.'], + ['errorCode' => 'InvalidAppName.Mismatch', 'errorMessage' => 'The AppName param must be passed.', 'description' => 'The AppName parameter does not match. Make sure that you specify the correct AppName.'], + ['errorCode' => 'InvalidStreamProtocol.NotSupport', 'errorMessage' => 'The specified stream protocol is not support.', 'description' => ''], + ['errorCode' => 'InvalidStreamName.LengthTooLong', 'errorMessage' => 'The specified stream name is too long.', 'description' => ''], + ['errorCode' => 'InvalidAppName.LengthTooLong', 'errorMessage' => 'The specified app name is too long.', 'description' => ''], + ['errorCode' => 'InvalidTime.ValueNotSupported', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'The specified time is invalid.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2022-09-10T21:00:00Z\\",\\n \\"NextPageToken\\": \\"UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\",\\n \\"PageSize\\": 5000,\\n \\"RequestId\\": \\"5EBF2AC3-4B73-40A5-8B32-83F49D5F035E\\",\\n \\"StartTime\\": \\"2022-09-10T20:00:00Z\\",\\n \\"StreamDetailData\\": {\\n \\"StreamData\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"ReqBps\\": 133.33,\\n \\"ReqTraffic\\": 1000,\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"TimeStamp\\": \\"2022-09-10T20:00:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query batch stream-granularity data for stream ingest of a specified domain name', + 'description' => '- Only a single domain name can be queried. An error is returned if you specify multiple domain names.'."\n" + .'- Maximum query time range per request: 24 hours.'."\n" + .'- Minimum query granularity: 1 minute.'."\n" + .'- Maximum query period: 31 days.'."\n" + .'- This is a monitoring data API. The data collection and processing method differs from that used for billing. Do not use this API to calculate usage for billing reconciliation.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The maximum number of queries per second (QPS) per user for this operation is 10. If the number of calls per second exceeds the limit, throttling is triggered. This may affect your business. Call this operation as appropriate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamPushMetricDetailData'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamPushMetricDetailData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n}"}]', - 'title' => 'SetCasterChannel', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to configure a channel for the production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'DescribeCasterChannels' => [ - 'summary' => 'Queries the channels of a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveStreamRecordContent' => [ + 'summary' => 'Queries the recordings of a live stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -38582,34 +30310,33 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time for the query. You can query records from the last 6 months. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time for the query. The time range between StartTime and EndTime cannot exceed 4 days. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], ], 'responses' => [ @@ -38617,166 +30344,122 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Channels' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '62136AE6-7793-45ED-B14A-60D19A9486D3', 'title' => ''], + 'RecordContentInfoList' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'Channel' => [ - 'description' => 'The channels.'."\n", + 'RecordContentInfo' => [ + 'description' => 'A list of recording content information.', 'type' => 'array', 'items' => [ - 'description' => 'The information about the channel.'."\n", 'type' => 'object', 'properties' => [ - 'ChannelId' => [ - 'description' => 'The ID of the channel.'."\n" - ."\n" - .'The layout references the channel ID when the channel is enabled. You can specify up to one video resource for the channel. The value of this parameter must be in the RV\\[Number] format, such as RV01 and RV12.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - 'FaceBeauty' => [ - 'description' => 'The face retouching effect. Valid values: 0 (all effects), 1 (skin smoothing), 2 (skin whitening), 3 (dark circles removal), and 4 (nasolabial folds removal).'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'ResourceId' => [ - 'description' => 'The ID of the video resource.'."\n", - 'type' => 'string', - 'example' => '87642866-281E-4AEA-9582-B124879****', - ], - 'RtmpUrl' => [ - 'description' => 'The URL in the Real-Time Messaging Protocol (RTMP) format.'."\n", - 'type' => 'string', - 'example' => 'rtmp://demo.aliyundoc.com/caster/rtmperf?auth_key=****', - ], - 'StreamUrl' => [ - 'description' => 'The URL of the output content in the channel.'."\n", - 'type' => 'string', - 'example' => 'http://demo.aliyundoc.com/caster/streamwsx.flv?auth_key=YYYYY', - ], + 'EndTime' => ['description' => 'End time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2015-12-01T07:46:00Z', 'title' => ''], + 'StartTime' => ['description' => 'Start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2015-12-01T07:36:00Z', 'title' => ''], + 'Duration' => ['description' => 'Recording duration. Unit: seconds.', 'type' => 'number', 'format' => 'float', 'example' => '10', 'title' => ''], + 'OssBucket' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'OssObjectPrefix' => ['description' => 'The naming convention (prefix) for recorded files stored in OSS.', 'type' => 'string', 'example' => 'record/{Date}/{UnixTimestamp}_{Sequence}', 'title' => ''], + 'OssEndpoint' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '83C52866-281E-4AEA-9582-B124********', - ], - 'Total' => [ - 'description' => 'The total number of channels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.Mismatch', 'errorMessage' => 'Specified StartTime does not math the current time.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Channels\\": {\\n \\"Channel\\": [\\n {\\n \\"ChannelId\\": \\"RV01\\",\\n \\"FaceBeauty\\": \\"0\\",\\n \\"ResourceId\\": \\"87642866-281E-4AEA-9582-B124879****\\",\\n \\"RtmpUrl\\": \\"rtmp://demo.aliyundoc.com/caster/rtmperf?auth_key=****\\",\\n \\"StreamUrl\\": \\"http://demo.aliyundoc.com/caster/streamwsx.flv?auth_key=YYYYY\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"83C52866-281E-4AEA-9582-B124********\\",\\n \\"Total\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n \\n RV01\\n 0\\n 87642866-281E-4AEA-9582-B124879****\\n rtmp://demo.aliyundoc.com/caster/rtmperf?auth_key=****\\n http://demo.aliyundoc.com/caster/streamwsx.flv?auth_key=YYYYY\\n \\n 83C52866-281E-4AEA-9582-B1245406349D\\n 1\\n","errorExample":""}]', - 'title' => 'DescribeCasterChannels', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to query the channels of the production studio.'."\n" + 'title' => 'DescribeLiveStreamRecordContent', + 'description' => 'Obtain the main streaming domain, and then call this operation to query the recordings of a live stream.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'The information returned by this API is organized by recording task. To get information about specific recording files within a task, use the [DescribeLiveStreamRecordIndexFiles](~~2847890~~) and [DescribeLiveStreamRecordIndexFile](~~2847889~~) APIs.'."\n" + ."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions.', 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', + 'responseParamsDescription' => '> For information on how to construct the URL to access OSS resources, see [Use presigned URLs to download or preview files](~~39607~~).', 'extraInfo' => ' ', - ], - 'EffectCasterUrgent' => [ - 'summary' => 'Switches a scene to the standby resource in a production studio.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamRecordContent'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamRecordContent', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"62136AE6-7793-45ED-B14A-60D19A9486D3\\",\\n \\"RecordContentInfoList\\": {\\n \\"RecordContentInfo\\": [\\n {\\n \\"EndTime\\": \\"2015-12-01T07:46:00Z\\",\\n \\"StartTime\\": \\"2015-12-01T07:36:00Z\\",\\n \\"Duration\\": 10,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"OssObjectPrefix\\": \\"record/{Date}/{UnixTimestamp}_{Sequence}\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamRecordIndexFile' => [ + 'summary' => 'Queries a single recording manifest.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '107095', + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'SceneId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene. This parameter takes effect only if the scene is a PGM scene.'."\n" - ."\n" - .'You can call the [DescribeCasterScenes](~~2848039~~) operation to query the scene ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', - ], + 'schema' => ['description' => 'The name of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'RecordId', + 'in' => 'query', + 'schema' => ['description' => 'The manifest ID.'."\n" + ."\n" + .'> Call the [DescribeLiveStreamRecordIndexFiles](~~2847890~~) API to query the ID.', 'type' => 'string', 'required' => true, 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', 'title' => ''], ], ], 'responses' => [ @@ -38784,156 +30467,137 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5EBF2AC3-4B73-40A5-8B32-83F49D5F035E', 'title' => ''], + 'RecordIndexInfo' => [ + 'description' => 'Recording configuration.', + 'type' => 'object', + 'properties' => [ + 'RecordUrl' => ['description' => 'The URL of the manifest.', 'type' => 'string', 'example' => 'http://****/atestObject****.m3u8', 'title' => ''], + 'StreamName' => ['description' => 'The name of the live stream.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'CreateTime' => ['description' => 'The creation time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2016-05-27T09:40:56Z', 'title' => ''], + 'RecordId' => ['description' => 'The manifest ID.', 'type' => 'string', 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', 'title' => ''], + 'Height' => ['description' => 'The video height.', 'type' => 'integer', 'format' => 'int32', 'example' => '480', 'title' => ''], + 'OssBucket' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'DomainName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'OssObject' => ['description' => 'The name of the storage file in OSS.', 'type' => 'string', 'example' => 'liveObject****', 'title' => ''], + 'EndTime' => ['description' => 'The end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2016-05-25T05:47:11Z', 'title' => ''], + 'AppName' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'StartTime' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2015-12-01T05:36:00Z', 'title' => ''], + 'Width' => ['description' => 'The video width.', 'type' => 'integer', 'format' => 'int32', 'example' => '640', 'title' => ''], + 'Duration' => ['description' => 'The recording duration. Unit: seconds.', 'type' => 'number', 'format' => 'float', 'example' => '588.849', 'title' => ''], + 'OssEndpoint' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + 'Format' => ['description' => 'The video format.', 'type' => 'string', 'example' => 'mp4', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidSceneId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectChannel.Disable', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUrgentMaterial.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n","errorExample":""}]', - 'title' => 'EffectCasterUrgent', - 'description' => 'You can call this operation to switch a specified scene to the standby resource. Only a PGM scene is supported.'."\n" + 'title' => 'DescribeLiveStreamRecordIndexFile', + 'description' => 'Metadata for created M3U8 manifests is retained in ApsaraVideo Live for 6 months. You can only query information about manifests created within this period. The M3U8 manifest files are stored in OSS, and their retention period is determined by your OSS storage configuration.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'EffectCasterVideoResource' => [ - 'summary' => 'Updates the standby resource in a specified scene.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-06-25T08:54:52.000Z', 'description' => 'Response parameters changed, Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamRecordIndexFile'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamRecordIndexFile', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5EBF2AC3-4B73-40A5-8B32-83F49D5F035E\\",\\n \\"RecordIndexInfo\\": {\\n \\"RecordUrl\\": \\"http://****/atestObject****.m3u8\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"CreateTime\\": \\"2016-05-27T09:40:56Z\\",\\n \\"RecordId\\": \\"c4d7f0a4-b506-43f9-8de3-07732c3f****\\",\\n \\"Height\\": 480,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssObject\\": \\"liveObject****\\",\\n \\"EndTime\\": \\"2016-05-25T05:47:11Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"StartTime\\": \\"2015-12-01T05:36:00Z\\",\\n \\"Width\\": 640,\\n \\"Duration\\": 588.849,\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"Format\\": \\"mp4\\"\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamRecordIndexFiles' => [ + 'summary' => 'Queries all recording index files within a specified time period.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '107096', + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The streaming domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '80787064-1c94-4dc1-85ce-9409960a****', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'SceneId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the scene. You can call the [DescribeCasterScenes](~~60262#doc-api-live-DescribeCasterScenes~~ "Queries information about the scenes of a production studio.") operation to get the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', - ], + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'ResourceId', + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n", 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The interval between EndTime and StartTime cannot exceed 4 days. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n", 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Default value: **1**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Valid values: **5 to 30**. Default value: **10**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '30', 'minimum' => '5', 'default' => '10', 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'Order', 'in' => 'query', 'schema' => [ - 'description' => 'The resource ID. If you call the [DescribeCasterChannels](~~2848046~~) operation to query the channels of the production studio, you can obtain the ID of the resource in a specific channel from the ResourceId parameter in the response.'."\n", + 'description' => 'The order in which entries are sorted by creation time. Valid values:'."\n" + ."\n" + .'- **asc** (default): ascending order.'."\n" + .'- **desc**: descending order.', + 'enumValueTitles' => ['asc' => 'Ascending order', 'desc' => 'Descending order'], 'type' => 'string', - 'required' => true, - 'example' => 'f096e8d6-0319-4c96-82bc-ecbc79cf****', + 'required' => false, + 'default' => 'asc', + 'enum' => ['asc', 'desc'], + 'example' => 'asc', + 'title' => '', ], ], ], @@ -38942,322 +30606,163 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'DE24625C-7C0F-4020-8448-9C31A50C1556', 'title' => ''], + 'Order' => ['description' => 'The sorting order.', 'type' => 'string', 'example' => 'asc', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '5', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that meet the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '12', 'title' => ''], + 'RecordIndexInfoList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RecordIndexInfo' => [ + 'description' => 'The list of recording index files.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RecordUrl' => ['description' => 'The URL of the index file.', 'type' => 'string', 'example' => 'http://****/atestObject****.m3u8', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'CreateTime' => ['description' => 'The creation time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2016-05-27T09:40:56Z', 'title' => ''], + 'RecordId' => ['description' => 'The ID of the index file.', 'type' => 'string', 'example' => 'c4d7f0a4-b506-43f9-8de3-07732c3f****', 'title' => ''], + 'Height' => ['description' => 'The video height.', 'type' => 'integer', 'format' => 'int32', 'example' => '480', 'title' => ''], + 'OssBucket' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'OssObject' => ['description' => 'The name of the recording file stored in OSS.', 'type' => 'string', 'example' => 'liveObject****', 'title' => ''], + 'EndTime' => ['description' => 'The end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n", 'type' => 'string', 'example' => '2015-12-01T07:46:00Z', 'title' => ''], + 'AppName' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'StartTime' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n", 'type' => 'string', 'example' => '2015-12-01T07:36:00Z', 'title' => ''], + 'Width' => ['description' => 'The video width.', 'type' => 'integer', 'format' => 'int32', 'example' => '640', 'title' => ''], + 'Duration' => ['description' => 'The recording duration. Unit: seconds.', 'type' => 'number', 'format' => 'float', 'example' => '588.849', 'title' => ''], + 'OssEndpoint' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + 'Format' => ['description' => 'The video format.', 'type' => 'string', 'example' => 'HLS', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectSceneStatus.Idle', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.ConfigError', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResourceId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidSceneId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidScene.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStartTime.Mismatch', 'errorMessage' => 'Specified StartTime does not math the current time.', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => 'Ram Permission is forbidden.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n","errorExample":""}]', - 'title' => 'EffectCasterVideoResource', - 'description' => 'Make sure that the resource is referenced by the scene.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PageNum\\": 10,\\n \\"RequestId\\": \\"DE24625C-7C0F-4020-8448-9C31A50C1556\\",\\n \\"Order\\": \\"asc\\",\\n \\"TotalPage\\": 20,\\n \\"PageSize\\": 5,\\n \\"TotalNum\\": 12,\\n \\"RecordIndexInfoList\\": {\\n \\"RecordIndexInfo\\": [\\n {\\n \\"RecordUrl\\": \\"http://****/atestObject****.m3u8\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"CreateTime\\": \\"2016-05-27T09:40:56Z\\",\\n \\"RecordId\\": \\"c4d7f0a4-b506-43f9-8de3-07732c3f****\\",\\n \\"Height\\": 480,\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"OssObject\\": \\"liveObject****\\",\\n \\"EndTime\\": \\"2015-12-01T07:46:00Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"StartTime\\": \\"2015-12-01T07:36:00Z\\",\\n \\"Width\\": 640,\\n \\"Duration\\": 588.849,\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"Format\\": \\"HLS\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query all recording index files within a specified time period', + 'description' => '- Information about created M3U8 index files is retained in the ApsaraVideo Live system for only 6 months. You can query only the information about index files that were created within the last 6 months.'."\n" + .' - M3U8 index files are stored in OSS. The retention period is determined by the storage configuration of OSS.'."\n" + .'- By default, recording returns HTTP URLs. To use HTTPS, configure the certificate and change HTTP to HTTPS.'."\n" + ."\n\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The QPS limit on this API is 15 calls per second per user. If this limit is exceeded, API calls are throttled, which may affect your business. Call this API at an appropriate frequency.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddShowIntoShowList' => [ - 'summary' => 'Adds an episode to an episode list.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-06-25T08:54:52.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamRecordIndexFiles'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamRecordIndexFiles', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveStreamSnapshotInfo' => [ + 'summary' => 'Queries snapshot content within a specified time range.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The streaming domain of the streamer.'."\n" + .'> - When you specify DomainName, make sure that the domain name is a live streaming domain name and that the user who calls this operation has the permissions to operate on the specified domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'showList', + 'name' => 'AppName', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The episodes that you want to add to the episode list. Each episode has a unique name and resource URL.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the episode.'."\n", - 'type' => 'object', - 'properties' => [ - 'duration' => [ - 'description' => 'The duration of the episode. Unit: seconds.'."\n" - ."\n" - .'> You can specify only one of the **RepeatTimes** and **Duration** parameters.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '20', - ], - 'liveInputType' => [ - 'description' => 'The custom type label.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - 'repeatTimes' => [ - 'description' => 'The number of times the episode repeats after the first playback is complete. Default value: 0.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* You can specify only one of the **RepeatTimes** and **Duration** parameters.'."\n" - ."\n" - .'* The RepeatTimes parameter specifies the number of repetitions. For example, if you set the value to 0, the episode is to be played once. If you set the value to 1, the episode is to be played twice.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], - 'resourceId' => [ - 'description' => 'The ID of the resource.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'resourceType' => [ - 'description' => 'The resource type. Valid values:'."\n" - ."\n" - .'* live: live stream'."\n" - .'* vod: on-demand video'."\n" - .'* pic: image'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* When you select media resources from ApsaraVideo VOD, we recommend that you select resources that are stored in hosted OSS buckets. Resources stored in non-hosted OSS buckets have a validity period. Pay attention to the validity if you select resources that are stored in non-hosted OSS buckets.'."\n" - ."\n" - .'* You can add a live stream from ApsaraVideo Live or by using a third-party URL.'."\n" - .'* You can add an on-demand video from ApsaraVideo VOD or by using a third-party URL, or add an on-demand image.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'vod', - ], - 'resourceUrl' => [ - 'description' => 'The URL of the resource.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://****/atestObject****.m3u8', - ], - 'showName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveShow****', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 10, - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - ], - [ - 'name' => 'ShowName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveShow****', - ], - ], - [ - 'name' => 'ResourceType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The resource type. Valid values:'."\n" - ."\n" - .'* live: live stream'."\n" - .'* vod: on-demand video'."\n" - .'* pic: image'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* When you select media resources from ApsaraVideo VOD, we recommend that you select resources that are stored in hosted OSS buckets. Resources stored in non-hosted OSS buckets have a validity period. Pay attention to the validity if you select resources that are stored in non-hosted OSS buckets. - You can add a live stream from ApsaraVideo Live or by using a third-party URL. - You can add an on-demand video from ApsaraVideo VOD or by using a third-party URL, or add an on-demand image.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'vod', - ], - ], - [ - 'name' => 'ResourceUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the resource.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://****/atestObject****.m3u8', - ], - ], - [ - 'name' => 'ResourceId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the resource.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'Duration', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The duration of the episode. Unit: seconds.'."\n" - ."\n" - .'> You can specify only one of the **RepeatTimes** and **Duration** parameters.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '20', - ], + 'schema' => ['description' => 'The name of the stream. Make sure that the specified stream name exists within the query time range.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'RepeatTimes', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of times the episode repeats after the first playback is complete. The default value is 0.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* You can specify only one of the **RepeatTimes** and **Duration** parameters. - The RepeatTimes parameter specifies the number of repetitions. For example, if you set the value to -1, the episode is to be played for infinite times. If you set the value to 0, the episode is to be played once. If you set the value to 1, the episode is to be played twice.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], ], [ - 'name' => 'Spot', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The position of the episode in the episode list. Position indexes start from 0. By default, the episode is added to the end of the episode list.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The end time. The interval between EndTime and StartTime cannot exceed **1** day. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], [ - 'name' => 'LiveInputType', + 'name' => 'Limit', 'in' => 'query', - 'schema' => [ - 'description' => 'The custom type label.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The number of entries to return in a single call. Valid values: **1 to 100**. Default value: **10**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'default' => '10', 'example' => '10', 'title' => ''], ], [ - 'name' => 'isBatchMode', + 'name' => 'Order', 'in' => 'query', 'schema' => [ - 'description' => 'Specifies whether to add multiple episodes to the episode list at a time. Valid values:'."\n" - ."\n" - .'* true: adds multiple episodes to the episode list at a time.'."\n" - .'* false: adds a single episode to the episode list.'."\n" + 'description' => 'The sort order. Valid values:'."\n" ."\n" - .'> If you do not specify this parameter or this parameter is left empty, a single episode is to be added to the episode list.'."\n", - 'type' => 'boolean', + .'- **asc** (default): ascending order.'."\n" + .'- **desc**: descending order.', + 'enumValueTitles' => ['asc' => 'ascending order.', 'desc' => 'descending order.'], + 'type' => 'string', 'required' => false, - 'example' => 'false', + 'default' => 'asc', + 'enum' => ['asc', 'desc'], + 'example' => 'asc', + 'title' => '', ], ], ], @@ -39266,243 +30771,123 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '987DA143-A39C-5B5D-AF5B-3B07944A0036', - ], - 'ShowId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'failedList' => [ - 'description' => 'The list of resources that failed to be added and the reason for failure.'."\n", - 'type' => 'string', - 'example' => 'failedList[Show1, Show2...]', - ], - 'successfulShowIds' => [ - 'description' => 'The IDs of the episodes that were added.'."\n", - 'type' => 'string', - 'example' => 'f1933f16-5467-4308-b3a9-e8d451a90999,547436b8-c839-4469-a2c0-704c1ce5ce00', + 'NextStartTime' => ['description' => 'The next start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n" + ."\n" + .'> If the content within this time range exceeds the value of Limit, this parameter is returned as the creation time of the next file. You can use this time as the StartTime value and call this operation again to retrieve the next set of content. If this parameter is not returned, the content does not exceed the Limit value.', 'type' => 'string', 'example' => '2015-12-01T17:36:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '62136AE6-7793-45ED-B14A-60D19A9486D3', 'title' => ''], + 'LiveStreamSnapshotInfoList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveStreamSnapshotInfo' => [ + 'description' => 'The list of snapshot content.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'OssObject' => ['description' => 'The name of the file stored in OSS.', 'type' => 'string', 'example' => '{liveApp****}/{liveStream****}.jpg', 'title' => ''], + 'OssBucket' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'example' => 'liveBucket****', 'title' => ''], + 'CreateTime' => ['description' => 'The time when the snapshot was taken. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2015-12-01T17:36:00Z', 'title' => ''], + 'OssEndpoint' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + 'IsOverlay' => ['description' => 'The snapshot mode. Valid values:'."\n" + ."\n" + .'- **true**: overwrite snapshot.'."\n" + ."\n\n" + .'- **false**: sequential snapshot.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'CreateTimestamp' => ['description' => 'The timestamp when the snapshot file was created, in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1653641526637', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVodUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShowList.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified parameter StartTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified parameter EndTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidStream.NotFound', 'errorMessage' => 'Speicified stream does not exist.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"987DA143-A39C-5B5D-AF5B-3B07944A0036\\",\\n \\"ShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"failedList\\": \\"failedList[Show1, Show2...]\\",\\n \\"successfulShowIds\\": \\"f1933f16-5467-4308-b3a9-e8d451a90999,547436b8-c839-4469-a2c0-704c1ce5ce00\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 987DA143-A39C-5B5D-AF5B-3B07944A0036\\n \\n \\n test\\n vod\\n \\n ResourceUrl is invalid, probe failed\\n \\n \\n \\n http://error.test.case\\n vod\\n \\n ResourceUrl is invalid, probe failed\\n \\n f1933f16-5467-4308-b3a9-e8d451a90999, 547436b8-c839-4469-a2c0-704c1ce5ce00\\n","errorExample":""}]', - 'title' => 'AddShowIntoShowList', - 'description' => 'You must create a production studio in the new playlist mode and add media resources to the production studio before you can call this operation. For information about how to create a production studio, see [CreateCaster](~~2848009~~).'."\n" - ."\n" - .'You can add up to 1,000 episodes to an episode list.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextStartTime\\": \\"2015-12-01T17:36:00Z\\",\\n \\"RequestId\\": \\"62136AE6-7793-45ED-B14A-60D19A9486D3\\",\\n \\"LiveStreamSnapshotInfoList\\": {\\n \\"LiveStreamSnapshotInfo\\": [\\n {\\n \\"OssObject\\": \\"{liveApp****}/{liveStream****}.jpg\\",\\n \\"OssBucket\\": \\"liveBucket****\\",\\n \\"CreateTime\\": \\"2015-12-01T17:36:00Z\\",\\n \\"OssEndpoint\\": \\"cn-oss-****.aliyuncs.com\\",\\n \\"IsOverlay\\": false,\\n \\"CreateTimestamp\\": 1653641526637\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query snapshot content within a time range', + 'description' => 'You can call this operation to query snapshot data only within the last year.'."\n" ."\n" - .'> '."\n" - ."\n" - .'* When you select media resources from ApsaraVideo VOD, we recommend that you select resources that are stored in hosted OSS buckets. Resources stored in non-hosted OSS buckets have a validity period. Pay attention to the validity if you select resources that are stored in non-hosted OSS buckets.'."\n" - ."\n" - .'* When you add media resources to a production studio, we recommend that you select resources from ApsaraVideo Live and ApsaraVideo VOD. If you add a third-party stream by specifying a streaming URL, there is a possibility that the stream fails to be played. You must pay attention to the quality and validity of the third-party stream.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 100 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Call this operation appropriately.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => '## Sample code'."\n" - ."\n" - .' public static DefaultAcsClient initClient(String accessKeyId, String accessKeySecret) throws ClientException {'."\n" - .' String regionId = "cn-shanghai"; '."\n" - .' DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);'."\n" - .' DefaultAcsClient client = new DefaultAcsClient(profile);'."\n" - .' return client;'."\n" - .' }'."\n" - ."\n" - .' private static CommonResponse addShowIntoShowList(DefaultAcsClient client, String showName, String resourceId, String resourceUrl,'."\n" - .' String resourceType, Integer spot, Integer repeatTimes,'."\n" - .' String casterId, Long duration) throws ClientException {'."\n" - .' CommonRequest addShowIntoShowListRequest = new CommonRequest();'."\n" - .' addShowIntoShowListRequest.setSysDomain("live.aliyuncs.com");'."\n" - .' addShowIntoShowListRequest.setSysVersion("2016-11-01");'."\n" - .' addShowIntoShowListRequest.setSysAction("AddShowIntoShowList");'."\n" - ."\n\n" - .' '."\n" - .' if (casterId == null || resourceType == null) {'."\n" - .' return null;'."\n" - .' }'."\n" - .' if (resourceId == null && resourceUrl == null) {'."\n" - .' return null;'."\n" - .' }'."\n" - .' addShowIntoShowListRequest.putQueryParameter("CasterId", casterId);'."\n" - .' addShowIntoShowListRequest.putQueryParameter("ResourceType", resourceType);'."\n" - .' if (showName != null) {'."\n" - .' addShowIntoShowListRequest.putQueryParameter("ShowName", showName);'."\n" - .' }'."\n" - .' if (resourceUrl != null) {'."\n" - .' addShowIntoShowListRequest.putQueryParameter("ResourceUrl", resourceUrl);'."\n" - .' }'."\n" - .' if (resourceId != null) {'."\n" - .' addShowIntoShowListRequest.putQueryParameter("ResourceId", resourceId);'."\n" - .' }'."\n" - .' if (spot != null) {'."\n" - .' addShowIntoShowListRequest.putQueryParameter("Spot", spot.toString());'."\n" - .' }'."\n" - .' if (repeatTimes != null) {'."\n" - .' addShowIntoShowListRequest.putQueryParameter("RepeatTimes", repeatTimes.toString());'."\n" - .' }'."\n" - .' if (duration != null) {'."\n" - .' addShowIntoShowListRequest.putQueryParameter("Duration", duration.toString());'."\n" - .' }'."\n" - .' CommonResponse addShowIntoShowListResponse = client.getCommonResponse(addShowIntoShowListRequest);'."\n" - .' return addShowIntoShowListResponse;'."\n" - .' }'."\n" - ."\n\n" - .' public void addshows() throws ClientException {'."\n" - .' DefaultAcsClient client = initClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET);'."\n" - .' String[] resourceIds = new String[]{"698d2b23581f476ea71107703e647d1e", "9c97e83e211a435b9f797e4e20eeea27", "76c6addaa41c438985666a8a964fa5e5"};'."\n" - .' for (int i = 0; i < resourceIds.length; i++) {'."\n" - .' String showName = "ShowName#" + i;'."\n" - .' Integer repeatTimes = i;'."\n" - .' addShowIntoShowList(client, showName, resourceIds[i], null, "vod", null, repeatTimes, testCasterId, null);'."\n" - .' }'."\n" - .' }'."\n", - ], - 'RemoveShowFromShowList' => [ - 'summary' => 'Removes an episode from an episode list.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamSnapshotInfo'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamSnapshotInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveStreamState' => [ + 'summary' => 'Queries the real-time status of a single stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'showIdList', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The IDs of episodes that you want to remove.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the episode that you want to remove.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'required' => false, - 'maxItems' => 80, - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~69338~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The ingest domain or the streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'ShowId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode.'."\n" - ."\n" - .'> You can obtain the ID by checking the value of the response parameter ShowId of the [AddShowIntoShowList](~~370861~~) operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The AppName of the live stream. View AppNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'isBatchMode', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to remove multiple episodes at a time. Valid values:'."\n" - ."\n" - .'* true: removes multiple episodes at a time.'."\n" - .'* false: removes a single episode.'."\n" - ."\n" - .'> If you do not configure this parameter or this parameter is left empty, a single episode is to be removed.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => 'The name of the live stream. View StreamNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ @@ -39510,291 +30895,272 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'ShowId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'failedList' => [ - 'description' => 'The IDs of episodes that failed to be removed and the relevant failure information.'."\n", - 'type' => 'string', - 'example' => 'failedList[Show1, Show2...]', - ], - 'successfulShowIds' => [ - 'description' => 'The IDs of episodes that were removed.'."\n", - 'type' => 'string', - 'example' => 'f1933f16-5467-4308-b3a9-e8d451a90999', - ], + 'Type' => ['description' => 'The stream ingest method. Valid values:'."\n" + ."\n" + .'- push'."\n" + ."\n" + .'- pull', 'type' => 'string', 'example' => 'push', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CE6CD79D-0A98-1F22-A15F-FADA74DF2729', 'title' => ''], + 'StreamState' => ['description' => 'The state of the stream. Valid values:'."\n" + ."\n" + .'- online: The stream is active.'."\n" + ."\n" + .'- offline: The stream is offline. This may mean the stream ingest has failed or ended. For specific details, use the data returned by the stream ingest callback. This operation does not provide a detailed breakdown of the offline status.', 'type' => 'string', 'example' => 'online', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShowList.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShow.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"failedList\\": \\"failedList[Show1, Show2...]\\",\\n \\"successfulShowIds\\": \\"f1933f16-5467-4308-b3a9-e8d451a90999\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 001A01C4-3023-57C1-9A82-1BF3DC690C0A\\n \\n 347436b8-c839-4469-a2c0-704c1ce5ce00\\n the showId does not exist in our showOrderList\\n \\n f1933f16-5467-4308-b3a9-e8d451a90999\\n 547436b8-c839-4469-a2c0-704c1ce5ce00\\n","errorExample":""}]', - 'title' => 'RemoveShowFromShowList', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'You cannot use this operation on empty episode lists. For information about how to add episodes to an episode list, see [AddShowIntoShowList](~~370861~~).'."\n" + 'title' => 'DescribeLiveStreamState', + 'description' => 'After you obtain a live streaming domain name, you can call this operation to query the real-time status of a single stream. For details about the offline status, use the data returned by the stream ingest callback. This operation does not provide a breakdown of the offline status.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'ModifyShowList' => [ - 'summary' => 'Modifies the attributes of an episode list.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '2000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamState'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamState', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Type\\": \\"push\\",\\n \\"RequestId\\": \\"CE6CD79D-0A98-1F22-A15F-FADA74DF2729\\",\\n \\"StreamState\\": \\"online\\"\\n}","type":"json"}]', + ], + 'DescribeLiveStreamTranscodeInfo' => [ + 'summary' => 'Queries transcoding configurations.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - ], - [ - 'name' => 'ShowId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode for which you want to change the position in the playlist.'."\n" - ."\n" - .'> You can call the [AddShowIntoShowList](~~2848051~~) or [DescribeShowList](~~2848054~~) operation and check the value of the response parameter ShowId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - ], - [ - 'name' => 'RepeatTimes', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of additional times the episode list is played.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The RepeatTimes parameter specifies the number of repetitions. For example, if you set the value to **0**, the episode list is played **once**. If you set the value to **1**, the episode list is played **twice**.********'."\n" - ."\n" - .'* If you set the value to -1, the episode list is repeated indefinitely.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - ], - ], - [ - 'name' => 'Spot', - 'in' => 'query', - 'schema' => [ - 'description' => 'The position of the episode in the episode list. If you want to change the position of an episode in a playlist, place the ID of the episode in **Spot**.'."\n" - ."\n" - .'> The value must be greater than or equal to 0 and less than or equal to the total number of episodes in the playlist.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'HighPriorityShowId', + 'name' => 'DomainTranscodeName', 'in' => 'query', - 'schema' => [ - 'description' => 'The episode of the highest priority.'."\n" - ."\n" - .'> You can configure this parameter only before the playback of the episode list starts.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'HighPriorityShowStartTime', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The time at which the episode of the highest priority is played. Format: yyyy-MM-dd\'T\'HH:mm:ss.'."\n" - ."\n" - .'> You can configure this parameter only before the episode list starts playing.\\'."\n" - .'After you configure this parameter, when the specified point in time is reached, any episode that is playing stops and the episode of the highest priority in the episode list starts to play.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-11-23T12:30:00', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => false, 'example' => 'myapp', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The transcoding configurations.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '62136AE6-7793-45ED-B14A-60D19A9486D3', 'title' => ''], + 'DomainTranscodeList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DomainTranscodeInfo' => [ + 'description' => 'The transcoding configurations.', + 'type' => 'array', + 'items' => [ + 'description' => 'The transcoding configurations.', + 'type' => 'object', + 'properties' => [ + 'TranscodeApp' => ['description' => 'The AppName.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'TranscodeTemplate' => ['description' => 'The transcoding template. Valid values:'."\n" + ."\n" + .'- **Standard transcoding templates**:'."\n" + ."\n" + .' - **lld**: low definition.'."\n" + ."\n" + .' - **lsd**: standard definition.'."\n" + ."\n" + .' - **lhd**: high definition.'."\n" + ."\n" + .' - **lud**: ultra-high definition.'."\n" + ."\n" + .'- **Narrowband HD™ transcoding templates**:'."\n" + ."\n" + .' - **ld**: low definition.'."\n" + ."\n" + .' - **sd**: standard definition.'."\n" + ."\n" + .' - **hd**: high definition.'."\n" + ."\n" + .' - **ud**: ultra-high definition.', 'type' => 'string', 'example' => 'lld', 'title' => ''], + 'IsLazy' => ['description' => 'Indicates whether on-demand transcoding is enabled. Valid values:'."\n" + ."\n" + .'- **true**: Transcoding only starts when the first viewer requests this transcoded stream.'."\n" + ."\n" + .'- **false**: Transcoding starts immediately after the stream is published.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'TranscodeName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'CustomTranscodeParameters' => [ + 'description' => 'The custom transcoding configurations.', + 'type' => 'object', + 'properties' => [ + 'BitrateWithSource' => ['description' => 'The configuration for adaptive bitrate.', 'type' => 'object', 'example' => '{\\"UpLimit\\":2500,\\"LowerLimit\\":800,\\"Factor\\":1}', 'title' => ''], + 'VideoProfile' => ['description' => 'The video codec profile. Valid values:'."\n" + ."\n" + .'- **baseline**: suitable for mobile devices.'."\n" + ."\n" + .'- **main**: suitable for SD devices.'."\n" + ."\n" + .'- **high**: suitable for HD devices.', 'type' => 'string', 'example' => 'high', 'title' => ''], + 'AudioBitrate' => ['description' => 'The audio bitrate. Unit: kbps. Valid values: 1 to **1000**.', 'type' => 'integer', 'format' => 'int32', 'example' => '64', 'title' => ''], + 'Height' => ['description' => 'The output video height.', 'type' => 'integer', 'format' => 'int32', 'example' => '1200', 'title' => ''], + 'RtsFlag' => ['description' => 'The tag for Real-Time Streaming (RTS). The value is fixed to **true**.'."\n" + ."\n" + .'> This parameter is returned only when RTS is used.', 'type' => 'string', 'example' => 'true', 'title' => ''], + 'TemplateType' => ['description' => 'The type of the custom transcoding template. Valid values:'."\n" + ."\n" + .'- **h264**: H.264 standard transcoding.'."\n" + ."\n" + .'- **h264-nbhd**: H.264 Narrowband HD™ transcoding.'."\n" + ."\n" + .'- **h265**: H.265 standard transcoding.'."\n" + ."\n" + .'- **h265-nbhd**: H.265 Narrowband HD™ transcoding.'."\n" + ."\n" + .'- **audio**: audio-only transcoding.', 'type' => 'string', 'example' => 'h264', 'title' => ''], + 'Bframes' => ['description' => 'Controls whether to remove B-frames from the transcoded output video. The value is fixed to **0**.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'ExtWithSource' => ['description' => 'Other adaptive settings that align the transcoded stream with the source stream.', 'type' => 'object', 'example' => '{\\"KeyFrameOpen\\":\\"yes\\",\\"Copyts\\":\\"yes\\",\\"SeiMode\\":1}', 'title' => ''], + 'AudioRate' => ['description' => 'The audio sample rate. Valid values: 22050 to **96000**.'."\n" + ."\n" + .'> If AudioProfile is set to **aac\\_ld**, the sample rate cannot exceed 44100.', 'type' => 'integer', 'format' => 'int32', 'example' => '44100', 'title' => ''], + 'FpsWithSource' => ['description' => 'Adapts the output frame rate based on the source\'s frame rate, while keeping it within a specified range.', 'type' => 'object', 'example' => '{\\"UpLimit\\":60,\\"LowerLimit\\":1}', 'title' => ''], + 'AudioCodec' => ['description' => 'The audio codec.', 'type' => 'string', 'example' => 'ACC', 'title' => ''], + 'FPS' => ['description' => 'The output video frame rate. Unit: frames per second (FPS).', 'type' => 'integer', 'format' => 'int32', 'example' => '15', 'title' => ''], + 'Gop' => ['description' => 'The Group of Pictures (GOP) size. Unit: frames. Valid values: 1 to **3000**.', 'type' => 'string', 'example' => '10', 'title' => ''], + 'Width' => ['description' => 'The output video width.', 'type' => 'integer', 'format' => 'int32', 'example' => '1000', 'title' => ''], + 'VideoBitrate' => ['description' => 'The video bitrate. Unit: kbps.', 'type' => 'integer', 'format' => 'int32', 'example' => '3000', 'title' => ''], + 'AudioChannelNum' => ['description' => 'The number of audio channels. Valid values:'."\n" + ."\n" + .'- **1**: mono.'."\n" + ."\n" + .'- **2**: stereo.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'AudioProfile' => ['description' => 'The audio codec profile. Valid values:'."\n" + ."\n" + .'- **aac\\_low**'."\n" + ."\n" + .'- **aac\\_he**'."\n" + ."\n" + .'- **aac\\_he\\_v2**'."\n" + ."\n" + .'- **aac\\_ld**', 'type' => 'string', 'example' => 'aac_low', 'title' => ''], + 'ResWithSource' => ['description' => 'The adaptive resolution settings.', 'type' => 'object', 'example' => '{\\"Type\\":\\"short\\",\\"Value\\":\\"1080\\"}', 'title' => ''], + 'DeInterlaced' => ['description' => 'Indicates whether to automatically detect and remove interlacing during transcoding. This converts interlaced content to progressive content.'."\n" + ."\n" + .'- true: Deinterlacing is enabled.'."\n" + ."\n" + .'- false: The source format is retained. No processing is performed. This is the default value.', 'type' => 'boolean', 'title' => '', 'example' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'EncryptParameters' => [ + 'description' => 'The encryption configurations.', + 'type' => 'object', + 'properties' => [ + 'EncryptType' => ['description' => 'The encryption type. The value is fixed to **aliyun**.', 'type' => 'string', 'example' => 'aliyun', 'title' => ''], + 'KmsKeyID' => ['description' => 'The ID of the customer master key (CMK) in Key Management Service (KMS).', 'type' => 'string', 'example' => 'afce5722-81d2-43c3-9930-7601da11****', 'title' => ''], + 'KmsKeyExpireInterval' => ['description' => 'The key rotation period. Unit: seconds. Valid values: 60 to 3600.', 'type' => 'string', 'example' => '3600', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVodUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShowList.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":" \\r\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\r\\n ","errorExample":""}]', - 'title' => 'ModifyShowList', - 'description' => 'This operation allows you to change the position of an episode in an episode list, how many times an episode list is played, and the specific point in time at which the episode of the highest priority in an episode list is played.'."\n" + 'title' => 'DescribeLiveStreamTranscodeInfo', + 'description' => 'You must obtain the streaming domain before you call this operation to query the transcoding configurations.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'DescribeShowList' => [ - 'summary' => 'Queries the details of the episode list.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamTranscodeInfo'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamTranscodeInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"62136AE6-7793-45ED-B14A-60D19A9486D3\\",\\n \\"DomainTranscodeList\\": {\\n \\"DomainTranscodeInfo\\": [\\n {\\n \\"TranscodeApp\\": \\"liveApp****\\",\\n \\"TranscodeTemplate\\": \\"lld\\",\\n \\"IsLazy\\": true,\\n \\"TranscodeName\\": \\"example.com\\",\\n \\"CustomTranscodeParameters\\": {\\n \\"BitrateWithSource\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"VideoProfile\\": \\"high\\",\\n \\"AudioBitrate\\": 64,\\n \\"Height\\": 1200,\\n \\"RtsFlag\\": \\"true\\",\\n \\"TemplateType\\": \\"h264\\",\\n \\"Bframes\\": \\"0\\",\\n \\"ExtWithSource\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"AudioRate\\": 44100,\\n \\"FpsWithSource\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"AudioCodec\\": \\"ACC\\",\\n \\"FPS\\": 15,\\n \\"Gop\\": \\"10\\",\\n \\"Width\\": 1000,\\n \\"VideoBitrate\\": 3000,\\n \\"AudioChannelNum\\": 2,\\n \\"AudioProfile\\": \\"aac_low\\",\\n \\"ResWithSource\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"DeInterlaced\\": false\\n },\\n \\"EncryptParameters\\": {\\n \\"EncryptType\\": \\"aliyun\\",\\n \\"KmsKeyID\\": \\"afce5722-81d2-43c3-9930-7601da11****\\",\\n \\"KmsKeyExpireInterval\\": \\"3600\\"\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamTranscodeMetricData' => [ + 'summary' => 'Queries transcoding data for a specified domain name at the app and stream granularity.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -39805,284 +31171,213 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '115259', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The domain name. Only a single domain name can be queried at a time.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2023-06-11T02:46:40Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2023-06-11T03:46:40Z', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The application name.', 'type' => 'string', 'required' => false, 'example' => 'app', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => false, 'example' => 'stream', 'title' => ''], + ], + [ + 'name' => 'NextPageToken', + 'in' => 'query', + 'schema' => ['description' => 'The paged query token. Each query returns a maximum of 5,000 rows of data. If the data to be queried exceeds 5,000 rows, the response provides the start index for the next query.'."\n" + ."\n" + .'Pass this token in the request to continue querying data from the row after the last row returned in the previous query. This token is used for paging.', 'type' => 'string', 'required' => false, 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The response parameters.'."\n", + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'ShowList' => [ - 'description' => '****Details of the episode list.'."\n" - ."\n" - .'Show indicates the information about a specific episode. For more information, see the **Show** parameter.'."\n", - 'type' => 'string', - 'example' => 'ShowList[Show1, Show2, Show3...]', - ], - 'ShowListInfo' => [ - 'description' => 'The information about the episode list.'."\n", + 'DomainName' => ['description' => 'The domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'EndTime' => ['description' => 'The end time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2023-06-11T02:46:40Z', 'title' => ''], + 'NextPageToken' => ['description' => 'The paged query token. Each query returns a maximum of 5,000 rows of data. If the data to be queried exceeds 5,000 rows, the response provides the start index for the next query.'."\n" + ."\n" + .'Pass this token in the request to continue querying data from the row after the last row returned in the previous query. This token is used for paging.', 'type' => 'string', 'example' => 'UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=', 'title' => ''], + 'PageSize' => ['description' => 'The number of returned data rows.', 'type' => 'integer', 'format' => 'int32', 'example' => '5000', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'StartTime' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2023-06-11T03:46:40Z'."\n", 'title' => ''], + 'StreamDetailData' => [ 'type' => 'object', + 'itemNode' => true, 'properties' => [ - 'CurrentShowId' => [ - 'description' => 'The ID of the episode that is playing.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'Background' => [ - 'description' => 'The background of the episode list.'."\n", - 'type' => 'string', - 'example' => '{\\"MaterialId\\":\\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\"resourceType\\":\\"VOD\\"}', - ], - 'HighPriorityShowId' => [ - 'description' => 'The episode of the highest priority.'."\n" - ."\n" - .'> You can configure this parameter only before the episode list starts playing.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'HighPriorityShowStartTime' => [ - 'description' => 'The time at which the episode of the highest priority is played. Format: yyyy-MM-dd\'T\'HH:mm:ss.'."\n" - ."\n" - .'> You can configure this parameter only before the episode list starts playing. After you configure this parameter, when the specified point in time is reached, any episode that is playing stops and the episode of the highest priority in the episode list starts to play.'."\n", - 'type' => 'string', - 'example' => '2021-11-23T12:30:00', - ], - 'ShowList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Show' => [ - 'description' => 'The episodes in the episode list.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Duration' => [ - 'description' => 'The duration of the episode. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - 'RepeatTimes' => [ - 'description' => 'The number of times the episode repeats after the first playback is complete.'."\n" - ."\n" - .'For example, if you set the value to 0, the episode is to be played once. If you set the value to 1, the episode is to be played twice.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - 'ResourceInfo' => [ - 'description' => 'The resource information.'."\n", - 'type' => 'object', - 'properties' => [ - 'LiveInputType' => [ - 'description' => 'The custom type label.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'ResourceId' => [ - 'description' => 'The ID of the video-on-demand (VOD) file.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'ResourceType' => [ - 'description' => 'The type of the resource.'."\n", - 'type' => 'string', - 'example' => 'vod', - ], - 'ResourceUrl' => [ - 'description' => 'The URL of the resource.'."\n", - 'type' => 'string', - 'example' => 'http://**/atestObject**.m3u8', - ], - ], - ], - 'ShowId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'ShowName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'example' => 'liveShow****', - ], - ], + 'StreamData' => [ + 'description' => 'The returned data set.', + 'type' => 'array', + 'items' => [ + 'description' => 'The stream data.', + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'app', 'title' => ''], + 'Duration' => ['description' => 'The duration. Unit: seconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '300', 'title' => ''], + 'Fps' => [ + 'description' => 'The frame rate.', + 'enumValueTitles' => ['normal' => 'normal', 'high' => 'high', 'def' => 'def'], + 'type' => 'string', + 'example' => 'high', + 'title' => '', + ], + 'Region' => ['description' => 'The region.', 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + 'Resolution' => [ + 'description' => 'The resolution. Valid values:'."\n" + ."\n" + .'- 2K: 2K.'."\n" + .'- 4K: 4K.'."\n" + .'- LD: low definition.'."\n" + .'- SD: standard definition.'."\n" + .'- HD: high definition.'."\n" + .'- def: audio.', + 'enumValueTitles' => ['SD' => 'SD', 'def' => 'def', '4K' => '4K', 'LD' => 'LD', '2K' => '2K', 'HD' => 'HD'], + 'type' => 'string', + 'example' => '4K', + 'title' => '', + ], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'stream', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time segment. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2023-06-11T02:45:00Z', 'title' => ''], + 'TranscodeType' => [ + 'description' => 'The transcoding type. Valid values:'."\n" + ."\n" + .'- H264STD: H.264 default transcoding.'."\n" + .'- H264NBHD: H.264 Narrowband HD transcoding.'."\n" + .'- H265STD: H.265 default transcoding.'."\n" + .'- AUDIO: audio transcoding.', + 'enumValueTitles' => ['H264NBHD' => 'H264NBHD', 'AUDIO' => 'AUDIO', 'H264STD' => 'H264STD', 'H265STD' => 'H265STD'], + 'type' => 'string', + 'example' => 'H264STD', + 'title' => '', ], ], + 'title' => '', + 'example' => '', ], - ], - 'ShowListRepeatTimes' => [ - 'description' => 'The number of additional times the episode list is played by default. The value is 0.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'TotalShowListRepeatTimes' => [ - 'description' => 'The number of additional times the episode list is played.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified StartTime or EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'InvalidPageToken', 'errorMessage' => 'The token of page is invalid.', 'description' => 'The specified paging token is incorrect. Specify the correct token returned by the last query and confirm that your request parameters are not modified.'], + ['errorCode' => 'InvalidAppName.Mismatch', 'errorMessage' => 'The AppName param must be passed.', 'description' => 'The AppName parameter does not match. Make sure that you specify the correct AppName.'], + ['errorCode' => 'InvalidStreamProtocol.NotSupport', 'errorMessage' => 'The specified stream protocol is not support.', 'description' => ''], + ['errorCode' => 'InvalidStreamName.LengthTooLong', 'errorMessage' => 'The specified stream name is too long.', 'description' => ''], + ['errorCode' => 'InvalidAppName.LengthTooLong', 'errorMessage' => 'The specified app name is too long.', 'description' => ''], + ['errorCode' => 'InvalidTime.ValueNotSupported', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'The specified time is invalid.'], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShowList.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShow.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"EndTime\\": \\"2023-06-11T02:46:40Z\\",\\n \\"NextPageToken\\": \\"UjsM9x3aVcJi9a0-ArwJUTTC67C***37C0=\\",\\n \\"PageSize\\": 5000,\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StartTime\\": \\"2023-06-11T03:46:40Z\\\\n\\",\\n \\"StreamDetailData\\": {\\n \\"StreamData\\": [\\n {\\n \\"AppName\\": \\"app\\",\\n \\"Duration\\": 300,\\n \\"Fps\\": \\"high\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"Resolution\\": \\"4K\\",\\n \\"StreamName\\": \\"stream\\",\\n \\"TimeStamp\\": \\"2023-06-11T02:45:00Z\\",\\n \\"TranscodeType\\": \\"H264STD\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query transcoding usage of video streams at stream granularity', + 'description' => '- Maximum query span: 24 hours.'."\n" + .'- Minimum query granularity: 5 minutes.'."\n" + .'- Maximum query range: data from the last 31 days.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this API is 10 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Call this operation at a reasonable frequency.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamTranscodeMetricData'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamTranscodeMetricData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ShowList\\": \\"ShowList[Show1, Show2, Show3...]\\",\\n \\"ShowListInfo\\": {\\n \\"CurrentShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"Background\\": \\"{\\\\\\\\\\\\\\"MaterialId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"resourceType\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"VOD\\\\\\\\\\\\\\"}\\",\\n \\"HighPriorityShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"HighPriorityShowStartTime\\": \\"2021-11-23T12:30:00\\",\\n \\"ShowList\\": {\\n \\"Show\\": [\\n {\\n \\"Duration\\": 20,\\n \\"RepeatTimes\\": 5,\\n \\"ResourceInfo\\": {\\n \\"LiveInputType\\": 1,\\n \\"ResourceId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"ResourceType\\": \\"vod\\",\\n \\"ResourceUrl\\": \\"http://**/atestObject**.m3u8\\"\\n },\\n \\"ShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"ShowName\\": \\"liveShow****\\"\\n }\\n ]\\n },\\n \\"ShowListRepeatTimes\\": 0,\\n \\"TotalShowListRepeatTimes\\": 1\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n ShowList[Show1, Show2, Show3...]\\n \\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n {\\\\\\"MaterialId\\\\\\":\\\\\\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\\\\\",\\\\\\"resourceType\\\\\\":\\\\\\"VOD\\\\\\"}\\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n 2021-11-23T12:30:00\\n \\n 20\\n 5\\n \\n 1\\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n vod\\n http://**/atestObject**.m3u8\\n \\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n liveShow****\\n \\n 0\\n 1\\n \\n","errorExample":""}]', - 'title' => 'DescribeShowList', - 'description' => 'You cannot call this operation if the episode list is empty. For information about how to add episodes to the episode list, see [AddShowIntoShowList](~~2848051~~).'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', ], - 'PlayChoosenShow' => [ - 'summary' => 'Switches to a specified episode.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveStreamTranscodeStreamNum' => [ + 'summary' => 'Queries the number of transcoding streams in real time by calling DescribeLiveStreamTranscodeStreamNum.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '107109', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'ShowId', + 'name' => 'SplitType', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the episode that you want to switch to.'."\n" - ."\n" - .'> You can call the [AddShowIntoShowList](~~2848051~~) or [DescribeShowList](~~2848054~~) operation and check the value of the response parameter ShowId to obtain the ID.'."\n", + 'description' => 'The grouping type. Valid values:'."\n" + .'* domain (default)'."\n" + .'* template.', + 'enumValueTitles' => ['template' => 'template.', 'domain' => 'domain.'], 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', + 'default' => 'domain', + 'enum' => ['domain', 'template'], + 'required' => false, + 'example' => 'template', + 'title' => '', ], ], ], @@ -40091,185 +31386,101 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'ShowId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', + 'UntranscodeNumber' => ['description' => 'The number of streams that are not transcoded.', 'type' => 'integer', 'format' => 'int64', 'example' => '27', 'title' => ''], + 'LazyTranscodedNumber' => ['description' => 'The number of streams that triggered transcoding.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + 'TranscodedNumber' => ['description' => 'The number of transcoded streams.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '150191A4-DD88-5941-B48C-9DF59E0A8B1F', 'title' => ''], + 'Total' => ['description' => 'The total number of transcoding streams.', 'type' => 'integer', 'format' => 'int64', 'example' => '57', 'title' => ''], + 'TranscodeStreamCountDetails' => [ + 'description' => 'The transcoding template data.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Template' => ['description' => 'The name of the transcoding template.', 'type' => 'string', 'example' => 'template_name', 'title' => ''], + 'Count' => ['description' => 'The number of streams for the transcoding template.', 'type' => 'integer', 'format' => 'int32', 'example' => '30', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShowList.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShow.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\"\\n}","errorExample":""},{"type":"xml","example":" \\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\na2b8e671-2fe5-4642-a2ec-bf93880e****\\n ","errorExample":""}]', - 'title' => 'PlayChoosenShow', - 'description' => 'After you add episodes to an episode list and start live streaming, you can call this operation to switch among episodes. For information about how to add episodes to an episode list, see [AddShowIntoShowList](~~2848051~~).'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'InitializeAutoShowListTask' => [ - 'summary' => 'Creates a scheduled task to start and stop the playback of a playlist at specified points in time.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"UntranscodeNumber\\": 27,\\n \\"LazyTranscodedNumber\\": 10,\\n \\"TranscodedNumber\\": 30,\\n \\"RequestId\\": \\"150191A4-DD88-5941-B48C-9DF59E0A8B1F\\",\\n \\"Total\\": 57,\\n \\"TranscodeStreamCountDetails\\": [\\n {\\n \\"Template\\": \\"template_name\\",\\n \\"Count\\": 30\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'Query the number of live stream transcoding streams', + 'description' => 'The QPS limit for a single user on this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation at a reasonable frequency.', + 'changeSet' => [ + ['createdAt' => '2025-04-11T03:12:48.000Z', 'description' => 'Error codes changed, Request parameters changed, Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamTranscodeStreamNum', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveStreamWatermarkRules' => [ + 'summary' => 'Queries a list of watermark rules.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'ResourceIds', - 'in' => 'query', - 'schema' => [ - 'description' => 'The IDs of on-demand media asset files in the playlist. Only on-demand video files are supported. You can specify up to three video files in the playlist. The video files in the playlist are automatically played in sequence. The playback stops at the point in time specified by the EndTime parameter.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* You can obtain the ID of a video file in the ApsaraVideo Live console or by calling an API operation. For more information, see [Media asset management](~~86057~~) or [CreateUploadVideo](~~55407~~). - If the video files are all played before the time specified by EndTime, the final frame of the final video file is played until the time specified by EndTime arrives.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '["89e02xxxxfb349axxxxa0c350d**** ","6ae0xxxxxb349axxxxa0c350a****"]', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start timestamp. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '1645688994000', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end timestamp. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '1645688994000', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterConfig', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The configurations of the production studio. The following configurations are involved:'."\n" - ."\n" - .'* CasterTemplate: required. The output resolution.'."\n" - .'* LiveTemplate: optional. The templates to be used for transcoding.'."\n" - ."\n" - .'> Set the value to a JSON string. Use upper camel case for fields of the string.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '{"CasterTemplate": "lp_ld","LiveTemplates":["lhd", "lsd","lud"]}', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => false, 'example' => 'live.yourdomain.com', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The output streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.aliyundoc.com', - ], + 'schema' => ['description' => 'The page number. The default value is 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'CallBackUrl', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://***.com/callback', - ], + 'schema' => ['description' => 'The number of entries to return on each page. The default value is 100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100', 'title' => ''], ], ], 'responses' => [ @@ -40277,156 +31488,103 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'> The value of this parameter can be used as the value of a request parameter to query the streaming URL of the production studio, start the production studio, add video resources to the production studio, add a production studio layout, query production studio layouts, add a production studio component, and add a production studio playlist.'."\n", - 'type' => 'string', - 'example' => 'b4810848-bcf9-4aef-bd4a-e6bba2d9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'StreamList' => [ - 'description' => 'The list of output video streams.'."\n" - ."\n" - .'* videoFormat: the format of the streaming URL.'."\n" - .'* outputStreamUrl: the source URL.'."\n" - .'* transcodeConfig: the output resolution specified for video transcoding of the source URL.'."\n", - 'type' => 'string', - 'example' => '[{"videoFormat":"flv","outputStreamUrl":"http://example.aliyundoc.com","transcodeConfig":"original"}]', + 'Total' => ['description' => 'The total number of matching entries.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b9676b3', 'title' => ''], + 'RuleInfoList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RuleInfo' => [ + 'itemNode' => true, + 'description' => 'The list of watermark rules.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of watermark rules.', + 'type' => 'object', + 'properties' => [ + 'Domain' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.aliyundoc.com', 'title' => ''], + 'Description' => ['description' => 'The custom description of the rule.', 'type' => 'string', 'example' => 'my rule', 'title' => ''], + 'App' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'Stream' => ['description' => 'The stream name. The following matching methods are supported:'."\n" + ."\n" + .'- Exact match: Enter the full stream name. Example: liveStreamA.'."\n" + ."\n" + .'- Wildcard match: Use an asterisk (`*`) to match all streams.'."\n" + ."\n" + .'- Fuzzy match: Use prefix or suffix matching.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- Format for fuzzy matching: Use only one asterisk (`*`). The asterisk must be at the beginning or end of the string. Enclose the matching items in parentheses (`()`) and separate multiple items with vertical bars (`|`).'."\n" + ."\n" + .'- Examples: `*(t1|t2)` matches all streams that end with `t1` or `t2`. `(abc|123)*` matches all streams that start with `abc` or `123`.'."\n" + ."\n" + .'>', 'type' => 'string', 'example' => 'liveStreamA', 'title' => ''], + 'Name' => ['description' => 'The custom name of the rule.', 'type' => 'string', 'example' => 'WatermarkRule****', 'title' => ''], + 'TemplateId' => ['description' => 'The ID of the watermark template.'."\n" + ."\n" + .'> To obtain the template ID, check the response of the [AddLiveStreamWatermark](~~2848096~~) operation.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9 ****', 'title' => ''], + 'RuleId' => ['description' => 'The ID of the watermark rule.'."\n" + ."\n" + .'> To obtain the rule ID, check the response of the [AddLiveStreamWatermarkRule](~~2848100~~) operation.', 'type' => 'string', 'example' => '445409ec-7eaa-461d -8f29-4bec2eb9****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter.PurchaseTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.ExpireTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidChargeType.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidChargeType.PostSupport', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidParameter.ChargeType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPeriod.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.StartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'CasterNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'IncorrectCasterStatus.EnableChannel', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.NormType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 408 => [ - [ - 'errorCode' => 'CreateCaster.Timeout', - 'errorMessage' => '%s, please try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"b4810848-bcf9-4aef-bd4a-e6bba2d9****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StreamList\\": \\"[{\\\\\\"videoFormat\\\\\\":\\\\\\"flv\\\\\\",\\\\\\"outputStreamUrl\\\\\\":\\\\\\"http://example.aliyundoc.com\\\\\\",\\\\\\"transcodeConfig\\\\\\":\\\\\\"original\\\\\\"}]\\"\\n}","errorExample":""},{"type":"xml","example":"\\n9F6448C9-6F92-1BAC-AFDD-C308782A6573\\n\\n flv\\n http://example.aliyundoc.com/caster/2967b3b2b52242019c277de2a11a****.flv\\n original\\n\\n6277b6a3-1a40-4063-85f7-145666e3****\\n","errorExample":""}]', - 'title' => 'InitializeAutoShowListTask', - 'description' => 'You can call this operation to create a scheduled task to start and stop the playback of an episode list at specified points in time. Make sure that the parameter settings meet the requirements.'."\n" + 'title' => 'DescribeLiveStreamWatermarkRules', + 'description' => 'This operation supports pagination.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'DescribeAutoShowListTasks' => [ - 'summary' => 'Queries scheduled tasks that are used to start and stop playing an episode list at specified points in time.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamWatermarkRules'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamWatermarkRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Total\\": 100,\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b9676b3\\",\\n \\"RuleInfoList\\": {\\n \\"RuleInfo\\": [\\n {\\n \\"Domain\\": \\"example.aliyundoc.com\\",\\n \\"Description\\": \\"my rule\\",\\n \\"App\\": \\"liveApp****\\",\\n \\"Stream\\": \\"liveStreamA\\",\\n \\"Name\\": \\"WatermarkRule****\\",\\n \\"TemplateId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9 ****\\",\\n \\"RuleId\\": \\"445409ec-7eaa-461d -8f29-4bec2eb9****\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamWatermarks' => [ + 'summary' => 'Queries watermark templates.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -40437,235 +31595,164 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio for which you want to query scheduled tasks.'."\n" - ."\n" - .'> If the scheduled tasks were created by calling the [InitializeAutoShowListTask](~~2848056~~) operation, check the value of the response parameter CasterId to obtain the ID. If you do not specify this parameter, the system queries all the scheduled tasks that belong to the user specified by the OwnerId parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '53200b81-b761-4c10-842a-a0726d97****', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => false, 'example' => 'live.yourdomain.com', 'title' => ''], + ], + [ + 'name' => 'KeyWord', + 'in' => 'query', + 'schema' => ['description' => 'The keyword for the search. You can specify a template ID or name. Fuzzy search is supported for names.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => ['description' => 'The page number. The default value is 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of templates to return on each page. The default value is 100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '100', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The watermark template information.', 'type' => 'object', 'properties' => [ - 'AutoShowListTasks' => [ - 'description' => 'The information about the scheduled tasks. The following fields are included:'."\n" - ."\n" - .'* Status: the status of the scheduled task. Valid values: 0 and 1. A value of 0 indicates that the scheduled task is paused. A value of 1 indicates that the scheduled task is started.'."\n" - .'* LiveTemplate: the transcoding templates.'."\n" - .'* TranscodeConfig: the transcoding configuration for the source URL.'."\n" - .'* CasterId: the ID of the production studio.'."\n", - 'type' => 'string', - 'example' => '{"Status":0,"TranscodeConfig":{"CasterTemplate":"lp_hd", "LiveTemplate":["lhd","lsd"]}, "CasterId":"cce04ef3-2226-4865-8704-f84b8375****"}', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'Total' => ['description' => 'The total number of matching entries.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b9676b3', 'title' => ''], + 'WatermarkList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Watermark' => [ + 'description' => 'The list of watermark templates.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of watermark templates.', + 'type' => 'object', + 'properties' => [ + 'Type' => ['description' => 'The watermark type.'."\n" + ."\n" + .'- 0: Image.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'XOffset' => ['description' => 'The X-axis offset of the watermark, in pixels.'."\n" + ."\n" + .'> Relative to RefWidth. If OffsetCorner is TopLeft, XOffset is the horizontal distance between the top‑left corner of the watermark and the top‑left corner of the background video. Positive X points to the right.', 'type' => 'number', 'format' => 'float', 'example' => '50.0', 'title' => ''], + 'RefWidth' => ['description' => 'The reference width of the video background, in pixels.', 'type' => 'integer', 'format' => 'int32', 'example' => '1920', 'title' => ''], + 'YOffset' => ['description' => 'The Y-axis offset of the watermark, in pixels.'."\n" + ."\n" + .'> Relative to RefHeight. If OffsetCorner is TopLeft, YOffset is the vertical distance between the top‑left corner of the watermark and the top‑left corner of the background video. Positive Y points downward.', 'type' => 'number', 'format' => 'float', 'example' => '100.0', 'title' => ''], + 'Height' => ['description' => 'The height of the watermark image, in pixels. This value is relative to `RefHeight` and is scaled proportionally with the actual video resolution.', 'type' => 'integer', 'format' => 'int32', 'example' => '200', 'title' => ''], + 'RefHeight' => ['description' => 'The reference height of the video background, in pixels.', 'type' => 'integer', 'format' => 'int32', 'example' => '1080', 'title' => ''], + 'PictureUrl' => ['description' => 'The URL of the watermark image.', 'type' => 'string', 'example' => 'http://example.com', 'title' => ''], + 'Transparency' => ['description' => 'The opacity of the watermark. Value range: `0` (fully transparent) to `255` (fully opaque).', 'type' => 'integer', 'format' => 'int32', 'example' => '255', 'title' => ''], + 'Description' => ['description' => 'The custom description of the watermark.', 'type' => 'string', 'example' => 'my watermark', 'title' => ''], + 'OffsetCorner' => ['description' => 'The anchor point for the watermark\'s position. Valid values:'."\n" + ."\n" + .'- TopLeft'."\n" + ."\n" + .'- TopRight'."\n" + ."\n" + .'- BottomLeft'."\n" + ."\n" + .'- BottomRight', 'type' => 'string', 'example' => 'TopRight', 'title' => ''], + 'RuleCount' => ['description' => 'The number of watermark rules configured for the domain.', 'type' => 'integer', 'format' => 'int32', 'example' => '12', 'title' => ''], + 'Name' => ['description' => 'The name of the watermark.', 'type' => 'string', 'example' => 'livewatermark****', 'title' => ''], + 'TemplateId' => ['description' => 'The ID of the watermark template.', 'type' => 'string', 'example' => '445409ec-7eaa-4 61d-8f29-4bec2eb9 ****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVodUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidShowList.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"AutoShowListTasks\\": \\"{\\\\\\"Status\\\\\\":0,\\\\\\"TranscodeConfig\\\\\\":{\\\\\\"CasterTemplate\\\\\\":\\\\\\"lp_hd\\\\\\", \\\\\\"LiveTemplate\\\\\\":[\\\\\\"lhd\\\\\\",\\\\\\"lsd\\\\\\"]}, \\\\\\"CasterId\\\\\\":\\\\\\"cce04ef3-2226-4865-8704-f84b8375****\\\\\\"}\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n04F5D5E0-9FAA-13CB-96A9-850FB06E9A82\\n\\n 0\\n 1645594715228\\n [\\"6ae09369cab349a78dab7a0c350dfb9d\\"]\\n 1645594115228\\n \\n lp_hd\\n lhd\\n lsd\\n \\n e18b0c36-c0b5-47c1-81fd-7d783b5c7802\\n\\n","errorExample":""}]', - 'title' => 'DescribeAutoShowListTasks', - 'description' => 'You can call this operation to query scheduled tasks that are used to start and stop playing an episode list at specified points in time. Make sure that the parameter settings meet the requirements.'."\n" + 'title' => 'DescribeLiveStreamWatermarks', + 'description' => 'This operation supports paging.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'EditShowAndReplace' => [ - 'summary' => 'Creates an editing task.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamWatermarks'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamWatermarks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Total\\": 100,\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b9676b3\\",\\n \\"WatermarkList\\": {\\n \\"Watermark\\": [\\n {\\n \\"Type\\": 0,\\n \\"XOffset\\": 50,\\n \\"RefWidth\\": 1920,\\n \\"YOffset\\": 100,\\n \\"Height\\": 200,\\n \\"RefHeight\\": 1080,\\n \\"PictureUrl\\": \\"http://example.com\\",\\n \\"Transparency\\": 255,\\n \\"Description\\": \\"my watermark\\",\\n \\"OffsetCorner\\": \\"TopRight\\",\\n \\"RuleCount\\": 12,\\n \\"Name\\": \\"livewatermark****\\",\\n \\"TemplateId\\": \\"445409ec-7eaa-4 61d-8f29-4bec2eb9 ****\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamsBlockList' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '53200b81-b761-4c10-842a-a0726d97****', - ], - ], - [ - 'name' => 'ShowId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode to be edited.'."\n" - ."\n" - .'> You can obtain the ID from the response parameter ShowId of the [AddShowIntoShowList](~~2848051~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '42200b81-b761-4c10-842a-a0726d97****', - ], - ], - [ - 'name' => 'UserData', - 'in' => 'query', - 'schema' => [ - 'description' => 'The user information.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '900a2b2r8-13c2-****-88f2-75e4a07c1ed9', - ], - ], - [ - 'name' => 'StorageInfo', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The storage information of the episode. The following fields are included:'."\n" - ."\n" - .'* **StorageLocation**: the storage location of ApsaraVideo VOD.'."\n" - .'* **FileName**: the custom file name.'."\n" - ."\n" - .'> Editing outputs must be stored in the VOD bucket within the same account that is used to access both ApsaraVideo VOD and ApsaraVideo Live. For more information about how to obtain the storage location, see [Manage VOD resources](~~86097~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{ "StorageLocation":"***bucket***", "FileName":"EditFile****.mp4" }', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'PageNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of the editing task. Unit: seconds.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The valid values range from 0 to the value indicated by the total length of the episode. By default, the editing task starts from the beginning of the episode. Default value: 0.0.'."\n" - ."\n" - .'* If you want to edit a VOD file from the 2nd second to the 5th second, set the StartTime parameter to 2.0 and the EndTime parameter to 5.0.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '2.0', - ], + 'schema' => ['description' => 'The number of the page to return. Default value: **1**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '2', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of the editing task. Unit: seconds.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The valid values range from 0 to the value indicated by the total length of the episode.'."\n" - ."\n" - .'* By default, this parameter is set to the value that indicates the total length of the episode. The editing period cannot exceed the total length of the episode.'."\n" - ."\n" - .'* If you want to edit a VOD file from the 2nd second to the 5th second, set the StartTime parameter to 2.0 and the EndTime parameter to 5.0.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '5.0', - ], + 'schema' => ['description' => 'The number of entries to return on each page. Valid values: 1 to 3000. Default value: 2000.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '3000', 'minimum' => '1', 'default' => '2000', 'example' => '10', 'title' => ''], ], ], 'responses' => [ @@ -40673,98 +31760,70 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'JobInfo' => [ - 'description' => 'The information about the editing task. The following fields are included:'."\n" - ."\n" - .'* **vodId**: the ID of the VOD file.'."\n" - .'* **mediaid**: the ID of the media file.'."\n" - .'* **jobId**: the ID of the editing task.'."\n", - 'type' => 'string', - 'example' => '{ "vodId": "3e34733b40b9a96ccf5c1ff6f69****", "mediaid": "eb1861d2c9a842340e989dd56****", "jobId": "7d2fbc380b0e08e55fe98733764****" }', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'PageNum' => ['description' => 'The page number of the returned page.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '9D855EC8-CF71-4615-B164-F7DFCB23B41D', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries returned on the current page.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that meet the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '11', 'title' => ''], + 'DomainName' => ['description' => 'The main streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'StreamUrls' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamUrl' => [ + 'description' => 'The complete streaming URL.', + 'type' => 'array', + 'items' => ['description' => 'The complete streaming URL.', 'type' => 'string', 'example' => 'example.com/liveApp****/liveStream****', 'title' => ''], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVodUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'RequestForbiddenForIce', - 'errorMessage' => '%s, please try again later.', - ], - ], - [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShowList.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobInfo\\": \\"{ \\\\\\"vodId\\\\\\": \\\\\\"3e34733b40b9a96ccf5c1ff6f69****\\\\\\", \\\\\\"mediaid\\\\\\": \\\\\\"eb1861d2c9a842340e989dd56****\\\\\\", \\\\\\"jobId\\\\\\": \\\\\\"7d2fbc380b0e08e55fe98733764****\\\\\\" }\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":" \\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\n 3e34733b40b9a96ccf5c1ff6f69****\\n eb1861d2c9a842340e989dd56****\\n 7d2fbc380b0e08e55fe98733764****\\n\\n","errorExample":""}]', - 'title' => 'EditShowAndReplace', - 'description' => 'You can call this operation to create an editing task by specifying the production studio ID and the episode ID. You will not receive a notification after the editing task is created. You can call the [GetEditingJobInfo](~~2848059~~) operation to query the status of the editing task.'."\n" + 'errorCodes' => [], + 'title' => 'DescribeLiveStreamsBlockList', + 'summary' => 'Queries the live streams that are blacklisted under a streaming domain.', + 'description' => 'The streaming URLs refer to the URLs for playback.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'GetEditingJobInfo' => [ - 'summary' => 'Queries the information about editing tasks.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsBlockList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsBlockList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PageNum\\": 2,\\n \\"RequestId\\": \\"9D855EC8-CF71-4615-B164-F7DFCB23B41D\\",\\n \\"TotalPage\\": 2,\\n \\"PageSize\\": 10,\\n \\"TotalNum\\": 11,\\n \\"DomainName\\": \\"example.com\\",\\n \\"StreamUrls\\": {\\n \\"StreamUrl\\": [\\n \\"example.com/liveApp****/liveStream****\\"\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamsControlHistory' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -40775,46 +31834,35 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '53200b81-b761-4c10-842a-a0726d97****', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'ShowId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode for which you want to query editing tasks.'."\n" - ."\n" - .'> You can obtain the ID from the response parameter ShowId of the [AddShowIntoShowList](~~370861~~) operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '72200b81-b761-4c10-842a-a0726d97****', - ], + 'schema' => ['description' => 'The application name. View AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" + ."\n" + .'> The interval between EndTime and StartTime cannot exceed 7 days.', 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], ], 'responses' => [ @@ -40822,396 +31870,277 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio.'."\n", - 'type' => 'string', - 'example' => '53200b81-b761-4c10-842a-a0726d97****', - ], - 'EditingTasksInfo' => [ - 'description' => 'The information about editing tasks. The following fields are returned for each editing task:'."\n" - ."\n" - .'* **OutputVodId**: the ID of the output video-on-demand (VOD) file.'."\n" - .'* **TaskStatus**: the status of the editing task. Valid values: -1, 0, 1, 2, and 3. A value of -1 indicates that the editing task fails. A value of 0 indicates that the editing task is being initialized. A value of 1 indicates that editing is in progress. A value of 2 indicates that the output VOD file is being uploaded. A value of 3 indicates that the editing task is successful.'."\n" - .'* **StorageLocation**: the storage location in ApsaraVideo VOD.'."\n" - .'* **FileName**: the name of the file that is edited.'."\n" - .'* **ShowId**: the ID of the episode.'."\n", - 'type' => 'string', - 'example' => '"EditingTasksInfo": { "OutputVodId": "3e34733b40b9a96ccf5c1ff6f69****", "TaskStatus": 1, "StorageInfo": { "StorageLocation": "***bucket***", "FileName": "EditFile****" }, "ShowId": "42200b81-b761-4c10-842a-a0726d97****" },', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9C31856F-386D-4DB3-BE79-A0AA493D702A', 'title' => ''], + 'ControlInfo' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveStreamControlInfo' => [ + 'description' => 'The operation records.', + 'type' => 'array', + 'items' => [ + 'description' => 'The operation records.', + 'type' => 'object', + 'properties' => [ + 'ClientIP' => ['description' => 'The client IP address.', 'type' => 'string', 'example' => '10.207.XX.XX', 'title' => ''], + 'TimeStamp' => ['description' => 'The time when the operation was performed. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2015-12-01T16:36:18Z', 'title' => ''], + 'Action' => ['description' => 'The name of the operation performed.', 'type' => 'string', 'example' => 'DescribeLiveStreamsControlHistory', 'title' => ''], + 'StreamName' => ['description' => 'The name of the live stream.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidVodUrl.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidShowList.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified parameter StartTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified parameter EndTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"53200b81-b761-4c10-842a-a0726d97****\\",\\n \\"EditingTasksInfo\\": \\"\\\\\\"EditingTasksInfo\\\\\\": { \\\\\\"OutputVodId\\\\\\": \\\\\\"3e34733b40b9a96ccf5c1ff6f69****\\\\\\", \\\\\\"TaskStatus\\\\\\": 1, \\\\\\"StorageInfo\\\\\\": { \\\\\\"StorageLocation\\\\\\": \\\\\\"***bucket***\\\\\\", \\\\\\"FileName\\\\\\": \\\\\\"EditFile****\\\\\\" }, \\\\\\"ShowId\\\\\\": \\\\\\"42200b81-b761-4c10-842a-a0726d97****\\\\\\" },\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', - 'title' => 'GetEditingJobInfo', - 'description' => '* When you call this operation, you can specify the CasterId and ShowId parameters to query the information about specific editing tasks. Make sure that the parameter settings meet the requirements.'."\n" - .'* If you specify the ShowId parameter in the request, the information about the editing tasks for the specified episode is returned.'."\n" - .'* If you do not specify the ShowId parameter in the request, the information about the editing tasks for the entire episode list is returned.'."\n" + 'title' => 'DescribeLiveStreamsControlHistory', + 'summary' => 'Queries the operations performed on live streams for a specified domain name or application.', + 'description' => 'The operations include all API operations that were called on live streams.'."\n" ."\n" - .'### [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'SetShowListBackground' => [ - 'summary' => 'Configures the background of the episode list.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsControlHistory'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsControlHistory', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9C31856F-386D-4DB3-BE79-A0AA493D702A\\",\\n \\"ControlInfo\\": {\\n \\"LiveStreamControlInfo\\": [\\n {\\n \\"ClientIP\\": \\"10.207.XX.XX\\",\\n \\"TimeStamp\\": \\"2015-12-01T16:36:18Z\\",\\n \\"Action\\": \\"DescribeLiveStreamsControlHistory\\",\\n \\"StreamName\\": \\"liveStream****\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamsNotifyRecords' => [ + 'summary' => 'Queries stream callback records.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '227260', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'allowEmptyValue' => false, - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'push.example1.com', 'title' => ''], ], [ - 'name' => 'ResourceType', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The resource type. Valid values:'."\n" - ."\n" - .'* LIVE: live stream. You can add a live stream from ApsaraVideo Live or by using a third-party URL.'."\n" - .'* VOD: on-demand video. You can add an on-demand video from ApsaraVideo VOD or by using a third-party URL.'."\n" - .'* PIC: image. You can add an image from ApsaraVideo VOD or by using a third-party URL.'."\n" - ."\n" - .'> Set this parameter to one of the preceding values, or leave this parameter empty.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'VOD', - 'enum' => [ - 'VOD', - 'PIC', - 'LIVE', - ], - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'app', 'title' => ''], ], [ - 'name' => 'MaterialId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the material in ApsaraVideo VOD.'."\n" - ."\n" - .'> Specify either this parameter or the ResourceUrl parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The name of the live stream. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'stream', 'title' => ''], ], [ - 'name' => 'ResourceUrl', + 'name' => 'Status', 'in' => 'query', 'schema' => [ - 'description' => 'The URL of the third-party material.'."\n", + 'description' => 'Specifies whether the callback is successful. Valid values:'."\n" + .'- success: Successful.'."\n" + .'- failed: Failed.', + 'enumValueTitles' => ['success' => 'Successful.', 'failed' => 'Failed.'], 'type' => 'string', 'required' => false, - 'example' => 'http://****/atestObject****.m3u8', + 'enum' => ['success', 'failed'], + 'example' => 'success', + 'title' => '', ], ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n" + ."\n" + .'> The start time must be within the last 7 days.', 'type' => 'string', 'required' => true, 'example' => '2017-12-10T08:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-10T09:00:00Z', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The page size. Default value: 20. Maximum value: 500. Valid values: any integer from 1 to 500.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '20', 'example' => '20', 'title' => ''], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Default value: 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'The stream ingest callback records.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '987DA143-A39C-5B5D-AF5B-3B07944A0036', + 'NotifyRecordsInfo' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveStreamNotifyRecordsInfo' => [ + 'description' => 'The stream ingest callback records.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'NotifyType' => ['description' => 'The callback type. Valid values:'."\n" + .'- publish: a stream ingest event.'."\n" + .'- publish_done: a stream disconnection event.', 'type' => 'string', 'example' => 'publish_done', 'title' => ''], + 'Description' => ['description' => 'The result description. The value is success if the callback is successful. Otherwise, an error message is returned.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'StreamName' => ['description' => 'The name of the live stream.', 'type' => 'string', 'example' => 'stream', 'title' => ''], + 'NotifyTime' => ['description' => 'The time when the callback occurred (UTC).', 'type' => 'string', 'example' => '2022-10-19T19:09:28Z', 'title' => ''], + 'DomainName' => ['description' => 'The ingest domain.', 'type' => 'string', 'example' => 'push.example1.com', 'title' => ''], + 'NotifyContent' => ['description' => 'The specific content of the callback.', 'type' => 'string', 'example' => '{\\"action\\":\\"publish_done\\",\\"app\\":\\"push.example1.com\\"}', 'title' => ''], + 'NotifyUrl' => ['description' => 'The callback URL.', 'type' => 'string', 'example' => 'http://xx.xx.xx.xx/callbacks', 'title' => ''], + 'NotifyResult' => ['description' => 'The callback result. Valid values:'."\n" + .'- success: Successful.'."\n" + .'- failed: Failed.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'AppName' => ['description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'example' => 'app', 'title' => ''], + 'NotifyResponse' => ['description' => 'The response returned by the user after receiving the callback.', 'type' => 'string', 'example' => '{"Code":0,"Msg":"Success"}', 'title' => ''], + 'NotifyHeader' => ['description' => 'The request header of the callback request.', 'type' => 'string', 'example' => 'Host: 123456.cn-shanghai.example1.com'."\n" + .'User-Agent: Go-http-client/1.1'."\n" + .'Accept-Encoding: gzip', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The page size.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'F675E4B4-125D-1533-901B-11A724644285', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that match the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidParameter.Status', - 'errorMessage' => '%s, please check and try again.', - ], - [ - 'errorCode' => 'InvalidParameter.StartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.EndTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => 'The caster does not exist.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified parameter StartTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified parameter EndTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified EndTime does not match the specified StartTime.', 'description' => ''], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'StartTime needs to be within the last 7 days.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"987DA143-A39C-5B5D-AF5B-3B07944A0036\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 987DA143-A39C-5B5D-AF5B-3B07944A0036\\n","errorExample":""}]', - 'title' => 'SetShowListBackground', - 'description' => '* Create a production studio in playlist mode, and then call this operation to add the background material. For information about how to create a production studio, see [CreateCaster](~~2848009~~).'."\n" - .'* You can call this operation to create, update, or delete the background of the episode list. To delete the background, leave the ResourceType, ResourceUrl, and MaterialId parameters empty.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* When you select media resources from ApsaraVideo VOD, we recommend that you select resources that are stored in hosted OSS buckets. Resources stored in non-hosted OSS buckets have a validity period. Pay attention to the validity if you select resources that are stored in non-hosted OSS buckets.'."\n" - ."\n" - .'* When you add media resources to a production studio, we recommend that you select resources from ApsaraVideo Live and ApsaraVideo VOD. If you add a third-party stream by specifying a streaming URL, there is a possibility that the stream fails to be played. You must pay attention to the quality and validity of the third-party stream.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'AddStudioLayout' => [ - 'summary' => 'Configures a layout for a virtual studio.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NotifyRecordsInfo\\": {\\n \\"LiveStreamNotifyRecordsInfo\\": [\\n {\\n \\"NotifyType\\": \\"publish_done\\",\\n \\"Description\\": \\"success\\",\\n \\"StreamName\\": \\"stream\\",\\n \\"NotifyTime\\": \\"2022-10-19T19:09:28Z\\",\\n \\"DomainName\\": \\"push.example1.com\\",\\n \\"NotifyContent\\": \\"{\\\\\\\\\\\\\\"action\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"publish_done\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"app\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"push.example1.com\\\\\\\\\\\\\\"}\\",\\n \\"NotifyUrl\\": \\"http://xx.xx.xx.xx/callbacks\\",\\n \\"NotifyResult\\": \\"success\\",\\n \\"AppName\\": \\"app\\",\\n \\"NotifyResponse\\": \\"{\\\\\\"Code\\\\\\":0,\\\\\\"Msg\\\\\\":\\\\\\"Success\\\\\\"}\\",\\n \\"NotifyHeader\\": \\"Host: 123456.cn-shanghai.example1.com\\\\nUser-Agent: Go-http-client/1.1\\\\nAccept-Encoding: gzip\\"\\n }\\n ]\\n },\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 20,\\n \\"RequestId\\": \\"F675E4B4-125D-1533-901B-11A724644285\\",\\n \\"TotalNum\\": 20,\\n \\"TotalPage\\": 20\\n}","type":"json"}]', + 'title' => 'Query stream callback records', + 'description' => 'The QPS limit for a single user of this API operation is 100 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation at an appropriate frequency.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsNotifyRecords'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsNotifyRecords', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLiveStreamsNotifyUrlConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '107102', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'> The production studio must be a virtual studio that you create in advance. You can use the ApsaraVideo Live console or call the CreateCaster operation to create a virtual studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - ], - [ - 'name' => 'LayoutName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the layout.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'Test layout'."\n", - ], - ], - [ - 'name' => 'LayoutType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the layout. Valid values:'."\n" - ."\n" - .'* **common**: If you set this parameter to common, you must specify the CommonConfig parameter.'."\n" - .'* **studio**: If you set this parameter to studio, you must specify the BgImageConfig and ScreenInputConfigList parameters. The MediaInputConfigList parameter is optional.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'studio', - ], - ], - [ - 'name' => 'CommonConfig', - 'in' => 'query', - 'schema' => [ - 'description' => 'The common layout configurations. The value is a JSON string. For more information, see **CommonConfig**.'."\n" - ."\n" - .'> This parameter is required only if you set LayoutType to common.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"ChannelId":"RV01" }', - ], - ], - [ - 'name' => 'BgImageConfig', - 'in' => 'query', - 'schema' => [ - 'description' => 'The background material configurations. The value is a JSON string. For more information, see **BgImageConfig**.'."\n" - ."\n" - .'> This parameter is required only if you set LayoutType to studio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{ "Id":"k12kj31****", "MaterialId":"f080575eb5f4427684fc0715159a****" }', - ], - ], - [ - 'name' => 'ScreenInputConfigList', - 'in' => 'query', - 'schema' => [ - 'description' => 'The input configurations for chroma key. The value is a JSON string. For more information, see **ScreenInputConfig**.'."\n" - ."\n" - .'> This parameter is required only if you set LayoutType to studio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '[ { "Index":"1", "ChannelId":"RV01", "Color":"green", "PositionX":"0.1", "PositionY":"0.2", "HeightNormalized":"0.4" } ]', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'MediaInputConfigList', - 'in' => 'query', - 'schema' => [ - 'description' => 'The multimedia input configurations. The value is a JSON string. For more information, see **MediaInputConfig**.'."\n" - ."\n" - .'> This parameter is optional and is valid only if you set LayoutType to studio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '[ { "Id":"k12kj31****", "Index":"1", "ChannelId":"RV01", "FillMode":"none", "PositionRefer":"topLeft", "WidthNormalized":"0.4", "HeightNormalized":"0.4", "PositionNormalized":"[0.1, 0.2]" }, { "Id":"k12kj31****", "Index":"2", "ImageMaterialId":"lkajsdfsa8fd89asd8****", "FillMode":"none", "PositionRefer":"topLeft", "WidthNormalized":"0.6", "HeightNormalized":"0.4", "PositionNormalized":"[0.1, 0.2]" } ]', - ], - ], - [ - 'name' => 'LayerOrderConfigList', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The layer sorting configurations. The value is a JSON string. For more information, see **layerOrderConfig**. You can sort layers of background and multimedia materials. The chroma key layer cannot be sorted. A layer that is in the front of the code is placed behind other layers in the layout.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '[ { "Type":"media", "Id":"k12kj31****" }, { "Type":"media", "Id":"k12kj31****" } ]', - ], + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ @@ -41219,379 +32148,389 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'LayoutId' => [ - 'description' => 'The ID of the layout. You can use the ID as a request parameter in the following operations: DeleteStudioLayout, ModifyStudioLayout, and DescribeStudioLayouts.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', 'title' => ''], + 'LiveStreamsNotifyConfig' => [ + 'description' => 'The callback configuration.', + 'type' => 'object', + 'properties' => [ + 'DomainName' => ['description' => 'The ingest domain.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'NotifyUrl' => ['description' => 'The callback URL for receiving live stream information.', 'type' => 'string', 'example' => 'http://guide.aliyundoc.com/notify', 'title' => ''], + 'ExceptionNotifyUrl' => ['description' => 'The callback URL for receiving notifications about exception events.', 'type' => 'string', 'example' => 'https://4a7e5f08.r37.cpolar.top/live/Record/call-back/streamException', 'title' => ''], + 'NotifyReqAuth' => ['description' => 'Indicates whether authentication is enabled. Valid values:'."\n" + ."\n" + .'- **yes**'."\n" + ."\n" + .'- **no**', 'type' => 'string', 'example' => 'yes', 'title' => ''], + 'NotifyAuthKey' => ['description' => 'The authentication key.', 'type' => 'string', 'example' => '123456', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidPositionNormalized.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidHeightOrWidthNormalized', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"LayoutId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n 5c6a2a0d-f228-4a64-af62-20e91b9676b3\\n","errorExample":""}]', - 'title' => 'AddStudioLayout', - 'description' => 'You can call this operation to configure a common layout or a studio layout for a virtual studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## CommonConfig'."\n" - ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|ChannelId|String|RV01|The ID of the channel that you want to bind to the video resource.|'."\n" - ."\n" - .'## BgImageConfig'."\n" - ."\n" - .'**Note** You can specify either ImageUrl or MaterialId.'."\n" - ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Id|String|k12kj31\\*\\*\\*\\*|The unique ID of the material.|'."\n" - .'|ImageUrl|String|http://aliyundoc.com|The URL of the material.|'."\n" - .'|MaterialId|String|f080575eb5f4427684fc0715159a\\*\\*\\*\\*|The ID of the material in ApsaraVideo VOD.|'."\n" - ."\n" - .'## ScreenInputConfig'."\n" - ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Index|Integer|1|The sequence number of the chroma key source. This parameter is displayed on the frontend but not used in the operation logic. The value must be a positive integer.|'."\n" - .'|ChannelId|String|RV01|The ID of the channel that you want to bind to the video resource.|'."\n" - .'|Color|String|green|The color gamut for chroma key. Valid values:**blue** **green** **auto**: automatic recognition **complex**: background replacement|'."\n" - .'|PositionX|Float|0.1|The x-coordinate of the material. Valid values: 0 to 1.The upper-left corner is used as the coordinate origin for the material.|'."\n" - .'|PositionY|Float|0.2|The y-coordinate of the material. Valid values: 0 to 1.The upper-left corner is used as the coordinate origin for the material.|'."\n" - .'|HeightNormalized|Float|0.4|The normalized value of the height. The value indicates the ratio of the height of the keyed portrait to the height of the background. Valid values: 0 to 1.|'."\n" - ."\n" - .'## MediaInputConfig'."\n" - ."\n" - .'* If the multimedia material is a video, specify ChannelId.'."\n" - .'* If the multimedia material is an image, specify ImageMeterialId.'."\n" - .'* ChannelId and ImageMeterialId are mutually exclusive. You can specify only one of them.'."\n" - ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Id|String|k12kj31\\*\\*\\*\\*|The unique ID of the multimedia material.|'."\n" - .'|Index|Integer|1|The sequence number of the multimedia material. This parameter is displayed on the frontend but not used in the operation logic. The value must be a positive integer.|'."\n" - .'|ChannelId|String|RV01|The ID of the channel that you want to bind to the video resource.|'."\n" - .'|ImageMaterialId|String|lkajsdfsa8fd89asd8\\*\\*\\*\\*|The ID of the image in ApsaraVideo VOD.|'."\n" - .'|FillMode|String|none|The fill type. Set this parameter to **none**.|'."\n" - .'|PositionRefer|String|topLeft|The coordinate origin for the material. Set this parameter to **topLeft** to specify the upper-left corner as the coordinate origin.|'."\n" - .'|WidthNormalized|Float|0.4|The normalized value of the material width. The value indicates the ratio of the material width to the width of the background. Valid values: 0 to 1.|'."\n" - .'|HeightNormalized|Float|0.4|The normalized value of the material height. The value indicates the ratio of the material height to the height of the background. Valid values: 0 to 1.|'."\n" - .'|PositionNormalized|Float|\\[0.1, 0.2\\]|The normalized value of the position of the material, in the format of \\[x,y\\]. Valid values of x and y: 0 to 1.For example, \\[0.1,0.2\\] indicates that the material is horizontally offset by 10% and vertically offset by 20% towards the upper-left corner.|'."\n" + 'title' => 'DescribeLiveStreamsNotifyUrlConfig', + 'summary' => 'Queries the callback configuration for stream ingest.', + 'description' => 'You can call this API to query the webhook address and authentication information for an ingest domain.'."\n" ."\n" - .'## LayerOrderConfig'."\n" + .'## QPS limits'."\n" ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Type|String|media|The type of the resource. Valid values:background: the background materialmedia: the multimedia material|'."\n" - .'|Id|String|k12kj31\\*\\*\\*\\*|The unique ID of the resource.|', + .'You can call this operation up to 1,000 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteStudioLayout' => [ - 'summary' => 'Deletes a layout in a virtual studio.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '## 特殊错误码'."\n" + .'| 错误代码 | 描述 | HTTP 状态码 | 语义 |'."\n" + .'|------------|--------|---------|------|'."\n" + .'| InternalError | The request processing has failed due to some unknown error. | 500 | 后台发生未知错误。 |'."\n" + .'| InvalidDomain.NotFound | The domain provided does not exist in our records. | 404 | 当前账户下未查到域名。 |'."\n" + .'| IllegalOperation | Illegal domain operate is not permitted. | 403 | 不支持当前操作,如:非直播类域名。 |'."\n" + .'| InvalidConfig.NotFound| Config does not exist.| 404| 当前域名下未找到回调配置。|', + 'changeSet' => [ + ['createdAt' => '2025-04-01T06:32:41.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-02-20T08:25:18.000Z', 'description' => 'Error codes changed, Request parameters changed, Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsNotifyUrlConfig'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsNotifyUrlConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\",\\n \\"LiveStreamsNotifyConfig\\": {\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"NotifyUrl\\": \\"http://guide.aliyundoc.com/notify\\",\\n \\"ExceptionNotifyUrl\\": \\"https://4a7e5f08.r37.cpolar.top/live/Record/call-back/streamException\\",\\n \\"NotifyReqAuth\\": \\"yes\\",\\n \\"NotifyAuthKey\\": \\"123456\\"\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveStreamsOnlineList' => [ + 'summary' => 'Queries the information about all active streams under a specified domain name or a specified application under a domain name.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'operationType' => 'get', + 'abilityTreeCode' => '107103', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain of the streamer.'."\n" + .'> - When you specify DomainName, make sure that the domain name is a live streaming domain name and that you have the permissions to manage the domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the application to which the stream belongs. You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name. Only a single StreamName can be specified. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'OnlyStream', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to return only specified fields. Valid values: '."\n" + ."\n" + .'- **yes**: Only the DomainName, AppName, StreamName, and PublishTime fields are returned. '."\n" + ."\n" + .'- **no** (default): All fields are returned.', 'type' => 'string', 'required' => false, 'example' => 'no', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Valid values: 1 to 3000. Default value: 2000.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '2000', 'example' => '1500', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Default value: 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'StreamType', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" + 'description' => 'The stream type. Valid values: '."\n" ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", + .'- **all** (default): all streams.'."\n" + .' '."\n" + .'- **raw**: raw streams.'."\n" + .' '."\n" + .'- **trans**: transcoded streams.', + 'enumValueTitles' => ['all' => 'all streams.', 'raw' => 'raw streams.', 'trans' => 'transcoded streams.'], 'type' => 'string', - 'required' => true, - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', + 'required' => false, + 'enum' => ['all', 'raw', 'trans'], + 'example' => 'all', + 'title' => '', ], ], [ - 'name' => 'LayoutId', + 'name' => 'QueryType', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the layout. If the layout was added by calling the [AddStudioLayout](~~2848062~~) operation, check the value of the response parameter LayoutId to obtain the ID.'."\n", + 'description' => 'Specifies whether to use fuzzy match for the stream name. Valid values:'."\n" + ."\n" + .'- **fuzzy** (default): fuzzy match.'."\n" + ."\n" + .'- **strict**: exact match.', + 'enumValueTitles' => ['strict' => 'exact match.', 'fuzzy' => 'fuzzy match.'], 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', + 'required' => false, + 'enum' => ['fuzzy', 'strict'], + 'example' => 'fuzzy', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The active stream information.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e9*****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64- af62-20e91b9676b3', 'title' => ''], + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that meet the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '11', 'title' => ''], + 'OnlineInfo' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveStreamOnlineInfo' => [ + 'description' => 'The information about the streams that are being ingested.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the streams that are being ingested.', + 'type' => 'object', + 'properties' => [ + 'AudioDataRate' => ['description' => 'The audio bitrate of the live stream. Unit: Kbps.'."\n" + .'> This parameter is available only after you submit a ticket to enable the whitelist configuration. For more information about how to submit a ticket, see Contact Us.', 'type' => 'integer', 'format' => 'int32', 'example' => '600', 'title' => ''], + 'FrameRate' => ['description' => 'The frame rate. Unit: FPS.', 'type' => 'integer', 'format' => 'int32', 'example' => '15', 'title' => ''], + 'PublishUrl' => ['description' => 'The full ingest URL.', 'type' => 'string', 'example' => 'rtmp://demo.aliyundoc.com/live/test****', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'AudioCodecId' => ['description' => 'The audio codec ID.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'Height' => ['description' => 'The height of the video resolution. Unit: pixel.', 'type' => 'integer', 'format' => 'int32', 'example' => '720', 'title' => ''], + 'VideoDataRate' => ['description' => 'The video bitrate of the live stream. Unit: Kbps.'."\n" + .'> This parameter is available only after you submit a ticket to enable the whitelist configuration. For more information about how to submit a ticket, see Contact Us.', 'type' => 'integer', 'format' => 'int32', 'example' => '600', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain of the streamer.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'PublishDomain' => ['description' => 'The ingest domain. If you use live center ingest, you can directly specify the streaming domain.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'PublishTime' => ['description' => 'The time when stream ingest started. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2021-08-09T02:37:59Z', 'title' => ''], + 'AppName' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'PublishType' => ['description' => 'The ingest type. Valid values:'."\n" + ."\n" + .'- **edge**: edge ingest.'."\n" + ."\n" + .'- **center**: live center ingest.', 'type' => 'string', 'example' => 'edge', 'title' => ''], + 'VideoCodecId' => ['description' => 'The video codec ID.', 'type' => 'integer', 'format' => 'int32', 'example' => '7', 'title' => ''], + 'Transcoded' => ['description' => 'Indicates whether the stream is a transcoded stream. Valid values:'."\n" + ."\n" + .'- **yes**: The stream is a transcoded stream.'."\n" + ."\n" + .'- **no**: The stream is not a transcoded stream.', 'type' => 'string', 'example' => 'no', 'title' => ''], + 'Width' => ['description' => 'The width of the video resolution. Unit: pixel.', 'type' => 'integer', 'format' => 'int32', 'example' => '1280', 'title' => ''], + 'ClientIp' => ['description' => 'The IP address of the ingest client.', 'type' => 'string', 'example' => '106.11.XX.XX', 'title' => ''], + 'ServerIp' => ['description' => 'The IP address of the ingest node.', 'type' => 'string', 'example' => '120.221.XX.XX', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidLayoutId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'QpsOverLimit', 'errorMessage' => 'Qps is over limit for this domainName.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not match the specified start time.', 'description' => ''], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'Duration between StartTime and EndTime is too long.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e9*****\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n 5c6a2a0d-f228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'DeleteStudioLayout', - 'description' => 'You can call this operation to delete a layout in a virtual studio. You can delete only one layout in a call.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b9676b3\\",\\n \\"TotalPage\\": 2,\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalNum\\": 11,\\n \\"OnlineInfo\\": {\\n \\"LiveStreamOnlineInfo\\": [\\n {\\n \\"AudioDataRate\\": 600,\\n \\"FrameRate\\": 15,\\n \\"PublishUrl\\": \\"rtmp://demo.aliyundoc.com/live/test****\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"AudioCodecId\\": 10,\\n \\"Height\\": 720,\\n \\"VideoDataRate\\": 600,\\n \\"DomainName\\": \\"example.com\\",\\n \\"PublishDomain\\": \\"demo.aliyundoc.com\\",\\n \\"PublishTime\\": \\"2021-08-09T02:37:59Z\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"PublishType\\": \\"edge\\",\\n \\"VideoCodecId\\": 7,\\n \\"Transcoded\\": \\"no\\",\\n \\"Width\\": 1280,\\n \\"ClientIp\\": \\"106.11.XX.XX\\",\\n \\"ServerIp\\": \\"120.221.XX.XX\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query active streams under a domain name', + 'description' => 'This operation supports the following stream types: '."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- all: Queries all streams.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'- raw: Queries raw streams.'."\n" + ."\n" + .'- trans: Queries transcoded streams.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The QPS limit for a single user is 10,000 calls per minute. If the limit is exceeded, the API calls are throttled, which may affect your business. Call this operation at a reasonable frequency.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'ModifyStudioLayout' => [ - 'summary' => 'Modifies a layout of a virtual studio.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-08-01T06:16:55.000Z', 'description' => 'Request parameters changed, Response parameters changed'], + ['createdAt' => '2024-07-11T03:43:38.000Z', 'description' => 'Request parameters changed, Response parameters changed'], + ['createdAt' => '2024-01-26T05:58:43.000Z', 'description' => 'Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsOnlineList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveStreamsPublishList' => [ + 'summary' => 'Retrieves the historical stream ingest records of a domain name, an application under a domain name, or a specific stream within a specified time range.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'operationType' => 'get', + 'abilityTreeCode' => '107105', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'> The production studio must be a virtual studio that you create in advance.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The ingest domain or streamer streaming domain.'."\n" + .'> - When you specify DomainName, make sure that the domain name is a live streaming domain name and that the user calling this operation has the permissions to operate on the specified domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'LayoutId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the layout. If the layout was added by calling the [AddStudioLayout](~~2848062~~) operation, check the value of the response parameter LayoutId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs. You can view AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'LayoutName', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the layout.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'The name of the layout. ', - ], + 'schema' => ['description' => 'The stream name. You can view StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'CommonConfig', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The common layout configurations. The value is a JSON string. For more information, see **CommonConfig**.'."\n" - ."\n" - .'> This parameter is required only if you set LayoutType to common.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{ "ChannelId":"RV01" }', - ], + 'schema' => ['description' => 'The start time of stream ingest.'."\n" + ."\n" + .'Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], ], [ - 'name' => 'BgImageConfig', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The background material configurations. The value is a JSON string. For more information, see **BgImageConfig**.'."\n" - ."\n" - .'> This parameter is required only if you set LayoutType to studio.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{ "Id":"k12kj31****", "MaterialId":"f080575eb5f4427684fc0715159a****" }', - ], + 'schema' => ['description' => 'The end time. The interval between EndTime and StartTime cannot exceed 30 days.'."\n" + ."\n" + .'Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], [ - 'name' => 'ScreenInputConfigList', + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The page size. Valid values: **1 to 3000**. Default value: **2000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '2000', 'example' => '1500', 'title' => ''], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Default value: **1**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'StreamType', 'in' => 'query', 'schema' => [ - 'description' => 'The input configurations for chroma key. The value is a JSON string. For more information, see **ScreenInputConfig**.'."\n" + 'description' => 'The stream type. Valid values:'."\n" ."\n" - .'> This parameter is required only if you set LayoutType to studio.'."\n", + .'- **Not specified**: queries raw streams.'."\n" + .'- **all**: queries all streams.'."\n" + .'- **trans**: queries transcoded streams.', + 'enumValueTitles' => ['all' => 'queries all streams.', 'raw' => 'queries raw streams.', 'trans' => 'queries transcoded streams.'], 'type' => 'string', 'required' => false, - 'example' => '[ { "Index":"1", "ChannelId":"RV01", "Color":"green", "PositionX":"0.1", "PositionY":"0.2", "HeightNormalized":"0.4" } ]', + 'enum' => ['all', 'raw', 'trans'], + 'example' => 'all', + 'title' => '', ], ], [ - 'name' => 'MediaInputConfigList', + 'name' => 'QueryType', 'in' => 'query', 'schema' => [ - 'description' => 'The multimedia input configurations. The value is a JSON string. For more information, see **MediaInputConfig**.'."\n" - ."\n" - .'> This parameter is optional and takes effect only if you set LayoutType to studio.'."\n", + 'description' => 'Specifies whether to use fuzzy match for the stream name. Valid values:'."\n" + .'- **fuzzy** (default): fuzzy match.'."\n" + .'- **strict**: exact match.', + 'enumValueTitles' => ['strict' => 'exact match.', 'fuzzy' => 'fuzzy match.'], 'type' => 'string', 'required' => false, - 'example' => '[ { "Id":"k12kj31****", "Index":"1", "ChannelId":"RV01", "FillMode":"none", "PositionRefer":"topLeft", "WidthNormalized":"0.4", "HeightNormalized":"0.4", "PositionNormalized":"[0.1, 0.2]" }, { "Id":"k12kj31****", "Index":"2", "ImageMaterialId":"lkajsdfsa8fd89asd8****", "FillMode":"none", "PositionRefer":"topLeft", "WidthNormalized":"0.6", "HeightNormalized":"0.4", "PositionNormalized":"[0.1, 0.2]" } ]', + 'enum' => ['fuzzy', 'strict'], + 'example' => 'fuzzy', + 'title' => '', ], ], [ - 'name' => 'LayerOrderConfigList', + 'name' => 'OrderBy', 'in' => 'query', 'schema' => [ - 'description' => 'The layer sorting configurations. The value is a JSON string. For more information, see **layerOrderConfig**. You can sort layers of background and multimedia materials. The chroma key layer cannot be sorted. A layer that is in the front of the code is placed behind other layers in the layout.'."\n", + 'description' => 'The sorting method. Valid values:'."\n" + ."\n" + .'- **stream_name_desc**: sorts by live stream name in descending order.'."\n" + .'- **stream_name_asc**: sorts by live stream name in ascending order.'."\n" + .'- **publish_time_desc**: sorts by stream ingest time in descending order.'."\n" + .'- **publish_time_asc** (default): sorts by stream ingest time in ascending order.', + 'enumValueTitles' => ['publish_time_asc' => 'sorts by stream ingest time in ascending order.', 'publish_time_desc' => 'sorts by stream ingest time in descending order.', 'stream_name_asc' => 'sorts by live stream name in ascending order.', 'stream_name_desc' => 'sorts by live stream name in descending order.'], 'type' => 'string', 'required' => false, - 'example' => '[ { "Type":"media", "Id":"k12kj31****" }, { "Type":"media", "Id":"k12kj31****" } ]', + 'enum' => ['stream_name_desc', 'stream_name_asc', 'publish_time_desc', 'publish_time_asc'], + 'example' => 'publish_time_desc', + 'title' => '', ], ], ], @@ -41600,131 +32539,114 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', + 'TotalPage' => ['description' => 'The total number of pages.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'PageSize' => ['description' => 'The page size.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', 'title' => ''], + 'TotalNum' => ['description' => 'The total number of entries that match the specified conditions.', 'type' => 'integer', 'format' => 'int32', 'example' => '11', 'title' => ''], + 'PublishInfo' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LiveStreamPublishInfo' => [ + 'description' => 'The stream ingest record information.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'EdgeNodeAddr' => ['description' => 'The IP address of the CDN upstream node.', 'type' => 'string', 'example' => '10.175.XX.XX', 'title' => ''], + 'PublishUrl' => ['description' => 'The complete ingest URL.', 'type' => 'string', 'example' => 'rtmp://demo.aliyundoc.com/liveApp****/liveStream****', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'DomainName' => ['description' => 'The ingest domain or streamer streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'StopTime' => ['description' => 'The time when stream ingest stopped. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2015-12-02T03:11:19Z', 'title' => ''], + 'TranscodeId' => ['description' => 'The transcoding template ID.'."\n" + .'> This parameter is not returned when the Transcoded parameter is set to no.', 'type' => 'string', 'example' => 'ld', 'title' => ''], + 'PublishDomain' => ['description' => 'The ingest domain.', 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'AppName' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'PublishTime' => ['description' => 'The time when stream ingest started. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).', 'type' => 'string', 'example' => '2015-12-02T03:05:53Z', 'title' => ''], + 'PublishType' => ['description' => 'The stream ingest type. Valid values:'."\n" + ."\n" + .'- **edge**: edge ingest.'."\n" + .'- **center**: live center ingest.', 'type' => 'string', 'example' => 'edge', 'title' => ''], + 'Transcoded' => ['description' => 'Indicates whether the stream is a transcoded stream.', 'type' => 'string', 'example' => 'yes', 'title' => ''], + 'ClientAddr' => ['description' => 'The IP address of the streamer.', 'type' => 'string', 'example' => '10.175.XX.XX', 'title' => ''], + 'StreamUrl' => ['description' => 'The streaming URL.', 'type' => 'string', 'example' => 'http://example.com/liveApp****/liveStream****.flv', 'title' => ''], + 'AliInnerErrorFlags' => ['description' => 'The error code for the stream disconnection reason. Format: 3 digits or 1 digit.', 'type' => 'string', 'example' => '002', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidPositionNormalized.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidHeightOrWidthNormalized', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidLayout.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'QpsOverLimit', 'errorMessage' => 'Qps is over limit for this domainName.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified parameter StartTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified parameter EndTime is not valid.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not match the specified start time.', 'description' => ''], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'Duration between StartTime and EndTime is too long.', 'description' => ''], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => 'Your account does not open Live service yet', 'description' => 'Your account has not yet activated ApsaraVideo Live.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n 5c6a2a0d-f228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'ModifyStudioLayout', - 'description' => 'You can call this operation to modify a layout of a virtual studio. When you call this operation, specify only the parameters that you want to modify.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"TotalPage\\": 2,\\n \\"PageNum\\": 2,\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\",\\n \\"TotalNum\\": 11,\\n \\"PublishInfo\\": {\\n \\"LiveStreamPublishInfo\\": [\\n {\\n \\"EdgeNodeAddr\\": \\"10.175.XX.XX\\",\\n \\"PublishUrl\\": \\"rtmp://demo.aliyundoc.com/liveApp****/liveStream****\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"StopTime\\": \\"2015-12-02T03:11:19Z\\",\\n \\"TranscodeId\\": \\"ld\\",\\n \\"PublishDomain\\": \\"demo.aliyundoc.com\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"PublishTime\\": \\"2015-12-02T03:05:53Z\\",\\n \\"PublishType\\": \\"edge\\",\\n \\"Transcoded\\": \\"yes\\",\\n \\"ClientAddr\\": \\"10.175.XX.XX\\",\\n \\"StreamUrl\\": \\"http://example.com/liveApp****/liveStream****.flv\\",\\n \\"AliInnerErrorFlags\\": \\"002\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query historical stream list for a domain name', + 'description' => 'You can call this operation to query historical streams within the last 30 days. The returned data contains the active stream information within the specified time range. This operation supports the following sorting methods:'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- stream_name_desc: sorts by live stream name in descending order.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## CommonConfig'."\n" + .'- stream_name_asc: sorts by live stream name in ascending order.'."\n" ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|ChannelId|String|RV01|The ID of the channel that you want to bind to the video resource.|'."\n" + .'- publish_time_desc: sorts by stream ingest time in descending order.'."\n" ."\n" - .'## BgImageConfig'."\n" + .'- publish_time_asc: sorts by stream ingest time in ascending order.'."\n" + ."\n\n" ."\n" - .'**Note** You can specify either ImageUrl or MaterialId. | Field | Type | Example | Description | | --------------- | ------ | --------------------- | -------------------------- | | Id | String | k12kj31\\*\\*\\*\\* | The unique ID of the material. | | ImageUrl | String | http://aliyundoc.com | The URL of the material. | | MaterialId | String | f080575eb5f4427684fc0715159a\\*\\*\\*\\* | The ID of the material in ApsaraVideo VOD. |'."\n" - ."\n" - .'## ScreenInputConfig'."\n" - ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Index|Integer|1|The sequence number of the chroma key source. This parameter is displayed on the frontend but not used in the operation logic. The value must be a positive integer.|'."\n" - .'|ChannelId|String|RV01|The ID of the channel that you want to bind to the video resource.|'."\n" - .'|Color|String|green|The color gamut for chroma key. Valid values:**blue** **green** **auto**: automatic recognition**complex**: background replacement|'."\n" - .'|PositionX|Float|0.1|The x-coordinate of the material. Valid values: 0 to 1.The upper-left corner is used as the coordinate origin for the material.|'."\n" - .'|PositionY|Float|0.2|The y-coordinate of the material. Valid values: 0 to 1.The upper-left corner is used as the coordinate origin for the material.|'."\n" - .'|HeightNormalized|Float|0.4|The normalized value of the height. The value specifies the ratio of the height of the keyed portrait to the height of the background. Valid values: 0 to 1.|'."\n" - ."\n" - .'## MediaInputConfig'."\n" - ."\n" - .'* If the multimedia material is a video, specify ChannelId.'."\n" - .'* If the multimedia material is an image, specify ImageMeterialId.'."\n" - .'* ChannelId and ImageMeterialId are mutually exclusive. You can specify only one of them.'."\n" - ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Id|String|k12kj31\\*\\*\\*\\*|The unique ID of the multimedia material.|'."\n" - .'|Index|Integer|1|The sequence number of the multimedia material. This parameter is displayed on the frontend but not used in the operation logic. The value must be a positive integer.|'."\n" - .'|ChannelId|String|RV01|The ID of the channel that you want to bind to the video resource.|'."\n" - .'|ImageMaterialId|String|lkajsdfsa8fd89asd8\\*\\*\\*\\*|The ID of the image in ApsaraVideo VOD.|'."\n" - .'|FillMode|String|none|The fill type. Set this parameter to **none**.|'."\n" - .'|PositionRefer|String|topLeft|The coordinate origin for the material. Set this parameter to **topLeft** to specify the upper-left corner as the coordinate origin.|'."\n" - .'|WidthNormalized|Float|0.4|The normalized value of the material width. The value specifies the ratio of the material width to the width of the background. Valid values: 0 to 1.|'."\n" - .'|HeightNormalized|Float|0.4|The normalized value of the material height. The value specifies the ratio of the material height to the height of the background. Valid values: 0 to 1.|'."\n" - .'|PositionNormalized|Float|\\[0.1, 0.2\\]|The normalized value of the position of the material, in the format of \\[x,y\\]. Valid values of x and y: 0 to 1.For example, \\[0.1,0.2\\] indicates that the material is horizontally offset by 10% and vertically offset by 20% towards the upper-left corner.|'."\n" - ."\n" - .'## layerOrderConfig'."\n" - ."\n" - .'|Field|Type|Example|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|Id|String|k12kj31\\*\\*\\*\\*|The unique ID of the resource.|'."\n" - .'|Type|String|media|The type of the resource. Valid values:background: the background materialmedia: the multimedia material|', + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 3 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeStudioLayouts' => [ - 'summary' => 'Queries one or more layouts of a virtual studio.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-12-30T02:08:48.000Z', 'description' => 'Error codes changed, Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsPublishList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsPublishList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveStreamsTotalCount' => [ + 'summary' => 'Queries the cumulative number of live streams at the day granularity by calling the DescribeLiveStreamsTotalCount operation.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -41735,508 +32657,192 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio instance.'."\n" - ."\n" - .'* If you call the [CreateCaster](~~69338~~) operation to create a production studio instance, you can obtain the instance ID from the CasterId parameter in the response.'."\n" - .'* If you create a production studio instance in the ApsaraVideo Live console, perform the following operations to obtain the instance ID: Log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane. Then, view the instance ID on the **Production Studio Management** page.'."\n" - ."\n" - .'> The value displayed in the Name column for an instance on the Production Studio Management page is the ID of the instance.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', - ], + 'schema' => ['description' => 'The ingest domain or streaming domain. This parameter is required when you query domain-level data. You can specify up to 10 domain names in a batch query. Separate multiple domain names with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'LayoutId', + 'name' => 'Typ', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the layout.'."\n" - ."\n" - .'You can specify multiple layout IDs and separate them with commas (,). If you leave this parameter empty, all layouts of the production studio are returned.'."\n" - ."\n" - .'If you call the [AddStudioLayout](~~215388~~) operation to configure a layout for a virtual studio, you can obtain the ID of the layout from the LayoutId parameter in the response.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'If you leave this parameter empty, domain-level data is queried by default. Set this parameter to aliuid to query UID-level data.', 'type' => 'string', 'required' => false, 'example' => 'aliuid', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + .'> The maximum query range is the last 1.5 years.', 'type' => 'string', 'required' => true, 'example' => '2023-07-24T16:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The end time must be later than the start time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC).'."\n" + .'> The interval between StartTime and EndTime must be within 15 days, and EndTime cannot be later than the current time. Data for the current day can be queried only on the next day.', 'type' => 'string', 'required' => true, 'example' => '2023-07-25T16:00:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The details.'."\n", + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', - ], - 'StudioLayouts' => [ - 'description' => 'The layout information.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'BgImageConfig' => [ - 'description' => 'The background material configurations.'."\n", - 'type' => 'object', - 'properties' => [ - 'Id' => [ - 'description' => 'The unique ID of the material.'."\n", - 'type' => 'string', - 'example' => 'k12kj31****', - ], - 'ImageUrl' => [ - 'description' => 'The URL of the material.'."\n", - 'type' => 'string', - 'example' => ' http://example.org', - ], - 'LocationId' => [ - 'description' => 'The position ID.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - 'MaterialId' => [ - 'description' => 'The ID of the material in ApsaraVideo VOD.'."\n", - 'type' => 'string', - 'example' => 'asdfas9df89asd8f9****', - ], - ], - ], - 'CommonConfig' => [ - 'description' => 'The common layout configurations. This parameter is returned only for a common layout.'."\n", + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'String FCFFE4A4-F34F-4EEF-B401-36A01689AFBC', 'title' => ''], + 'StreamCountList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamCountInfos' => [ + 'description' => 'The stream count statistics.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the statistics.', 'type' => 'object', 'properties' => [ - 'ChannelId' => [ - 'description' => 'The ID of the channel that is bound to the video resource.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - 'VideoResourceId' => [ - 'description' => 'The ID of the video resource.'."\n", - 'type' => 'string', - 'example' => 'asdfasdfasdfasdfa****', - ], - ], - ], - 'LayerOrderConfigList' => [ - 'description' => 'The layer sorting configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Id' => [ - 'description' => 'The unique ID of the resource.'."\n", - 'type' => 'string', - 'example' => 'k12kj31****', - ], - 'Type' => [ - 'description' => 'The type of the resource. Valid values:'."\n" - ."\n" - .'* **background**: background material'."\n" - .'* **media**: multimedia material'."\n", - 'type' => 'string', - 'example' => 'media', - ], - ], - ], - ], - 'LayoutId' => [ - 'description' => 'The ID of the layout.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'LayoutName' => [ - 'description' => 'The name of the layout.'."\n", - 'type' => 'string', - 'example' => '测试布局', - ], - 'LayoutType' => [ - 'description' => 'The type of the layout. Valid values:'."\n" - ."\n" - .'* **common**'."\n" - .'* **studio**'."\n", - 'type' => 'string', - 'example' => 'studio', - ], - 'MediaInputConfigList' => [ - 'description' => 'The multimedia input configurations.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'ChannelId' => [ - 'description' => 'The ID of the channel that is bound to the video resource.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - 'FillMode' => [ - 'description' => 'The fill type. Default value: none.'."\n", - 'type' => 'string', - 'example' => 'none', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the material height. The value indicates the ratio of the material height to the height of the background. Valid values: **0 to 1**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.4', - ], - 'Id' => [ - 'description' => 'The unique ID of the multimedia material.'."\n", - 'type' => 'string', - 'example' => 'k12kj31****', - ], - 'ImageMaterialId' => [ - 'description' => 'The ID of the image in ApsaraVideo VOD.'."\n", - 'type' => 'string', - 'example' => 'lkajsdfsa8fd89asd8****', - ], - 'Index' => [ - 'description' => 'The sequence number of the multimedia material. This parameter is displayed on the frontend but not used in the operation logic.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PositionNormalized' => [ - 'description' => 'The normalized value of the position of the material, in the format of \\[unk]\\[x,y]\\[unk]. Valid values of x and y: **0 to 1**. For example, \\[unk]\\[0.1,0.2]\\[unk] indicates that the material is horizontally offset by 10% and vertically offset by 20% towards the upper-left corner.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The normalized value of the position of the material, in the format of `[x,y]`. Valid values of x and y: **0 to 1**. For example, `[0.1,0.2]` indicates that the material is horizontally offset by 10% and vertically offset by 20% towards the upper-left corner.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.1', - ], - ], - 'PositionRefer' => [ - 'description' => 'The coordinate origin for the material. Default value: topLeft. topLeft indicates that the upper-left corner is used as the coordinate origin.'."\n", - 'type' => 'string', - 'example' => 'topLeft', - ], - 'VideoResourceId' => [ - 'description' => 'The ID of the video resource.'."\n", - 'type' => 'string', - 'example' => 'asdfasdfasdfasdfa****', - ], - 'WidthNormalized' => [ - 'description' => 'The normalized value of the material width. The value indicates the ratio of the material width to the width of the background. Valid values: **0 to 1**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.4', - ], - ], - ], - ], - 'ScreenInputConfigList' => [ - 'description' => 'The input configurations for chroma key.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'AudioConfig' => [ - 'description' => 'The audio configurations.'."\n", - 'type' => 'object', - 'properties' => [ - 'ValidChannel' => [ - 'description' => 'The corresponding channel.'."\n", - 'type' => 'string', - 'example' => '1', - ], - 'VolumeRate' => [ - 'description' => 'The volume.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '1.0', - ], - ], - ], - 'ChannelId' => [ - 'description' => 'The ID of the channel that is bound to the video resource.'."\n", - 'type' => 'string', - 'example' => 'RV01', - ], - 'Color' => [ - 'description' => 'The color gamut for chroma key. Valid values:'."\n" - ."\n" - .'* **blue**'."\n" - .'* **green**'."\n" - .'* **auto**: automatic recognition'."\n" - .'* **complex**: background replacement'."\n", - 'type' => 'string', - 'example' => 'green', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the height. The value indicates the ratio of the height of the keyed portrait to the height of the background. Valid values: **0 to 1**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.4', - ], - 'Id' => [ - 'description' => 'The unique ID of the chroma key source.'."\n", - 'type' => 'string', - 'example' => 'k12kj31****', - ], - 'Index' => [ - 'description' => 'The sequence number of the chroma key source. This parameter is displayed on the frontend but not used in the operation logic.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'OnlyAudio' => [ - 'description' => 'Indicates whether only audio exists.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'PortraitType' => [ - 'description' => 'The portrait type. Valid values:'."\n" - ."\n" - .'* **0**: half body'."\n" - .'* **1**: full body'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'PositionX' => [ - 'description' => 'The x-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'string', - 'example' => '0.1', - ], - 'PositionY' => [ - 'description' => 'The y-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'string', - 'example' => '0.2', - ], - 'VideoResourceId' => [ - 'description' => 'The ID of the video resource.'."\n", - 'type' => 'string', - 'example' => 'asdfasdfasdfasdfa****', - ], - ], + 'Count' => ['description' => 'The cumulative number of live streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '934', 'title' => ''], + 'Timestamp' => ['description' => 'The time. The time is in the yyyy-MM-ddTHH:mm:ssZ format (UTC).', 'type' => 'string', 'example' => '2023-07-24T16:00:00Z', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'Total' => [ - 'description' => 'The total number of layouts.', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'Duration between StartTime and EndTime is too long.', 'description' => ''], ], 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidDomain.NotFound', 'errorMessage' => 'The domain provided does not belong to you.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\",\\n \\"StudioLayouts\\": [\\n {\\n \\"BgImageConfig\\": {\\n \\"Id\\": \\"k12kj31****\\",\\n \\"ImageUrl\\": \\" http://example.org\\",\\n \\"LocationId\\": \\"RV01\\",\\n \\"MaterialId\\": \\"asdfas9df89asd8f9****\\"\\n },\\n \\"CommonConfig\\": {\\n \\"ChannelId\\": \\"RV01\\",\\n \\"VideoResourceId\\": \\"asdfasdfasdfasdfa****\\"\\n },\\n \\"LayerOrderConfigList\\": [\\n {\\n \\"Id\\": \\"k12kj31****\\",\\n \\"Type\\": \\"media\\"\\n }\\n ],\\n \\"LayoutId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"LayoutName\\": \\"测试布局\\",\\n \\"LayoutType\\": \\"studio\\",\\n \\"MediaInputConfigList\\": [\\n {\\n \\"ChannelId\\": \\"RV01\\",\\n \\"FillMode\\": \\"none\\",\\n \\"HeightNormalized\\": 0.4,\\n \\"Id\\": \\"k12kj31****\\",\\n \\"ImageMaterialId\\": \\"lkajsdfsa8fd89asd8****\\",\\n \\"Index\\": 1,\\n \\"PositionNormalized\\": [\\n 0.1\\n ],\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"VideoResourceId\\": \\"asdfasdfasdfasdfa****\\",\\n \\"WidthNormalized\\": 0.4\\n }\\n ],\\n \\"ScreenInputConfigList\\": [\\n {\\n \\"AudioConfig\\": {\\n \\"ValidChannel\\": \\"1\\",\\n \\"VolumeRate\\": 1\\n },\\n \\"ChannelId\\": \\"RV01\\",\\n \\"Color\\": \\"green\\",\\n \\"HeightNormalized\\": 0.4,\\n \\"Id\\": \\"k12kj31****\\",\\n \\"Index\\": 1,\\n \\"OnlyAudio\\": true,\\n \\"PortraitType\\": 0,\\n \\"PositionX\\": \\"0.1\\",\\n \\"PositionY\\": \\"0.2\\",\\n \\"VideoResourceId\\": \\"asdfasdfasdfasdfa****\\"\\n }\\n ]\\n }\\n ],\\n \\"Total\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0d-f228-4a64-af62-20e91b9676b3\\n \\n \\n k12kj31****\\n http://example.org\\n RV01\\n asdfas9df89asd8f9****\\n \\n \\n RV01\\n asdfasdfasdfasdfa****\\n \\n \\n k12kj31****\\n media\\n \\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n 测试布局\\n studio\\n \\n RV01\\n none\\n 0.4\\n k12kj31****\\n lkajsdfsa8fd89asd8****\\n 1\\n 0.1\\n topLeft\\n asdfasdfasdfasdfa****\\n 0.4\\n \\n \\n \\n 1\\n 1\\n \\n RV01\\n green\\n 0.4\\n k12kj31****\\n 1\\n true\\n 0\\n 0.1\\n 0.2\\n asdfasdfasdfasdfa****\\n \\n \\n 1\\n","errorExample":""}]', - 'title' => 'DescribeStudioLayouts', - 'description' => 'You must call the [AddStudioLayout](~~215388~~) operation to configure layouts for a virtual studio before you call this operation to query layouts.'."\n" - ."\n" - .'## QPS limits'."\n" - ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddCasterEpisode' => [ - 'summary' => 'Adds an episode to a production studio.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"String\\\\tFCFFE4A4-F34F-4EEF-B401-36A01689AFBC\\",\\n \\"StreamCountList\\": {\\n \\"StreamCountInfos\\": [\\n {\\n \\"Count\\": 934,\\n \\"Timestamp\\": \\"2023-07-24T16:00:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query the cumulative number of live streams at the day granularity', + 'description' => '- Maximum query time span: 15 days.'."\n" + .'- Maximum query time range: up to 1.5 years of historical data.'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 100 calls per minute. If this limit is exceeded, the API calls are throttled, which may affect your business. Call this operation as needed.', + 'extraInfo' => '| Error code | Description | HTTP status code | Meaning|'."\n" + .'| :-----| :-----| :---- |:----|'."\n" + .'| InvalidStartTime.Malformed | Specified StartTime is malformed. |400|The start time is invalid. |'."\n" + .'| InvalidEndTime.Malformed |Specified EndTime is malformed. |400 | The end time is invalid.|'."\n" + .'| MissingDomainName | DomainName is mandatory for this action. | 400 | The DomainName parameter is missing. |'."\n" + .'|InvalidParam |Parameter invalid. | 400 |The parameter is invalid. |'."\n" + .'| Duration.Exceed |Duration between StartTime and EndTime is too long. | 400 | The time span between StartTime and EndTime is too long. |'."\n" + .'|InvalidDomain.NotFound | The domain provided does not belong to you. |404 |The domain name does not exist or does not belong to the current user. |'."\n" + .'| InternalError | The request processing has failed due to backend service exception. | 500 | An internal error occurred.|.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsTotalCount', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeLiveTagResources' => [ + 'summary' => 'Queries the tags of ApsaraVideo Live resources.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ComponentId', + 'name' => 'ResourceId', 'in' => 'query', 'style' => 'repeatList', 'schema' => [ - 'description' => 'The components. Components in the production studio are listed from the bottom to the top in an array.'."\n" - ."\n" - .'If a component was added by calling the [AddCasterComponent](~~2848030~~) operation, check the value of the response parameter ComponentId to obtain the component ID.'."\n" - ."\n" - .'* This parameter takes effect and is required when the EpisodeType parameter is set to **Component**.'."\n" - .'* This parameter is optional when the EpisodeType parameter is set to **Resource**. In this case, if this parameter is specified, the components are bound to and switched together with video resources.'."\n" - ."\n" - .'> The variable N specifies the sequence number of the component. For example, **ComponentId.1** specifies the ID of the first component and **ComponentId.2** specifies the ID of the second component.'."\n", + 'description' => 'The resource IDs. The resources are domain names for live streaming. You can query up to 50 resource IDs at a time.', 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the component.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], - 'required' => false, - 'example' => '["a2b8e671-2fe5-4642-a2ec-bf93880e****"]', - 'maxItems' => 10, - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - ], - [ - 'name' => 'EpisodeType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the episode. Valid values:'."\n" - ."\n" - .'* **Resource**: a video resource.'."\n" - .'* **Component**: a component.'."\n", - 'type' => 'string', + 'items' => ['description' => 'The resource ID.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], 'required' => true, - 'example' => 'Resource', - ], - ], - [ - 'name' => 'EpisodeName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'episode_1', + 'example' => 'example.com', + 'maxItems' => 50, + 'title' => '', ], ], [ - 'name' => 'ResourceId', + 'name' => 'Tag', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The ID of the video resource.'."\n" - ."\n" - .'> This parameter takes effect and is required when the EpisodeType parameter is set to Resource.'."\n" - ."\n" - .'\\'."\n" - .'If the video resource was added by calling the [AddCasterVideoResource](~~2848020~~) operation, check the value of the response parameter ResourceId to obtain the ID.'."\n", - 'type' => 'string', + 'description' => 'A list of tags.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key. You can specify up to 20 tag keys.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''], + 'Value' => ['description' => 'The tag value. You can specify up to 20 tag values.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''], + ], + 'required' => false, + 'description' => 'A list of tags.', + 'title' => '', + 'example' => '', + ], 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time when the episode starts. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2016-06-29T08:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time when the episode ends. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2016-06-29T09:10:00Z', + 'maxItems' => 20, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'SwitchType', + 'name' => 'ResourceType', 'in' => 'query', 'schema' => [ - 'description' => 'The policy for switching episodes. Valid values:'."\n" - ."\n" - .'* **TimeFirst**: The episode starts when the preceding episode ends and ends when the next episode starts. If no next episode exists, the episode keeps repeating until a new episode is added or the production studio stops.'."\n" - .'* **ContentFirst**: The episode starts and ends as scheduled.'."\n" - ."\n" - .'This parameter takes effect only when the EpisodeType parameter is set to Resource.'."\n" - ."\n" - .'> This parameter must be set to TimeFirst when the video resource is a live stream.'."\n", + 'description' => 'The type of the resource.', + 'enumValueTitles' => ['DOMAIN' => 'A live streaming domain.'], 'type' => 'string', 'required' => true, - 'example' => 'TimeFirst', + 'example' => 'DOMAIN', + 'title' => '', ], ], ], @@ -42245,153 +32851,108 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'EpisodeId' => [ - 'description' => 'The ID of the episode. You can use the ID as a request parameter in the API operation that is used to query the information about the episode list, modify the configurations of the episode, and delete the episode.'."\n", - 'type' => 'string', - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '****41F1-04A5-496F-8C8D-634BDBE6****', 'title' => ''], + 'TagResources' => [ + 'description' => 'A list of resources and their associated tags.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ResourceId' => ['description' => 'The resource ID.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Tag' => [ + 'description' => 'The tags bound to the resource.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key.', 'type' => 'string', 'example' => 'env', 'title' => ''], + 'Value' => ['description' => 'The tag value.', 'type' => 'string', 'example' => 'product', 'title' => ''], + ], + 'description' => 'The tag information.', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => 'A list of resources and their associated tags.', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'SwitchTypeInvalid.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectStartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectEndTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'EpisodeConflict.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EpisodeId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t21926b36-7dd2-4fde-ae25-51b5bc8e****\\n\\t","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"EpisodeId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e52d8\\"\\n}"}]', - 'title' => 'AddCasterEpisode', - 'description' => 'To call this operation, you must obtain the production studio ID in advance. The production studio ID is generated after the production studio is created.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'errorCodes' => [], + 'title' => 'DescribeLiveTagResources', + 'description' => 'You can call this operation up to 10 times per second per account.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteCasterEpisode' => [ - 'summary' => 'Deletes an episode in a production studio.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2022-08-31T08:13:45.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveTagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"****41F1-04A5-496F-8C8D-634BDBE6****\\",\\n \\"TagResources\\": [\\n {\\n \\"ResourceId\\": \\"example.com\\",\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ]\\n}","type":"json"}]', + ], + 'DescribeLiveTopDomainsByFlow' => [ + 'summary' => 'Queries the domains of a user ranked by traffic volume by calling DescribeLiveTopDomainsByFlow.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC. The minimum data granularity is 5 minutes. If you do not specify this parameter, data for the current month is returned by default.', 'type' => 'string', 'required' => false, 'example' => '2018-03-17T16:00:00Z', 'title' => ''], ], [ - 'name' => 'EpisodeId', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode. If the episode was added by calling the [AddCasterEpisode](~~2848068~~) operation, check the value of the response parameter EpisodeId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf932738****', - ], + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2018-03-20T16:00:00Z', 'title' => ''], + ], + [ + 'name' => 'Limit', + 'in' => 'query', + 'schema' => ['description' => 'The maximum number of domain names to return. Default value: 20. Valid values: 1 to 100.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'maximum' => '100', 'minimum' => '1', 'default' => '20', 'example' => '20', 'title' => ''], ], ], 'responses' => [ @@ -42399,699 +32960,1076 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can specify the ID as a parameter in the request to modify the episode in the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'EpisodeId' => [ - 'description' => 'The ID of the episode. You can specify the ID as a parameter in the request to modify the episode in the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf932738****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'DomainOnlineCount' => ['description' => 'The total number of running domain names under the account.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'EndTime' => ['description' => 'The end time. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2018-03-20T16:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2018-03-17T16:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '33834C3E-388E-5FFE-A8AE-63575035C064', 'title' => ''], + 'DomainCount' => ['description' => 'The total number of domain names under the account.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'TopDomains' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'TopDomain' => [ + 'description' => 'The list of domain names ranked by traffic.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of domain names ranked by traffic.', + 'type' => 'object', + 'properties' => [ + 'MaxBps' => ['description' => 'The peak bandwidth.', 'type' => 'integer', 'format' => 'int64', 'example' => '22139626', 'title' => ''], + 'Rank' => ['description' => 'The ranking.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'TotalAccess' => ['description' => 'The number of visits.', 'type' => 'integer', 'format' => 'int64', 'example' => '107784230', 'title' => ''], + 'TrafficPercent' => ['description' => 'The proportion of traffic.', 'type' => 'string', 'example' => '30.64191989360235', 'title' => ''], + 'DomainName' => ['description' => 'The domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'TotalTraffic' => ['description' => 'The total traffic.', 'type' => 'string', 'example' => '2043859876683.9001', 'title' => ''], + 'MaxBpsTime' => ['description' => 'The time when the peak bandwidth occurred.', 'type' => 'string', 'example' => '1457111400', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectStartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectEpisodeStatus', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The specified value of parameter StartTime is not supported.', 'description' => 'The value specified for the StartTime parameter is invalid.'], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidEpisode.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainOnlineCount\\": 1,\\n \\"EndTime\\": \\"2018-03-20T16:00:00Z\\",\\n \\"StartTime\\": \\"2018-03-17T16:00:00Z\\",\\n \\"RequestId\\": \\"33834C3E-388E-5FFE-A8AE-63575035C064\\",\\n \\"DomainCount\\": 1,\\n \\"TopDomains\\": {\\n \\"TopDomain\\": [\\n {\\n \\"MaxBps\\": 22139626,\\n \\"Rank\\": 1,\\n \\"TotalAccess\\": 107784230,\\n \\"TrafficPercent\\": \\"30.64191989360235\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"TotalTraffic\\": \\"2043859876683.9001\\",\\n \\"MaxBpsTime\\": \\"1457111400\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query top domains by traffic', + 'description' => '- If you do not specify StartTime or EndTime, data for the current month is returned by default. You can also query data for a specified time range. Both StartTime and EndTime must be specified together.'."\n" + .'- You can query data for up to 90 days.'."\n" + .'## QPS limit'."\n" + .'The QPS limit for a single user on this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation as needed.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveTopDomainsByFlow'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveTopDomainsByFlow', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"EpisodeId\\": \\"a2b8e671-2fe5-4642-a2ec-bf932738****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n a2b8e671-2fe5-4642-a2ec-bf932738****\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteCasterEpisode', - 'description' => 'Before you call this operation to delete an episode in a production studio, you must obtain the ID of the production studio and the ID of the episode.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'ModifyCasterEpisode' => [ - 'summary' => 'Modifies the configurations of an episode in a production studio. You cannot change the episode type.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveUpVideoAudioInfo' => [ + 'summary' => 'Queries the audio and video parameters of an upstream ingest stream within a specified time range.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '107116', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'ComponentId', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The components. Components in the production studio are listed from the bottom to the top in an array. When the production studio switches to another video resource, the components are also switched.'."\n" - ."\n" - .'* This parameter takes effect and is required only when the EpisodeType parameter is set to **Component**.'."\n" - .'* This parameter is optional when the EpisodeType parameter is set to **Resource**. In this case, if this parameter is specified, the components are bound to and switched together with video resources.'."\n" - ."\n" - .'> The variable N specifies the sequence number of the component. For example, ComponentId.1 specifies the ID of the first component and ComponentId.2 specifies the ID of the second component.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the component.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '["16A96B9A-F203-4EC5-8E43-CB92E68F****"]', - ], - 'required' => false, - 'example' => '["16A96B9A-F203-4EC5-8E43-CB92E68F****"]', - 'maxItems' => 10, - ], - ], - [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - ], - [ - 'name' => 'EpisodeId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode. It is included in the response when you call the [AddCasterEpisode](~~94745#doc-api-live-AddCasterEpisode~~ "Adds an episode to a production studio.") operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf938623****', - ], - ], - [ - 'name' => 'EpisodeName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'episode_name_1', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ResourceId', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the video resource. It is included in the response when you call the [AddCasterVideoResource](~~60250#doc-api-live-AddCasterVideoResource~~ "Adds a video resource to a production studio.") operation.'."\n" - ."\n" - .'* This parameter takes effect and is required only when the EpisodeType is set to **Resource**.'."\n" - .'* If the EpisodeType parameter is set to **Component**, this parameter is invalid.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E683****', - ], + 'schema' => ['description' => 'The full name of the stream to query. The format is `rtmp:////`', 'type' => 'string', 'required' => true, 'example' => 'rtmp://example.com/AppName/StreamName', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The time when the episode starts. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T09:00:00Z', - ], + 'schema' => ['description' => 'The start time. The format is \\`yyyy-MM-ddTHH:mm:ssZ\\` in UTC.', 'type' => 'string', 'required' => false, 'example' => '2015-12-10T15:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The time when the episode ends. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T10:20:00Z', - ], - ], - [ - 'name' => 'SwitchType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The policy for switching episodes. This parameter takes effect only when the EpisodeType parameter is set to **Resource**. Valid values:'."\n" - ."\n" - .'* **TimeFirst**: The episode starts when the preceding episode ends and ends when the next episode starts. If no next episode exists, the episode keeps repeating until a new episode is added or the production studio stops. This parameter must be set to TimeFirst when the video resource is a live stream.'."\n" - .'* **ContentFirst**: The episode starts and ends as scheduled.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TimeFirst', - ], + 'schema' => ['description' => 'The end time. The format is \\`yyyy-MM-ddTHH:mm:ssZ\\` in UTC.', 'type' => 'string', 'required' => false, 'example' => '2015-12-10T15:10:00Z ', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The audio and video information.', 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can use the ID as a request parameter in the API operation that is used to copy the configurations of a scene, update the configurations of a scene, query the scenes of a production studio, query the audio configurations of a scene, start a scene in the production studio, or stop a scene in the production studio.'."\n", - 'type' => 'string', - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - 'EpisodeId' => [ - 'description' => 'The ID of the episode. You can use the ID as a request parameter in the API operation that is used to delete an episode list from a production studio, add episodes to an episode list, remove episodes from an episode list, query the information about episodes in an episode list, update episodes in an episode list, delete an episode list, query the information about an episode list, start an episode list, or stop an episode list.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf938623****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - ], - 'description' => '', - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'SwitchTypeInvalid.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectStartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectEndTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectEpisodeStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'EpisodeConflict.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7', 'title' => ''], + 'UpItems' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PublishItem' => [ + 'itemNode' => true, + 'description' => 'The information about the ingest streams.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the ingest stream.', + 'type' => 'object', + 'properties' => [ + 'AacHeaders' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AacHeaders' => [ + 'description' => 'The number of audio Advanced Audio Coding (AAC) headers per second. Unit: count.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The audio AAC headers per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'AppName' => ['description' => 'The name of the ingest application.', 'type' => 'string', 'example' => 'AppName', 'title' => ''], + 'AudioBitRate' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AudioBitRate' => [ + 'description' => 'The audio bitrate per second. Unit: bit/s.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The audio bitrate per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '24552', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'AudioFrames' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AudioFrames' => [ + 'description' => 'The audio frame rate per second. Unit: frames.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The audio frame rate per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '23', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'AudioInterval' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AudioInterval' => [ + 'description' => 'The maximum audio frame interval per second. Unit: milliseconds.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The maximum audio frame interval per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '254', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'AudioStamps' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AudioStamps' => [ + 'description' => 'The audio timestamp per second. Unit: milliseconds.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The audio timestamp per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '725053422', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'AvcHeaders' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AvcHeaders' => [ + 'description' => 'The number of video Advanced Video Coding (AVC) headers per second. Unit: count.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The video AVC headers per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '11', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'CodecInfo' => ['description' => 'The audio and video encoding information.', 'type' => 'string', 'example' => 'H264/AAC', 'title' => ''], + 'DomainName' => ['description' => 'The ingest domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'ErrorFlags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ErrorFlags' => [ + 'description' => 'The error code for the stream ingest disconnection.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The error code for the stream ingest disconnection.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'PublishInterval' => ['description' => 'The duration of the stream ingest in seconds. A hyphen (-) indicates that the stream is ongoing and the duration is not yet available.', 'type' => 'string', 'example' => '-', 'title' => ''], + 'PublishIp' => ['description' => 'The IP address of the ingest client.', 'type' => 'string', 'example' => 'cn397', 'title' => ''], + 'PublishStatus' => ['description' => 'The status of the stream ingest. \\`1\\`: The stream is ongoing. \\`0\\`: The stream has ended.', 'type' => 'string', 'example' => '1', 'title' => ''], + 'PublishTime' => ['description' => 'The start time of the stream ingest in UTC format.', 'type' => 'string', 'example' => '2015-12-10T15:00:00Z', 'title' => ''], + 'StopTime' => ['description' => 'The end time of the stream ingest in UTC format.', 'type' => 'string', 'example' => '2015-12-10T15:10:00Z', 'title' => ''], + 'StreamName' => ['description' => 'The name of the stream.', 'type' => 'string', 'example' => 'StreamName', 'title' => ''], + 'UniqueId' => ['description' => 'The unique ID for each stream ingest session.', 'type' => 'string', 'example' => '2.-395_37261_9848098_1538080899396', 'title' => ''], + 'VideoAndAudioStamp' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'V_AStamp' => [ + 'description' => 'The difference between the video and audio timestamps per second. Unit: milliseconds.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The difference between the video and audio timestamps per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '359', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'VideoBitRate' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VideoBitRate' => [ + 'description' => 'The video bitrate per second. Unit: bit/s.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The video bitrate per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '3970160', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'VideoFrames' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VideoFrames' => [ + 'description' => 'The video frame rate per second. Unit: frames.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The video frame rate per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '29', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'VideoInterval' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VideoInterval' => [ + 'description' => 'The maximum video frame interval per second. Unit: milliseconds.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The maximum video frame interval per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '278', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'VideoStamps' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VideoStamps' => [ + 'description' => 'The video timestamp per second. Unit: milliseconds.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The video timestamp per second.', + 'type' => 'object', + 'properties' => [ + 'Time' => ['description' => 'The query time. This is a UNIX timestamp in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '1538134750408', 'title' => ''], + 'Value' => ['description' => 'The value of the metric per second at the specified time.', 'type' => 'integer', 'format' => 'int32', 'example' => '725053781', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', ], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'errorCodes' => [ + 200 => [ + ['errorCode' => 'InvalidDuration.ExceedOneDay', 'errorMessage' => 'StartTime and EndTime Duration Exceeds One Day', 'description' => ''], + ['errorCode' => 'InvalidDuration.StratTimeBiggerEndTime', 'errorMessage' => 'StartTime Bigger Than EndTime', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidEpisode.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 400 => [ + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter Stream invalid.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"EpisodeId\\": \\"a2b8e671-2fe5-4642-a2ec-bf938623****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n a2b8e671-2fe5-4642-a2ec-bf938623****\\n LIVEPRODUCER_POST-cn-0pp1czt****\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n}"}]', - 'title' => 'ModifyCasterEpisode', - 'description' => 'You can call this operation to modify the configurations of an episode in a production studio. You cannot change the episode type.'."\n" + 'title' => 'DescribeLiveUpVideoAudioInfo', + 'description' => '- The maximum time range for a query is 24 hours.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- The minimum time range for a query is 1 minute.'."\n" ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddCasterEpisodeGroup' => [ - 'summary' => 'Adds an episode list to a production studio.', - 'methods' => [ - 'post', - 'get', + .'- You can query data from the last 31 days.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per minute. If you exceed this limit, API calls are throttled, which may affect your business. We recommend that you call this API at a reasonable rate.', + 'responseParamsDescription' => 'If a parameter does not exist, an empty string is returned.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUpVideoAudioInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\",\\n \\"UpItems\\": {\\n \\"PublishItem\\": [\\n {\\n \\"AacHeaders\\": {\\n \\"AacHeaders\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 20\\n }\\n ]\\n },\\n \\"AppName\\": \\"AppName\\",\\n \\"AudioBitRate\\": {\\n \\"AudioBitRate\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 24552\\n }\\n ]\\n },\\n \\"AudioFrames\\": {\\n \\"AudioFrames\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 23\\n }\\n ]\\n },\\n \\"AudioInterval\\": {\\n \\"AudioInterval\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 254\\n }\\n ]\\n },\\n \\"AudioStamps\\": {\\n \\"AudioStamps\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 725053422\\n }\\n ]\\n },\\n \\"AvcHeaders\\": {\\n \\"AvcHeaders\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 11\\n }\\n ]\\n },\\n \\"CodecInfo\\": \\"H264/AAC\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"ErrorFlags\\": {\\n \\"ErrorFlags\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 0\\n }\\n ]\\n },\\n \\"PublishInterval\\": \\"-\\",\\n \\"PublishIp\\": \\"cn397\\",\\n \\"PublishStatus\\": \\"1\\",\\n \\"PublishTime\\": \\"2015-12-10T15:00:00Z\\",\\n \\"StopTime\\": \\"2015-12-10T15:10:00Z\\",\\n \\"StreamName\\": \\"StreamName\\",\\n \\"UniqueId\\": \\"2.-395_37261_9848098_1538080899396\\",\\n \\"VideoAndAudioStamp\\": {\\n \\"V_AStamp\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 359\\n }\\n ]\\n },\\n \\"VideoBitRate\\": {\\n \\"VideoBitRate\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 3970160\\n }\\n ]\\n },\\n \\"VideoFrames\\": {\\n \\"VideoFrames\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 29\\n }\\n ]\\n },\\n \\"VideoInterval\\": {\\n \\"VideoInterval\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 278\\n }\\n ]\\n },\\n \\"VideoStamps\\": {\\n \\"VideoStamps\\": [\\n {\\n \\"Time\\": 1538134750408,\\n \\"Value\\": 725053781\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveUserBillPrediction' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Item', + 'name' => 'StartTime', 'in' => 'query', - 'style' => 'repeatList', + 'schema' => ['description' => 'The start time. The time must be in UTC and follow the *yyyy-mm-dd*T*hh:mm:ss*Z format.', 'type' => 'string', 'required' => false, 'example' => '2015-12-01T05:40:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The time must be in UTC and follow the yyyy-MM-ddTHH:mm:ssZ format.', 'type' => 'string', 'required' => false, 'example' => '2015-12-01T05:45:00Z', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The list of episodes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the episode.'."\n", - 'type' => 'object', - 'properties' => [ - 'ItemName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'episode1', - ], - 'VodUrl' => [ - 'description' => 'The URL of the VOD file.'."\n" - ."\n" - .'If you query the input sources of the production studio by calling the [DescribeCasterVideoResources](~~2848023~~) operation, check the value of the response parameter VodUrl to obtain the URL.'."\n" - ."\n" - .'> This parameter takes effect only when the input source is a video file that is not from the media library.\\'."\n" - .'The video file can be in the MP4, FLV, or TS format.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://learn.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****.flv?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', + 'type' => 'object', + 'properties' => [ + 'EndTime' => ['description' => 'The end time of the query. The time is in UTC and follows the ISO 8601 standard.'."\n" + .'Format: YYYY-MM-DDThh:mm:ssZ. The default value is the current time.', 'type' => 'string', 'example' => '2018-10-25T10:00:00Z', 'title' => ''], + 'StartTime' => ['description' => 'The start time of the query. The time is in UTC and follows the ISO 8601 standard.'."\n" + .'Format: YYYY-MM-DDThh:mm:ssZ. The default value is 00:00 on the first day of the month.', 'type' => 'string', 'example' => '2018-09-30T16:00:00Z', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'B95BE680-5A6A-1CAD-8AB1-09DFF5D6****', 'title' => ''], + 'BillType' => [ + 'description' => 'The billing method. The following billing methods are supported:'."\n" + ."\n" + .'- hour\\_flow: Pay-by-traffic on an hourly basis.'."\n" + ."\n" + .'- day\\_bandwidth: Pay-by-bandwidth on a daily basis.'."\n" + ."\n" + .'- month\\_95: Pay-by-monthly 95th percentile peak bandwidth.'."\n" + ."\n" + .'- month\\_avg\\_day\\_bandwidth: Pay-by-monthly average of daily peak bandwidth.'."\n" + ."\n" + .'- month\\_4th\\_day\\_bandwidth: Pay-by-monthly 4th peak bandwidth.'."\n" + ."\n" + .'- month\\_avg\\_day\\_95: Pay-by-monthly average of daily 95th percentile peak bandwidth.'."\n" + ."\n" + .'- month\\_95\\_night\\_half: Pay-by-nightly 95th percentile peak bandwidth with a 50% discount.'."\n" + ."\n" + .'- hour\\_vas: Pay-for-value-added services on an hourly basis.'."\n" + ."\n" + .'- day\\_count: Pay-by-daily request count.', + 'enumValueTitles' => [], + 'type' => 'string', + 'example' => 'day_bandwidth', + 'title' => '', + ], + 'BillPredictionData' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'BillPredictionDataItem' => [ + 'itemNode' => true, + 'description' => 'The bill prediction data.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The bill prediction data.', + 'type' => 'object', + 'properties' => [ + 'Value' => ['description' => 'The predicted value.', 'type' => 'number', 'format' => 'float', 'example' => '10000', 'title' => ''], + 'TimeStp' => ['description' => 'The timestamp of the predicted value. This parameter is returned only for the month\\_95, month\\_95\\_night\\_half, and month\\_4th\\_day\\_bandwidth billing methods.', 'type' => 'string', 'example' => '2018-10-15T16:00:00Z', 'title' => ''], + 'Area' => ['description' => 'The region code. Valid values:'."\n" + ."\n" + .'- CN: the Chinese mainland.'."\n" + ."\n" + .'- OverSeas: regions outside China.'."\n" + ."\n" + .'- AP1: Asia Pacific 1. This region includes Hong Kong (China), Macao (China), Taiwan (China), Japan, and Southeast Asian countries except for Vietnam and Indonesia.'."\n" + ."\n" + .'- AP2: Asia Pacific 2. This region includes Indonesia, South Korea, and Vietnam.'."\n" + ."\n" + .'- AP3: Asia Pacific 3. This region includes Australia and New Zealand.'."\n" + ."\n" + .'- NA: North America. This region includes the United States and Canada.'."\n" + ."\n" + .'- SA: South America. This region includes Brazil.'."\n" + ."\n" + .'- EU: Europe. This region includes Ukraine, the United Kingdom, France, the Netherlands, Spain, Italy, Sweden, and Germany.'."\n" + ."\n" + .'- MEAA: Middle East and Africa. This region includes South Africa, Oman, the United Arab Emirates, and Kuwait.'."\n" + ."\n" + .'If you do not specify this parameter, data from all regions is aggregated and returned.', 'type' => 'string', 'example' => 'CN', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], - 'required' => false, ], - 'required' => true, - 'maxItems' => 150, + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameter', 'errorMessage' => 'InvalidParameter.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'The specified StartTime parameter is invalid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'The specified EndTime is invalid.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.ValueNotSupported', 'errorMessage' => 'The StartTime cannot exceed 31 days before the current time.', 'description' => ''], + ['errorCode' => 'InvalidTime.Malformed', 'errorMessage' => 'Specified Time is malformed.', 'description' => 'Invalid time. Check whether the time that you specified is correct.'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'InvalidTimeSpan', 'errorMessage' => 'The time span exceeds the limit.', 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['errorCode' => 'BillTypeNotFound', 'errorMessage' => 'User bill type not found or is not monthly bill type.', 'description' => 'The bill type does not exist, or your account does not support monthly bills.'], + ], + ], + 'title' => 'DescribeLiveUserBillPrediction', + 'summary' => 'Retrieves the bill prediction for a live streaming user.', + 'description' => 'This operation predicts your usage data for the current month. The prediction is based on the billing method that is active on the first day of the month. This operation supports predictions for monthly billing methods only and provides data at the user level. The query time range starts at 00:00 on the first day of the month and ends two hours before the current time.'."\n" + ."\n" + .'- Monthly 95th percentile: The highest data point after the top 5% of data points are removed from the specified time range.'."\n" + ."\n" + .'- Monthly average of daily peak bandwidth: The sum of daily peak bandwidth values divided by the number of days in the time range. The current day\'s data is not included.'."\n" + ."\n" + .'- Monthly 4th peak: The fourth-highest peak bandwidth in the specified time range. If the time range is less than four days, the predicted value is 0.'."\n" + ."\n" + .'- Monthly average of daily 95th percentile peak: The sum of daily 95th percentile peak values divided by the number of days in the time range. The current day\'s data is not included.'."\n" + ."\n" + .'- Nightly 95th percentile: The highest data point after the top 5% of data points are removed from the specified time range.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 1. If you exceed this limit, your API calls are throttled, which may affect your business. Make API calls at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveUserBillPrediction'], + ], + ], + 'ramActions' => [ [ - 'name' => 'ClientToken', - 'in' => 'query', - 'schema' => [ - 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" - ."\n" - .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '8751ad99-2ddb-4aac-ad44-84b21102****', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUserBillPrediction', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2018-10-25T10:00:00Z\\",\\n \\"StartTime\\": \\"2018-09-30T16:00:00Z\\",\\n \\"RequestId\\": \\"B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\",\\n \\"BillType\\": \\"day_bandwidth\\",\\n \\"BillPredictionData\\": {\\n \\"BillPredictionDataItem\\": [\\n {\\n \\"Value\\": 10000,\\n \\"TimeStp\\": \\"2018-10-15T16:00:00Z\\",\\n \\"Area\\": \\"CN\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'DescribeLiveUserDomains' => [ + 'summary' => 'Queries domain names of ApsaraVideo Live in your Alibaba Cloud account.'."\n", + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '107118', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ + [ + 'name' => 'LiveDomainType', + 'in' => 'query', + 'schema' => ['description' => 'The type of the domain name. Valid values:'."\n" + ."\n" + .'* **liveVideo**: streaming domain'."\n" + .'* **liveEdge**: ingest domain'."\n" + ."\n" + .'> If you leave this parameter empty, all ingest domains and streaming domains within your Alibaba Cloud account are queried by default.'."\n", 'type' => 'string', 'required' => false, 'example' => 'liveVideo', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Default value: **20**. Maximum value: **50**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '500', 'example' => '20', 'default' => '20', 'title' => ''], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Valid values: **1 to 100000**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'default' => '1', 'title' => ''], + ], [ 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The domain name that is used as a keyword to filter domain names. Fuzzy match is supported.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* If you set LiveDomainType to liveVideo and leave this parameter empty, the streaming domains are queried. - If you set LiveDomainType to liveEdge and leave this parameter empty, the ingest domains are queried.'."\n", 'type' => 'string', 'required' => false, 'example' => '*.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'RegionName', 'in' => 'query', - 'schema' => [ - 'description' => 'The time when the episode list starts to play. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2018-03-06T19:00:00Z', - ], + 'schema' => ['description' => 'The ID of the region in which the domain name resides.'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-beijing', 'title' => ''], ], [ - 'name' => 'RepeatNum', + 'name' => 'DomainSearchType', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of times the episode list repeats after the first playback is complete. Valid values:'."\n" - ."\n" - .'* **0**: indicates that the episode list is played only once.'."\n" - .'* **-1**: indicates that the episode list is played in loop mode.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '0', - ], + 'schema' => ['description' => 'The search mode. Valid values:'."\n" + ."\n" + .'* **fuzzy_match** (default): fuzzy match'."\n" + .'* **pre_match**: prefix match'."\n" + .'* **suf_match**: suffix match'."\n" + .'* **full_match**: exact match'."\n", 'type' => 'string', 'required' => false, 'example' => 'fuzzy_match', 'title' => ''], ], [ - 'name' => 'SideOutputUrl', + 'name' => 'DomainStatus', 'in' => 'query', - 'schema' => [ - 'description' => 'The custom standby URL.'."\n" - ."\n" - .'If this parameter is empty, the ingest address corresponding to the output address automatically generated by Alibaba Cloud will be used by default.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://guide.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', - ], + 'schema' => ['description' => 'The status of the domain name. Valid values:'."\n" + ."\n" + .'* **online**'."\n" + .'* **offline**'."\n" + .'* **configuring**'."\n", 'type' => 'string', 'required' => false, 'example' => 'online', 'title' => ''], ], [ - 'name' => 'CallbackUrl', + 'name' => 'Tag', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The callback URL.'."\n" - ."\n" - .'If you query the configurations of the production studio by calling the [DescribeCasterConfig](~~2848011~~) operation, check the value of the response parameter CallbackUrl to obtain the URL.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://developer.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The list of tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The key of the tag.'."\n", 'type' => 'string', 'required' => false, 'example' => 'TestKey', 'title' => ''], + 'Value' => ['description' => 'The value of the tag.'."\n", 'type' => 'string', 'required' => false, 'example' => 'TestValue', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 20, + 'title' => '', + 'example' => '', ], ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => ['description' => 'The ID of the resource group.'."\n", 'type' => 'string', 'required' => false, 'example' => 'rg-**kzvyjetyjjm**', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'ItemIds' => [ + 'Domains' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'ItemId' => [ - 'description' => 'The IDs of the episodes.'."\n", + 'PageData' => [ + 'description' => 'The domain names.'."\n", 'type' => 'array', 'items' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', + 'description' => 'The information about the domain name.'."\n", + 'type' => 'object', + 'properties' => [ + 'Cname' => ['description' => 'The CNAME generated for the domain name.'."\n", 'type' => 'string', 'example' => 'learn.developer.aliyundoc.com', 'title' => ''], + 'Description' => ['description' => 'The description.'."\n", 'type' => 'string', 'example' => 'test', 'title' => ''], + 'DomainName' => ['description' => 'The domain name.'."\n", 'type' => 'string', 'example' => 'demo.aliyundoc.com', 'title' => ''], + 'GmtCreated' => ['description' => 'The time when the domain name was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", 'type' => 'string', 'example' => '2017-08-29T12:15:36Z', 'title' => ''], + 'GmtModified' => ['description' => 'The time when the domain name was last modified. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", 'type' => 'string', 'example' => '2017-12-29T12:15:36Z', 'title' => ''], + 'LiveDomainStatus' => ['description' => 'The status of the domain name. Valid values:'."\n" + ."\n" + .'* **online**'."\n" + .'* **offline**'."\n" + .'* **configuring**'."\n", 'type' => 'string', 'example' => 'online', 'title' => ''], + 'LiveDomainType' => ['description' => 'The type of the domain name. Valid values:'."\n" + ."\n" + .'* **liveVideo**: streaming domain'."\n" + .'* **liveEdge**: ingest domain'."\n", 'type' => 'string', 'example' => 'liveVideo', 'title' => ''], + 'RegionName' => ['description' => 'The ID of the region in which the domain name resides.'."\n", 'type' => 'string', 'example' => 'cn-beijing', 'title' => ''], + 'ResourceGroupId' => ['description' => 'The ID of the resource group.'."\n", 'type' => 'string', 'example' => 'rg-**kzvyjetyjjm**', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], - 'ProgramId' => [ - 'description' => 'The ID of the episode list that was added. Record the ID as it can be used to manage the program being added.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68X****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'PageNumber' => ['description' => 'The page number.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '100', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.'."\n", 'type' => 'string', 'example' => 'E4EBD2BF-5EB0-4476-8829-9D94E1B15267', 'title' => ''], + 'TotalCount' => ['description' => 'The total number of entries.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'IncorrectStartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidPageNumber.ValueNotSupported', 'errorMessage' => 'The specified value of parameter PageNumber is not supported.', 'description' => 'The value of the specified PageNumber parameter is not supported.'], + ['errorCode' => 'InvalidPageSize.ValueNotSupported', 'errorMessage' => 'The specified value of parameter PageSize is not supported.', 'description' => ''], + ['errorCode' => 'InvalidDomainStatus.ValueNotSupported', 'errorMessage' => 'The specified value of parameter DomainStatus is not supported.', 'description' => ''], + ['errorCode' => 'InvalidDomainName.Malformed', 'errorMessage' => 'The specific value of parameter DomainName is malformed.', 'description' => ''], + ['errorCode' => 'InvalidDomainSearchType.ValueNotSupported', 'errorMessage' => 'The specified value of parameter DomainSearchType is not supported.', 'description' => ''], + ['errorCode' => 'InvalidDomainSearchType.Malformed', 'errorMessage' => 'he specified value of parameter DomainSearchType is invalid.', 'description' => ''], + ['errorCode' => 'InvalidLiveDomainType.ValueNotSupported', 'errorMessage' => 'The specified value of parameter LiveDomainType is not supported.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ItemIds\\": {\\n \\"ItemId\\": [\\n \\"21926b36-7dd2-4fde-ae25-51b5bc98****\\"\\n ]\\n },\\n \\"ProgramId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68X****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68X****\\n\\t21926b36-7dd2-4fde-ae25-51b5bc8e****\\n\\t21926b36-7dd2-4fde-ae25-51b5bc98****\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ProgramId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68XX876\\",\\n \\"ItemIds\\": [\\n \\"21926b36-7dd2-4fde-ae25-51b5bc8e52d8\\",\\n \\"21926b36-7dd2-4fde-ae25-51b5bc98765t\\"\\n ]\\n}"}]', - 'title' => 'AddCasterEpisodeGroup', - 'description' => 'You need to create a production studio and obtain the production studio configurations before you call this operation to create an episode list in the production studio. For information about how to create a production studio, see [CreateCaster](~~2848009~~).'."\n" + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Domains\\": {\\n \\"PageData\\": [\\n {\\n \\"Cname\\": \\"learn.developer.aliyundoc.com\\",\\n \\"Description\\": \\"test\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\",\\n \\"GmtCreated\\": \\"2017-08-29T12:15:36Z\\",\\n \\"GmtModified\\": \\"2017-12-29T12:15:36Z\\",\\n \\"LiveDomainStatus\\": \\"online\\",\\n \\"LiveDomainType\\": \\"liveVideo\\",\\n \\"RegionName\\": \\"cn-beijing\\",\\n \\"ResourceGroupId\\": \\"rg-**kzvyjetyjjm**\\"\\n }\\n ]\\n },\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 100,\\n \\"RequestId\\": \\"E4EBD2BF-5EB0-4476-8829-9D94E1B15267\\",\\n \\"TotalCount\\": 1\\n}","type":"json"}]', + 'title' => 'DescribeLiveUserDomains', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'You can call this operation to query all domain names of ApsaraVideo Live within your Alibaba Cloud account. The supported types of domain names are streaming domains and edge ingest domains.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DeleteCasterEpisodeGroup' => [ - 'summary' => 'Deletes an episode list in a production studio.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-09-25T02:39:23.000Z', 'description' => 'Request parameters changed, Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveUserDomains'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUserDomains', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeLiveUserStreamMetricData' => [ + 'summary' => 'Queries stream-level batch data for a specified streaming domain. Multiple protocols are supported.', + 'methods' => ['get', 'post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '214643', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The streaming domain to query.'."\n" + ."\n\n" + .'> Only a single domain name is supported. An error is returned if multiple domain names are specified. If the domain name is empty, aggregate data for all streaming domains under the user is queried. If `AppName` and `StreamName` are not specified, stream-level data for all streams under the domain is returned.', 'type' => 'string', 'required' => false, 'example' => 'test.com', 'title' => ''], ], [ - 'name' => 'ProgramId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If the episode list was added by calling the [AddCasterEpisodeGroup](~~2848071~~) operation, check the value of the response parameter ProgramId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf932738****', - ], + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the `YYYY-MM-DDThh:mm:ssZ` format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2015-12-10T20:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time and the difference cannot exceed 1 day. Specify the time in the ISO 8601 standard in the `YYYY-MM-DDThh:mm:ssZ` format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2015-12-10T21:00:00Z', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The application name. Specify the application name to query stream-level data for the corresponding application. If `StreamName` is specified, `AppName` must also be specified.', 'type' => 'string', 'required' => false, 'example' => 'app', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name. If `StreamName` is specified, stream-level data for the specified `StreamName` under the specified `AppName` is returned. If `StreamName` is specified, `AppName` must also be specified.', 'type' => 'string', 'required' => false, 'example' => 'test.flv', 'title' => ''], + ], + [ + 'name' => 'Protocol', + 'in' => 'query', + 'schema' => ['description' => 'The stream protocol name. Specify the protocol name to query data for the corresponding protocol. Supported protocols: `flv`, `hls`, `rtmp`, `rts`, `p2p`. You can query data for multiple protocols by separating them with commas (,). Data for multiple protocols is not aggregated and is output at the stream level.'."\n" + .'> The **rts** option queries Real-Time Streaming (RTS) streams using the ARTC protocol.'."\n" + .'> - When using rts, you may need to additionally count the xxx_AliRTS-opus transcoding stream. This is because when playing an RTS stream on the web, a transcoding stream with the _AliRTS-opus suffix appended to the stream name is automatically generated, producing transcoding stream data. For more information, see [RTS sub-second latency automatic transcoding](~~2948703~~).', 'type' => 'string', 'required' => false, 'example' => 'flv', 'title' => ''], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Maximum value: 5000.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '10', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'DomainName' => ['description' => 'The streaming domain information.', 'type' => 'string', 'example' => 'test.com', 'title' => ''], + 'EndTime' => ['description' => 'YYYY-MM-DDThh:mm:ssZ'."\n", 'type' => 'string', 'example' => '2015-12-10T21:00:00Z', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + 'StartTime' => ['description' => 'The beginning of the time range to query. The time is in the ISO 8601 standard in the `YYYY-MM-DDThh:mm:ssZ` format in UTC.', 'type' => 'string', 'example' => '2015-12-10T20:00:00Z', 'title' => ''], + 'StreamDetailData' => [ + 'description' => 'The traffic data for each time interval.', + 'type' => 'array', + 'items' => [ + 'description' => 'The returned data group.', + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'The application name. This value is returned regardless of whether it is specified.', 'type' => 'string', 'example' => 'app', 'title' => ''], + 'Bps' => ['description' => 'The total bandwidth per minute for the stream, in bps.', 'type' => 'number', 'format' => 'float', 'example' => '423304182.66', 'title' => ''], + 'Count' => ['description' => 'The total number of concurrent connections per minute for the stream.'."\n" + ."\n" + .'> **Concurrent connections** refers to the count of client process connections to the same stream within a unit of time.', 'type' => 'integer', 'format' => 'int64', 'example' => '423304182', 'title' => ''], + 'FlvBps' => ['description' => 'The bandwidth for the FLV protocol, in bps. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '454', 'title' => ''], + 'FlvCount' => ['description' => 'The number of concurrent connections for the FLV protocol. This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '32', 'title' => ''], + 'FlvTraffic' => ['description' => 'The traffic for the FLV protocol, in bytes. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'double', 'example' => '1254', 'title' => ''], + 'HlsBps' => ['description' => 'The bandwidth for the HLS protocol, in bps. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '4456', 'title' => ''], + 'HlsCount' => ['description' => 'The number of concurrent connections for the HLS protocol. This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '56', 'title' => ''], + 'HlsTraffic' => ['description' => 'The traffic for the HLS protocol, in bytes. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'double', 'example' => '568', 'title' => ''], + 'NewConns' => ['description' => 'The number of new connections per minute for the stream.', 'type' => 'integer', 'format' => 'int64', 'example' => '450', 'title' => ''], + 'P2pBps' => ['description' => 'The bandwidth for the P2P protocol, in bps. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '6845', 'title' => ''], + 'P2pCount' => ['description' => 'The number of concurrent connections for the P2P protocol. This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '78', 'title' => ''], + 'P2pTraffic' => ['description' => 'The traffic for the P2P protocol, in bytes. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'double', 'example' => '4102', 'title' => ''], + 'RtmpBps' => ['description' => 'The bandwidth for the RTMP protocol, in bps. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'float', 'example' => '3323', 'title' => ''], + 'RtmpCount' => ['description' => 'The number of concurrent connections for the RTMP protocol. This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '63', 'title' => ''], + 'RtmpTraffic' => ['description' => 'The traffic for the RTMP protocol, in bytes. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'double', 'example' => '5568', 'title' => ''], + 'RtsBps' => ['description' => 'The bandwidth for the RTS protocol, in bps. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'double', 'example' => '2361', 'title' => ''], + 'RtsCount' => ['description' => 'The number of concurrent connections for the RTS protocol. This field is not returned if the specified protocol does not match.', 'type' => 'integer', 'format' => 'int64', 'example' => '89', 'title' => ''], + 'RtsTraffic' => ['description' => 'The traffic for the RTS protocol, in bytes. This field is not returned if the specified protocol does not match.', 'type' => 'number', 'format' => 'double', 'example' => '2322', 'title' => ''], + 'StreamName' => ['description' => 'The stream name. This value is returned regardless of whether it is specified.', 'type' => 'string', 'example' => 'test.flv', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time slice. The time is in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format in UTC+0.', 'type' => 'string', 'example' => '2015-12-10T20:00:00Z', 'title' => ''], + 'Traffic' => ['description' => 'The total traffic per minute for the stream, in bytes.', 'type' => 'number', 'format' => 'double', 'example' => '423304182', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'TotalCount' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int64', 'example' => '50', 'title' => ''], + 'PageNumber' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}"}]', - 'title' => 'DeleteCasterEpisodeGroup', - 'description' => 'Before you call this operation to delete an episode list in a production studio, make sure that you have called the [AddCasterEpisodeGroup](~~2848071~~) operation to add the episode list in the production studio.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'Query stream-level batch data for a specified domain', + 'description' => '> Querying new connections for the HLS protocol is not supported. Concurrent connections for HLS are counted based on requests in the default format. Requests in special formats require configuration by [submit a ticket](https://workorder.console.aliyun.com/console.htm#/ticket/add?productCode=live&commonQuestionId=4545&isSmart=true&iatraceid=1608439120675-2a5c48de0b84805313c708&channel=selfservice)[submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex). The default formats are as follows:'."\n" + .'> - m3u8 request example: http(s)://example.aliyundoc.com/Appname/ StreamName.m3u8'."\n" + .'> - ts request example: http(s)://example.aliyundoc.com/Appname/ StreamName/153xxxxxxxx_137xxxxx.ts.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddCasterEpisodeGroupContent' => [ - 'summary' => 'Adds information about an episode list in a production studio.', - 'methods' => [ - 'post', - 'get', + .'## Settings'."\n" + .'- **Single query limit**: A maximum of 5000 rows of data can be returned per query.'."\n" + .'- **Domain name query limit**: Only a single domain name is supported. An error is returned if multiple domain names are specified.'."\n" + .'- **Time span limit**: The maximum query time span is 24 hours.'."\n" + .'- **Time granularity limit**: The minimum query granularity is 1 minute.'."\n" + .'- **Query range limit**: The maximum query range is 31 days.'."\n" + .'- **Call frequency limit**: The maximum call frequency per user is 10 calls per second.'."\n" + .'- **Special parameter combination**: When `DomainName` is not empty and both `AppName` and `StreamName` are set to `all`, the aggregate data for the streaming domain is returned.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUserStreamMetricData', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DomainName\\": \\"test.com\\",\\n \\"EndTime\\": \\"2015-12-10T21:00:00Z\\",\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"StartTime\\": \\"2015-12-10T20:00:00Z\\",\\n \\"StreamDetailData\\": [\\n {\\n \\"AppName\\": \\"app\\",\\n \\"Bps\\": 423304182.66,\\n \\"Count\\": 423304182,\\n \\"FlvBps\\": 454,\\n \\"FlvCount\\": 32,\\n \\"FlvTraffic\\": 1254,\\n \\"HlsBps\\": 4456,\\n \\"HlsCount\\": 56,\\n \\"HlsTraffic\\": 568,\\n \\"NewConns\\": 450,\\n \\"P2pBps\\": 6845,\\n \\"P2pCount\\": 78,\\n \\"P2pTraffic\\": 4102,\\n \\"RtmpBps\\": 3323,\\n \\"RtmpCount\\": 63,\\n \\"RtmpTraffic\\": 5568,\\n \\"RtsBps\\": 2361,\\n \\"RtsCount\\": 89,\\n \\"RtsTraffic\\": 2322,\\n \\"StreamName\\": \\"test.flv\\",\\n \\"TimeStamp\\": \\"2015-12-10T20:00:00Z\\",\\n \\"Traffic\\": 423304182\\n }\\n ],\\n \\"TotalCount\\": 50,\\n \\"PageNumber\\": 1\\n}","type":"json"}]', + ], + 'DescribeLiveUserTags' => [ + 'summary' => 'Retrieves user tags.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'ClientToken', - 'in' => 'query', - 'schema' => [ - 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n" - ."\n" - .'You can use the client to generate a token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '8751ad99-2ddb-4aac-ad44-84b21102****', - ], - ], - [ - 'name' => 'Content', - 'in' => 'query', - 'schema' => [ - 'description' => 'The information about the episode list. The value is a JSON string. Use upper camel case for fields of the string. This parameter contains the following fields:'."\n" - ."\n" - .'* **CallbackUrl**: the callback URL.'."\n" - ."\n" - .'* **SideOutputUrl**: the custom standby URL.'."\n" - ."\n" - .'* **RepeatNum**: the number of times the episode list repeats after the first playback is complete. A value of 0 indicates that the episode list is played only once. A value of -1 indicates that the episode list is played in loop mode.'."\n" - ."\n" - .'* **DomainName**: the domain name.'."\n" - ."\n" - .'* **StartTime**: the time when the episode list starts to play. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'* **Items**: the information about the episode list. It is an array of ItemName and VodUrl.'."\n" - ."\n" - .' * **ItemName**: the name of the episode.'."\n" - .' * **VodUrl**: the URL of the VOD file. This field takes effect only when the video resource is a video file that is not from the media library. The video file must be in the MP4, FLV, or TS format.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'CallbackUrl', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ @@ -43099,336 +34037,264 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'ItemIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'ItemId' => [ - 'description' => 'The IDs of the episodes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '6B0256B6-2442-5BEF-B8D6-A0C28A801DFC', 'title' => ''], + 'Tags' => [ + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag keys.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key.', 'type' => 'string', 'example' => 'key1', 'title' => ''], + 'Value' => [ + 'description' => 'The tag values.', + 'type' => 'array', + 'items' => ['description' => 'The tag value.', 'type' => 'string', 'example' => 'value1', 'title' => ''], + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], - ], - 'ProgramId' => [ - 'description' => 'The ID of the episode list. You can use the ID as a request parameter in the API operation that is used to create or add episodes, remove episodes, query episodes, edit an episode list, delete an episode list, query the information about an episode list, start playing an episode list, or stop playing an episode list.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68X****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'IncorrectStartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + 'errorCodes' => [], + 'title' => 'DescribeLiveUserTags', + 'description' => '### QPS limit'."\n" + ."\n" + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveUserTags'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUserTags', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ItemIds\\": {\\n \\"ItemId\\": [\\n \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\"\\n ]\\n },\\n \\"ProgramId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68X****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ProgramId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68XX876\\",\\n \\"ItemIds\\": [\\n \\"21926b36-7dd2-4fde-ae25-51b5bc8e52d8\\",\\n \\"21926b36-7dd2-4fde-ae25-51b5bc98765t\\"\\n ]\\n}"},{"type":"xml","example":"\\n\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n\\t16A96B9A-F203-4EC5-8E43-CB92E68X****\\n\\t21926b36-7dd2-4fde-ae25-51b5bc8e****\\n\\t21926b36-7dd2-4fde-ae25-51b5bc98****\\n\\t\\n","errorExample":"Content 参数格式示例\\n {\\n \\"StartTime\\": \\"2018-04-02T19:00:00Z\\",\\n \\"DomainName\\": \\"XXX.XXX.XXX\\",\\n \\"RepeatNum\\":3,\\n \\"SideOutputUrl\\":\\"rtmp://XXXX/XXXX/XXXX\\",\\n \\"CallbackUrl\\":\\"http://XXXXXX/XXXXXXX\\",\\n \\"Items\\": [\\n {\\n \\"ItemName\\": \\"节目1\\",\\n \\"VodUrl\\": \\"http://XXXX/XXXXXX1.flv\\"\\n },\\n {\\n \\"ItemName\\": \\"节目2\\",\\n \\"VodUrl\\": \\"http://XXXX/XXXXXX2.mp4\\"\\n }\\n ]\\n }"}]', - 'title' => 'AddCasterEpisodeGroupContent', - 'description' => 'You need to create a production studio and add an episode list to the production studio before you call this operation to add information about the episode list in the production studio. For information about how to create a production studio, see [CreateCaster](~~2848009~~).'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6B0256B6-2442-5BEF-B8D6-A0C28A801DFC\\",\\n \\"Tags\\": [\\n {\\n \\"Key\\": \\"key1\\",\\n \\"Value\\": [\\n \\"value1\\"\\n ]\\n }\\n ]\\n}","type":"json"}]', ], - 'AddCasterProgram' => [ - 'summary' => 'Adds the episode list for carousel playback in a production studio.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeLiveVerifyContent' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Episode', + 'name' => 'DomainName', 'in' => 'query', - 'style' => 'repeatList', + 'schema' => ['description' => 'The domain name. Only one domain name is supported.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The information about episodes in the episode list.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the episode.'."\n", - 'type' => 'object', - 'properties' => [ - 'ComponentId' => [ - 'description' => 'The components. Components in the production studio are listed from the bottom to the top in an array.'."\n" - ."\n" - .'> This parameter is required and takes effect when the Episode.N.EpisodeType parameter is set to Component.'."\n" - ."\n" - .'This parameter is optional when the Episode.N.EpisodeType parameter is set to **Resource**. In this case, if this parameter is specified, the components are bound to and switched together with video resources.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the component.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf931826****', - ], - 'required' => false, - 'example' => '[ "a2b8e671-2fe5-4642-a2ec-bf931826****", "a2b8e671-2fe5-4642-a2ec-28374657****"]', - 'maxItems' => 10, - ], - 'EndTime' => [ - 'description' => 'The end time of the episode. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T10:02:00Z', - ], - 'EpisodeName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'program_name_1', - ], - 'EpisodeType' => [ - 'description' => 'The type of the episode.'."\n" - ."\n" - .'* **Resource**: a video resource If you set this parameter to Resource, you must specify the Episode.N.ResourceId and Episode.N.SwitchType parameters.'."\n" - .'* **Component**: a component If you set this parameter to Component, you must specify the Episode.N.ComponentId.N parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Resource', - ], - 'ResourceId' => [ - 'description' => 'The ID of the video resource.'."\n" - ."\n" - .'> This parameter takes effect and is required when the Episode.N.EpisodeType parameter is set to Resource.'."\n" - ."\n" - .'\\'."\n" - .'This parameter is invalid if you set the Episode.N.EpisodeType parameter to **Component**.'."\n" - ."\n" - .'If the video resource was added by calling the [AddCasterVideoResource](~~60250~~) operation, check the value of the response parameter ResourceId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'StartTime' => [ - 'description' => 'The start time of the episode. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T09:00:00Z', - ], - 'SwitchType' => [ - 'description' => 'The policy for switching episodes. Valid values:'."\n" - ."\n" - .'> This parameter takes effect only when the Episode.N.EpisodeType parameter is set to Resource.'."\n" - ."\n" - .'* **TimeFirst**: The episode starts when the previous episode ends and ends when the next episode starts. If no next episode exists, the episode keeps repeating until a new episode is added or the production studio stops. This value is required for live video resources.'."\n" - .'* **ContentFirst**: The episode starts and ends as scheduled.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TimeFirst', - ], - ], - 'required' => false, + 'type' => 'object', + 'properties' => [ + 'Content' => ['description' => 'The verification content.', 'type' => 'string', 'example' => 'verify_dffeb6610035dcb77b413******', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], ], - 'required' => true, - 'maxItems' => 100, + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [], + 'title' => 'DescribeLiveVerifyContent', + 'summary' => 'Queries the ownership verification content for a specified domain name.', + 'description' => '- You can call this operation to query the verification content for a single domain name.'."\n" + ."\n" + .'- Each user can call this operation up to 30 times per second.'."\n" + ."\n" + .'- You must specify the domain name that you want to authenticate.'."\n" + ."\n" + .'- A successful call returns the verification content and a request ID for subsequent operations or for your records.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveVerifyContent'], + ], + ], + 'ramActions' => [ [ - 'name' => 'CasterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveVerifyContent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Content\\": \\"verify_dffeb6610035dcb77b413******\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","type":"json"}]', + ], + 'DescribeMeterLiveBypassDuration' => [ + 'summary' => 'DescribeMeterLiveBypassDuration.', + 'methods' => ['get', 'post'], + 'schemes' => ['https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'none'], + 'parameters' => [ + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time of the query. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2022-10-10T20:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of the query. The end time must be later than the start time. The query granularity must be ≥ 5 minutes and ≤ 31 days. Specify the time in the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2022-10-10T21:00:00Z', 'title' => ''], + ], + [ + 'name' => 'AppId', + 'in' => 'query', + 'schema' => ['description' => 'The application ID. You can view the application ID on the [Application Management](~~2355593~~) page of ApsaraVideo Real-time Communication.', 'type' => 'string', 'required' => true, 'example' => '4346289a-a790-4869-9e23-22766d5e****', 'title' => ''], + ], + [ + 'name' => 'Interval', + 'in' => 'query', + 'schema' => ['description' => 'The time granularity for querying data. Unit: seconds. Valid values:'."\n" + ."\n" + .'- 300'."\n" + .'- 3600'."\n" + .'- 86400'."\n" + ."\n" + .'If this parameter is not specified or set to an unsupported value, the default value 3600 is used.', 'type' => 'string', 'required' => false, 'example' => '86400', 'title' => ''], + ], + ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'EpisodeIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'EpisodeId' => [ - 'description' => 'The IDs of the episodes. The episode IDs are listed in the same order as specified by the variable N.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'EpisodeId' => [ - 'description' => 'The ID of the episode. You can use the ID as a request parameter in the API operation that is used to modify the episode list, query the information about the episode list, delete the episode, or modify the configurations of the episode.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], - ], - 'description' => '', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], + 'AudioSummaryDuration' => ['description' => 'The total audio-only duration at the basic specification. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + 'Data' => [ + 'description' => 'The usage statistics information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The usage statistics information.', + 'type' => 'object', + 'properties' => [ + 'AudioDuration' => ['description' => 'The audio-only duration at the basic specification. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + 'Single_Audio' => ['description' => 'The single-stream relay audio duration. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + 'Single_Video' => ['description' => 'The single-stream relay video duration. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'title' => ''], + 'Timestamp' => ['description' => 'The start time of the time segment. The time is in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format in UTC+0.', 'type' => 'string', 'example' => '2022-10-10T20:00:00Z', 'title' => ''], + 'TotalDuration' => ['description' => 'The total duration. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '150', 'title' => ''], + 'V480Duration' => ['description' => 'The standard definition duration, with a video resolution of 640 × 480 or lower. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'title' => ''], + 'V720Duration' => ['description' => 'The high definition duration, with a video resolution of 1280 × 720 or lower. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '40', 'title' => ''], + 'V1080Duration' => ['description' => 'The full high definition duration, with a video resolution of 1920 × 1080 or lower. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '4B460F8B-993C-4F48-B98A-910811DEBFEB'], + 'SingleAudioSummaryDuration' => ['description' => 'The total single-stream relay audio duration. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + 'SingleVideoSummaryDuration' => ['description' => 'The total single-stream relay video duration. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'title' => ''], + 'TotalSummaryDuration' => ['description' => 'The total duration. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '150', 'title' => ''], + 'V480SummaryDuration' => ['description' => 'The total standard definition duration, with a video resolution of 640 × 480 or lower. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'title' => ''], + 'V720SummaryDuration' => ['description' => 'The total high definition duration, with a video resolution of 1280 × 720 or lower. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '40', 'title' => ''], + 'V1080SummaryDuration' => ['description' => 'The total full high definition duration, with a video resolution of 1920 × 1080 or lower. Unit: minutes.', 'type' => 'integer', 'format' => 'int64', 'example' => '10', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'SwitchTypeInvalid.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectStartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectEndTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'EpisodeConflict.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.EndTime', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"EpisodeIds\\": {\\n \\"EpisodeId\\": [\\n {\\n \\"EpisodeId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n \\n [ \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\", \\"16A96B9A-F203-4EC5-8E43-CB92E688****\\" ]\\n \\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'AddCasterProgram', - 'description' => 'Create a production studio, add input sources to the production studio, and then call this operation to add the episode list for carousel playback in the production studio. This operation supports videos and components as episodes. For information about how to create a production studio, see [CreateCaster](~~2848009~~).'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AudioSummaryDuration\\": 20,\\n \\"Data\\": [\\n {\\n \\"AudioDuration\\": 20,\\n \\"Single_Audio\\": 20,\\n \\"Single_Video\\": 30,\\n \\"Timestamp\\": \\"2022-10-10T20:00:00Z\\",\\n \\"TotalDuration\\": 150,\\n \\"V480Duration\\": 30,\\n \\"V720Duration\\": 40,\\n \\"V1080Duration\\": 10\\n }\\n ],\\n \\"RequestId\\": \\"4B460F8B-993C-4F48-B98A-910811DEBFEB\\",\\n \\"SingleAudioSummaryDuration\\": 20,\\n \\"SingleVideoSummaryDuration\\": 30,\\n \\"TotalSummaryDuration\\": 150,\\n \\"V480SummaryDuration\\": 30,\\n \\"V720SummaryDuration\\": 40,\\n \\"V1080SummaryDuration\\": 10\\n}","type":"json"}]', + 'title' => 'Query stream mixing transcoding usage data', + 'description' => '## Operation description'."\n" + .'- Maximum query span: 31 days.'."\n" + .'- Minimum query granularity: 5 minutes.'."\n" + .'- Maximum query range: data from the last 90 days.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '> N in the preceding request parameters indicates the sequence number. For example,'."\n" - .'Episode.N.EpisodeName specifies the name of episode N. For example, Episode.1.EpisodeName specifies the name of the first episode, and Episode.2.EpisodeName specifies the name of the second episode.'."\n" - ."\n\n", - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeCasterProgram' => [ - 'summary' => 'Queries the information about the episode list for carousel playback in a production studio.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + .'A single user can call this operation up to 10 times per second. If the number of calls exceeds the limit, throttling is triggered, which may affect your business. Refer to [QPS limit](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeMeterLiveBypassDuration'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeMeterLiveBypassDuration', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeMixStreamList' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -43439,114 +34305,53 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveI16NIW'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'CasterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'example.com'], ], [ - 'name' => 'EpisodeId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1872639A-F203-4EC5-8E43-CB92E68F****', - ], + 'schema' => ['description' => 'The app name.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'liveApp****'], ], [ - 'name' => 'EpisodeType', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the episode. Valid values:'."\n" - ."\n" - .'* **Resource**: a video resource'."\n" - .'* **Component**: a component'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Resource', - ], + 'schema' => ['description' => 'The stream name of the stream mixing task.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'liveStream****'], ], [ - 'name' => 'StartTime', + 'name' => 'MixStreamId', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T09:00:00Z', - ], + 'schema' => ['description' => 'The ID of the stream mixing task. If you create a stream mixing task by calling the [CreateMixStream](~~2848087~~) operation, use the MixStreamId value that is returned in the response.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => '5b2a046e-74d7-385e-d2d7-8a5b87e4****'], ], [ - 'name' => 'EndTime', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T10:00:00Z', - ], + 'schema' => ['description' => 'The start time. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => '2020-09-11T12:00:00Z'], ], [ - 'name' => 'PageNum', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '5', - ], + 'schema' => ['description' => 'The end time. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => '2020-09-20T13:00:00Z'], ], [ - 'name' => 'PageSize', + 'name' => 'PageNo', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + 'schema' => ['description' => 'The page number. The value must be greater than **0** and cannot exceed the maximum value of the Integer data type. Default value: **1**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '1'], ], [ - 'name' => 'Status', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The status of the episode. Valid values:'."\n" - ."\n" - .'* **0**: The episode is not played.'."\n" - .'* **1**: The episode is being played.'."\n" - .'* **2**: The playback of the episode is complete.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - ], + 'schema' => ['description' => 'The number of records to display on each page. Default value: **1000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '1000'], ], ], 'responses' => [ @@ -43554,1573 +34359,1302 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio.'."\n", - 'type' => 'string', - 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', - ], - 'Episodes' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Episode' => [ - 'description' => 'The list of the episodes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the episode.'."\n", - 'type' => 'object', - 'properties' => [ - 'ComponentIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'ComponentId' => [ - 'description' => 'The components.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the component.'."\n", - 'type' => 'string', - 'example' => '["1872639A-F203-4EC5-8E43-CB929282****" ]', - ], - ], - ], - ], - 'EndTime' => [ - 'description' => 'The end of the time range during which data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-06-29T10:02:00Z', - ], - 'EpisodeId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => '1872639A-F203-4EC5-8E43-CB92E68F****', - ], - 'EpisodeName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'example' => 'program_name_1', - ], - 'EpisodeType' => [ - 'description' => 'The type of the episode. Valid values:'."\n" - ."\n" - .'* **Resource**: a video resource'."\n" - .'* **Component**: a component'."\n", - 'type' => 'string', - 'example' => 'Resource', - ], - 'ResourceId' => [ - 'description' => 'The ID of the video resource.'."\n", - 'type' => 'string', - 'example' => '1872639A-F203-4EC5-8E43-CB92E837****', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which data was queried. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2016-06-29T09:00:00Z', - ], - 'Status' => [ - 'description' => 'The status of the episode.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'SwitchType' => [ - 'description' => 'The policy for switching episodes. Valid values:'."\n" - ."\n" - .'* **TimeFirst**: The episode starts when the previous episode ends and ends when the next episode starts. If no next episode exists, the episode keeps repeating until a new episode is added or the production studio stops. This value is required for live video resources.'."\n" - .'* **ContentFirst**: The episode starts and ends as scheduled.'."\n", - 'type' => 'string', - 'example' => 'TimeFirst', - ], - ], - ], + 'MixStreamList' => [ + 'description' => 'The list of stream mixing tasks.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of stream mixing tasks.', + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'The app name.', 'type' => 'string', 'title' => '', 'example' => 'liveApp****'], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'title' => '', 'example' => 'example.com'], + 'GmtCreate' => ['description' => 'The time when the stream mixing task was created. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'title' => '', 'example' => '2020-09-17T08:39:14Z'], + 'GmtModified' => ['description' => 'The time when the stream mixing task was last modified. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC.', 'type' => 'string', 'title' => '', 'example' => '2020-09-17T08:39:15Z'], + 'InputStreamNumber' => ['description' => 'The number of input sources.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '2'], + 'LayoutId' => ['description' => 'The layout ID.', 'type' => 'string', 'title' => '', 'example' => 'USERDEFINED'], + 'MixStreamTemplate' => ['description' => 'The stream mixing template.', 'type' => 'string', 'title' => '', 'example' => 'lp_ld'], + 'MixstreamId' => ['description' => 'The ID of the stream mixing task. You can use this ID to delete the task.', 'type' => 'string', 'title' => '', 'example' => 'aaf9a50f-c460-3a9b-f180-38dd8f05****'], + 'StreamName' => ['description' => 'The stream name of the stream mixing task.', 'type' => 'string', 'title' => '', 'example' => 'liveStream****'], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], - 'ProgramEffect' => [ - 'description' => 'Indicates whether carousel playback is enabled.'."\n" - ."\n" - .'* **0**: Carousel playback is disabled.'."\n" - .'* **1**: Carousel playback is enabled.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'ProgramName' => [ - 'description' => 'The name of the episode list.'."\n", - 'type' => 'string', - 'example' => 'programs_name', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'Total' => [ - 'description' => 'The total number of entries.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => 'BC1E78D3-FA8B-4457-DEE2-6093E1232254'], + 'Total' => ['description' => 'The total number of tasks.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1'], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidPageSize.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPageNum.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Status', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"Episodes\\": {\\n \\"Episode\\": [\\n {\\n \\"ComponentIds\\": {\\n \\"ComponentId\\": [\\n \\"[\\\\\\"1872639A-F203-4EC5-8E43-CB929282****\\\\\\" ]\\"\\n ]\\n },\\n \\"EndTime\\": \\"2016-06-29T10:02:00Z\\",\\n \\"EpisodeId\\": \\"1872639A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"EpisodeName\\": \\"program_name_1\\",\\n \\"EpisodeType\\": \\"Resource\\",\\n \\"ResourceId\\": \\"1872639A-F203-4EC5-8E43-CB92E837****\\",\\n \\"StartTime\\": \\"2016-06-29T09:00:00Z\\",\\n \\"Status\\": 0,\\n \\"SwitchType\\": \\"TimeFirst\\"\\n }\\n ]\\n },\\n \\"ProgramEffect\\": 1,\\n \\"ProgramName\\": \\"programs_name\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"Total\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n1872639A-F203-4EC5-8E43-CB92E68F****\\nprograms_name\\n1\\n\\n 1872639A-F203-4EC5-8E43-CB92E68F****\\n Resource\\n program_name_1\\n 1872639A-F203-4EC5-8E43-CB92E837****\\n 1872639A-F203-4EC5-8E43-CB929282****\\n 2016-06-29T09:00:00Z\\n 2016-06-29T10:02:00Z\\n 120\\n TimeFirst\\n\\n\\n 1872639A-F203-4EC5-8E43-CB92E687****\\n Component\\n 1872639A-F203-4EC5-8E43-CB625364****\\n 2016-06-29T19:02:00Z\\n 2016-06-29T19:04:00Z\\n\\n","errorExample":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ProgramId\\":\\"1872639A-F203-4EC5-8E43-CB92E68F8378\\",\\n \\"ProgramName\\": \\"programs_name\\",\\n \\"Episodes\\": [\\n {\\n \\"EpisodeId\\":\\"1872639A-F203-4EC5-8E43-CB92E68F8732\\",\\n \\"EpisodeType\\":\\"Resource\\",\\n \\"EpisodeName\\": \\"program_name_1\\",\\n \\"ResourceId\\":\\"1872639A-F203-4EC5-8E43-CB92E8374827\\",\\n \\"ComponentIds\\":[\\n \\"1872639A-F203-4EC5-8E43-CB9292827362\\"\\n ],\\n \\"StartTime\\": \\"2016-06-29T19:00:00Z\\",\\n \\"EndTime\\": \\"2016-06-29T19:02:00Z\\",\\n \\"Duration\\": 120.0,\\n \\"SwitchType\\": \\"TimeFirst\\"\\n },\\n {\\n \\"EpisodeId\\":\\"1872639A-F203-4EC5-8E43-CB92E6873726\\",\\n \\"EpisodeType\\":\\"Component\\",\\n \\"ComponentIds\\":[\\n \\"1872639A-F203-4EC5-8E43-CB6253647382\\"\\n ],\\n \\"StartTime\\": \\"2016-06-29T19:02:00Z\\",\\n \\"EndTime\\": \\"2016-06-29T19:04:00Z\\",\\n }\\n ]\\n}"}]', - 'title' => 'DescribeCasterProgram', - 'description' => 'You can call this operation to query episodes in the episode list for carousel playback. The supported types of episodes include video resource and component.'."\n" + 'title' => 'DescribeMixStreamList', + 'summary' => 'Queries stream mixing tasks.', + 'description' => 'Call the [CreateMixStream](~~2848087~~) operation to create a stream mixing task. You can then call this operation to query the list of stream mixing tasks.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 5 for each user. API calls that exceed this limit are throttled. This can affect your business. Plan your API calls accordingly.', 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'ModifyCasterProgram' => [ - 'summary' => 'Modifies the episode list for carousel playback in a production studio.', - 'methods' => [ - 'post', - 'get', + 'responseParamsDescription' => '### MixStreamInfo'."\n" + ."\n" + .'| Name | Type | Description |'."\n" + .'| ----------------- | ------- | -------------------------------------------------------------------------------------------------------- |'."\n" + .'| MixStreamId | String | The ID of the stream mixing task. |'."\n" + .'| DomainName | String | The streaming domain. |'."\n" + .'| AppName | String | The app name. |'."\n" + .'| StreamName | String | The stream name of the stream mixing task. |'."\n" + .'| LayoutId | String | The layout ID. |'."\n" + .'| InputStreamNumber | Integer | The number of input sources. |'."\n" + .'| MixStreamTemplate | String | The stream mixing template. |'."\n" + .'| GmtCreate | String | The time when the task was created. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC. |'."\n" + .'| GmtModified | String | The time when the task was last modified. The time is in the *yyyy-MM-dd*T*HH:mm:ss*Z format and in UTC. |', + 'extraInfo' => '### SDK example'."\n" + ."\n" + .'For more information, see [Sample code of stream mixing](https://help.aliyun.com/document_detail/199362.html).'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '5', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeMixStreamList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeMixStreamList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MixStreamList\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"GmtCreate\\": \\"2020-09-17T08:39:14Z\\",\\n \\"GmtModified\\": \\"2020-09-17T08:39:15Z\\",\\n \\"InputStreamNumber\\": 2,\\n \\"LayoutId\\": \\"USERDEFINED\\",\\n \\"MixStreamTemplate\\": \\"lp_ld\\",\\n \\"MixstreamId\\": \\"aaf9a50f-c460-3a9b-f180-38dd8f05****\\",\\n \\"StreamName\\": \\"liveStream****\\"\\n }\\n ],\\n \\"RequestId\\": \\"BC1E78D3-FA8B-4457-DEE2-6093E1232254\\",\\n \\"Total\\": 1\\n}","type":"json"}]', + ], + 'DescribeRTSNativeSDKFirstFrameCost' => [ + 'summary' => 'Retrieves the first frame latency composition within a specified time period.', + 'methods' => ['get', 'post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The start time. This parameter is required. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'Episode', + 'name' => 'EndTime', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The episodes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the episode.'."\n", - 'type' => 'object', - 'properties' => [ - 'ComponentId' => [ - 'description' => 'The components. Components in the production studio are listed from the bottom to the top in an array. When the production studio switches to another video resource, the components are also switched.'."\n" - ."\n" - .'* This parameter is required and available only when EpisodeType is set to **Component**.'."\n" - .'* This parameter is optional when EpisodeType is set to **Resource**. This indicates that the components are bound to and switched together with video resources.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the component. Components in the production studio are listed from the bottom to the top in an array. When the production studio switches to another video resource, the components are also switched.'."\n" - ."\n" - .'* This parameter is required and available only when EpisodeType is set to **Component**.'."\n" - .'* This parameter is optional when EpisodeType is set to **Resource**. This indicates that the components are bound to and switched together with video resources.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '["a2b8e671-2fe5-4642-a2ec-bf93888****" ]', - ], - 'required' => false, - 'example' => '["a2b8e671-2fe5-4642-a2ec-bf93888****" ]', - 'maxItems' => 10, - ], - 'EndTime' => [ - 'description' => 'The end time of the episode. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T10:04:00Z', - ], - 'EpisodeId' => [ - 'description' => 'The ID of the episode. If the episode was added by calling the [AddCasterEpisode](~~2848068~~) operation, check the value of the response parameter EpisodeId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf938887****', - ], - 'EpisodeName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'program_name_2', - ], - 'EpisodeType' => [ - 'description' => 'The type of the episode. Valid values:'."\n" - ."\n" - .'* **Resource**: a video resource'."\n" - .'* **Component**: a component'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Resource', - ], - 'ResourceId' => [ - 'description' => 'The ID of the video resource. If the video resource was added by calling the [AddCasterVideoResource](~~2848020~~) operation, check the value of the response parameter ResourceId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf938887****', - ], - 'StartTime' => [ - 'description' => 'The start time of the episode. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-06-29T09:02:00Z', - ], - 'SwitchType' => [ - 'description' => 'The policy for switching episodes. This parameter takes effect only when EpisodeType is set to **Resource**. Valid values:'."\n" - ."\n" - .'* **TimeFirst**: The episode starts when the previous episode ends and ends when the next episode starts. If no next episode exists, the episode keeps repeating until a new episode is added or the production studio stops. This value is required for live video resources.'."\n" - .'* **ContentFirst**: The episode starts and ends as scheduled.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'TimeFirst', - ], - ], - 'required' => false, - ], - 'required' => true, - 'maxItems' => 100, - ], + 'schema' => ['description' => 'The end time. This parameter is required. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'DataInterval', + 'in' => 'query', + 'schema' => ['description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. If this parameter is not specified or the specified value is not supported, the default value 300 is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], + ], + [ + 'name' => 'DomainNameList', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', + 'description' => 'By default, all domain names are queried (version 2.1.0 and later). You can also specify domain names. Separate multiple domain names with commas (,). A maximum of 500 domain names can be queried at a time.', + 'type' => 'array', + 'items' => ['description' => 'The domain name.', 'type' => 'string', 'required' => false, 'example' => 'a.example.com', 'title' => ''], + 'required' => false, + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', + 'DataInterval' => ['description' => 'The time granularity.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'EndTime' => ['description' => 'The end time. The time is in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T21:00:00Z', 'title' => ''], + 'FirstFrameCostData' => [ + 'description' => 'The average first frame latency composition for each time interval. Unit: milliseconds.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Connected' => ['description' => 'The time elapsed from successful initialization to successful connection establishment.', 'type' => 'string', 'example' => '100', 'title' => ''], + 'FinishGetStreamInfo' => ['description' => 'The time elapsed from successful connection establishment to successful subscription.', 'type' => 'string', 'example' => '89', 'title' => ''], + 'FirstFrameComplete' => ['description' => 'The time elapsed from receiving the first packet to rendering the first frame.', 'type' => 'string', 'example' => '32', 'title' => ''], + 'FirstPacket' => ['description' => 'The time elapsed from successful subscription to receiving the first packet.', 'type' => 'string', 'example' => '132', 'title' => ''], + 'Initialized' => ['description' => 'The initialization duration.', 'type' => 'string', 'example' => '1100', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time is in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'RequestId' => ['title' => '', 'description' => 'Id', 'type' => 'string', 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7'], + 'StartTime' => ['description' => 'The start time. The time is in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'SwitchTypeInvalid.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectStartTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectEndTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectEpisodeStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'EpisodeConflict.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidResource.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidEpisode.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidComponent.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'ModifyCasterProgram', - 'description' => 'You can call the [AddCasterProgram](~~2848074~~) operation to add the episode list for carousel playback in a production studio and then call this operation to modify the episode list. The supported types of episodes include video resource and component.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => 'To modify an episode, you must specify at least one episode-related parameter.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'N in request parameters indicates the sequence number. Example:'."\n" - ."\n" - .'The Episode.N.EpisodeName parameter specifies the name of episode N. The Episode.1.EpisodeName parameter specifies the name of the first episode. The Episode.2.EpisodeName parameter specifies the name of the second episode.'."\n", - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteCasterProgram' => [ - 'summary' => 'Deletes the episode list for carousel playback in a production studio.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"FirstFrameCostData\\": [\\n {\\n \\"Connected\\": \\"100\\",\\n \\"FinishGetStreamInfo\\": \\"89\\",\\n \\"FirstFrameComplete\\": \\"32\\",\\n \\"FirstPacket\\": \\"132\\",\\n \\"Initialized\\": \\"1100\\",\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\"\\n }\\n ],\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\"\\n}","type":"json"}]', + 'title' => 'Query first frame latency composition', + 'description' => 'Queries the first frame latency composition within a specified time range. QPS limit: The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation at a reasonable frequency. For more information, see QPS limit.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKFirstFrameCost'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKFirstFrameCost', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeRTSNativeSDKFirstFrameDelay' => [ + 'summary' => 'Query the average first frame delay within a specified time period', + 'methods' => ['get', 'post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'Start time. Required parameter. The date format follows ISO 8601 notation and uses UTC+0 time, in the format of yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'CasterId', + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'End time. Required parameter. The date format follows ISO 8601 notation and uses UTC+0 time, in the format of yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T21:00:00Z', 'title' => ''], + ], + [ + 'name' => 'DataInterval', 'in' => 'query', + 'schema' => ['description' => 'Time granularity. Supported values are 300, 3600, 14400, 28800, and 86400 seconds. If not specified or the specified value is not supported, the default value of 300 seconds is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], + ], + [ + 'name' => 'DomainNameList', + 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', + 'description' => 'Queries all domain names by default (version 2.1.0 and above). You can also specify domain names separated by commas (,). A maximum of 500 domain names can be queried at a time.', + 'type' => 'array', + 'items' => ['description' => 'Domain name.', 'type' => 'string', 'required' => false, 'example' => 'a.example.com', 'title' => ''], + 'required' => false, + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can specify the ID as a request parameter in the API operation that is used to add, delete, or modify episodes in the production studio.'."\n", - 'type' => 'string', - 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', + 'DataInterval' => ['description' => 'Time granularity.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'EndTime' => ['description' => 'End time. The date format follows ISO 8601 notation and uses UTC+0 time, in the format of yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2021-12-10T21:00:00Z', 'title' => ''], + 'FrameDelayData' => [ + 'description' => 'Average first frame delay for each time interval, in milliseconds.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'FrameDelay' => ['description' => 'Average first frame delay for this time period.', 'type' => 'string', 'example' => '400', 'title' => ''], + 'TimeStamp' => ['description' => 'Start time of the time slice. The date format follows ISO 8601 notation and uses UTC+0 time, in the format of yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'RequestId' => ['title' => '', 'description' => 'Id', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8'], + 'StartTime' => ['description' => 'Start time. The date format follows ISO 8601 notation and uses UTC+0 time, in the format of yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n a2b8e671-2fe5-4642-a2ec-bf93880e****\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteCasterProgram', - 'description' => 'You can call the [CreateCaster](~~2848009~~) operation to create a production studio and then call this operation to delete the episode list for carousel playback in the production studio.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 4 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddPlaylistItems' => [ - 'summary' => 'Adds episodes to an episode list.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"FrameDelayData\\": [\\n {\\n \\"FrameDelay\\": \\"400\\",\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\"\\n }\\n ],\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\"\\n}","type":"json"}]', + 'title' => 'Query First Frame Delay', + 'description' => 'This API is used to query the first frame delay within a specified time range.'."\n" + .'QPS Limit'."\n" + .'The single-user QPS limit for this API is 10 calls per second. If the limit is exceeded, API calls will be throttled, which may affect your business. Please call this API appropriately. For more information, see QPS limits.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '90', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKFirstFrameDelay'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKFirstFrameDelay', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeRTSNativeSDKPlayFailStatus' => [ + 'summary' => 'Queries the reasons for playback failures (in the form of status codes) within a specified time period.', + 'methods' => ['get', 'post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'CasterId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the production studio.'."\n" - ."\n" - .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" - .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" - ."\n" - .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n" - ."\n" - .'The production studio must use the following configurations:'."\n" - ."\n" - .'* **NormType**: 3****. You need to call the **CreateCaster** operation to create a production studio for lightweight carousel playback in advance.'."\n" - .'* **CasterTemplate**: lp_noTranscode.'."\n" - .'* **channelEnable**: 0.'."\n" - .'* **programEffect**: 1.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '0e94d1f4-1a65-445c-9dcf-de8b3b8d****', - ], + 'schema' => ['description' => 'The start time. This parameter is required. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'ProgramItems', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The episodes that you want to add to the production studio. The value is a JSON string. For more information, see the **InputProgramItem** section of this topic.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '[{"ItemName":"item1","ResourceType":"vod","ResourceValue":"5f8809f2-3352-4d1f-a8f7-86f9429f****"}, {"ItemName": "item2","ResourceType": "vod","ResourceValue": "e7411c0b-dd98-4c61-a545-f8bfba6c****"}]', - ], + 'schema' => ['description' => 'The end time. This parameter is required. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'ProgramId', + 'name' => 'DataInterval', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If you do not specify this parameter, an episode list is created by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. If this parameter is not specified or the specified value is not supported, the default value 300 is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], ], [ - 'name' => 'ProgramConfig', + 'name' => 'DomainNameList', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The configurations of the episode list. If the episode list is added to the production studio for the first time, specify this parameter to pass in the initial configurations. For more information, see the **ProgramConfig** section of this topic.'."\n", - 'type' => 'string', + 'description' => 'By default, all domain names are queried (version 2.1.0 and later). You can also specify domain names. Separate multiple domain names with commas (,). A maximum of 500 domain names can be queried at a time.', + 'type' => 'array', + 'items' => ['description' => 'The domain name.', 'type' => 'string', 'required' => false, 'example' => 'a.example.com', 'title' => ''], 'required' => false, - 'example' => '[{"RepeatNumber":"0","ProgramName":"my program"}]', + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'Items' => [ - 'description' => 'The information about the episodes.'."\n", - 'type' => 'object', - 'properties' => [ - 'FailedItems' => [ - 'description' => 'The episodes that failed to be added.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ItemId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', - ], - 'ItemName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'example' => 'item1', - ], - ], - 'description' => '', - ], - ], - 'SuccessItems' => [ - 'description' => 'The episodes that were added.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ItemId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', - ], - 'ItemName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'example' => 'item2', - ], - ], - 'description' => '', - ], + 'DataInterval' => ['description' => 'The time granularity.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'EndTime' => ['description' => 'The end time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T21:00:00Z', 'title' => ''], + 'PlayFailStatus' => [ + 'description' => 'The total number of error status codes for each time interval.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TimeStamp' => ['description' => 'The beginning of the time interval. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], + 'V20001' => ['description' => 'DNS resolution failure.', 'type' => 'string', 'example' => '1', 'title' => ''], + 'V20002' => ['description' => 'Authentication failure.', 'type' => 'string', 'example' => '2', 'title' => ''], + 'V20011' => ['description' => 'Connection signaling timeout.', 'type' => 'string', 'example' => '3', 'title' => ''], + 'V20012' => ['description' => 'Subscription signaling error.', 'type' => 'string', 'example' => '4', 'title' => ''], + 'V20013' => ['description' => 'Subscribed stream does not exist.', 'type' => 'string', 'example' => '5', 'title' => ''], + 'V20052' => ['description' => 'Media packet receiving timeout.', 'type' => 'string', 'example' => '6', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], - 'ProgramId' => [ - 'description' => 'The ID of the episode list. You can use the ID as a request parameter in the API operation that is used to remove episodes, query episodes, edit an episode list, delete an episode list, query the information about an episode list, start playing an episode list, or stop playing an episode list.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', - ], + 'RequestId' => ['title' => '', 'description' => 'Id', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8'], + 'StartTime' => ['description' => 'The start time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z'."\n", 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'PlayListIsEmpty', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissInputParams', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidProgramId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], ], 403 => [ - [ - 'errorCode' => 'UserQuotaExceed', - 'errorMessage' => 'Quota exceeded: %s.', - ], - ], - [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Items\\": {\\n \\"FailedItems\\": [\\n {\\n \\"ItemId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ItemName\\": \\"item1\\"\\n }\\n ],\\n \\"SuccessItems\\": [\\n {\\n \\"ItemId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ItemName\\": \\"item2\\"\\n }\\n ]\\n },\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0d-f228-4a64-af62-20e91b96****\\n \\n \\n item2\\n c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\n \\n \\n item2\\n c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\n \\n \\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'AddPlaylistItems', - 'description' => 'Create a production studio, add a layout and components to the production studio, and then call this operation to add episodes. If no episode list exists in the production studio, this operation creates an episode list for the production studio. For more information about how to create a production studio, see [CreateCaster](~~2848009~~).'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '### InputProgramItem'."\n" - ."\n" - .'|Field|Example|Type|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|ItemName|item1|String|The name of the episode.|'."\n" - .'|ResourceType|vod|String|The resource type. Valid values:**vod**: an ApsaraVideo VOD resource **url**: a video resource from a third party|'."\n" - .'|ResourceValue|5f8809f2-3352-4d1f-a8f7-86f9429f\\*\\*\\*\\*|String|If ResourceType is set to vod, the value of ResourceValue is the ID of the media asset.If ResourceType is set to url, the value of ResourceValue is the URL of the third-party video.|'."\n" - ."\n" - .'### ProgramConfig'."\n" - ."\n" - .'|Field|Example|Type|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|RepeatNumber|0|Integer|The number of playbacks after the first playback is complete. Valid values:**0** (default): specifies that the episode list is played only once.**\\-1**: specifies that the episode list is played in loop mode.Positive integer: specifies the number of times the episode list repeats after the first playback is complete.|'."\n" - .'|ProgramName|myprogram|String|The name of the episode list.|', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeletePlaylistItems' => [ - 'summary' => 'Removes episodes from an episode list.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"PlayFailStatus\\": [\\n {\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\",\\n \\"V20001\\": \\"1\\",\\n \\"V20002\\": \\"2\\",\\n \\"V20011\\": \\"3\\",\\n \\"V20012\\": \\"4\\",\\n \\"V20013\\": \\"5\\",\\n \\"V20052\\": \\"6\\"\\n }\\n ],\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\\\n\\"\\n}","type":"json"}]', + 'title' => 'Query playback failure reasons', + 'description' => 'Queries the reasons for playback failures (in the form of status codes) within a specified time range. QPS limit: The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation at an appropriate frequency. For more information, refer to QPS limits.', + 'changeSet' => [ + ['createdAt' => '2022-10-27T02:34:18.000Z', 'description' => 'OpenAPI offline'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKPlayFailStatus'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKPlayFailStatus', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeRTSNativeSDKPlayTime' => [ + 'summary' => 'Retrieves the playback duration within a specified time range.', + 'methods' => ['get', 'post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The start time. This parameter is required. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'ProgramId', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If the episode list was created by calling the [AddPlaylistItems](~~2848078~~) operation, check the value of the response parameter ProgramId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The end time. This parameter is required. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'ProgramItemIds', + 'name' => 'DataInterval', 'in' => 'query', + 'schema' => ['description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. If this parameter is not specified or the specified value is not supported, the default value 300 is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], + ], + [ + 'name' => 'DomainNameList', + 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The IDs of the episodes that you want to remove.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '["c09f3d63-eacf-4fbf-bd48-a07a6ba7****","c10f3d63-eacf-4fbf-bd48-a07a6ba7****"]', + 'description' => 'The list of domain names to query. By default, all domain names are queried (version 2.1.0 and later). You can also specify domain names. Separate multiple domain names with commas (,). A maximum of 500 domain names can be queried at a time.', + 'type' => 'array', + 'items' => ['description' => 'The domain name.', 'type' => 'string', 'required' => false, 'example' => 'a.example.com', 'title' => ''], + 'required' => false, + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'ProgramId' => [ - 'description' => 'The ID of the episode list. You can use the ID as a request parameter in the API operation that is used to query the episodes in the episode list, edit the episode list, delete the episode list, query the information about the episode list, or stop the episode list.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', + 'DataInterval' => ['description' => 'The time granularity.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'EndTime' => ['description' => 'The end time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T21:00:00Z', 'title' => ''], + 'PlayTimeData' => [ + 'description' => 'The average playback duration and average stall duration for each time interval. Unit: milliseconds.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PlayTime' => ['description' => 'The average playback duration during the time interval. Unit: milliseconds.', 'type' => 'string', 'example' => '1000', 'title' => ''], + 'StallTime' => ['description' => 'The average stall duration during the time interval. Unit: milliseconds.', 'type' => 'string', 'example' => '100', 'title' => ''], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'RequestId' => ['title' => '', 'description' => 'Id', 'type' => 'string', 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1'], + 'StartTime' => ['description' => 'The start time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidProgramId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectPlaylistStatus.Inuse', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'PlayListIsEmpty', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'PlayListNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n 5c6a2a0d-f228-4a64-af62-20e91b96****\\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'DeletePlaylistItems', - 'description' => 'Before you call this operation to remove an episode, make sure that you have called the [AddPlaylistItems](~~2848078~~) operation to add the episode.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'ListPlaylistItems' => [ - 'summary' => 'Queries the information about episodes in an episode list.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"PlayTimeData\\": [\\n {\\n \\"PlayTime\\": \\"1000\\",\\n \\"StallTime\\": \\"100\\",\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\"\\n }\\n ],\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\"\\n}","type":"json"}]', + 'title' => 'Query playback duration', + 'description' => 'Queries the playback duration within a specified time range. QPS limit: The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Use this operation appropriately. For more information, refer to QPS limits.', + 'changeSet' => [ + ['createdAt' => '2024-02-20T03:12:12.000Z', 'description' => 'Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKPlayTime'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKPlayTime', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeRTSNativeSDKVvData' => [ + 'summary' => 'Retrieves the playback count within a specified time period, including the total count and the successful count.', + 'methods' => ['get', 'post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The start time. This parameter is required. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'ProgramId', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If the episode list was created by calling the [AddPlaylistItems](~~2848078~~) operation, check the value of the response parameter ProgramId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The end time. This parameter is required. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.', 'type' => 'string', 'required' => false, 'example' => '2021-12-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'ProgramItemIds', + 'name' => 'DataInterval', + 'in' => 'query', + 'schema' => ['description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. If this parameter is not specified or the specified value is not supported, the default value 300 is used.', 'type' => 'string', 'required' => false, 'example' => '300', 'title' => ''], + ], + [ + 'name' => 'DomainNameList', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The IDs of the episodes that you want to query. Separate episode IDs with commas (,). If you set this parameter, only the information about the specified episodes is returned. If you do not set this parameter, the information about all episodes in the episode list is returned.'."\n", - 'type' => 'string', + 'description' => 'The array.', + 'type' => 'array', + 'items' => ['description' => 'By default, all domain names are queried (version 2.1.0 and later). You can also specify domain names. Separate multiple domain names with commas (,). A maximum of 500 domain names can be queried at a time.', 'type' => 'string', 'required' => false, 'example' => 'a.example.com', 'title' => ''], 'required' => false, - 'example' => 'c10f3d63-eacf-4fbf-bd48-a07a6ba7****,c09f3d63-eacf-4fbf-bd48-a07a6ba7****', + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'Total' => [ - 'description' => 'The total number of episodes.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9****', - ], - 'ProgramItems' => [ - 'description' => 'The episodes.'."\n", + 'DataInterval' => ['description' => 'The time granularity.', 'type' => 'string', 'example' => '300', 'title' => ''], + 'EndTime' => ['description' => 'The end time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T21:00:00Z', 'title' => ''], + 'RequestId' => ['title' => '', 'description' => 'Id', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8'], + 'StartTime' => ['description' => 'The start time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], + 'VvData' => [ + 'description' => 'The total playback count and total successful playback count for each time interval. Unit: count.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'Index' => [ - 'description' => 'The sequence number of the episode in the query result.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'ResourceType' => [ - 'description' => 'The resource type.'."\n", - 'type' => 'string', - 'example' => 'vod', - ], - 'ProgramItemId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'c10f3d63-eacf-4fbf-bd48-a07a6ba7****', - ], - 'ProgramId' => [ - 'description' => 'The ID of the episode list. You can use the ID as a request parameter in the API operation that is used to edit the episode list, delete the episode list, query the information about the episode list, start the episode list, or stop the episode list.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'ProgramItemName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'example' => 'playlistItem1', - ], - 'ResourceValue' => [ - 'description' => 'The resource ID.'."\n", - 'type' => 'string', - 'example' => 'asdfasdf8as9df8sa9df89****', - ], + 'TimeStamp' => ['description' => 'The start time of the time interval. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2021-12-10T20:00:00Z', 'title' => ''], + 'VvSuccess' => ['description' => 'The total number of successful playbacks within the specified time period.', 'type' => 'string', 'example' => '99', 'title' => ''], + 'VvTotal' => ['description' => 'The total number of playbacks within the specified time period.', 'type' => 'string', 'example' => '100', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidProgramId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'Meter.ParamError', 'errorMessage' => 'Param Error:%s,Please Check Again.', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'PlayListNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'Meter.AuthError', 'errorMessage' => 'Authentication Failed,Please Try Again.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'Meter.ServerInternalError', 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'description' => ''], + ['errorCode' => 'Meter.DataSourceQueryError', 'errorMessage' => 'Data Source Error:%s,Please Try Again.', 'description' => ''], + ], + 502 => [ + ['errorCode' => 'Meter.ReadyTsError', 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Total\\": 1,\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9****\\",\\n \\"ProgramItems\\": [\\n {\\n \\"Index\\": 1,\\n \\"ResourceType\\": \\"vod\\",\\n \\"ProgramItemId\\": \\"c10f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"ProgramItemName\\": \\"playlistItem1\\",\\n \\"ResourceValue\\": \\"asdfasdf8as9df8sa9df89****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n\\n 5c6a2a0d-f228-4a64-af62-20e91b9****\\n \\n playlistItem1\\n asdfasdf8as9df8sa9df89****\\n c10f3d63-eacf-4fbf-bd48-a07a6ba7****\\n 1\\n vod\\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n \\n 1\\n","errorExample":""}]', - 'title' => 'ListPlaylistItems', - 'description' => 'You can call the [AddPlaylistItems](~~2848078~~) operation to add episodes to an episode list and then call this operation to query the episodes in the episode list'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'EditPlaylist' => [ - 'summary' => 'Edits an episode list.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\",\\n \\"VvData\\": [\\n {\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\",\\n \\"VvSuccess\\": \\"99\\",\\n \\"VvTotal\\": \\"100\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'Query playback count', + 'description' => 'QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately. For more information, refer to QPS limit.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKVvData'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKVvData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'DescribeRtcCloudRecordingFiles' => [ + 'summary' => 'Queries the cloud recording files and task information for RTC.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '269336', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'ProgramId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If the episode list was created by calling the [AddPlaylistItems](~~2848078~~) operation, check the value of the response parameter ProgramId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - ], - [ - 'name' => 'ProgramItems', - 'in' => 'query', - 'schema' => [ - 'description' => 'The episodes that you want to add to the production studio. The value is a JSON string. For more information, see the **InputProgramItem** section of this topic.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '[{"ItemName":"item1","ResourceType":"vod","ResourceValue":"5f8809f2-3352-4d1f-a8f7-86f9429f****"}, {"ItemName": "item2","ResourceType": "vod","ResourceValue": "e7411c0b-dd98-4c61-a545-f8bfba6c****"}]', - ], - ], - [ - 'name' => 'ProgramConfig', + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The configurations of the episode list. For more information, see the **ProgramConfig** section of this topic.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '[{"RepeatNumber":"0","ProgramName":"my program"}]', - ], + 'schema' => ['description' => 'The task ID. This ID is returned by StartRtcCloudRecording. Only tasks created within the last 3 days can be queried.', 'type' => 'string', 'required' => true, 'example' => '******73-8501-****-8ac1-72295a******'."\n", 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio. You can use the ID as a request parameter in the API operation that is used to configure callbacks or add a virtual studio layout.'."\n", - 'type' => 'string', - 'example' => '0e94d1f4-1a65-445c-9dcf-de8b3b8d****', - ], - 'Items' => [ - 'description' => 'The information about the episodes.'."\n", + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '******58-5876-****-83CA-B56278******'."\n"], + 'TaskInfo' => [ + 'description' => 'The task information.', 'type' => 'object', 'properties' => [ - 'FailedItems' => [ - 'description' => 'The episodes that failed to be added.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the episode that failed to be added.'."\n", - 'type' => 'object', - 'properties' => [ - 'ItemId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', - ], - 'ItemName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'example' => 'item2', - ], + 'TaskId' => ['description' => 'The task ID passed in the request.', 'type' => 'string', 'example' => '******73-8501-****-8ac1-72295a******'."\n", 'title' => ''], + 'Status' => ['description' => 'The task status. Valid values:'."\n" + .'- RUNNING'."\n" + .'- RECOVERING'."\n" + .'- STOPPING'."\n" + .'- STOPPED.', 'type' => 'string', 'example' => 'RUNNING', 'title' => ''], + 'RecordFileList' => [ + 'description' => 'The list of recording files.', + 'type' => 'object', + 'properties' => [ + 'Mp3FileList' => [ + 'description' => 'The array of MP3 recording file names.', + 'type' => 'array', + 'items' => ['description' => 'The MP3 recording file name.', 'type' => 'string', 'example' => '******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.mp3', 'title' => ''], + 'title' => '', + 'example' => '', ], - ], - ], - 'SuccessItems' => [ - 'description' => 'The episodes that were added.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the episode that was added.'."\n", - 'type' => 'object', - 'properties' => [ - 'ItemId' => [ - 'description' => 'The ID of the episode.'."\n", - 'type' => 'string', - 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', - ], - 'ItemName' => [ - 'description' => 'The name of the episode.'."\n", - 'type' => 'string', - 'example' => 'item1', + 'Mp4FileList' => [ + 'description' => 'The array of MP4 recording file names.', + 'type' => 'array', + 'items' => ['description' => 'The MP4 recording file name.', 'type' => 'string', 'example' => '******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.mp4', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'HlsFileList' => [ + 'description' => 'The array of HLS recording file names.', + 'type' => 'array', + 'items' => ['description' => 'The HLS recording file name.', 'type' => 'string', 'example' => '******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.m3u8', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'VodMediaList' => [ + 'description' => 'The array of VOD media resources. When recording to VOD, this is the collection of recording files for each subscribed stream, where each item corresponds to a subscribed stream.', + 'type' => 'array', + 'items' => [ + 'description' => 'The media resource information for a subscribed stream.', + 'type' => 'object', + 'properties' => [ + 'Stream' => ['description' => 'The subscribed stream.'."\n" + .' - For stream mixing recording, the value is always Mix.'."\n" + .' - For single-stream recording, the value is Single::{UserId}::{Suffix}.'."\n" + .' - UserId is the UserId corresponding to this stream.'."\n" + .' - Suffix depends on the StreamType and SourceType specified during subscription.'."\n" + .' - When StreamType is 0: if SourceType is 0, Suffix is AV::C. If SourceType is 1, Suffix is AV::S.'."\n" + .' - When StreamType is 1: Suffix can only be A.'."\n" + .' - When StreamType is 2 (not supported for single-stream recording): if SourceType is 0, Suffix is V::C. If SourceType is 1, Suffix is V::S.', 'type' => 'string', 'example' => 'Single::UserA::AV::C', 'title' => ''], + 'MediaIds' => [ + 'description' => 'The array of media resource IDs generated during recording.', + 'type' => 'array', + 'items' => ['description' => 'The media resource ID generated during recording.', 'type' => 'string', 'example' => '****bbd9f59c71ee80065017f0f8****', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'MergedIds' => [ + 'description' => 'The array of automatically merged media resource IDs generated after recording ends.', + 'type' => 'array', + 'items' => ['description' => 'The automatically merged media resource ID generated after recording ends.', 'type' => 'string', 'example' => '****d2f9f59c71ee8006501790g7****', 'title' => ''], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], - ], - 'ProgramId' => [ - 'description' => 'The ID of the episode list. You can use the ID as a request parameter in the API operation that is used to delete the episode list, query the information about the episode list, start the episode list, or stop the episode list.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidProgramId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'PlayListIsEmpty', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissInputParams', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectPlaylistStatus.Inuse', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'NotFound.Task', 'errorMessage' => '%s, please check the TaskId.', 'description' => 'The parameter TaskId does not exist.'], + ['errorCode' => 'InvalidParameter.TaskId', 'errorMessage' => '%s, please check the TaskId.', 'description' => 'The specified task must be in the running or recovering state.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], - 404 => [ - [ - 'errorCode' => 'PlayListNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'InvalidParameter.UserId', 'errorMessage' => '%s, please check the UserId.', 'description' => 'UserId is invalid, please check.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******58-5876-****-83CA-B56278******\\\\n\\",\\n \\"TaskInfo\\": {\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\\\n\\",\\n \\"Status\\": \\"RUNNING\\",\\n \\"RecordFileList\\": {\\n \\"Mp3FileList\\": [\\n \\"******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.mp3\\"\\n ],\\n \\"Mp4FileList\\": [\\n \\"******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.mp4\\"\\n ],\\n \\"HlsFileList\\": [\\n \\"******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.m3u8\\"\\n ],\\n \\"VodMediaList\\": [\\n {\\n \\"Stream\\": \\"Single::UserA::AV::C\\",\\n \\"MediaIds\\": [\\n \\"****bbd9f59c71ee80065017f0f8****\\"\\n ],\\n \\"MergedIds\\": [\\n \\"****d2f9f59c71ee8006501790g7****\\"\\n ]\\n }\\n ]\\n }\\n }\\n}","type":"json"}]', + 'title' => 'Query RTC cloud recording files and task status', + 'description' => '## QPS limit'."\n" + .'The single-user QPS limit for this operation is 50 calls per second. If this limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRtcCloudRecordingFiles'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRtcCloudRecordingFiles', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CasterId\\": \\"0e94d1f4-1a65-445c-9dcf-de8b3b8d****\\",\\n \\"Items\\": {\\n \\"FailedItems\\": [\\n {\\n \\"ItemId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ItemName\\": \\"item2\\"\\n }\\n ],\\n \\"SuccessItems\\": [\\n {\\n \\"ItemId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ItemName\\": \\"item1\\"\\n }\\n ]\\n },\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n 5c6a2a0d-f228-4a64-af62-20e91b96****\\n \\n \\n item2\\n c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\n \\n \\n item1\\n c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\n \\n \\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n 0e94d1f4-1a65-445c-9dcf-de8b3b8d****\\n","errorExample":""}]', - 'title' => 'EditPlaylist', - 'description' => 'You can call this operation to update all configurations of episodes in an episode list or replace the episodes.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '### InputProgramItem'."\n" - ."\n" - .'|Field|Example|Type|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|ItemName|item1|String|The name of the episode.|'."\n" - .'|ResourceType|vod|String|The resource type. Set the value to **vod**. Only video-on-demand (VOD) resources are supported.|'."\n" - .'|ResourceValue|5f8809f2-3352-4d1f-a8f7-86f9429f\\*\\*\\*\\*|String|The resource ID.|'."\n" - ."\n" - .'### ProgramConfig'."\n" - ."\n" - .'|Field|Example|Type|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|RepeatNumber|0|Integer|The number of playbacks after the first playback is complete. Valid values:**0** (default): specifies that the episode list is played only once.**\\-1**: specifies that the episode list is played in loop mode.Positive integer: specifies the number of times the episode list repeats after the first playback is complete.|'."\n" - .'|ProgramName|myprogram|String|The name of the episode list.|', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', ], - 'DeletePlaylist' => [ - 'summary' => 'Deletes an episode list.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeRtcCloudTranscode' => [ + 'summary' => 'Queries a cloud transcoding task.', + 'path' => '', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID. The value can contain uppercase and lowercase letters, digits, underscores, and hyphens (-), with a maximum of 64 characters.', 'type' => 'string', 'required' => true, 'example' => '********-7074-****-9ef5-85c19a4*****', 'title' => ''], ], [ - 'name' => 'ProgramId', + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If the episode list was created by calling the [AddPlaylistItems](~~2848078~~) operation, check the value of the response parameter ProgramId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The cloud transcoding task ID. The value can contain uppercase and lowercase letters, digits, underscores, and hyphens (-), with a maximum of 64 characters.', 'type' => 'string', 'required' => true, 'example' => '******73-8501-****-8ac1-72295a******', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'The response body.', 'type' => 'object', 'properties' => [ - 'ProgramId' => [ - 'description' => 'The ID of the episode list. You can use the ID as a request parameter in the API operation that is used to query the information about the episode list, start the episode list, or stop the episode list.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******'], + 'TaskInfo' => [ + 'description' => 'The details of the cloud transcoding task.', + 'type' => 'object', + 'properties' => [ + 'AppId' => ['description' => 'The application ID.', 'type' => 'string', 'example' => '********-7074-****-9ef5-85c19a4*****', 'title' => ''], + 'ChannelId' => ['description' => 'The channel ID.', 'type' => 'string', 'example' => 'myChannel', 'title' => ''], + 'TaskId' => ['description' => 'The cloud transcoding task ID.', 'type' => 'string', 'example' => '******73-8501-****-8ac1-72295a******', 'title' => ''], + 'Status' => ['description' => 'The status of the cloud transcoding task. Valid values:'."\n" + ."\n" + .'- STARTING'."\n" + .'- RUNNING'."\n" + .'- RECOVERING'."\n" + .'- STOPPED.', 'type' => 'string', 'example' => 'RUNNING', 'title' => ''], + 'InputParam' => [ + 'description' => 'The subscription input parameters.', + 'type' => 'object', + 'properties' => [ + 'SingleSubUserParam' => [ + 'description' => 'The single-stream subscription input parameters.', + 'type' => 'object', + 'properties' => [ + 'UserId' => ['description' => 'The user ID of the subscribed user.', 'type' => 'string', 'example' => 'userA', 'title' => ''], + 'StreamType' => ['description' => 'The media type of the subscribed user.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + 'SourceType' => ['description' => 'The video input stream type of the subscription.', 'type' => 'integer', 'format' => 'int64', 'example' => '0', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'OutputParams' => [ + 'description' => 'The transcoding output parameters.', + 'type' => 'array', + 'items' => [ + 'description' => 'The transcoding output parameter.', + 'type' => 'object', + 'properties' => [ + 'ChannelId' => ['description' => 'The channel ID to which the transcoded stream is relayed.', 'type' => 'string', 'example' => 'myChannel', 'title' => ''], + 'UserId' => ['description' => 'The user ID in the channel to which the transcoded stream is relayed.', 'type' => 'string', 'example' => 'userA_360p', 'title' => ''], + 'UserToken' => ['description' => 'The user token required to relay the transcoded stream to the channel.', 'type' => 'string', 'example' => 'eyJhcHBpZCI********', 'title' => ''], + 'TranscodeTemplate' => ['description' => 'The transcoding template name.', 'type' => 'string', 'example' => 'lhd', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'MaxIdleTime' => ['description' => 'The idle timeout period. If the task remains idle for longer than the MaxIdleTime value, the task is automatically stopped. Unit: seconds. Valid values: 10 to 14400 (maximum of 4 hours). Default value: 300.', 'type' => 'integer', 'format' => 'int64', 'example' => '600', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectPlaylistStatus.Inuse', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidProgramId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidParameter%s', 'errorMessage' => '%s.', 'description' => ''], + ['errorCode' => 'MissingParameter%s', 'errorMessage' => '%s.', 'description' => ''], + ['errorCode' => 'TooManyRequests', 'errorMessage' => '%s.', 'description' => ''], ], - 404 => [ - [ - 'errorCode' => 'PlayListNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'Forbidden', 'errorMessage' => '%s.', 'description' => ''], + ], + [ + ['errorCode' => 'NotFound%s', 'errorMessage' => '%s.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n 5c6a2a0d-f228-4a64-af62-20e91b96****\\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'DeletePlaylist', - 'description' => 'Before you call this operation to delete an episode list, make sure that you have called the [AddPlaylistItems](~~2848078~~) operation to create the episode list.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'ListPlaylist' => [ - 'summary' => 'Queries the information about one or more episode lists.', - 'methods' => [ - 'post', - 'get', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'Query a cloud transcoding task', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeRtcCloudTranscode', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TaskInfo\\": {\\n \\"AppId\\": \\"********-7074-****-9ef5-85c19a4*****\\",\\n \\"ChannelId\\": \\"myChannel\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\",\\n \\"Status\\": \\"RUNNING\\",\\n \\"InputParam\\": {\\n \\"SingleSubUserParam\\": {\\n \\"UserId\\": \\"userA\\",\\n \\"StreamType\\": 0,\\n \\"SourceType\\": 0\\n }\\n },\\n \\"OutputParams\\": [\\n {\\n \\"ChannelId\\": \\"myChannel\\",\\n \\"UserId\\": \\"userA_360p\\",\\n \\"UserToken\\": \\"eyJhcHBpZCI********\\",\\n \\"TranscodeTemplate\\": \\"lhd\\"\\n }\\n ],\\n \\"MaxIdleTime\\": 600\\n }\\n}","type":"json"}]', + ], + 'DescribeRtcMPUEventSub' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '219226', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', + 'schema' => ['description' => 'The ID of your application.'."\n" + ."\n" + .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores, and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + 'SubInfo' => [ + 'description' => 'The information about the subscription.', + 'type' => 'object', + 'properties' => [ + 'SubId' => ['description' => 'The ID of the subscription.', 'type' => 'string', 'example' => 'Sub-******9799B2C4500******', 'title' => ''], + 'AppId' => ['description' => 'The application ID. You can specify only one application ID.', 'type' => 'string', 'example' => 'yourAppId', 'title' => ''], + 'ChannelIds' => ['description' => 'The ID of the channel to which mixed-stream relay event callbacks are sent. Multiple channel IDs are separated by commas (,). If this parameter is not returned, mixed-stream relay event callbacks are sent to all channels.', 'type' => 'string', 'example' => 'yourCh1,yourCh2', 'title' => ''], + 'CreateTime' => ['description' => 'The time when the event callback was fired. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ss format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2024-04-09 18:00:00Z', 'title' => ''], + 'CallbackUrl' => ['description' => 'The callback URL.', 'type' => 'string', 'example' => 'http://testcallback***.com/callback', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], + ], + ], + 'title' => 'DescribeRtcMPUEventSub', + 'summary' => 'Queries information about a subscription to mixed-stream relay events.', + 'description' => '### Usage notes'."\n" + ."\n" + .'- You can call this operation to query information about a subscription to mixed-stream relay events.'."\n" + ."\n" + .'- Before you call this operation, make sure that you have called the CreateRtcMPUEventSub operation to create the subscription.'."\n" + ."\n" + .'### QPS limit'."\n" + ."\n" + .'- You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2024-07-04T06:14:36.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRtcMPUEventSub'], + ], + ], + 'ramActions' => [ [ - 'name' => 'ProgramId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If you set this parameter, only the information about the specified episode lists is returned. If you do not set this parameter, the information about all episode lists that belong to the account is returned. If the episode list was created by calling the [AddPlaylistItems](~~2848078~~) operation, check the value of the response parameter ProgramId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRtcMPUEventSub', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"SubInfo\\": {\\n \\"SubId\\": \\"Sub-******9799B2C4500******\\",\\n \\"AppId\\": \\"yourAppId\\",\\n \\"ChannelIds\\": \\"yourCh1,yourCh2\\",\\n \\"CreateTime\\": \\"2024-04-09 18:00:00Z\\",\\n \\"CallbackUrl\\": \\"http://testcallback***.com/callback\\"\\n }\\n}","type":"json"}]', + ], + 'DescribeShowList' => [ + 'summary' => 'Queries a playlist.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Page', + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '115259', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the LIVE console, choose **LIVE Console** > **Production Studio** > **Cloud Production Studio** to find the name of the production studio.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'ProgramList' => [ - 'description' => 'The episode lists.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'CasterId' => [ - 'description' => 'The ID of the production studio to which the episode list belongs. You can use the ID as a request parameter in the API operation that is used to add a layout to the virtual studio, delete a layout in the virtual studio, modify a layout of the virtual studio, or query layouts of the virtual studio.'."\n", - 'type' => 'string', - 'example' => 'casdfasdfasfdasdflkasjdflaj****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'ProgramId' => [ - 'description' => 'The ID of the episode list.'."\n", - 'type' => 'string', - 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', - ], - 'ProgramName' => [ - 'description' => 'The name of the episode list.'."\n", - 'type' => 'string', - 'example' => 'playlist1', - ], - 'RepeatNumber' => [ - 'description' => 'The number of playbacks after the first playback is complete. Valid values:'."\n" - ."\n" - .'* **0** (default): specifies that the episode list is played only once.'."\n" - .'* **-1**: specifies that the episode list is played in loop mode.'."\n" - .'* Positive integer: specifies the number of times the episode list repeats after the first playback is complete.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'Status' => [ - 'description' => 'The status of the episode list. Valid values:'."\n" - ."\n" - .'* **0**: stopped'."\n" - .'* **1**: running'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'ShowList' => ['description' => 'The details of the playlist. `Show` contains the details of a show in the playlist.', 'type' => 'string', 'example' => 'ShowList[Show1, Show2, Show3...]', 'title' => ''], + 'ShowListInfo' => [ + 'description' => 'The playlist.', + 'type' => 'object', + 'properties' => [ + 'CurrentShowId' => ['description' => 'The ID of the show that is being played.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'Background' => ['description' => 'The background of the playlist.', 'type' => 'string', 'example' => '{\\"MaterialId\\":\\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\"resourceType\\":\\"VOD\\"}', 'title' => ''], + 'HighPriorityShowId' => ['description' => 'The highest-priority show.'."\n" + ."\n" + .'> You can configure this parameter only before the playlist starts.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'HighPriorityShowStartTime' => ['description' => 'The time when the highest-priority show is played. The format is yyyy-MM-dd\'T\'HH:mm:ss.'."\n" + ."\n" + .'> You can configure this parameter only before the playlist starts. After the configuration is complete, the system switches to the highest-priority show at the specified time.', 'type' => 'string', 'example' => '2021-11-23T12:30:00', 'title' => ''], + 'ShowList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Show' => [ + 'description' => 'The list of shows in the playlist.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the show.', + 'type' => 'object', + 'properties' => [ + 'Duration' => ['description' => 'The duration of a single show, in seconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], + 'RepeatTimes' => ['description' => 'The number of times a single show is looped.'."\n" + ."\n" + .'For example, a value of 0 indicates that the show is played once. A value of 1 indicates that the show is played twice.', 'type' => 'integer', 'format' => 'int32', 'example' => '5', 'title' => ''], + 'ResourceInfo' => [ + 'description' => 'The resource information.', + 'type' => 'object', + 'properties' => [ + 'LiveInputType' => ['description' => 'The custom type identifier.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'ResourceId' => ['description' => 'The ID of the video-on-demand (VOD) file.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'ResourceType' => ['description' => 'The type of the resource material.', 'type' => 'string', 'example' => 'vod', 'title' => ''], + 'ResourceUrl' => ['description' => 'The URL of the resource.', 'type' => 'string', 'example' => 'http://**/atestObject**.m3u8', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'ShowId' => ['description' => 'The ID of the show.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'ShowName' => ['description' => 'The name of the show.', 'type' => 'string', 'example' => 'liveShow****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], - 'description' => '', + 'ShowListRepeatTimes' => ['description' => 'The default number of loops for the playlist. This value is always 0.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'TotalShowListRepeatTimes' => ['description' => 'The number of times the entire playlist is looped.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', - ], - 'Total' => [ - 'description' => 'The total number of episode lists returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidPageSize.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPageNum.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 404 => [ - [ - 'errorCode' => 'PlayListNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidShowList.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ShowList does not exist, please check and try again.'], + ['errorCode' => 'InvalidShow.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Show does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ProgramList\\": [\\n {\\n \\"CasterId\\": \\"casdfasdfasfdasdflkasjdflaj****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"ProgramId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ProgramName\\": \\"playlist1\\",\\n \\"RepeatNumber\\": 1,\\n \\"Status\\": 1\\n }\\n ],\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\",\\n \\"Total\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n\\n\\n 1\\n 1\\n example.com\\n c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\n casdfasdfasfdasdflkasjdflaj****\\n playlist1\\n\\n5c6a2a0d-f228-4a64-af62-20e91b96****\\n1\\n","errorExample":""}]', - 'title' => 'ListPlaylist', - 'description' => 'You can call the [AddPlaylistItems](~~2848078~~) operation to add episode lists and then call this operation to query the episode lists.'."\n" + 'title' => 'DescribeShowList', + 'description' => 'Before calling this operation, you must add a show to the playlist. To add a show by calling an API operation, see [Add a show to a playlist](~~2848051~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for a single user is 10. If the limit is exceeded, API calls are throttled. This may affect your business operations. Plan your calls accordingly.', 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'StartPlaylist' => [ - 'summary' => 'Starts playing an episode list.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [ + ['createdAt' => '2024-07-15T01:31:08.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-07-11T09:45:40.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-04-11T07:26:51.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-01-30T03:31:37.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeShowList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ShowList\\": \\"ShowList[Show1, Show2, Show3...]\\",\\n \\"ShowListInfo\\": {\\n \\"CurrentShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"Background\\": \\"{\\\\\\\\\\\\\\"MaterialId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"resourceType\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"VOD\\\\\\\\\\\\\\"}\\",\\n \\"HighPriorityShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"HighPriorityShowStartTime\\": \\"2021-11-23T12:30:00\\",\\n \\"ShowList\\": {\\n \\"Show\\": [\\n {\\n \\"Duration\\": 20,\\n \\"RepeatTimes\\": 5,\\n \\"ResourceInfo\\": {\\n \\"LiveInputType\\": 1,\\n \\"ResourceId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"ResourceType\\": \\"vod\\",\\n \\"ResourceUrl\\": \\"http://**/atestObject**.m3u8\\"\\n },\\n \\"ShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"ShowName\\": \\"liveShow****\\"\\n }\\n ]\\n },\\n \\"ShowListRepeatTimes\\": 0,\\n \\"TotalShowListRepeatTimes\\": 1\\n }\\n}","type":"json"}]', + ], + 'DescribeStreamLocationBlock' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ProgramId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If the episode list was created by calling the [AddPlaylistItems](~~2848078~~) operation, check the value of the response parameter ProgramId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'ResumeMode', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The method to resume the playback of the episode list. Valid values:'."\n" - ."\n" - .'* **Restart**: resumes the playback from the beginning.'."\n" - .'* **Continue**: resumes the playback from the position where the previous playback stops. The **StartItemId** parameter is required only if you set **ResumeMode** to **Custom**.'."\n" - .'* **Custom**: resumes the playback from a custom position.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Custom', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'StartItemId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the first episode to play. This episode is the first to play in carousel playback.'."\n" - ."\n" - .'> This parameter is required only if you set ResumeMode to Custom.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'asdfasdfasdf****', - ], + 'schema' => ['description' => 'The name of the live stream.', 'type' => 'string', 'required' => false, 'example' => 'stream', 'title' => ''], ], [ - 'name' => 'Offset', + 'name' => 'BlockType', 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the position where the system starts the playback. This parameter takes effect only if the input source is a video file. Unit: milliseconds.'."\n" - ."\n" - .'A value greater than 0 indicates an offset from the first frame.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10000', - ], + 'schema' => ['description' => 'The blocking method. Valid values:'."\n" + ."\n" + .'- blacklist'."\n" + ."\n" + .'- whitelist', 'type' => 'string', 'required' => false, 'example' => 'blacklist', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries to return on each page. Valid values: integers from 1 to 100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '20', 'example' => '5', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The number of the page to return. Default value: 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'default' => '1', 'example' => '1', 'title' => ''], ], ], 'responses' => [ @@ -45128,355 +35662,373 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'ProgramId' => [ - 'description' => 'The ID of the episode list. You can use the ID as a request parameter in the API operation that is used to stop playing the episode list.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', - ], - 'StreamInfo' => [ - 'description' => 'The information about the live stream.'."\n", + 'Count' => ['description' => 'The total number of entries that meet the specified criteria.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'PageNum' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries on each page.', 'type' => 'integer', 'format' => 'int32', 'example' => '5', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'C7C69682-7F88-40DD-A198-10D0309E439B', 'title' => ''], + 'StreamBlockList' => [ 'type' => 'object', + 'itemNode' => true, 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'Streams' => [ - 'type' => 'object', + 'StreamBlock' => [ 'itemNode' => true, - 'properties' => [ - 'Stream' => [ - 'description' => 'The streaming URLs.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'PullFlvUrl' => [ - 'description' => 'The streaming URL in the Flash Video (FLV) format.'."\n", - 'type' => 'string', - 'example' => 'http://aliyundoc.com/caster/liveStream****.flv?auth_key=1612772224-0-0-3632be7cd9907169e8b09e91099c****', - ], - 'PullM3U8Url' => [ - 'description' => 'The streaming URL in the Real-Time Messaging Protocol (RTMP) format.'."\n", - 'type' => 'string', - 'example' => 'rtmp:///aliyundoc.com/caster/liveStream****?auth_key=1612772224-0-0-4404ca59c0246226d49d01f734b1****', - ], - 'PullRtmpUrl' => [ - 'description' => 'The streaming URL in the M3U8 format.'."\n", - 'type' => 'string', - 'example' => 'http://aliyundoc.com/caster/liveStream****.m3u8?auth_key=1612772224-0-0-919a023a127156fe82e3562c3b3b****', - ], - 'Quality' => [ - 'description' => 'The video quality of the live stream. Valid values: **original**: original quality'."\n", - 'type' => 'string', - 'example' => 'original', - ], - ], - 'description' => '', - ], + 'description' => 'The configuration details.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'The configuration details.', + 'type' => 'object', + 'properties' => [ + 'AppName' => ['description' => 'The blocked AppName.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'BlockType' => ['description' => 'The blocking method. Valid values:'."\n" + ."\n" + .'- blacklist'."\n" + ."\n" + .'- whitelist', 'type' => 'string', 'example' => 'blacklist', 'title' => ''], + 'DomainName' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'LocationList' => ['description' => 'A comma-separated list of region codes to block or allow.', 'type' => 'string', 'example' => 'CN', 'title' => ''], + 'ReleaseTime' => ['description' => 'The time when the block will be automatically lifted, in UTC format.', 'type' => 'string', 'example' => '2023-08-13T09:27Z', 'title' => ''], + 'Status' => ['description' => 'The blocking status. Valid values: 0 (not started), 1 (blocking), 2 (successful), 3 (failed), 4 (expired), and 5 (deleting).', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'StreamName' => ['description' => 'The name of the blocked stream.', 'type' => 'string', 'example' => 'stream', 'title' => ''], + 'UpdateTime' => ['description' => 'The time when the configuration was last modified. The time is in UTC.', 'type' => 'string', 'example' => '2023-08-14T09:27Z', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'TotalPage' => ['description' => 'The total number of pages returned.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'IncorrectSceneStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectSceneStatus.Inuse', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidProgramId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidNormType.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Offset', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.StartItemId', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'UserQuotaExceed', - 'errorMessage' => 'Quota exceeded: %s.', - ], - ], - [ - [ - 'errorCode' => 'PlayListNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'PlayListItemNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus.EnableChannel', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\",\\n \\"StreamInfo\\": {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"Streams\\": {\\n \\"Stream\\": [\\n {\\n \\"PullFlvUrl\\": \\"http://aliyundoc.com/caster/liveStream****.flv?auth_key=1612772224-0-0-3632be7cd9907169e8b09e91099c****\\",\\n \\"PullM3U8Url\\": \\"rtmp:///aliyundoc.com/caster/liveStream****?auth_key=1612772224-0-0-4404ca59c0246226d49d01f734b1****\\",\\n \\"PullRtmpUrl\\": \\"http://aliyundoc.com/caster/liveStream****.m3u8?auth_key=1612772224-0-0-919a023a127156fe82e3562c3b3b****\\",\\n \\"Quality\\": \\"original\\"\\n }\\n ]\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n 5c6a2a0d-f228-4a64-af62-20e91b96****\\n \\n liveApp****\\n example.com\\n liveStream****\\n \\n http://aliyundoc.com/caster/liveStream****.flv?auth_key=1612772224-0-0-3632be7cd9907169e8b09e91099c****\\n rtmp:///aliyundoc.com/caster/liveStream****?auth_key=1612772224-0-0-4404ca59c0246226d49d01f734b1****\\n http://aliyundoc.com/caster/liveStream****.m3u8?auth_key=1612772224-0-0-919a023a127156fe82e3562c3b3b****\\n original\\n \\n \\n","errorExample":""}]', - 'title' => 'StartPlaylist', - 'description' => 'You can call the [AddPlaylistItems](~~2848078~~) operation to add episodes to an episode list and then call this operation to start playing the episode list.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'title' => 'DescribeStreamLocationBlock', + 'summary' => 'Queries region blocking configurations of a specific live stream.', + 'description' => '## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'StopPlaylist' => [ - 'summary' => 'Stops playing an episode list.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per user. If the number of calls per second exceeds the limit, throttling is triggered. This may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeStreamLocationBlock'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeStreamLocationBlock', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Count\\": 2,\\n \\"PageNum\\": 1,\\n \\"PageSize\\": 5,\\n \\"RequestId\\": \\"C7C69682-7F88-40DD-A198-10D0309E439B\\",\\n \\"StreamBlockList\\": {\\n \\"StreamBlock\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"BlockType\\": \\"blacklist\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"LocationList\\": \\"CN\\",\\n \\"ReleaseTime\\": \\"2023-08-13T09:27Z\\",\\n \\"Status\\": 0,\\n \\"StreamName\\": \\"stream\\",\\n \\"UpdateTime\\": \\"2023-08-14T09:27Z\\"\\n }\\n ]\\n },\\n \\"TotalPage\\": 1\\n}","type":"json"}]', + ], + 'DescribeStudioLayouts' => [ + 'summary' => 'Queries one or more layouts of a virtual studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ProgramId', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the episode list. If the episode list was created by calling the [AddPlaylistItems](~~2848078~~) operation, check the value of the response parameter ProgramId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the returned CasterId.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], + ], + [ + 'name' => 'LayoutId', + 'in' => 'query', + 'schema' => ['description' => 'The layout ID. To specify multiple layout IDs, separate them with commas (,). If you leave this parameter empty, all layouts of the production studio are returned.'."\n" + ."\n" + .'If you add a layout by calling the [AddStudioLayout](~~2848062~~) operation, use the returned LayoutId.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The layout details.', 'type' => 'object', 'properties' => [ - 'ProgramId' => [ - 'description' => 'The ID of the episode list.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', 'title' => ''], + 'StudioLayouts' => [ + 'description' => 'The layout details.', + 'type' => 'array', + 'items' => [ + 'description' => 'The layout details.', + 'type' => 'object', + 'properties' => [ + 'BgImageConfig' => [ + 'description' => 'The background resource configuration.', + 'type' => 'object', + 'properties' => [ + 'Id' => ['description' => 'The unique ID of the background material.', 'type' => 'string', 'example' => 'k12kj31****', 'title' => ''], + 'ImageUrl' => ['description' => 'The URL of the material.', 'type' => 'string', 'example' => ' http://example.org', 'title' => ''], + 'LocationId' => ['description' => 'The position ID.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'MaterialId' => ['description' => 'The ID of the video-on-demand (VOD) material.', 'type' => 'string', 'example' => 'asdfas9df89asd8f9****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'CommonConfig' => [ + 'description' => 'The information about the common layout. This parameter is returned if the layout is a common layout.', + 'type' => 'object', + 'properties' => [ + 'ChannelId' => ['description' => 'The ID of the channel to which the video resource is attached.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'VideoResourceId' => ['description' => 'The ID of the video resource.', 'type' => 'string', 'example' => 'asdfasdfasdfasdfa****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'LayerOrderConfigList' => [ + 'description' => 'The layer order configuration.', + 'type' => 'array', + 'items' => [ + 'description' => 'The layer order configuration.', + 'type' => 'object', + 'properties' => [ + 'Id' => ['description' => 'The unique ID of the resource.', 'type' => 'string', 'example' => 'k12kj31****', 'title' => ''], + 'Type' => ['description' => 'The type of the resource configuration. Valid values:'."\n" + ."\n" + .'- **background**: background material.'."\n" + ."\n" + .'- **media**: multimedia material.', 'type' => 'string', 'example' => 'media', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'LayoutId' => ['description' => 'The ID of the production studio layout.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'LayoutName' => ['description' => 'The name of the production studio layout.', 'type' => 'string', 'example' => 'Test layout', 'title' => ''], + 'LayoutType' => ['description' => 'The type of the production studio layout. Valid values:'."\n" + ."\n" + .'- **common**: common layout.'."\n" + ."\n" + .'- **studio**: production studio layout.', 'type' => 'string', 'example' => 'studio', 'title' => ''], + 'MediaInputConfigList' => [ + 'description' => 'The multimedia input resource configuration.', + 'type' => 'array', + 'items' => [ + 'description' => 'The multimedia input source configuration.', + 'type' => 'object', + 'properties' => [ + 'ChannelId' => ['description' => 'The ID of the channel to which the video resource is attached.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'FillMode' => ['description' => 'The fill mode. The default value is none.', 'type' => 'string', 'example' => 'none', 'title' => ''], + 'HeightNormalized' => ['description' => 'The normalized height of the material. This is the ratio of the material height to the background height. Valid values: **0 to 1**.', 'type' => 'number', 'format' => 'float', 'example' => '0.4', 'title' => ''], + 'Id' => ['description' => 'The unique ID of the multimedia material.', 'type' => 'string', 'example' => 'k12kj31****', 'title' => ''], + 'ImageMaterialId' => ['description' => 'The ID of the VOD image material.', 'type' => 'string', 'example' => 'lkajsdfsa8fd89asd8****', 'title' => ''], + 'Index' => ['description' => 'The index of the multimedia material. This parameter is for display on the frontend and has no logical function.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PositionNormalized' => [ + 'description' => 'The normalized coordinates of the material\'s fill area, in the format \\[x,y]. The values of x and y range from **0 to 1**. For example, \\[0.1,0.2] indicates a horizontal offset of 10% and a vertical offset of 20% from the top-left corner.', + 'type' => 'array', + 'items' => ['description' => 'The normalized coordinate of the material\'s fill area, in the format `[x,y]`. The values of x and y range from **0 to 1**. For example, `[0.1,0.2]` indicates a horizontal offset of 10% and a vertical offset of 20% from the top-left corner.', 'type' => 'number', 'format' => 'float', 'example' => '0.1', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'PositionRefer' => ['description' => 'The reference point for the material\'s position. The default value is topLeft, which indicates that the top-left corner is the reference point.', 'type' => 'string', 'example' => 'topLeft', 'title' => ''], + 'VideoResourceId' => ['description' => 'The ID of the video resource.', 'type' => 'string', 'example' => 'asdfasdfasdfasdfa****', 'title' => ''], + 'WidthNormalized' => ['description' => 'The normalized width of the material. This is the ratio of the material width to the background width. Valid values: **0 to 1**.', 'type' => 'number', 'format' => 'float', 'example' => '0.4', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'ScreenInputConfigList' => [ + 'description' => 'The chroma keying input configuration.', + 'type' => 'array', + 'items' => [ + 'description' => 'The chroma keying input configuration.', + 'type' => 'object', + 'properties' => [ + 'AudioConfig' => [ + 'description' => 'The audio configuration.', + 'type' => 'object', + 'properties' => [ + 'ValidChannel' => ['description' => 'The corresponding channel.', 'type' => 'string', 'example' => '1', 'title' => ''], + 'VolumeRate' => ['description' => 'The volume.', 'type' => 'number', 'format' => 'float', 'example' => '1.0', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'ChannelId' => ['description' => 'The ID of the channel to which the video resource is attached.', 'type' => 'string', 'example' => 'RV01', 'title' => ''], + 'Color' => ['description' => 'The color for chroma keying. Valid values:'."\n" + ."\n" + .'- **blue**: blue screen background.'."\n" + ."\n" + .'- **green**: green screen background.'."\n" + ."\n" + .'- **auto**: automatic detection.'."\n" + ."\n" + .'- **complex**: real scene matting.', 'type' => 'string', 'example' => 'green', 'title' => ''], + 'HeightNormalized' => ['description' => 'The normalized height. This is the ratio of the keyed portrait\'s height to the background\'s height. Valid values: **0 to 1**.', 'type' => 'number', 'format' => 'float', 'example' => '0.4', 'title' => ''], + 'Id' => ['description' => 'The unique ID of the chroma key source material.', 'type' => 'string', 'example' => 'k12kj31****', 'title' => ''], + 'Index' => ['description' => 'The index of the chroma key source. This parameter is for display on the frontend and has no logical function.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'OnlyAudio' => ['description' => 'Audio only.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'PortraitType' => ['description' => 'The portrait type. Valid values:'."\n" + ."\n" + .'- **0**: half-length.'."\n" + ."\n" + .'- **1**: full-length.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'PositionX' => ['description' => 'The x-coordinate. Valid values: **0 to 1**. The top-left corner is the reference point for the material\'s position.', 'type' => 'string', 'example' => '0.1', 'title' => ''], + 'PositionY' => ['description' => 'The y-coordinate. Valid values: **0 to 1**. The top-left corner is the reference point for the material\'s position.', 'type' => 'string', 'example' => '0.2', 'title' => ''], + 'VideoResourceId' => ['description' => 'The ID of the video resource.', 'type' => 'string', 'example' => 'asdfasdfasdfasdfa****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'Total' => ['description' => 'The total number of layouts.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidProgramId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 404 => [ - [ - 'errorCode' => 'PlayListNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n\\n5c6a2a0d-f228-4a64-af62-20e91b96****\\n445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'StopPlaylist', - 'description' => 'You can call the [AddPlaylistItems](~~2848078~~) operation to add episodes to an episode list and then call this operation to stop playing the episode list.'."\n" + 'title' => 'DescribeStudioLayouts', + 'description' => 'You must first call the [AddStudioLayout](~~2848062~~) operation to add a layout for a virtual production studio. You can then call this operation to query the layout settings.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'This operation supports up to 15 queries per second (QPS) per user. Calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'CreateMixStream' => [ - 'summary' => 'Creates a stream mixing task.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '15', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeStudioLayouts'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeStudioLayouts', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\",\\n \\"StudioLayouts\\": [\\n {\\n \\"BgImageConfig\\": {\\n \\"Id\\": \\"k12kj31****\\",\\n \\"ImageUrl\\": \\" http://example.org\\",\\n \\"LocationId\\": \\"RV01\\",\\n \\"MaterialId\\": \\"asdfas9df89asd8f9****\\"\\n },\\n \\"CommonConfig\\": {\\n \\"ChannelId\\": \\"RV01\\",\\n \\"VideoResourceId\\": \\"asdfasdfasdfasdfa****\\"\\n },\\n \\"LayerOrderConfigList\\": [\\n {\\n \\"Id\\": \\"k12kj31****\\",\\n \\"Type\\": \\"media\\"\\n }\\n ],\\n \\"LayoutId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"LayoutName\\": \\"Test layout\\",\\n \\"LayoutType\\": \\"studio\\",\\n \\"MediaInputConfigList\\": [\\n {\\n \\"ChannelId\\": \\"RV01\\",\\n \\"FillMode\\": \\"none\\",\\n \\"HeightNormalized\\": 0.4,\\n \\"Id\\": \\"k12kj31****\\",\\n \\"ImageMaterialId\\": \\"lkajsdfsa8fd89asd8****\\",\\n \\"Index\\": 1,\\n \\"PositionNormalized\\": [\\n 0.1\\n ],\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"VideoResourceId\\": \\"asdfasdfasdfasdfa****\\",\\n \\"WidthNormalized\\": 0.4\\n }\\n ],\\n \\"ScreenInputConfigList\\": [\\n {\\n \\"AudioConfig\\": {\\n \\"ValidChannel\\": \\"1\\",\\n \\"VolumeRate\\": 1\\n },\\n \\"ChannelId\\": \\"RV01\\",\\n \\"Color\\": \\"green\\",\\n \\"HeightNormalized\\": 0.4,\\n \\"Id\\": \\"k12kj31****\\",\\n \\"Index\\": 1,\\n \\"OnlyAudio\\": true,\\n \\"PortraitType\\": 0,\\n \\"PositionX\\": \\"0.1\\",\\n \\"PositionY\\": \\"0.2\\",\\n \\"VideoResourceId\\": \\"asdfasdfasdfasdfa****\\"\\n }\\n ]\\n }\\n ],\\n \\"Total\\": 1\\n}","type":"json"}]', + ], + 'DescribeToutiaoLivePlay' => [ + 'summary' => 'This operation queries stream pulling information for a specified Toutiao live stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveI16NIW', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n" - ."\n" - .'> Only domain names that reside in the China (Shanghai) and China (Beijing) regions are supported.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The start of the time range to query. Specify the time in the ISO 8601 standard. Use UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T20:00:00Z', 'title' => ''], ], [ - 'name' => 'LayoutId', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the layout. Valid values:'."\n" - ."\n" - .'* **MixStreamLayout-1-1**'."\n" - .'* **MixStreamLayout-2-1**'."\n" - .'* **MixStreamLayout-2-2**'."\n" - .'* **MixStreamLayout-2-3**'."\n" - .'* **MixStreamLayout-3-1**'."\n" - .'* **MixStreamLayout-3-2**'."\n" - .'* **MixStreamLayout-4-1**'."\n" - .'* **USERDEFINED**: If you do not use a preset layout, set this parameter to **USERDEFINED**.'."\n" - ."\n" - .'> For more information, see [Preset layouts for stream mixing](~~199361~~).', - 'type' => 'string', - 'required' => true, - 'example' => 'MixStreamLayout-1-1', - ], + 'schema' => ['description' => 'The end of the time range to query. The end time must be later than the start time, and the time span cannot exceed 10 hours. If you do not specify StartTime and EndTime, data for the last hour is queried by default. Specify the time in the ISO 8601 standard. Use UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'InputStreamList', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The input streams. The value is a JSON array.'."\n" - ."\n" - .'For more information, see **InputStreamConfig**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '[{"LayoutChildId":1,"ResourceType":"live","ResourceValue":"rtmp://example.net/live/f2139ec2b8d6a191068cd****ea9064d?auth_key=1600947017-0-0-0b5645fe35d21a65ab92b394bd4d****","LayoutConfig":{"FillMode":"fit","PositionRefer":"topLeft","FillPositionNormalized":[0,0],"FillSizeNormalized":[1,1]}}]', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'OutputConfig', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'The configuration of the output stream. The value is a JSON string.'."\n" - ."\n" - .'For more information, see **OutputConfig**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '{"AppName":"liveApp****","StreamName":"9a78fb3f5c508be0122746f677a3****","MixStreamTemplate":"lp_hd_v","ExpireDuration":"86400"}', - ], + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'CallbackConfig', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL. The value is a JSON array. If a callback event is triggered, ApsaraVideo Live sends an HTTP POST request to the URL. The content is included in the HTTP request body.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"CallbackUrl":"http://aliyundoc.com"}', - ], + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], ], 'responses' => [ @@ -45484,235 +36036,108 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MixStreamId' => [ - 'description' => 'The ID of the stream mixing task. You can specify this parameter in a request to delete the stream mixing task or query stream mixing tasks.'."\n", - 'type' => 'string', - 'example' => '5b2a046e-74d7-385e-253f-8a5b87e4****', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '0D715397-2E66-4AE1-694h-C546628AD145', + 'Description' => ['description' => 'The description of the response status.', 'type' => 'string', 'example' => 'OK', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + 'Content' => [ + 'description' => 'The details of the stream information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the stream information.', + 'type' => 'object', + 'properties' => [ + 'Domain' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Bandwidth' => ['description' => 'The bandwidth. Unit: Mbit/s.', 'type' => 'number', 'format' => 'float', 'example' => '0.0801239013671875', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'App' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'liveApp****'."\n", 'title' => ''], + 'PlayNum' => ['description' => 'The number of viewers.', 'type' => 'integer', 'format' => 'int64', 'example' => '452', 'title' => ''], + 'Timestamp' => ['description' => 'The timestamp.', 'type' => 'integer', 'format' => 'int64', 'example' => '1625484600', 'title' => ''], + 'CdnName' => ['description' => 'The CDN name.', 'type' => 'string', 'example' => 'ali', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'MixStreamAlreadyExist', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MixStreamNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'UserQuotaExceed', - 'errorMessage' => 'Quota exceeded: %s.', - ], - ], + 'errorCodes' => [], + 'title' => 'DescribeToutiaoLivePlay', + 'description' => 'You can call this API to query stream pulling information for a specified Toutiao live stream.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 100. If you exceed this limit, API calls are throttled. This may affect your business. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeToutiaoLivePlay', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"MixStreamId\\": \\"5b2a046e-74d7-385e-253f-8a5b87e4****\\",\\n \\"RequestId\\": \\"0D715397-2E66-4AE1-694h-C546628AD145\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5b2a046e-74d7-385e-253f-8a5b87e4****\\n 0D715397-2E66-4AE1-694h-C546628AD145\\n","errorExample":""}]', - 'title' => 'CreateMixStream', - 'description' => 'You can call this operation to create a stream mixing task. This operation supports preset layouts and custom layouts.'."\n" - ."\n" - .'If you have any questions or suggestions about the use of the stream mixing feature, you are welcome to search the group ID 34935990 in DingTalk to join the developer group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '### InputStreamConfig'."\n" - ."\n" - .'|Field|Type|Description|'."\n" - .'|---|---|---|'."\n" - .'|ResourceType|String|The type of the resource.**live**: live stream**url**: file|'."\n" - .'|ResourceValue|String|The URL of the resource.If you set the ResourceType parameter to live, set this parameter to the URL of a live stream. Supported protocols include Real-Time Messaging Protocol (RTMP), Flash Video (FLV), and Alibaba Real-Time Communication (ARTC). The HTTP Live Streaming (HLS) protocol is not supported.If you set the ResourceType parameter to url, set this parameter to the URL of a file.|'."\n" - .'|LayoutChildId|String|The ID that specifies the overlay sequence of the input stream in the layout.|'."\n" - .'|LayoutConfig|LayoutConfig\\[\\]|The layout information about the input stream, including the position and scaling mode. The value is a JSON array.If you use a preset layout, you do not need to specify this parameter.If you specify this parameter, the layout configuration specified by the LayoutChildId parameter is ignored.|'."\n" - ."\n" - .'### LayoutConfig'."\n" - ."\n" - .'|Field|Type|Required|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|FillSizeNormalized|JSON array of floating-point numbers|Yes|The size of the layer in the layout.Format: \\[w,h\\]. The valid values of w and h are in the range of \\[0,1\\]. The width and height are normalized.For example, \\[0.2,0.3\\] indicates that the width of the layer is 20% of the screen width, and the height of the layer is 30% of the screen height.|'."\n" - .'|FillPositionNormalized|Array of floating-point numbers|Yes|The normalized value of the coordinates of the layer.Format: \\[x,y\\]. The valid values of x and y are in the range of \\[0,1\\].For example, \\[0.1,0.1\\] indicates that the layer is horizontally offset by 10% and vertically offset by 10% towards the upper-left corner.|'."\n" - .'|PositionRefer|String|No|The reference position of the layer.We recommend that you set this parameter to topLeft that indicates the upper-left corner.|'."\n" - .'|FillMode|String|No|The scaling mode of the stream in the layer. Valid values:**none**: specifies that the stream is not scaled.**fit**: specifies that the stream is scaled to ensure that the longer side reaches the border of the layer. In this case, black bars may be added to the shorter side.**fill**: specifies that the stream is proportionally scaled based on the maximum aspect ratio of the layer. Then, the stream is cropped to fill in the layer.We recommend that you set this parameter to fit.|'."\n" - ."\n" - .'### OutputConfig'."\n" - ."\n" - .'|Field|Type|Required|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|AppName|String|Yes|The name of the application that generates the output stream. The name cannot contain special characters such as pound signs (#) and question marks (?).|'."\n" - .'|StreamName|String|Yes|The name of the output stream. The name cannot contain special characters such as pound signs (#) and question marks (?).|'."\n" - .'|MixStreamTemplate|String|Yes|The ID of the stream mixing template, such as lp\\_ld. Valid values:lp\\_ld (640 × 360),lp\\_sd (854 × 480),lp\\_hd (1280 × 720),lp\\_ud (1920 × 1080),lp\\_ld\\_v (640 × 360),lp\\_sd\\_v (854 × 480),lp\\_hd\\_v (1280 × 720),lp\\_ud\\_v (1920 × 1080),lp\\_ld\\_v\\_optm (640 × 360),lp\\_sd\\_v\\_optm (854 × 480),lp\\_hd\\_v\\_optm (1280 × 720), andlp\\_ud\\_v\\_optm (1920 × 1080).\\_v indicates a template in portrait mode. \\_optm indicates a low latency template. The numbers in the parentheses indicate the resolution.|'."\n" - .'|ExpireDuration|Long|No|Specifies how long until the task expires. Unit: seconds. Valid values: **1** to **31536000** (one year).If you do not specify this parameter, the task expires in seven days by default.|', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Example callbacks for stream mixing'."\n" - ."\n" - .'* The stream mixing task is created.'."\n" - ."\n" - .''."\n" - ."\n" - .' {'."\n" - .' "EventMessage":'."\n" - .' {'."\n" - .' "StreamName":"liveStream****",// The name of the output stream.'."\n" - .' "Message":"",'."\n" - .' "DomainName":"example.com",'."\n" - .' "MixstreamId":"5b2a046e-74d7-385e-253f-8a5b87e4****",// The ID of the stream mixing task.'."\n" - .' "Code":"Success",'."\n" - .' "AppName":"liveApp****"// The name of the application that generates the output stream.'."\n" - .' },'."\n" - .' "EventType":"MixstreamStartCallback",'."\n" - .' "MessageMd5":"7c7b1d9480ae892lkasjdflkasjbd****",'."\n" - .' "CasterId":""}'."\n" - ."\n" - .'* The stream mixing task failed to be created.'."\n" - ."\n" - .''."\n" - ."\n" - .' {"EventMessage":'."\n" - .' {'."\n" - .' "StreamName":"liveStream****",'."\n" - .' "Message":"MixStreamAlreadyExist",'."\n" - .' "DomainName":"example.com",'."\n" - .' "Code":"Error",'."\n" - .' "AppName":"liveApp****"'."\n" - .' },'."\n" - .' "EventType":"MixstreamStartCallback",'."\n" - .' "MessageMd5":"7c7b1d9480ae892lkasjdflkasjbd****",'."\n" - .' "CasterId":""'."\n" - .' }'."\n" - ."\n" - .'### SDK example'."\n" - ."\n" - .'For more information, see [Sample code of stream mixing](https://help.aliyun.com/document_detail/199362.html).'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"OK\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"Content\\": [\\n {\\n \\"Domain\\": \\"example.com\\",\\n \\"Bandwidth\\": 0.0801239013671875,\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"App\\": \\"liveApp****\\\\n\\",\\n \\"PlayNum\\": 452,\\n \\"Timestamp\\": 1625484600,\\n \\"CdnName\\": \\"ali\\"\\n }\\n ]\\n}","type":"json"}]', ], - 'UpdateMixStream' => [ - 'summary' => 'Updates a stream mixing task.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeToutiaoLivePublish' => [ + 'summary' => 'Queries the stream ingest information for a specified Toutiao live stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107287', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n" - ."\n" - .'> Only domain names that reside in the China (Shanghai) and China (Beijing) regions are supported.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The start of the time range to query. The date is in ISO 8601 format and uses UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T20:00:00Z'."\n", 'title' => ''], ], [ - 'name' => 'MixStreamId', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the stream mixing task. If the task was created by calling the [CreateMixStream](~~2848087~~) operation, check the value of the response parameter MixStreamId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '5b2a046e-74d7-385e-d2d7-8a5b87e4****', - ], + 'schema' => ['description' => 'The end of the time range to query. The date is in ISO 8601 format and uses UTC. The end time must be later than the start time, and the time span cannot exceed 10 hours. If you do not specify StartTime and EndTime, data from the last hour is queried by default.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T21:00:00Z'."\n", 'title' => ''], ], [ - 'name' => 'InputStreamList', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The input streams, in a JSON array.'."\n" - ."\n" - .'For more information, see **InputStreamConfig**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '{"InputStreamList":[{"LayoutConfig":{"fillSizeNormalized":[0.5,0.5],"fillPositionNormalized":[0,0],"positionRefer":"topLeft","fillMode":"fit"},"LayoutChildId":1,"ResourceValue":"rtmp://aliyundoc.com/caster/8564a8d1659b4dc69df5f66cf4c9****","ResourceType":"live"},{"LayoutConfig":{"fillSizeNormalized":[0.5,0.5],"fillPositionNormalized":[0.5,0],"positionRefer":"topLeft","fillMode":"fit"},"LayoutChildId":2,"ResourceValue":"http://developer.aliyundoc.com/3c3c25426cf744fdb90423e76b78a28a/69b1a16e2b1d423d9841bf27a96f134e-0b1cba51f58bb5ad3a854x96a2c735f****.mp4","ResourceType":"url"},{"LayoutConfig":{"fillSizeNormalized":[1,0.5],"fillPositionNormalized":[0,0.5],"positionRefer":"topLeft","fillMode":"fit"},"LayoutChildId":3,"ResourceValue":"http://aliyundoc.com/c0c6c5446b56432389e91535864938da/ed4adc5263b4474c954b95607a5350ae-fda757b3328438a8cf-4k57f373a0f0****.mp4","ResourceType":"url"}]}', - ], + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'LayoutId', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the layout. Valid values:'."\n" - ."\n" - .'* **MixStreamLayout-1-1**'."\n" - .'* **MixStreamLayout-2-1**'."\n" - .'* **MixStreamLayout-2-2**'."\n" - .'* **MixStreamLayout-2-3**'."\n" - .'* **MixStreamLayout-3-1**'."\n" - .'* **MixStreamLayout-3-2**'."\n" - .'* **MixStreamLayout-4-1**'."\n" - .'* **USERDEFINED**: If you do not use a preset layout, set this parameter to **USERDEFINED**.'."\n" - ."\n" - .'> For more information, see [Preset layouts for stream mixing](~~199361~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'MixStreamLayout-3-2', - ], + 'schema' => ['description' => 'The stream name.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'App', + 'in' => 'query', + 'schema' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], ], 'responses' => [ @@ -45720,95 +36145,70 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'MixStreamId' => [ - 'description' => 'The ID of the stream mixing task. You can specify this parameter in a request to delete the stream mixing task or query stream mixing tasks.'."\n", - 'type' => 'string', - 'example' => '5b2a046e-74d7-385e-d2d7-8a5b87e4****', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '1A8CDDFF-0121-4ABB-DA60-AEF095A8W34F', + 'Description' => ['description' => 'The description of the response status.', 'type' => 'string', 'example' => 'OK'."\n", 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + 'Content' => [ + 'description' => 'The details of the stream ingest information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the stream ingest information.', + 'type' => 'object', + 'properties' => [ + 'Domain' => ['description' => 'The ingest domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'App' => ['description' => 'The name of the application to which the stream belongs.', 'type' => 'string', 'example' => 'liveApp****'."\n", 'title' => ''], + 'Fps' => ['description' => 'The frame rate.', 'type' => 'number', 'format' => 'float', 'example' => '74.4', 'title' => ''], + 'Flr' => ['description' => 'The number of dropped frames.', 'type' => 'number', 'format' => 'float', 'example' => '0', 'title' => ''], + 'Timestamp' => ['description' => 'The timestamp.', 'type' => 'integer', 'format' => 'int64', 'example' => '1624358970', 'title' => ''], + 'Bitrate' => ['description' => 'The bitrate in bit/s.', 'type' => 'number', 'format' => 'float', 'example' => '261587', 'title' => ''], + 'BwDiff' => ['description' => 'The bitrate difference.', 'type' => 'number', 'format' => 'float', 'example' => '0', 'title' => ''], + 'CdnName' => ['description' => 'The CDN name.', 'type' => 'string', 'example' => 'ali', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'MixStreamAlreadyExist', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MixStreamNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], + 'errorCodes' => [], + 'title' => 'DescribeToutiaoLivePublish', + 'description' => 'You can call this API to query the stream ingest information for a specified Toutiao live stream.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 calls per second per user. Calls that exceed this limit are throttled, which may impact your business. We recommend that you call the API within this limit. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeToutiaoLivePublish'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeToutiaoLivePublish', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"MixStreamId\\": \\"5b2a046e-74d7-385e-d2d7-8a5b87e4****\\",\\n \\"RequestId\\": \\"1A8CDDFF-0121-4ABB-DA60-AEF095A8W34F\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5b2a046e-74d7-385e-d2d7-8a5b87e4****\\n 1A8CDDFF-0121-4ABB-DA60-AEF095A8W34F\\n","errorExample":""}]', - 'title' => 'UpdateMixStream', - 'description' => 'You can call this operation to update a stream mixing task. This operation allows you to modify the input sources and layout, but not other parameters such as the output resolution.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '### InputStreamConfig'."\n" - ."\n" - .'|Parameter|Type|Description|'."\n" - .'|---|---|---|'."\n" - .'|ResourceType|String|The type of the resource.**live**: live stream**url**: file|'."\n" - .'|ResourceValue|String|The URL of the resource.If you set the ResourceType parameter to live, set this parameter to the URL of a live stream. Supported protocols include Real-Time Messaging Protocol (RTMP), Flash Video (FLV), and Alibaba Real-Time Communication (ARTC). The HTTP Live Streaming (HLS) protocol is not supported.If you set the ResourceType parameter to url, set this parameter to the URL of a file.|'."\n" - .'|LayoutChildId|String|The ID that specifies the overlay sequence of the input stream in the layout.|'."\n" - .'|LayoutConfig|LayoutConfig\\[\\]|The layout information about the input stream, including the position and scaling mode. The value is a JSON array.If you use a preset layout, you do not need to specify this parameter.If you specify this parameter, the layout configuration specified by the LayoutChildId parameter is ignored.|', - 'responseParamsDescription' => ' ', - 'extraInfo' => '### SDK example'."\n" - ."\n" - .'For more information, see [Sample code of stream mixing](https://help.aliyun.com/document_detail/199362.html).'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"OK\\\\n\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"Content\\": [\\n {\\n \\"Domain\\": \\"example.com\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"App\\": \\"liveApp****\\\\n\\",\\n \\"Fps\\": 74.4,\\n \\"Flr\\": 0,\\n \\"Timestamp\\": 1624358970,\\n \\"Bitrate\\": 261587,\\n \\"BwDiff\\": 0,\\n \\"CdnName\\": \\"ali\\"\\n }\\n ]\\n}","type":"json"}]', ], - 'DescribeMixStreamList' => [ - 'summary' => 'Queries stream mixing tasks.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeUpBpsPeakData' => [ + 'summary' => 'Queries the daily peak upstream bandwidth of a user.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -45819,564 +36219,427 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveI16NIW', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the output stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', - ], - ], - [ - 'name' => 'MixStreamId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the stream mixing task. If the task was created by calling the [CreateMixStream](~~2848087~~) operation, check the value of the response parameter MixStreamId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '5b2a046e-74d7-385e-d2d7-8a5b87e4****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2020-09-11T12:00:00Z', - ], + 'schema' => ['description' => 'The start time of stream pulling. Specify the time in UTC. The interval between StartTime and EndTime must be within 30 days.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T20:00:00Z', 'title' => ''], ], [ 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2020-09-20T13:00:00Z', - ], + 'schema' => ['description' => 'The end time of stream pulling. Specify the time in UTC. The interval between StartTime and EndTime must be within 30 days, and EndTime must be later than the current time.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T21:00:00Z', 'title' => ''], ], [ - 'name' => 'PageNo', + 'name' => 'DomainSwitch', 'in' => 'query', 'schema' => [ - 'description' => 'The number of the page to return. Valid values: an integer that is greater than **0** and does not exceed the maximum value of the INTEGER data type. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'Specifies whether to enable domain-level statistics. Valid values:'."\n" + ."\n" + .'- on: enables domain-level statistics.'."\n" + .'- off: returns user-level data. User-level data is returned by default.', + 'enumValueTitles' => ['off' => 'user-level data.', 'on' => 'enables domain-level statistics.'], + 'type' => 'string', 'required' => false, - 'example' => '1', + 'enum' => ['on', 'off'], + 'example' => 'on', + 'title' => '', ], ], [ - 'name' => 'PageSize', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries to return on each page. Default value: **1000**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1000', - ], + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The bandwidth information.', 'type' => 'object', 'properties' => [ - 'MixStreamList' => [ - 'description' => 'Details about the stream mixing tasks.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Details about the stream mixing task.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'DomainName' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'GmtCreate' => [ - 'description' => 'The time when the stream mixing task was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2020-09-17T08:39:14Z', - ], - 'GmtModified' => [ - 'description' => 'The time when the stream mixing task was modified. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2020-09-17T08:39:15Z', - ], - 'InputStreamNumber' => [ - 'description' => 'The number of input streams.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'LayoutId' => [ - 'description' => 'The ID of the layout.'."\n", - 'type' => 'string', - 'example' => 'USERDEFINED', - ], - 'MixStreamTemplate' => [ - 'description' => 'The stream mixing template.'."\n", - 'type' => 'string', - 'example' => 'lp_ld', - ], - 'MixstreamId' => [ - 'description' => 'The ID of the stream mixing task. You can specify this parameter in a request to delete the steam mixing task.'."\n", - 'type' => 'string', - 'example' => 'aaf9a50f-c460-3a9b-f180-38dd8f05****', - ], - 'StreamName' => [ - 'description' => 'The name of the output stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + 'DescribeUpPeakTraffics' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DescribeUpPeakTraffic' => [ + 'description' => 'The daily peak upstream bandwidth information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The daily peak upstream bandwidth information.', + 'type' => 'object', + 'properties' => [ + 'QueryTime' => ['description' => 'The queried daily time. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2017-10-10T20:10:00Z', 'title' => ''], + 'BandWidth' => ['description' => 'The daily peak upstream bandwidth.', 'type' => 'string', 'example' => '777.2727083333333', 'title' => ''], + 'StatName' => ['description' => 'The name of the statistical data attribute. If DomainSwitch is set to on, the live streaming domain name of the user is displayed. If DomainSwitch is set to off or is not specified, the user ID is displayed.', 'type' => 'string', 'example' => 'push-live.aliyuncs.com', 'title' => ''], + 'PeakTime' => ['description' => 'The time when the daily peak upstream bandwidth occurs. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2017-10-10T20:10:00Z', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'BC1E78D3-FA8B-4457-DEE2-6093E1232254', - ], - 'Total' => [ - 'description' => 'The total number of tasks.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'The specified StartTime is invalid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], ], [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 404 => [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"MixStreamList\\": [\\n {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"GmtCreate\\": \\"2020-09-17T08:39:14Z\\",\\n \\"GmtModified\\": \\"2020-09-17T08:39:15Z\\",\\n \\"InputStreamNumber\\": 2,\\n \\"LayoutId\\": \\"USERDEFINED\\",\\n \\"MixStreamTemplate\\": \\"lp_ld\\",\\n \\"MixstreamId\\": \\"aaf9a50f-c460-3a9b-f180-38dd8f05****\\",\\n \\"StreamName\\": \\"liveStream****\\"\\n }\\n ],\\n \\"RequestId\\": \\"BC1E78D3-FA8B-4457-DEE2-6093E1232254\\",\\n \\"Total\\": 1\\n}","errorExample":""},{"type":"xml","example":"\\n \\n liveApp****\\n example.com\\n 2020-09-17T08:39:14Z\\n 2020-09-17T08:39:15Z\\n 2\\n USERDEFINED\\n lp_ld\\n aaf9a50f-c460-3a9b-f180-38dd8f05****\\n liveStream****\\n \\n BC1E78D3-FA8B-4457-DEE2-6093E1232254\\n 1\\n","errorExample":""}]', - 'title' => 'DescribeMixStreamList', - 'description' => 'You can call the [CreateMixStream](~~2848087~~) operation to create stream mixing tasks and then call this operation to query the list of stream mixing tasks.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 5 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => '### MixStreamInfo'."\n" - ."\n" - .'|Filed|Type|Description|'."\n" - .'|---|---|---|'."\n" - .'|MixStreamId|String|The ID of the stream mixing task.|'."\n" - .'|DomainName|String|The main streaming domain.|'."\n" - .'|AppName|String|The name of the application.|'."\n" - .'|StreamName|String|The name of the output stream.|'."\n" - .'|LayoutId|String|The ID of the layout.|'."\n" - .'|InputStreamNumber|Integer|The number of input streams.|'."\n" - .'|MixStreamTemplate|String|The stream mixing template.|'."\n" - .'|GmtCreate|String|The time when the stream mixing task was created. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.|'."\n" - .'|GmtModified|String|The time when the stream mixing task was modified. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.|', - 'extraInfo' => '### SDK example'."\n" - ."\n" - .'For more information, see [Sample code of stream mixing](https://help.aliyun.com/document_detail/199362.html).'."\n", - ], - 'DeleteMixStream' => [ - 'summary' => 'Deletes a stream mixing task.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"DescribeUpPeakTraffics\\": {\\n \\"DescribeUpPeakTraffic\\": [\\n {\\n \\"QueryTime\\": \\"2017-10-10T20:10:00Z\\",\\n \\"BandWidth\\": \\"777.2727083333333\\",\\n \\"StatName\\": \\"push-live.aliyuncs.com\\",\\n \\"PeakTime\\": \\"2017-10-10T20:10:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query daily peak upstream bandwidth of a user', + 'description' => 'Calls the operation to query the daily peak upstream bandwidth of a user.'."\n" + .'## QPS limit'."\n" + .'The queries per second (QPS) limit for a single user for this operation is 5. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation as needed. For more information, see [QPS limit](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '5', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeUpBpsPeakData'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeUpBpsPeakData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DescribeUpBpsPeakOfLine' => [ + 'summary' => 'Queries the daily peak upstream bandwidth of a specific dedicated line for a user.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveI16NIW', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The start time of stream pulling. Specify the time in UTC. The time interval between StartTime and EndTime must be within 30 days.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T20:00:00Z'."\n", 'title' => ''], ], [ - 'name' => 'AppName', + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of stream pulling. Specify the time in UTC. The time interval between StartTime and EndTime must be within 30 days, and EndTime must be later than the current time.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T21:00:00Z'."\n", 'title' => ''], + ], + [ + 'name' => 'Line', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the application.'."\n", + 'description' => 'The dedicated line. Valid values: integers in the range of [0, 9].', + 'enumValueTitles' => ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', + 'required' => true, + 'enum' => ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], + 'example' => '3', + 'title' => '', ], ], [ - 'name' => 'StreamName', + 'name' => 'DomainSwitch', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the output stream.'."\n", + 'description' => 'The domain name statistics switch. Valid values:'."\n" + ."\n" + .'- on: Enables domain name-level statistics.'."\n" + .'- off: User-level data. User-level data is collected by default.', + 'enumValueTitles' => ['off' => 'user-level data.', 'on' => 'enable domain name-level statistics.'], 'type' => 'string', 'required' => false, - 'example' => 'liveStream****', + 'enum' => ['on', 'off'], + 'example' => 'on', + 'title' => '', ], ], [ - 'name' => 'MixStreamId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the stream mixing task. If the task was created by calling the [CreateMixStream](~~2848087~~) operation, check the value of the response parameter MixStreamId to obtain the ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '749b7594-86d6-37b1-513b-e1e19845****', - ], + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The bandwidth information.', 'type' => 'object', 'properties' => [ - 'MixStreamId' => [ - 'description' => 'The ID of the stream mixing task.'."\n", - 'type' => 'string', - 'example' => '749b7594-86d6-37b1-513b-e1e19845****', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'BE9407FF-F897-4DBD-338D-98A750AD805F', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '6CFDE7AB-571A-14EA-B072-989FF753****', 'title' => ''], + 'DescribeUpBpsPeakOfLines' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DescribeUpBpsPeakOfLine' => [ + 'description' => 'The daily peak upstream bandwidth information for the dedicated line.', + 'type' => 'array', + 'items' => [ + 'description' => 'The daily peak upstream bandwidth information for the dedicated line.', + 'type' => 'object', + 'properties' => [ + 'QueryTime' => ['description' => 'The queried daily time. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2017-10-10T20:10:00Z', 'title' => ''], + 'StatName' => ['description' => 'The name of the statistics attribute. When DomainSwitch is set to on, the live streaming domain name is displayed. When DomainSwitch is set to off or not specified, the user ID is displayed.', 'type' => 'string', 'example' => 'push-live.aliyuncs.com', 'title' => ''], + 'BandWidth' => ['description' => 'The daily peak upstream bandwidth of the dedicated line.', 'type' => 'number', 'format' => 'float', 'example' => '777.2727083333333'."\n", 'title' => ''], + 'PeakTime' => ['description' => 'The time when the daily peak upstream bandwidth of the dedicated line occurs. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2017-10-10T20:10:00Z', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + 401 => [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], - 403 => [ - [ - 'errorCode' => 'MixStreamAlreadyExist', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MixStreamNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6CFDE7AB-571A-14EA-B072-989FF753****\\",\\n \\"DescribeUpBpsPeakOfLines\\": {\\n \\"DescribeUpBpsPeakOfLine\\": [\\n {\\n \\"QueryTime\\": \\"2017-10-10T20:10:00Z\\",\\n \\"StatName\\": \\"push-live.aliyuncs.com\\",\\n \\"BandWidth\\": 777.2727083333333,\\n \\"PeakTime\\": \\"2017-10-10T20:10:00Z\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query daily peak upstream bandwidth of a specific dedicated line', + 'description' => 'Calls the operation to query the daily peak upstream bandwidth of a specific dedicated line for a user.'."\n" + .'## QPS limit'."\n" + .'The QPS limit for a single user on this operation is 5 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately. For more information, see [QPS limit](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '5', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeUpBpsPeakOfLine'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeUpBpsPeakOfLine', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"MixStreamId\\": \\"749b7594-86d6-37b1-513b-e1e19845****\\",\\n \\"RequestId\\": \\"BE9407FF-F897-4DBD-338D-98A750AD805F\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 749b7594-86d6-37b1-513b-e1e19845****\\n BE9407FF-F897-4DBD-338D-98A750AD805F\\n","errorExample":""}]', - 'title' => 'DeleteMixStream', - 'description' => 'You can call the [CreateMixStream](~~2848087~~) operation to create a stream mixing task and then call this operation to delete the stream mixing task. If you no longer need a mixed stream, be sure to delete it. Mixed streams that are not deleted are continuously ingested.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '### SDK example'."\n" - ."\n" - .'For more information, see [Sample code of stream mixing](https://help.aliyun.com/document_detail/199362.html).'."\n", ], - 'CreateCustomTemplate' => [ - 'summary' => 'Creates a custom stream mixing template.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'DescribeUpPeakPublishStreamData' => [ + 'summary' => 'Queries the daily peak number of concurrent upstream ingest streams for a user.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveI16NIW', - ], + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'CustomTemplate', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The configuration of the template. The value is in the following JSON format: {height:xxx,scale:xxx,gop:xxx,bframes:xxx,cdesc:xxx}. All fields are required. If any field is left empty, the call fails.'."\n" - ."\n" - .'> For more information, see **Fields of the CustomTemplate parameter**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '{height:1080,scale:[16:9],gop:60,bframes:30,cdesc:h264}', - ], + 'schema' => ['description' => 'The start time of stream pulling in UTC. The interval between StartTime and EndTime must be within 30 days.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T20:00:00Z'."\n", 'title' => ''], ], [ - 'name' => 'Template', + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of stream pulling in UTC. The interval between StartTime and EndTime must be within 30 days, and EndTime must be later than the current time.', 'type' => 'string', 'required' => true, 'example' => '2017-10-10T22:00:00Z'."\n", 'title' => ''], + ], + [ + 'name' => 'DomainSwitch', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the template.'."\n" + 'description' => 'The domain name statistics switch. Valid values:'."\n" ."\n" - .'> Record the template name. The template name is required if you want to use, query, or delete the template.'."\n", + .'- on: enables domain name-level statistics.'."\n" + .'- off: user-level data. User-level data is collected by default.', + 'enumValueTitles' => ['off' => 'user-level data.', 'on' => 'enables domain name-level statistics.'], 'type' => 'string', - 'required' => true, - 'example' => 'TestTemplate', + 'required' => false, + 'enum' => ['on', 'off'], + 'example' => 'on', + 'title' => '', ], ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The stream ingest data.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '0D715397-2E66-4AE1-694h-C546628AD145', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '6CFDE7AB-571A-14EA-B072-989FF753****'."\n", 'title' => ''], + 'DescribeUpPeakPublishStreamDatas' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DescribeUpPeakPublishStreamData' => [ + 'description' => 'The daily peak concurrent stream ingest data.', + 'type' => 'array', + 'items' => [ + 'description' => 'The daily peak concurrent stream ingest data.', + 'type' => 'object', + 'properties' => [ + 'QueryTime' => ['description' => 'The queried daily time. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2017-10-10T20:10:00Z'."\n", 'title' => ''], + 'BandWidth' => ['description' => 'The daily peak upstream bandwidth.', 'type' => 'string', 'example' => '777.2727083333333', 'title' => ''], + 'StatName' => ['description' => 'The name of the statistics attribute. When DomainSwitch is set to on, the live streaming domain name is displayed. When DomainSwitch is set to off or is not specified, the user ID is displayed.', 'type' => 'string', 'example' => 'push-live.aliyuncs.com', 'title' => ''], + 'PeakTime' => ['description' => 'The peak time of the daily peak number of concurrent ingest streams. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ssZ format. The time is displayed in UTC.', 'type' => 'string', 'example' => '2017-10-10T20:10:00Z'."\n" + ."\n", 'title' => ''], + 'PublishStreamNum' => ['description' => 'The daily peak number of concurrent ingest streams.', 'type' => 'integer', 'format' => 'int32', 'example' => '36', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'TemplateAlreadyExist', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CustomTemplateInvalid', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'The specified StartTime is invalid.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 404 => [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0D715397-2E66-4AE1-694h-C546628AD145\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0D715397-2E66-4AE1-694h-C546628AD145\\n","errorExample":""}]', - 'title' => 'CreateCustomTemplate', - 'description' => 'After you call this operation to create a custom template, record the template name. When you call the [CreateMixStream](~~2848087~~) operation to create a stream mixing task, you can set the MixStreamTemplate parameter to the name of the custom template. This way, you can use the custom template for stream mixing.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '**Fields of the CustomTemplate parameter**'."\n" - ."\n" - .'|Field|Type|Required|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|height|String|Yes|The height of the output resolution.If you set the scale field to 16:9, a maximum resolution of 1920 × 1080 is supported.If you set the scale field to 4:3, a maximum resolution of 1440 × 1080 is supported.|'."\n" - .'|scale|String|Yes|The aspect ratio. Valid values:\\[3:4\\]\\[4:3\\]\\[16:9\\]\\[9:16\\]|'."\n" - .'|bframes|String|Yes|The number of B-frames of the output stream. The value must be greater than 0 and less than 9.|'."\n" - .'|cdesc|String|Yes|The encoding format. Set the value to h264.|'."\n" - .'|gop|String|Yes|The keyframe interval. The value must be greater than 25 but less than 250.|', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteCustomTemplate' => [ - 'summary' => 'Deletes a custom stream mixing template.', - 'methods' => [ - 'post', - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6CFDE7AB-571A-14EA-B072-989FF753****\\\\n\\",\\n \\"DescribeUpPeakPublishStreamDatas\\": {\\n \\"DescribeUpPeakPublishStreamData\\": [\\n {\\n \\"QueryTime\\": \\"2017-10-10T20:10:00Z\\\\n\\",\\n \\"BandWidth\\": \\"777.2727083333333\\",\\n \\"StatName\\": \\"push-live.aliyuncs.com\\",\\n \\"PeakTime\\": \\"2017-10-10T20:10:00Z\\\\n\\\\n\\",\\n \\"PublishStreamNum\\": 36\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'Query daily peak concurrent upstream ingest streams', + 'description' => 'Calls the operation to query the daily peak number of concurrent upstream ingest streams for a user.'."\n" + .'## QPS limit'."\n" + .'The QPS limit for a single user on this operation is 10 calls per second. If this limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately. For more information, see [QPS limit](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeUpPeakPublishStreamData'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeUpPeakPublishStreamData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'DisableLiveRealtimeLogDelivery' => [ + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '106913', - 'abilityTreeNodes' => [ - 'FEATUREliveI16NIW', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Template', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the template that you want to delete. The value is a string.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'TestTemplate', - ], + 'schema' => ['description' => 'The streaming domain for which to pause real-time log delivery. To specify multiple domain names, separate them with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ @@ -46384,102 +36647,100 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'BC1E78D3-FA8B-4457-DEE2-6093E1232254', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CustomTemplateInvalid', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], ], 404 => [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'Domain.NotFound', 'errorMessage' => 'Domain not found', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BC1E78D3-FA8B-4457-DEE2-6093E1232254\\"\\n}","errorExample":""},{"type":"xml","example":"\\n BC1E78D3-FA8B-4457-DEE2-6093E1232254\\n","errorExample":""}]', - 'title' => 'DeleteCustomTemplate', - 'description' => 'Obtain the name of the custom stream mixing template that you want to delete, and then call this operation to delete the template.'."\n" + 'title' => 'DisableLiveRealtimeLogDelivery', + 'summary' => 'Call DisableLiveRealtimeLogDelivery to pause real-time log delivery for a domain name.', + 'description' => 'This operation pauses real-time log delivery for a specified streaming domain. Before you call this operation, you must specify a streaming domain that has real-time log delivery enabled. Currently, this feature is available only for streaming domains. To push upstream real-time logs from an ingest domain, you must [submit a ticket](https://workorder.console.aliyun.com/console.htm#/ticket/add?productCode=live\\&commonQuestionId=4545\\&isSmart=true\\&iatraceid=1608439120675-2a5c48de0b84805313c708\\&channel=selfservice). Currently, this feature is available only for streaming domains. To push upstream real-time logs from an ingest domain, you must [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'A single user can make up to 6,000 queries per second (QPS) to this API. If you exceed this limit, API calls are throttled, which can affect your business. We recommend that you call this API at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'GetCustomTemplate' => [ - 'summary' => 'Queries the information about a custom stream mixing template.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '## Special error codes'."\n" + ."\n" + .'|HTTP status code|Error code|Description|'."\n" + .'|---|---|---|'."\n" + .'|403|Unauthorized|The error message returned because you are not authorized to use Log Service.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DisableLiveRealtimeLogDelivery'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:DisableLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB87556CA7\\"\\n}","type":"json"}]', + ], + 'DynamicUpdateWaterMarkStreamRule' => [ + 'summary' => 'Dynamically updates a watermark.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveI16NIW', - ], + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Template', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the custom template that you want to query. The value is a string.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'TestTemplate', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'pull.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'App', + 'in' => 'query', + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'Stream', + 'in' => 'query', + 'schema' => ['description' => 'The name of the watermarked stream.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'TemplateId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the watermark template. Call the [DescribeLiveStreamWatermarks](~~2848102~~) operation to get the IDs of available watermark templates.'."\n" + ."\n" + .'> The TemplateId parameter is used to replace the watermark template ID during a live stream.', 'type' => 'string', 'required' => true, 'example' => '749b7594-86d6-37b1-513b-e1e19845****', 'title' => ''], ], ], 'responses' => [ @@ -46487,112 +36748,85 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'BC1E78D3-FA8B-4457-DEE2-6093E1232254', - ], - 'CustomTemplate' => [ - 'description' => 'The configurations of the template.'."\n", - 'type' => 'string', - 'example' => '{height:1080,scale:[16:9],gop:60,bframes:30,cdesc:h264}', - ], - 'Template' => [ - 'description' => 'The name of the template.'."\n", - 'type' => 'string', - 'example' => 'TestTemplate', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'BE9407FF-F897-4DBD-338D-98A750AD805F', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CustomTemplateInvalid', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BC1E78D3-FA8B-4457-DEE2-6093E1232254\\",\\n \\"CustomTemplate\\": \\"{height:1080,scale:[16:9],gop:60,bframes:30,cdesc:h264}\\",\\n \\"Template\\": \\"TestTemplate\\"\\n}","errorExample":""},{"type":"xml","example":"\\n BC1E78D3-FA8B-4457-DEE2-6093E1232254\\n {height:1080,scale:[16:9],gop:60,bframes:30,cdesc:h264}\\n \\n","errorExample":""}]', - 'title' => 'GetCustomTemplate', - 'description' => 'Obtain the name of the custom stream mixing template, and then call this operation to query the information about the template.'."\n" + 'title' => 'DynamicUpdateWaterMarkStreamRule', + 'description' => 'Dynamically updating a watermark involves replacing the watermark template ID during a live stream. Before you call this operation, you must obtain the ID of the watermark template that you want to use. To obtain the IDs of available watermark templates, call the [DescribeLiveStreamWatermarks](~~2848102~~) operation.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'GetAllCustomTemplates' => [ - 'summary' => 'Queries all custom stream mixing templates.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DynamicUpdateWaterMarkStreamRule'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:DynamicUpdateWaterMarkStreamRule', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"BE9407FF-F897-4DBD-338D-98A750AD805F\\"\\n}","type":"json"}]', + ], + 'EditPlaylist' => [ + 'summary' => 'Edits a playlist.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveI16NIW', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'UserId', + 'name' => 'ProgramId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '25346073170691****', - ], + 'schema' => ['description' => 'The playlist ID. If you add playlist items by calling the [AddPlaylistItems](~~2848078~~) operation, use the ProgramId value returned by the call.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + [ + 'name' => 'ProgramItems', + 'in' => 'query', + 'schema' => ['description' => 'The list of playlist items. This is a JSON string. For more information, see **InputProgramItem**.', 'type' => 'string', 'required' => true, 'example' => '[{"ItemName":"item1","ResourceType":"vod","ResourceValue":"5f8809f2-3352-4d1f-a8f7-86f9429f****"}, {"ItemName": "item2","ResourceType": "vod","ResourceValue": "e7411c0b-dd98-4c61-a545-f8bfba6c****"}]', 'title' => ''], + ], + [ + 'name' => 'ProgramConfig', + 'in' => 'query', + 'schema' => ['description' => 'The playlist configuration. For more information, see **ProgramConfig**.', 'type' => 'string', 'required' => false, 'example' => '[{"RepeatNumber":"0","ProgramName":"my program"}]', 'title' => ''], ], ], 'responses' => [ @@ -46600,74 +36834,120 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'CustomTemplates' => [ - 'description' => 'The template names and template configurations returned.'."\n", - 'type' => 'string', - 'example' => ' [{"templateConfig": "{\\"cdesc\\":\\"H264\\",\\"scale\\":\\"[3:4]\\",\\"gop\\":\\"1\\",\\"bframes\\":\\"1\\",\\"height\\":\\"1080\\"}","templateName": "custom1"},{"templateConfig": "{\\"ar\\":\\"44100\\",\\"cdesc\\":\\"H264\\",\\"scale\\":\\"[3:4]\\",\\"gop\\":\\"1\\",\\"bframes\\":\\"1\\",\\"height\\":\\"1080\\"}","templateName": "cus"}]', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '4791648Q-813C-6254-865C-0ED913661230', + 'CasterId' => ['description' => 'The ID of the production studio. Use this ID as a request parameter to add a callback or a virtual studio layout.', 'type' => 'string', 'example' => '0e94d1f4-1a65-445c-9dcf-de8b3b8d****', 'title' => ''], + 'Items' => [ + 'description' => 'The list of added playlist items.', + 'type' => 'object', + 'properties' => [ + 'FailedItems' => [ + 'description' => 'The list of playlist items that failed to be added.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of playlist items that failed to be added.', + 'type' => 'object', + 'properties' => [ + 'ItemId' => ['description' => 'The ID of the playlist item.', 'type' => 'string', 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', 'title' => ''], + 'ItemName' => ['description' => 'The name of the playlist item.', 'type' => 'string', 'example' => 'item2', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'SuccessItems' => [ + 'description' => 'The list of playlist items that were successfully added.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of successfully added items.', + 'type' => 'object', + 'properties' => [ + 'ItemId' => ['description' => 'The ID of the playlist item.', 'type' => 'string', 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', 'title' => ''], + 'ItemName' => ['description' => 'The name of the playlist item.', 'type' => 'string', 'example' => 'item1', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', ], + 'ProgramId' => ['description' => 'The playlist ID. Use this ID as a request parameter to delete, query, start, or stop the playlist.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CustomTemplateInvalid', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidProgramId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ProgramId is invalid, please check and try again.'], + ['errorCode' => 'PlayListIsEmpty', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Playlist is empty, please check and try again.'], + ['errorCode' => 'MissInputParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectPlaylistStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The Playlist is in use, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], 404 => [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'PlayListNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'PlayList does not exist, please check and try again.'], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"CustomTemplates\\": \\" [{\\\\\\"templateConfig\\\\\\": \\\\\\"{\\\\\\\\\\\\\\"cdesc\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"H264\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"scale\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"[3:4]\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"gop\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"bframes\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"height\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1080\\\\\\\\\\\\\\"}\\\\\\",\\\\\\"templateName\\\\\\": \\\\\\"custom1\\\\\\"},{\\\\\\"templateConfig\\\\\\": \\\\\\"{\\\\\\\\\\\\\\"ar\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"44100\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"cdesc\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"H264\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"scale\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"[3:4]\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"gop\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"bframes\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"height\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1080\\\\\\\\\\\\\\"}\\\\\\",\\\\\\"templateName\\\\\\": \\\\\\"cus\\\\\\"}]\\",\\n \\"RequestId\\": \\"4791648Q-813C-6254-865C-0ED913661230\\"\\n}","errorExample":""},{"type":"xml","example":"\\n [{\\"templateConfig\\": \\"{\\\\\\"cdesc\\\\\\":\\\\\\"H264\\\\\\",\\\\\\"scale\\\\\\":\\\\\\"[3:4]\\\\\\",\\\\\\"gop\\\\\\":\\\\\\"1\\\\\\",\\\\\\"bframes\\\\\\":\\\\\\"1\\\\\\",\\\\\\"height\\\\\\":\\\\\\"1080\\\\\\"}\\",\\"templateName\\": \\"custom1\\"},{\\"templateConfig\\": \\"{\\\\\\"ar\\\\\\":\\\\\\"44100\\\\\\",\\\\\\"cdesc\\\\\\":\\\\\\"H264\\\\\\",\\\\\\"scale\\\\\\":\\\\\\"[3:4]\\\\\\",\\\\\\"gop\\\\\\":\\\\\\"1\\\\\\",\\\\\\"bframes\\\\\\":\\\\\\"1\\\\\\",\\\\\\"height\\\\\\":\\\\\\"1080\\\\\\"}\\",\\"templateName\\": \\"cus\\"}]\\n 4791648Q-813C-6254-865C-0ED913661230\\n","errorExample":""}]', - 'title' => 'GetAllCustomTemplates', - 'description' => 'You can call this operation to query all custom stream mixing templates. A list of template names and template configurations is returned.'."\n" + 'title' => 'EditPlaylist', + 'description' => 'This operation performs a full edit. You can use this operation to edit configuration information or replace multiple playlist items.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', + .'The queries per second (QPS) limit for a single user is 10 calls per second. If you exceed this limit, your API calls are throttled. This throttling can affect your business. Call this API within the specified limit.', + 'requestParamsDescription' => '### InputProgramItem'."\n" + ."\n" + .'| Parameter | Example | Type | Description |'."\n" + .'| ------------- | ------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------- |'."\n" + .'| ItemName | item1 | String | The name of the playlist item. |'."\n" + .'| ResourceType | vod | String | The resource type. The only valid value is **vod**, which indicates a Video-on-Demand (VOD) resource. |'."\n" + .'| ResourceValue | 5f8809f2-3352-4d1f-a8f7-86f9429f**** | String | The ID of the resource. |'."\n" + ."\n" + .'### ProgramConfig'."\n" + ."\n" + .'| Parameter | Example | Type | Description |'."\n" + .'| ------------ | --------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| RepeatNumber | 0 | Integer | The number of times to repeat the playlist after it finishes playing. Valid values: **0** (default): The playlist does not repeat. **-1**: The playlist loops indefinitely. Any other positive integer: The number of times to repeat the playlist. |'."\n" + .'| ProgramName | myprogram | String | The name of the playlist. |', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddLiveStreamWatermark' => [ - 'summary' => 'Creates a watermark template.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EditPlaylist'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:EditPlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"0e94d1f4-1a65-445c-9dcf-de8b3b8d****\\",\\n \\"Items\\": {\\n \\"FailedItems\\": [\\n {\\n \\"ItemId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ItemName\\": \\"item2\\"\\n }\\n ],\\n \\"SuccessItems\\": [\\n {\\n \\"ItemId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ItemName\\": \\"item1\\"\\n }\\n ]\\n },\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'EditShowAndReplace' => [ + 'summary' => 'Adds a video editing job.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -46675,161 +36955,183 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Type', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the watermark. Valid values:'."\n" - ."\n" - .'* **0**: image.'."\n" - .'* **1**: text. Only image watermarks are supported.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '0', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of a production studio in the list on the Cloud Production Studio page is its ID.', 'type' => 'string', 'required' => true, 'example' => '53200b81-b761-4c10-842a-a0726d97****', 'title' => ''], ], [ - 'name' => 'Name', + 'name' => 'ShowId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the watermark.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'livewatermark****', - ], + 'schema' => ['description' => 'The ID of the show that you want to edit.'."\n" + ."\n" + .'> Obtain the ShowId value from the response parameters of the [AddShowIntoShowList](~~2848051~~) operation.', 'type' => 'string', 'required' => true, 'example' => '42200b81-b761-4c10-842a-a0726d97****', 'title' => ''], ], [ - 'name' => 'RefWidth', + 'name' => 'UserData', 'in' => 'query', - 'schema' => [ - 'description' => 'The width of the background video. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '1920', - ], + 'schema' => ['description' => 'The user information.', 'type' => 'string', 'required' => false, 'example' => '900a2b2r8-13c2-****-88f2-75e4a07c1ed9', 'title' => ''], ], [ - 'name' => 'RefHeight', + 'name' => 'StorageInfo', 'in' => 'query', - 'schema' => [ - 'description' => 'The height of the background video. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '1080', - ], + 'schema' => ['description' => 'The storage information. Description:'."\n" + ."\n" + .'- **StorageLocation**: The storage address for the video-on-demand (VOD) file.'."\n" + ."\n" + .'- **FileName**: The custom file name.'."\n" + ."\n" + .'> The storage address for the edited video must be a VOD storage address that is under the same account. To obtain a VOD storage address, see [Storage management](~~86097~~).', 'type' => 'string', 'required' => false, 'example' => '{ "StorageLocation":"***bucket***", "FileName":"EditFile****.mp4" }', 'title' => ''], ], [ - 'name' => 'XOffset', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the watermark along the x-axis. Unit: pixels.'."\n" - ."\n" - .'> In this case, the value of the RefWidth parameter is used as the reference. If the OffsetCorner parameter is set to TopLeft, the value of the XOffset parameter indicates the x-axis offset of the upper-left corner of the watermark relative to that of the background video. The directions from the coordinate axes to the center of the background video are positive. In other words, the x-axis is positive toward the right.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => true, - 'example' => '50.0', - ], + 'schema' => ['description' => 'The start time of the clip. Unit: seconds.'."\n" + ."\n" + .'> - The value must be between 0 and the total duration of the show. The default value is 0.0. This means the clip starts from the beginning of the VOD file.'."\n" + .'>'."\n" + .'> - For example, to clip a VOD file from the 2-second mark to the 5-second mark, set StartTime to 2.0 and EndTime to 5.0.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '2.0', 'title' => ''], ], [ - 'name' => 'YOffset', + 'name' => 'EndTime', 'in' => 'query', + 'schema' => ['description' => 'The end time of the clip. Unit: seconds.'."\n" + ."\n" + .'> - The value must be between 0 and the total duration of the show.'."\n" + .'>'."\n" + .'> - By default, the clip ends at the end of the VOD file. The value cannot exceed the total duration of the show.'."\n" + .'>'."\n" + .'> - For example, to clip a VOD file from the 2-second mark to the 5-second mark, set StartTime to 2.0 and EndTime to 5.0.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '5.0', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The offset of the watermark along the y-axis. Unit: pixels.'."\n" - ."\n" - .'> In this case, the value of the RefHeight parameter is used as the reference. If the OffsetCorner parameter is set to TopLeft, the value of the YOffset parameter indicates the y-axis offset of the upper-left corner of the watermark relative to that of the background video. The directions from the coordinate axes to the center of the background video are positive. In other words, the y-axis is positive downward.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => true, - 'example' => '100.0', + 'type' => 'object', + 'properties' => [ + 'JobInfo' => ['description' => 'The information about the job. It includes the following parameters:'."\n" + ."\n" + .'- **vodId**: The ID of the VOD file.'."\n" + ."\n" + .'- **mediaid**: The ID of the media file.'."\n" + ."\n" + .'- **jobId**: The ID of the job.', 'type' => 'string', 'example' => '{ "vodId": "3e34733b40b9a96ccf5c1ff6f69****", "mediaid": "eb1861d2c9a842340e989dd56****", "jobId": "7d2fbc380b0e08e55fe98733764****" }', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidVodUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter VodUrl is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], [ - 'name' => 'Height', - 'in' => 'query', - 'schema' => [ - 'description' => 'The height of the watermark. Unit: pixels. The height of the watermark is scaled in proportion to the height of the background video.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '200', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'RequestForbiddenForIce', 'errorMessage' => '%s, please try again later.', 'description' => ''], ], [ - 'name' => 'Transparency', - 'in' => 'query', - 'schema' => [ - 'description' => 'The transparency of the watermark. A smaller value indicates a more transparent watermark. Valid values: 0 to 255.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '255', - ], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidShowList.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ShowList does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'EditShowAndReplace', + 'description' => 'This operation adds a video editing job. You must specify a CasterId and a ShowId. You will not be notified when the video editing job is successfully added. To query the job status, call the [GetEditingJobInfo](~~2848059~~) operation.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per second. If you exceed this limit, API calls are throttled, which can affect your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EditShowAndReplace'], ], + ], + 'ramActions' => [ [ - 'name' => 'OffsetCorner', - 'in' => 'query', - 'schema' => [ - 'description' => 'The location of the watermark. Valid values:'."\n" - ."\n" - .'* TopLeft: the upper-left corner.'."\n" - .'* TopRight: the upper-right corner.'."\n" - .'* BottomLeft: the lower-left corner.'."\n" - .'* BottomRight: the lower-right corner.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'TopRight', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:EditShowAndReplace', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobInfo\\": \\"{ \\\\\\"vodId\\\\\\": \\\\\\"3e34733b40b9a96ccf5c1ff6f69****\\\\\\", \\\\\\"mediaid\\\\\\": \\\\\\"eb1861d2c9a842340e989dd56****\\\\\\", \\\\\\"jobId\\\\\\": \\\\\\"7d2fbc380b0e08e55fe98733764****\\\\\\" }\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'EffectCasterUrgent' => [ + 'summary' => 'Switches a production studio to the standby resource.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ [ - 'name' => 'PictureUrl', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the watermark image.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://example.com', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Description', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The description of the watermark.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'my watermark', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created a production studio by calling the [CreateCaster](~~2848009~~) operation, use the returned CasterId value.'."\n" + ."\n" + .'- If you created a production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to obtain the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'SceneId', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.aliyundoc.com', - ], + 'schema' => ['description' => 'The ID of the scene. This parameter is valid only for PGM scenes.'."\n" + ."\n" + .'Call the [DescribeCasterScenes](~~2848039~~) operation to query the scene ID of the production studio.', 'type' => 'string', 'required' => true, 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', 'title' => ''], ], ], 'responses' => [ @@ -46837,52 +37139,71 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'TemplateId' => [ - 'description' => 'The ID of the watermark template.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b96****', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidSceneId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is idle, please check and try again.'], + ['errorCode' => 'IncorrectChannel.Disable', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The Channel is in a non-settable state, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidUrgentMaterial.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The spare material does not exist. Please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"TemplateId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n5c6a2a0df228-4a64- af62-20e91b9676b3\\n445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'AddLiveStreamWatermark', - 'description' => '* You can call this operation to create a watermark template and configure information such as the watermark content and layout in the template.'."\n" - .'* After you create a watermark template, you must also call the [AddLiveStreamWatermarkRule](~~2848100~~) operation to add a watermark rule. A live stream in progress can contain the watermark only after the stream is re-ingested.'."\n" + 'title' => 'EffectCasterUrgent', + 'description' => 'You can call this operation to urgently switch a specified scene to the standby video. This operation applies only to Program (PGM) scenes.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 10 per user. If you exceed this limit, API calls are throttled, which may impact your business.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - 'translator' => 'machine', - ], - 'DeleteLiveStreamWatermark' => [ - 'summary' => 'Deletes a specified watermark template.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EffectCasterUrgent'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:EffectCasterUrgent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","type":"json"}]', + ], + 'EffectCasterVideoResource' => [ + 'summary' => 'Update the standby video of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -46890,34 +37211,37 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'TemplateId', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the watermark template.'."\n" - ."\n" - .'> You can obtain the template ID by checking the value of the TemplateId parameter that is returned by the [AddLiveStreamWatermark](~~410759~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio using the [CreateCaster](~~2848009~~) operation, use the CasterId value from the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, find the ID on the **Production Studio** > **Cloud Production Studio** page.'."\n" + ."\n" + .'> The name of the production studio in the list is the ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], + ], + [ + 'name' => 'SceneId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the scenario.', 'type' => 'string', 'required' => true, 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', 'title' => ''], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the resource. To get this ID, call the [DescribeCasterChannels](~~2848046~~) operation and check the ResourceId value in the response.', 'type' => 'string', 'required' => true, 'example' => 'f096e8d6-0319-4c96-82bc-ecbc79cf****', 'title' => ''], ], ], 'responses' => [ @@ -46925,42 +37249,69 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b******', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'IncorrectSceneStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is idle, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.ConfigError', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene configuration error, please check and try again.'], + ['errorCode' => 'InvalidResourceId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ResourceId is invalid, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidSceneId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b******\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 5c6a2a0df228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'DeleteLiveStreamWatermark', - 'description' => 'This interface supports deleting the watermark template with the specified TemplateId for live streaming. '."\n" - .'## QPS Limitation'."\n" - .' The per-user QPS limit for this interface is 60 times/second. Exceeding this limit will result in API throttling, which may impact your business operations. Please use it reasonably. For more information, please refer to [QPS Limitation](~~343507~~).', + 'title' => 'EffectCasterVideoResource', + 'description' => 'This operation adds a video resource to a specified scenario. The resource becomes active when it is referenced by the scenario.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for each user is 10. If you exceed this limit, API calls are throttled. Throttling may affect your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'UpdateLiveStreamWatermark' => [ - 'summary' => 'Updates a watermark template.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EffectCasterVideoResource'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:EffectCasterVideoResource', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","type":"json"}]', + ], + 'EnableLiveRealtimeLogDelivery' => [ + 'summary' => 'Call the EnableLiveRealtimeLogDelivery operation to enable real-time log delivery for a domain name.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -46971,146 +37322,153 @@ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'TemplateId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the watermark template.'."\n" - ."\n" - .'> You can obtain the template ID by checking the value of the TemplateId parameter that is returned by the [AddLiveStreamWatermark](~~410759~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The streaming domain for which you want to enable real-time log delivery.'."\n" + ."\n" + .'Separate multiple domain names with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], - [ - 'name' => 'Name', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the watermark.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'livewatermark****', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'Domain.NotFound', 'errorMessage' => 'Domain not found', 'description' => ''], + ], + ], + 'title' => 'EnableLiveRealtimeLogDelivery', + 'description' => 'Currently, you can configure only streaming domains. To deliver real-time logs for ingest domains, [submit a ticket](https://workorder.console.aliyun.com/console.htm#/ticket/add?productCode=live\\&commonQuestionId=4545\\&isSmart=true\\&iatraceid=1608439120675-2a5c48de0b84805313c708\\&channel=selfservice). Currently, you can configure only streaming domains. To deliver real-time logs for ingest domains, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 6,000 calls per minute. If you exceed the limit, API calls are throttled, which can affect your business. Call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Special error codes'."\n" + ."\n" + .'|Error code|HTTP status code|Description|'."\n" + .'|---|---|---|'."\n" + .'|Unauthorized|403|The error message returned because you are not authorized to use Log Service.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EnableLiveRealtimeLogDelivery'], + ], + ], + 'ramActions' => [ [ - 'name' => 'Description', - 'in' => 'query', - 'schema' => [ - 'description' => 'The description of the watermark.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'my watermark', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:EnableLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB87556CA7\\"\\n}","type":"json"}]', + ], + 'ForbidLiveStream' => [ + 'summary' => 'Disables stream ingest for a specified stream. You can preset a time to resume the stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'RefWidth', - 'in' => 'query', - 'schema' => [ - 'description' => 'The width of the background video. Unit: pixel.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1920', - ], + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'RefHeight', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The height of the background video. Unit: pixel.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1080', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'XOffset', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the watermark along the x-axis. Unit: pixel.'."\n" - ."\n" - .'> In this case, the value of the RefWidth parameter is used as the reference. If the OffsetCorner parameter is set to TopLeft, the value of the XOffset parameter indicates the x-axis offset of the upper-left corner of the watermark relative to that of the background video. The directions from the coordinate axes to the center of the background video are positive. In other words, the x-axis is positive toward the right.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '50.0', - ], + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'YOffset', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the watermark along the y-axis. Unit: pixel.'."\n" - ."\n" - .'> In this case, the value of the RefHeight parameter is used as the reference. If the OffsetCorner parameter is set to TopLeft, the value of the YOffset parameter indicates the y-axis offset of the upper-left corner of the watermark relative to that of the background video. The directions from the coordinate axes to the center of the background video are positive. In other words, the y-axis is positive downward.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '100.0', - ], + 'schema' => ['description' => 'The name of the application to which the ingest stream belongs. You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'Height', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The height of the watermark. Unit: pixel. The height of the watermark is scaled in proportion to the height of the background video.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '200', - ], + 'schema' => ['description' => 'The name of the ingest stream. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'Transparency', + 'name' => 'LiveStreamType', 'in' => 'query', 'schema' => [ - 'description' => 'The transparency of the watermark. A smaller value indicates a more transparent watermark. Valid values: 0 to 255.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '255', + 'description' => 'Specifies whether to disable stream ingest or streaming. Currently, only disabling stream ingest is supported: **publisher**.', + 'enumValueTitles' => ['publisher' => 'Stream ingest.'], + 'type' => 'string', + 'required' => true, + 'enum' => ['publisher'], + 'example' => 'publisher', + 'title' => '', ], ], [ - 'name' => 'OffsetCorner', + 'name' => 'Oneshot', 'in' => 'query', 'schema' => [ - 'description' => 'The position of the watermark. Valid values:'."\n" + 'description' => 'Specifies whether to only interrupt the stream without adding it to the blacklist. Valid values:'."\n" + ."\n" + .'- **yes**: Only interrupts the stream without adding it to the blacklist (supports upstream ingest or upstream streaming).'."\n" ."\n" - .'* TopLeft: the upper-left corner.'."\n" - .'* TopRight: the upper-right corner.'."\n" - .'* BottomLeft: the lower-left corner.'."\n" - .'* BottomRight: the lower-right corner.'."\n", + .'- **no**: Interrupts the stream and adds it to the blacklist.'."\n" + ."\n" + .'> Default value: no.', + 'enumValueTitles' => ['no' => 'Interrupts the stream and adds it to the blacklist.', 'yes' => 'Only interrupts the stream without adding it to the blacklist.'], 'type' => 'string', 'required' => false, - 'example' => 'TopRight', + 'enum' => ['yes', 'no'], + 'example' => 'yes', + 'title' => '', ], ], [ - 'name' => 'PictureUrl', + 'name' => 'ResumeTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the watermark image.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://example.com', - ], + 'schema' => ['description' => 'The time to resume the stream. Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n" + ."\n" + .'> - If the **Oneshot** parameter is set to **no** and ResumeTime is not specified, the live stream is disabled for 6 months by default.'."\n" + .'> - If a value is specified, the restriction is lifted at the time specified by ResumeTime and the live stream is resumed.', 'type' => 'string', 'required' => false, 'example' => '2015-12-01T10:37:00Z', 'title' => ''], ], ], 'responses' => [ @@ -47118,109 +37476,79 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b9676b3', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16BFE188-B193-4C3C-ADC5-79A7E31486EA', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidResumeTime.Malformed', 'errorMessage' => 'Specified parameter ResumeTime is not valid.', 'description' => ''], + ['errorCode' => 'QuotaExceeded.Blacklist', 'errorMessage' => 'Exceed max blacklist count limit', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b9676b3\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 5c6a2a0df228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'UpdateLiveStreamWatermark', - 'description' => 'This operation allows you to modify the parameters of a watermark template with a specified ID.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16BFE188-B193-4C3C-ADC5-79A7E31486EA\\"\\n}","type":"json"}]', + 'title' => 'Disable a live stream', + 'description' => 'Calls this operation to disable stream ingest for a specified stream. You can preset a time to resume the stream. If no preset time is specified, call the [ResumeLiveStream](~~2847831~~) operation to resume the live stream. This operation currently supports only publisher (streamer ingest).'."\n" ."\n" - .'## QPS limit'."\n" + .'> - This operation disables live streams by adding them to a blacklist. The upper limit is 10,000 streams. If this limit is exceeded, the disable operation fails. Monitor the number of currently disabled streams. Call the [DescribeLiveStreamsBlockList](~~2847825~~) operation to query the number of disabled streams.'."\n" + .'> - If you only interrupt a live stream without adding it to the blacklist, the stream does not count toward the 10,000-stream blacklist quota.'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DynamicUpdateWaterMarkStreamRule' => [ - 'summary' => 'Dynamically updates a watermark.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + .'The maximum queries per second (QPS) per user for this operation is 20. If this limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ForbidLiveStream'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ForbidLiveStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'GetAllCustomTemplates' => [ + 'summary' => 'Retrieves all custom stream mix templates.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATUREliveI16NIW'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'pull.aliyundoc.com', - ], - ], - [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'Stream', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the stream that contains the watermark.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'TemplateId', + 'name' => 'UserId', 'in' => 'query', - 'schema' => [ - 'description' => 'The watermark template ID. You can call the [DescribeLiveStreamWatermarks](~~2848102~~) operation to obtain available watermark template IDs.'."\n" - ."\n" - .'> The TemplateId parameter is used to replace the watermark template ID during live streaming.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '749b7594-86d6-37b1-513b-e1e19845****', - ], + 'schema' => ['description' => 'The user ID.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => '25346073170691****'], ], ], 'responses' => [ @@ -47228,45 +37556,63 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'BE9407FF-F897-4DBD-338D-98A750AD805F', - ], + 'CustomTemplates' => ['description' => 'A list of template names and template configurations.', 'type' => 'string', 'title' => '', 'example' => ' [{"templateConfig": "{\\"cdesc\\":\\"H264\\",\\"scale\\":\\"[3:4]\\",\\"gop\\":\\"1\\",\\"bframes\\":\\"1\\",\\"height\\":\\"1080\\"}","templateName": "custom1"},{"templateConfig": "{\\"ar\\":\\"44100\\",\\"cdesc\\":\\"H264\\",\\"scale\\":\\"[3:4]\\",\\"gop\\":\\"1\\",\\"bframes\\":\\"1\\",\\"height\\":\\"1080\\"}","templateName": "cus"}]'], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '4791648Q-813C-6254-865C-0ED913661230'], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'CustomTemplateInvalid', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The custom template is invalid, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"BE9407FF-F897-4DBD-338D-98A750AD805F\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\nBE9407FF-F897-4DBD-338D-98A750AD805F\\r\\n","errorExample":""}]', - 'title' => 'DynamicUpdateWaterMarkStreamRule', - 'description' => 'Dynamically updating a watermark means replacing the watermark template ID during live streaming. Before you call this operation to update a watermark, you must prepare the watermark template ID that is used for replacement. The watermark template ID is specified by the **TemplateId** parameter of this operation. You can call the [DescribeLiveStreamWatermarks](~~2848102~~) operation to obtain available watermark template IDs.'."\n" + 'title' => 'GetAllCustomTemplates', + 'description' => 'You can call this operation to retrieve all custom stream mix templates. The operation returns a list of template names and template configurations.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for a single user is 10 calls per second. If this limit is exceeded, throttling is triggered, which may affect your business. We recommend that you are aware of this limit when you call this operation.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamWatermarks' => [ - 'summary' => 'Queries watermark templates.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetAllCustomTemplates'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetAllCustomTemplates', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CustomTemplates\\": \\" [{\\\\\\"templateConfig\\\\\\": \\\\\\"{\\\\\\\\\\\\\\"cdesc\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"H264\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"scale\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"[3:4]\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"gop\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"bframes\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"height\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1080\\\\\\\\\\\\\\"}\\\\\\",\\\\\\"templateName\\\\\\": \\\\\\"custom1\\\\\\"},{\\\\\\"templateConfig\\\\\\": \\\\\\"{\\\\\\\\\\\\\\"ar\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"44100\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"cdesc\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"H264\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"scale\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"[3:4]\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"gop\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"bframes\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"height\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"1080\\\\\\\\\\\\\\"}\\\\\\",\\\\\\"templateName\\\\\\": \\\\\\"cus\\\\\\"}]\\",\\n \\"RequestId\\": \\"4791648Q-813C-6254-865C-0ED913661230\\"\\n}","type":"json"}]', + ], + 'GetCustomTemplate' => [ + 'summary' => 'Retrieves a custom stream mixing template.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -47277,307 +37623,110 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATUREliveI16NIW'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the main streaming domain.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'live.yourdomain.com', - ], - ], - [ - 'name' => 'KeyWord', - 'in' => 'query', - 'schema' => [ - 'description' => 'The keyword used in the query. You can specify the template ID or name. Fuzzy search is supported for the name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - ], - [ - 'name' => 'PageNumber', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'description' => 'The region ID.', 'title' => '', 'example' => 'cn-shanghai'], ], [ - 'name' => 'PageSize', + 'name' => 'Template', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of templates per page. Default value: 100.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '100', - ], + 'schema' => ['description' => 'The name of the custom template that you want to query.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'TestTemplate'], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The information about the watermark template.'."\n", 'type' => 'object', 'properties' => [ - 'Total' => [ - 'description' => 'The total number of watermark templates that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '100', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b9676b3', - ], - 'WatermarkList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Watermark' => [ - 'description' => 'Details of the watermark templates.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Type' => [ - 'description' => 'The watermark type.'."\n" - ."\n" - .'* 0: image. Only image watermarks are supported.'."\n" - .'* 1: text.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'XOffset' => [ - 'description' => 'The offset of the watermark along the x-axis. Unit: pixels.'."\n" - ."\n" - .'> The value of the RefWidth parameter is used as the reference. If the OffsetCorner parameter is set to TopLeft, the value of the XOffset parameter indicates the x-axis offset of the upper-left corner of the watermark relative to that of the background video. The directions from the coordinate axes to the center of the background video are positive. In other words, the x-axis is positive toward the right.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '50.0', - ], - 'RefWidth' => [ - 'description' => 'The width of the background video. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1920', - ], - 'YOffset' => [ - 'description' => 'The offset of the watermark along the y-axis. Unit: pixels.'."\n" - ."\n" - .'> The value of the RefHeight parameter is used as the reference. If the OffsetCorner parameter is set to TopLeft, the value of the YOffset parameter indicates the y-axis offset of the upper-left corner of the watermark relative to that of the background video. The directions from the coordinate axes to the center of the background video are positive. In other words, the y-axis is positive downward.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '100.0', - ], - 'Height' => [ - 'description' => 'The height of the watermark. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '200', - ], - 'RefHeight' => [ - 'description' => 'The height of the background video. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1080', - ], - 'PictureUrl' => [ - 'description' => 'The URL of the watermark image.'."\n", - 'type' => 'string', - 'example' => 'http://example.com', - ], - 'Transparency' => [ - 'description' => 'The transparency of the watermark. A smaller value indicates a more transparent watermark. Valid values: 0 to 255.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '255', - ], - 'Description' => [ - 'description' => 'The description of the watermark.'."\n", - 'type' => 'string', - 'example' => 'my watermark', - ], - 'OffsetCorner' => [ - 'description' => 'The position of the watermark.'."\n" - ."\n" - .'* TopLeft: the upper-left corner.'."\n" - .'* TopRight: the upper-right corner.'."\n" - .'* BottomLeft: the lower-left corner.'."\n" - .'* BottomRight: the lower-right corner.'."\n", - 'type' => 'string', - 'example' => 'TopRight', - ], - 'RuleCount' => [ - 'description' => 'The number of watermark rules configured for the domain name.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '12', - ], - 'Name' => [ - 'description' => 'The name of the watermark.'."\n", - 'type' => 'string', - 'example' => 'livewatermark****', - ], - 'TemplateId' => [ - 'description' => 'The ID of the watermark template.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-4 61d-8f29-4bec2eb9 ****', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => 'BC1E78D3-FA8B-4457-DEE2-6093E1232254'], + 'CustomTemplate' => ['description' => 'The template configuration.', 'type' => 'string', 'title' => '', 'example' => '{height:1080,scale:[16:9],gop:60,bframes:30,cdesc:h264}'], + 'Template' => ['description' => 'The template name.', 'type' => 'string', 'title' => '', 'example' => 'TestTemplate'], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'CustomTemplateInvalid', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The custom template is invalid, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Total\\": 100,\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b9676b3\\",\\n \\"WatermarkList\\": {\\n \\"Watermark\\": [\\n {\\n \\"Type\\": 0,\\n \\"XOffset\\": 50,\\n \\"RefWidth\\": 1920,\\n \\"YOffset\\": 100,\\n \\"Height\\": 200,\\n \\"RefHeight\\": 1080,\\n \\"PictureUrl\\": \\"http://example.com\\",\\n \\"Transparency\\": 255,\\n \\"Description\\": \\"my watermark\\",\\n \\"OffsetCorner\\": \\"TopRight\\",\\n \\"RuleCount\\": 12,\\n \\"Name\\": \\"livewatermark****\\",\\n \\"TemplateId\\": \\"445409ec-7eaa-4 61d-8f29-4bec2eb9 ****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 100\\n 5c6a2a0df228-4a64- af62-20e91b9676b3\\n \\n \\n 0\\n 50\\n 1920\\n 100\\n 200\\n 1080\\n http://example.com\\n 255\\n my watermark\\n TopRight\\n 12\\n livewatermark****\\n 445409ec-7eaa-4 61d-8f29-4bec2eb9 ****\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamWatermarks', - 'description' => 'You can call this operation to query watermark templates. You can use the PageNumber parameter to view results on separate pages. Make sure that you configure parameters properly when you call this operation.'."\n" + 'title' => 'GetCustomTemplate', + 'description' => 'First, obtain the name of the custom template that you want to query. Then, call this operation to retrieve the custom stream mixing template.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 10 per user. If you exceed this limit, API calls are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'AddLiveStreamWatermarkRule' => [ - 'summary' => 'Adds a watermark rule.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetCustomTemplate'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetCustomTemplate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"BC1E78D3-FA8B-4457-DEE2-6093E1232254\\",\\n \\"CustomTemplate\\": \\"{height:1080,scale:[16:9],gop:60,bframes:30,cdesc:h264}\\",\\n \\"Template\\": \\"TestTemplate\\"\\n}","type":"json"}]', + ], + 'GetEdgeTranscodeJob' => [ + 'summary' => 'Queries the details of an edge transcoding job.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Name', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the custom rule.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'WatermarkRule****', - ], - ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.aliyundoc.com', - ], - ], - [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', - ], - ], - [ - 'name' => 'Stream', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. The following rules apply:'."\n" - ."\n" - .'* A stream name can be exactly matched. Example: liveStreamA.'."\n" - .'* Fuzzy match is also supported. The use of an asterisk (`*`) allows all approximate matches to be found.'."\n" - .'* You can place the asterisk before or after an approximate string.'."\n" - ."\n\n" - ."\n" - .'>* Fuzzy match: Only one asterisk (`*`) before or after an approximate string is allowed. The approximate string must be enclosed in `()`. Separate multiple strings with vertical bars (`|`).'."\n" - .'>* For example, `*(t1|t2)` matches all streams whose name has the `t1` or `t2` suffix, and `(abc|123)*` matches all streams whose name has the `abc` or `123` prefix.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStreamA', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'TemplateId', + 'name' => 'ClusterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the watermark template.'."\n" - ."\n" - .'> You can obtain the template ID by checking the value of the TemplateId parameter that is returned by the [AddLiveStreamWatermark](~~410759~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The data center ID.', 'type' => 'string', 'required' => true, 'example' => '******3b-4d18-395c-8106-ff21a6******', 'title' => ''], ], [ - 'name' => 'Description', + 'name' => 'JobId', 'in' => 'query', - 'schema' => [ - 'description' => 'The description of the custom rule.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'my rule', - ], + 'schema' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'required' => true, 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], ], ], 'responses' => [ @@ -47585,122 +37734,112 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RuleId' => [ - 'description' => 'The ID of the watermark rule.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', + 'Job' => [ + 'description' => 'The edge transcoding job.', + 'type' => 'object', + 'properties' => [ + 'CreateTime' => ['description' => 'The time when the job was created.', 'type' => 'string', 'example' => '2023-07-24T16:44:55Z', 'title' => ''], + 'JobId' => ['description' => 'The job ID.', 'type' => 'string', 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], + 'LastStartAt' => ['description' => 'The time when the job was last started.', 'type' => 'string', 'example' => '2023-07-25T02:48:58Z', 'title' => ''], + 'LastStopAt' => ['description' => 'The time when the job was last stopped.', 'type' => 'string', 'example' => '2023-07-25T05:48:58Z', 'title' => ''], + 'Name' => ['description' => 'The job name.', 'type' => 'string', 'example' => 'my_job', 'title' => ''], + 'Status' => ['description' => 'The status of the transcoding job. Valid values:'."\n" + ."\n" + .'- 0: The job is not started.'."\n" + ."\n" + .'- 1: The job is running.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'StreamInput' => ['description' => 'The input stream URL.', 'type' => 'string', 'example' => 'rtmp://mydomain/app/stream1', 'title' => ''], + 'StreamOutput' => ['description' => 'The output stream URL.', 'type' => 'string', 'example' => 'rtmp://testdomain/app/stream2', 'title' => ''], + 'TemplateId' => ['description' => 'The ID of the edge transcoding template used by the job.', 'type' => 'string', 'example' => '9b1571b513cb44f7a1ba6ae561ff****', 'title' => ''], + 'TemplateName' => ['description' => 'The name of the edge transcoding template used by the job.', 'type' => 'string', 'example' => 'my_template', 'title' => ''], + 'Type' => ['description' => 'The type of edge transcoding. Valid values:'."\n" + ."\n" + .'- common: standard transcoding and Narrowband HD 1.0.'."\n" + ."\n" + .'- nbhd-2: Narrowband HD 2.0.'."\n" + ."\n" + .'- ultra-hd: ultra-high definition.', 'type' => 'string', 'example' => 'common', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], + ], + [ + ['errorCode' => 'JobNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Task does not exist, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RuleId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n5c6a2a0df228-4a64-af62-20e91b9676b3\\n445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'AddLiveStreamWatermarkRule', - 'description' => 'After calling the [AddLiveStreamWatermark](~~469416~~) API to add a watermark template, you can use this interface to add watermark rules. '."\n" - .'## QPS Limit'."\n" - .' The QPS limit for this interface per user is 60 times/second. Exceeding the limit will result in API calls being throttled, which may impact your business. Please use it reasonably. For more information, see [QPS Limit](~~343507~~).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveStreamWatermarkRule' => [ - 'summary' => 'Deletes a watermark rule.', - 'methods' => [ - 'post', - 'get', + 'title' => 'GetEdgeTranscodeJob', + 'description' => 'To call this API operation, you must have permissions for the edge transcoding service.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user on this API is 6,000 calls per minute. API calls that exceed this limit are throttled. This may affect your business. We recommend that you call the API at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetEdgeTranscodeJob'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:GetEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Job\\": {\\n \\"CreateTime\\": \\"2023-07-24T16:44:55Z\\",\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"LastStartAt\\": \\"2023-07-25T02:48:58Z\\",\\n \\"LastStopAt\\": \\"2023-07-25T05:48:58Z\\",\\n \\"Name\\": \\"my_job\\",\\n \\"Status\\": \\"0\\",\\n \\"StreamInput\\": \\"rtmp://mydomain/app/stream1\\",\\n \\"StreamOutput\\": \\"rtmp://testdomain/app/stream2\\",\\n \\"TemplateId\\": \\"9b1571b513cb44f7a1ba6ae561ff****\\",\\n \\"TemplateName\\": \\"my_template\\",\\n \\"Type\\": \\"common\\"\\n },\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'GetEdgeTranscodeTemplate' => [ + 'summary' => 'Queries the details of an edge transcoding template.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.aliyundoc.com', - ], - ], - [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Stream', + 'name' => 'ClusterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the stream. The following matching rules apply:'."\n" - ."\n" - .'* A stream name can be exactly matched, Example: liveStreamA.'."\n" - .'* Fuzzy match is also supported. The use of an asterisk (`*`) allows all approximate matches to be found.'."\n" - .'* You can place the asterisk before or after an approximate string.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* Fuzzy match: Only one asterisk (`*`) before or after an approximate string is allowed. The approximate string must be enclosed in `()`. Separate multiple strings with vertical bars (`|`).'."\n" - ."\n" - .'* For example, `*(t1|t2)` matches all streams whose name has the `t1` or `t2` suffix, and `(abc|123)*` matches all streams whose name has the `abc` or `123` prefix.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStreamA', - ], + 'schema' => ['description' => 'The data center ID.', 'type' => 'string', 'required' => true, 'example' => '******3b-4d18-395c-8106-ff21a6******', 'title' => ''], ], [ - 'name' => 'RuleId', + 'name' => 'TemplateId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the watermark rule.'."\n" - ."\n" - .'> You can obtain the rule ID by checking the value of the RuleId parameter that is returned by the [AddLiveStreamWatermarkRule](~~2848100~~) operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d -8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The template ID.', 'type' => 'string', 'required' => true, 'example' => '****a046-263c-3560-978a-fb287666****', 'title' => ''], ], ], 'responses' => [ @@ -47708,112 +37847,116 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91******', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + 'Template' => [ + 'description' => 'The edge transcoding template.', + 'type' => 'object', + 'properties' => [ + 'Bitrate' => ['description' => 'The bitrate. You can specify a fixed bitrate or set the value to ws to match the bitrate of the source stream.', 'type' => 'string', 'example' => '3000', 'title' => ''], + 'Codec' => ['description' => 'The video encoding format. Valid values:'."\n" + ."\n" + .'- H.264'."\n" + ."\n" + .'- H.265', 'type' => 'string', 'example' => 'H.264', 'title' => ''], + 'CreateTime' => ['description' => 'The time when the template was created.', 'type' => 'string', 'example' => '2023-07-25T02:48:58Z', 'title' => ''], + 'Fps' => ['description' => 'The frame rate. You can specify a fixed frame rate or set the value to ws to match the frame rate of the source stream.', 'type' => 'string', 'example' => '30', 'title' => ''], + 'Gop' => ['description' => 'The group of pictures (GOP) size. You can specify the GOP size in frames or seconds. You can also set the value to ws to match the GOP size of the source stream.', 'type' => 'string', 'example' => '2s', 'title' => ''], + 'Name' => ['description' => 'The template name.', 'type' => 'string', 'example' => 'my_template', 'title' => ''], + 'Resolution' => ['description' => 'The resolution. You can specify a fixed resolution or set the value to ws to match the resolution of the source stream.'."\n" + ."\n" + .'> For a fixed resolution, if you set the width or height to -1 or -2, the dimension is automatically adjusted.', 'type' => 'string', 'example' => '1920*1080', 'title' => ''], + 'TemplateId' => ['description' => 'The template ID.', 'type' => 'string', 'example' => '9b1571b513cb44f7a1ba6ae561ff****', 'title' => ''], + 'Type' => ['description' => 'The type of edge transcoding.', 'type' => 'string', 'example' => 'common', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], + ], + [ + ['errorCode' => 'TemplateNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The template does not exist. Please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91******\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n5c6a2a0df228-4a64- af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'DeleteLiveStreamWatermarkRule', - 'description' => 'You can call this operation to delete a watermark rule with a specified ID.'."\n" + 'title' => 'GetEdgeTranscodeTemplate', + 'description' => '- You can call this operation to query the details of an edge transcoding template.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- You must have permissions to access the edge transcoding service to call this operation.'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'UpdateLiveStreamWatermarkRule' => [ - 'summary' => 'Updates a watermark rule.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 6,000 calls per minute. If you exceed this limit, API calls are throttled, which may affect your business. Call the operation at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetEdgeTranscodeTemplate'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:GetEdgeTranscodeTemplate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"Template\\": {\\n \\"Bitrate\\": \\"3000\\",\\n \\"Codec\\": \\"H.264\\",\\n \\"CreateTime\\": \\"2023-07-25T02:48:58Z\\",\\n \\"Fps\\": \\"30\\",\\n \\"Gop\\": \\"2s\\",\\n \\"Name\\": \\"my_template\\",\\n \\"Resolution\\": \\"1920*1080\\",\\n \\"TemplateId\\": \\"9b1571b513cb44f7a1ba6ae561ff****\\",\\n \\"Type\\": \\"common\\"\\n }\\n}","type":"json"}]', + ], + 'GetEditingJobInfo' => [ + 'summary' => 'Queries information about video editing jobs.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'RuleId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the watermark rule.'."\n" - ."\n" - .'> You can obtain the rule ID by checking the value of the RuleId parameter that is returned by the [AddLiveStreamWatermarkRule](~~2848100~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - ], - [ - 'name' => 'Name', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the custom rule.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'WatermarkRule****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Description', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The description of the custom rule.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'my rule', - ], + 'schema' => ['description' => 'The production studio ID.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, find the CasterId value in the response.'."\n" + ."\n" + .'- If you create a production studio in the Live console, go to the **Live console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => '53200b81-b761-4c10-842a-a0726d97****', 'title' => ''], ], [ - 'name' => 'TemplateId', + 'name' => 'ShowId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the watermark template.'."\n" - ."\n" - .'> You can obtain the template ID by checking the value of the TemplateId parameter that is returned by the [AddLiveStreamWatermark](~~2848096~~) operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9 ****', - ], + 'schema' => ['description' => 'The ID of the show to query.'."\n" + ."\n" + .'> Find the ShowId value in the response from the [AddShowIntoShowList](~~370861~~) operation.', 'type' => 'string', 'required' => false, 'example' => '72200b81-b761-4c10-842a-a0726d97****', 'title' => ''], ], ], 'responses' => [ @@ -47821,610 +37964,359 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b9676b3', - ], + 'CasterId' => ['description' => 'The production studio ID.', 'type' => 'string', 'example' => '53200b81-b761-4c10-842a-a0726d97****', 'title' => ''], + 'EditingTasksInfo' => ['description' => 'Information about the video editing job. The information includes:'."\n" + ."\n" + .'- **OutputVodId**: The ID of the output video-on-demand (VOD) file.'."\n" + ."\n" + .'- **TaskStatus**: The status of the video editing job. Valid values: -1 (failed), 0 (init), 1 (editing), 2 (uploading), and 3 (successful).'."\n" + ."\n" + .'- **StorageLocation**: The VOD storage address.'."\n" + ."\n" + .'- **FileName**: The name of the edited file.'."\n" + ."\n" + .'- **ShowId**: The show ID.', 'type' => 'string', 'example' => '"EditingTasksInfo": { "OutputVodId": "3e34733b40b9a96ccf5c1ff6f69****", "TaskStatus": 1, "StorageInfo": { "StorageLocation": "***bucket***", "FileName": "EditFile****" }, "ShowId": "42200b81-b761-4c10-842a-a0726d97****" },', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidVodUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter VodUrl is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidShowList.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ShowList does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b9676b3\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n5c6a2a0df228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'UpdateLiveStreamWatermarkRule', - 'description' => 'This operation allows you to modify the parameters of a watermark rule with a specified ID.'."\n" + 'title' => 'GetEditingJobInfo', + 'description' => '- This operation queries information about video editing jobs for a specified CasterId and ShowId. Make sure that you set the parameters correctly when you call this operation.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- If you specify the ShowId parameter, the operation returns information about the video editing job for the specified show in the playlist.'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveStreamWatermarkRules' => [ - 'summary' => 'Queries watermark rules.', - 'methods' => [ - 'post', - 'get', + .'- If you do not specify the ShowId parameter, the operation returns information about the video editing jobs for the entire playlist.'."\n" + ."\n" + .'### QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per second. API calls that exceed this limit are throttled. This may affect your business. We recommend that you call this operation at a reasonable frequency.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetEditingJobInfo'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetEditingJobInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"53200b81-b761-4c10-842a-a0726d97****\\",\\n \\"EditingTasksInfo\\": \\"\\\\\\"EditingTasksInfo\\\\\\": { \\\\\\"OutputVodId\\\\\\": \\\\\\"3e34733b40b9a96ccf5c1ff6f69****\\\\\\", \\\\\\"TaskStatus\\\\\\": 1, \\\\\\"StorageInfo\\\\\\": { \\\\\\"StorageLocation\\\\\\": \\\\\\"***bucket***\\\\\\", \\\\\\"FileName\\\\\\": \\\\\\"EditFile****\\\\\\" }, \\\\\\"ShowId\\\\\\": \\\\\\"42200b81-b761-4c10-842a-a0726d97****\\\\\\" },\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'GetMessageApp' => [ + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveCT0GRQ', - ], + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'live.yourdomain.com', - ], - ], - [ - 'name' => 'PageNumber', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. If you do not specify this parameter, the default value 1 is used.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - ], - [ - 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. If you do not specify this parameter, the default value 100 is used.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '100', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the interactive message application.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'VKL3***'], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'Total' => [ - 'description' => 'The total number of entries that meet the specified conditions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '100', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b9676b3', - ], - 'RuleInfoList' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'The result of the request.', 'type' => 'object', - 'itemNode' => true, 'properties' => [ - 'RuleInfo' => [ - 'description' => 'The watermark rules.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the watermark rule.'."\n", - 'type' => 'object', - 'properties' => [ - 'Domain' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.aliyundoc.com', - ], - 'Description' => [ - 'description' => 'The description of the custom rule.'."\n", - 'type' => 'string', - 'example' => 'my rule', - ], - 'App' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'Stream' => [ - 'description' => 'The name of the live stream. The following matching rules apply:'."\n" - ."\n" - .'* A stream name can be exactly matched. Example: liveStreamA.'."\n" - .'* Fuzzy match is also supported. The use of an asterisk (`*`) allows all approximate matches to be found.'."\n" - .'* You can place the asterisk before or after an approximate string.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* Fuzzy match: Only one asterisk (`*`) before or after an approximate string is allowed. The approximate string must be enclosed in `()`. Separate multiple strings with vertical bars (`|`).'."\n" - ."\n" - .'* For example, `*(t1|t2)` matches all streams whose name has the `t1` or `t2` suffix, and `(abc|123)*` matches all streams whose name has the `abc` or `123` prefix.'."\n", - 'type' => 'string', - 'example' => 'liveStreamA', - ], - 'Name' => [ - 'description' => 'The name of the custom rule.'."\n", - 'type' => 'string', - 'example' => 'WatermarkRule****', - ], - 'TemplateId' => [ - 'description' => 'The ID of the watermark template.'."\n" - ."\n" - .'> You can obtain the template ID by checking the value of the TemplateId parameter that is returned by the [AddLiveStreamWatermark](~~2848096~~) operation.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9 ****', - ], - 'RuleId' => [ - 'description' => 'The ID of the watermark rule.'."\n" - ."\n" - .'> You can obtain the rule ID by checking the value of the RuleId parameter that is returned by the [AddLiveStreamWatermarkRule](~~2848100~~) operation.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d -8f29-4bec2eb9****', - ], - ], - ], + 'AppConfig' => [ + 'description' => 'The application configuration.', + 'type' => 'object', + 'additionalProperties' => ['type' => 'string', 'description' => 'The configuration of the application.', 'title' => '', 'example' => '"appAlias":"localApp"'], + 'title' => '', + 'example' => '', ], + 'AppId' => ['title' => '', 'description' => 'The ID of the interactive message application.', 'type' => 'string', 'example' => 'VKL3***'], + 'AppName' => ['title' => '', 'description' => 'The name of the interactive message application.', 'type' => 'string', 'example' => 'testApp'], + 'CreateTime' => ['description' => 'The UTC timestamp when the application was created.', 'type' => 'integer', 'format' => 'int64', 'title' => '', 'example' => '502280113'], + 'Extension' => [ + 'description' => 'The extended field.', + 'type' => 'object', + 'additionalProperties' => ['type' => 'string', 'description' => 'The extended field.', 'title' => '', 'example' => 'test001'], + 'title' => '', + 'example' => '', + ], + 'Status' => ['description' => 'The status of the interactive message application. A value of 1 indicates that the application is in a normal state.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1'], ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameters', - 'errorMessage' => '%s Please check and try again later.', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Total\\": 100,\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b9676b3\\",\\n \\"RuleInfoList\\": {\\n \\"RuleInfo\\": [\\n {\\n \\"Domain\\": \\"example.aliyundoc.com\\",\\n \\"Description\\": \\"my rule\\",\\n \\"App\\": \\"liveApp****\\",\\n \\"Stream\\": \\"liveStreamA\\",\\n \\"Name\\": \\"WatermarkRule****\\",\\n \\"TemplateId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9 ****\\",\\n \\"RuleId\\": \\"445409ec-7eaa-461d -8f29-4bec2eb9****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n \\n liveApp****\\n my rule\\n 445409ec-7eaa-461d -8f29-4bec2eb9****\\n liveStreamA\\n example.aliyundoc.com\\n 445409ec-7eaa-461d-8f29-4bec2eb9 ****\\n WatermarkRule****\\n \\n\\n5c6a2a0df228-4a64- af62-20e91b9676b3\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamWatermarkRules', - 'description' => 'When you call this operation, you can specify the PageNumber and PageSize parameters to view watermark rules on separate pages. Make sure that the parameter settings meet the requirements.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'title' => 'GetMessageApp', + 'summary' => 'You can call the GetMessageApp operation to retrieve the details of a specified interactive message application.', + 'description' => '## QPS limits'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'ListEdgeTranscodeTemplate' => [ - 'summary' => 'Queries the list of edge transcoding templates.', - 'methods' => [ - 'post', - 'get', + .'The queries per second (QPS) limit for a single user is 100. If you exceed this limit, API calls are throttled, which may affect your business. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"AppConfig\\": {\\n \\"key\\": \\"\\\\\\"appAlias\\\\\\":\\\\\\"localApp\\\\\\"\\"\\n },\\n \\"AppId\\": \\"VKL3***\\",\\n \\"AppName\\": \\"testApp\\",\\n \\"CreateTime\\": 502280113,\\n \\"Extension\\": {\\n \\"key\\": \\"test001\\"\\n },\\n \\"Status\\": 1\\n }\\n}","type":"json"}]', + ], + 'GetMessageGroup' => [ + 'summary' => 'Call GetMessageGroup to retrieve message group details.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'ClusterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******3b-4d18-395c-8106-ff21a6******', - ], - ], - [ - 'name' => 'Type', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of edge transcoding. Valid values:'."\n" - ."\n" - .'* **common**: standard transcoding and Narrowband HD™ 1.0 transcoding.'."\n" - .'* **nbhd-2**: Narrowband HD™ 2.0 transcoding.'."\n" - .'* **ultra-hd**: ultra-high definition transcoding.'."\n" - ."\n" - .'> If you do not specify this parameter, the query result is filtered based on the type of edge transcoding on which you are granted permissions.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'nbhd-2', - ], - ], - [ - 'name' => 'VideoCodec', - 'in' => 'query', - 'schema' => [ - 'description' => 'The video encoding format. Valid values:'."\n" - ."\n" - .'* H.264'."\n" - .'* H.265'."\n" - ."\n" - .'> If you do not specify this parameter, the query result is filtered based on the video encoding format on which you are granted permissions.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'H.264', - ], - ], - [ - 'name' => 'PageNo', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - ], - [ - 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: 1 to 100. Default value: 10.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], - ], - [ - 'name' => 'SortBy', - 'in' => 'query', - 'schema' => [ - 'description' => 'The sorting order of the templates by creation time. Default value: desc. Valid values:'."\n" - ."\n" - .'* desc: descending order.'."\n" - .'* asc: ascending order.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'desc', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'Keyword', - 'in' => 'query', - 'schema' => [ - 'description' => 'The keyword of the query.'."\n" - ."\n" - .'* You can specify a template ID for an exact match.'."\n" - .'* You can also specify a template name for a fuzzy match.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'baseline', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive Messages application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'TemplateList' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', 'type' => 'object', - 'itemNode' => true, 'properties' => [ - 'Template' => [ - 'description' => 'The details of the edge transcoding templates.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The details of the edge transcoding templates.'."\n", - 'type' => 'object', - 'properties' => [ - 'Bitrate' => [ - 'description' => 'The bitrate. If a numeric value is returned, a fixed bitrate is configured for the output stream. If ws is returned, the output stream maintains the same bitrate as the input stream.'."\n", - 'type' => 'string', - 'example' => '3000', - ], - 'Codec' => [ - 'description' => 'The video encoding format. Valid values:'."\n" - ."\n" - .'* H.264'."\n" - .'* H.265'."\n", - 'type' => 'string', - 'example' => 'H.264', - ], - 'CreateTime' => [ - 'description' => 'The time when the image template was created.'."\n", - 'type' => 'string', - 'example' => '2023-07-25T02:48:58Z', - ], - 'Fps' => [ - 'description' => 'The frame rate. If a numeric value is returned, a fixed frame rate is configured for the output stream. If ws is returned, the output stream maintains the same frame rate as the input stream.'."\n", - 'type' => 'string', - 'example' => '30', - ], - 'Gop' => [ - 'description' => 'The group of pictures (GOP) size. The GOP size can be defined by the number of frames or the time interval between I-frames. If ws is returned, the output stream maintains the same GOP size as the input stream.'."\n", - 'type' => 'string', - 'example' => '2s', - ], - 'Name' => [ - 'description' => 'The template name.'."\n", - 'type' => 'string', - 'example' => 'my_template', - ], - 'Resolution' => [ - 'description' => 'The resolution. If width and height values are returned, a fixed resolution is configured for the output stream. If ws is returned, the output stream maintains the same resolution as the input stream.'."\n" - ."\n" - .'> If the width value is -1, the width of the output video is adapted to a fixed height. If the height value is -2, the height of the output video is adapted to a fixed width.'."\n", - 'type' => 'string', - 'example' => '1920*1080', - ], - 'TemplateId' => [ - 'description' => 'The ID of the edge transcoding template.'."\n", - 'type' => 'string', - 'example' => '9b1571b513cb44f7a1ba6ae561ff46f7', - ], - 'Type' => [ - 'description' => 'The type of edge transcoding.'."\n", - 'type' => 'string', - 'example' => 'common', - ], - ], - ], - ], + 'CreateTime' => ['description' => 'UTC timestamp when the message group was created.', 'type' => 'integer', 'format' => 'int64', 'example' => '1502280113', 'title' => ''], + 'CreatorId' => ['description' => 'Creator ID.', 'type' => 'string', 'example' => 'as****hs', 'title' => ''], + 'Extension' => ['description' => 'Extension field.', 'type' => 'object', 'example' => '1', 'title' => ''], + 'GroupId' => ['title' => '', 'description' => 'Message group ID.', 'type' => 'string', 'example' => 'AE35-****-T95F'], + 'IsMuteAll' => ['description' => 'Indicates whether all members in this message group are muted.'."\n" + ."\n" + .'- true: All members are muted.'."\n" + .'- false: All members are not muted.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'Status' => ['description' => 'Message group status. The default value is **1**, which indicates that the message group status is normal.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], - ], - 'TotalCount' => [ - 'description' => 'The total number of templates returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '100', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"CreateTime\\": 1502280113,\\n \\"CreatorId\\": \\"as****hs\\",\\n \\"Extension\\": 1,\\n \\"GroupId\\": \\"AE35-****-T95F\\",\\n \\"IsMuteAll\\": true,\\n \\"Status\\": 1\\n }\\n}","type":"json"}]', + 'title' => 'GetMessageGroup', + 'description' => '## Usage notes'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can make API calls at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2022-09-27T09:18:30.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetMessageGroup'], ], - 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TemplateList\\": {\\n \\"Template\\": [\\n {\\n \\"Bitrate\\": \\"3000\\",\\n \\"Codec\\": \\"H.264\\",\\n \\"CreateTime\\": \\"2023-07-25T02:48:58Z\\",\\n \\"Fps\\": \\"30\\",\\n \\"Gop\\": \\"2s\\",\\n \\"Name\\": \\"my_template\\",\\n \\"Resolution\\": \\"1920*1080\\",\\n \\"TemplateId\\": \\"9b1571b513cb44f7a1ba6ae561ff46f7\\",\\n \\"Type\\": \\"common\\"\\n }\\n ]\\n },\\n \\"TotalCount\\": 100\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n \\n 3000\\n H.264\\n 2023-07-25T02:48:58Z\\n 30\\n 2s\\n my_template\\n 1920*1080\\n 9b1571b513cb44f7a1ba6ae561ff46f7\\n common\\n \\n 100\\n","errorExample":""}]', - 'title' => 'ListEdgeTranscodeTemplate', - 'description' => '* You can call this operation to query the list of edge transcoding templates.'."\n" - .'* To call this operation, make sure that you have the permissions to access the edge transcoding feature.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'GetEdgeTranscodeTemplate' => [ - 'summary' => 'Queries the details of an edge transcoding template.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'GetMessageToken' => [ + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive Messages application ID.', 'type' => 'string', 'required' => true, 'example' => 'a494caec-***-695ef345db77', 'title' => ''], ], [ - 'name' => 'ClusterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******3b-4d18-395c-8106-ff21a6******', - ], + 'name' => 'DeviceId', + 'in' => 'formData', + 'schema' => ['description' => 'Terminal device ID, uniquely representing a user terminal device, user-defined. It consists of lowercase letters, numbers, underscores (\\_), and hyphens (-), with a maximum length of 64 characters. Different terminal devices need to use different DeviceIds. We recommend obtaining it from the terminal device and passing it to the server.', 'type' => 'string', 'required' => true, 'example' => 'a494caec-***-695ef345db77', 'title' => ''], ], [ - 'name' => 'TemplateId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The template ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '****a046-263c-3560-978a-fb287666****', - ], + 'name' => 'DeviceType', + 'in' => 'formData', + 'schema' => ['description' => 'Terminal device type. Valid values:'."\n" + ."\n" + .'- ios'."\n" + ."\n" + .'- android'."\n" + ."\n" + .'- web'."\n" + ."\n" + .'- pc', 'type' => 'string', 'required' => true, 'example' => 'android', 'title' => ''], + ], + [ + 'name' => 'UserId', + 'in' => 'formData', + 'schema' => ['description' => 'User UserId, user-defined, unique within the AppId. It consists of lowercase letters, numbers, underscores (\\_), and periods (.), with a maximum length of 32 characters. Different users need to use different UserIds.', 'type' => 'string', 'required' => true, 'example' => 'de1**a0', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'Template' => [ - 'description' => 'The details of the edge transcoding template.'."\n", + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return results.', 'type' => 'object', 'properties' => [ - 'Bitrate' => [ - 'description' => 'The bitrate. If a numeric value is returned, a fixed bitrate is configured for the output stream. If ws is returned, the output stream maintains the same bitrate as the input stream.'."\n", - 'type' => 'string', - 'example' => '3000', - ], - 'Codec' => [ - 'description' => 'The video encoding format. Valid values:'."\n" - ."\n" - .'* H.264'."\n" - .'* H.265'."\n", - 'type' => 'string', - 'example' => 'H.264', - ], - 'CreateTime' => [ - 'description' => 'The time when the template was created.'."\n", - 'type' => 'string', - 'example' => '2023-07-25T02:48:58Z', - ], - 'Fps' => [ - 'description' => 'The frame rate. If a numeric value is returned, a fixed frame rate is configured for the output stream. If ws is returned, the output stream maintains the same frame rate as the input stream.'."\n", - 'type' => 'string', - 'example' => '30', - ], - 'Gop' => [ - 'description' => 'The group of pictures (GOP) size. The GOP size can be defined by the number of frames or the time interval between I-frames. If ws is returned, the output stream maintains the same GOP size as the input stream.'."\n", - 'type' => 'string', - 'example' => '2s', - ], - 'Name' => [ - 'description' => 'The template name.'."\n", - 'type' => 'string', - 'example' => 'my_template', - ], - 'Resolution' => [ - 'description' => 'The resolution. If width and height values are returned, a fixed resolution is configured for the output stream. If ws is returned, the output stream maintains the same resolution as the input stream.'."\n" - ."\n" - .'> If the width value is -1, the width of the output stream is adapted to the height. If the height value is -2, the height of the output stream is adapted to the width.'."\n", - 'type' => 'string', - 'example' => '1920*1080', - ], - 'TemplateId' => [ - 'description' => 'The template ID.'."\n", - 'type' => 'string', - 'example' => '9b1571b513cb44f7a1ba6ae561ff****', - ], - 'Type' => [ - 'description' => 'The type of edge transcoding.'."\n", - 'type' => 'string', - 'example' => 'common', - ], + 'AccessToken' => ['description' => 'Token used for establishing persistent connections.', 'type' => 'string', 'example' => 'oauth_cloud_key:***-b0YY5Gy6Q', 'title' => ''], + 'AccessTokenExpiredTime' => ['description' => 'Logon token expiration time in milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '86400000', 'title' => ''], + 'RefreshToken' => ['description' => 'Refresh token. If the AccessToken expires, you can use the RefreshToken to obtain a new token.', 'type' => 'string', 'example' => 'oauth_cloud_key:****-Q62xggOTdgk3gw=', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvaildParameter', 'errorMessage' => 'Invalid Parameter', 'description' => 'Invalid request parameter.'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'TemplateNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Forbidden', 'errorMessage' => 'User not authorized to operate on the specified resource.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"Template\\": {\\n \\"Bitrate\\": \\"3000\\",\\n \\"Codec\\": \\"H.264\\",\\n \\"CreateTime\\": \\"2023-07-25T02:48:58Z\\",\\n \\"Fps\\": \\"30\\",\\n \\"Gop\\": \\"2s\\",\\n \\"Name\\": \\"my_template\\",\\n \\"Resolution\\": \\"1920*1080\\",\\n \\"TemplateId\\": \\"9b1571b513cb44f7a1ba6ae561ff****\\",\\n \\"Type\\": \\"common\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n \\n","errorExample":""}]', - 'title' => 'GetEdgeTranscodeTemplate', - 'description' => '* You can call this operation to query the details of an edge transcoding template.'."\n" - .'* To call this operation, make sure that you have the permissions to access the edge transcoding feature.'."\n" + 'title' => 'GetMessageToken', + 'summary' => 'Call GetMessageToken to obtain a persistent connection token. The client can use this token to communicate with various atomic capabilities through the LWP protocol via persistent connection.', + 'description' => '## Usage notes'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'First obtain the client UserId, DeviceId, and DeviceType information, then pass them to the server. The server uses this interface to obtain the authentication token and returns it to the client. Different users need to use different UserIds, and different terminal devices need to use different DeviceIds.'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'CreateEdgeTranscodeJob' => [ - 'summary' => 'Creates an edge transcoding task.', - 'methods' => [ - 'post', - 'get', + .'## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second (QPS) per user. If you exceed this limit, API calls will be throttled, which may affect your business. You can call this API at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2022-09-08T15:22:52.000Z', 'description' => 'OpenAPI offline'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetMessageToken', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"AccessToken\\": \\"oauth_cloud_key:***-b0YY5Gy6Q\\",\\n \\"AccessTokenExpiredTime\\": 86400000,\\n \\"RefreshToken\\": \\"oauth_cloud_key:****-Q62xggOTdgk3gw=\\"\\n }\\n}","type":"json"}]', + ], + 'HotLiveRtcStream' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -48432,137 +38324,330 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'none', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'chargeType' => 'free', + 'abilityTreeCode' => '142376', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ClusterId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******3b-4d18-395c-8106-ff21a6******', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Name', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The task name. The name can contain letters, digits, hyphens (-), and underscores (\\_). The name must be 255 characters in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'task1', - ], + 'schema' => ['description' => 'The application name of the live stream to prefetch.', 'type' => 'string', 'required' => true, 'example' => 'app', 'title' => ''], ], [ - 'name' => 'TemplateId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The template ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '****96e8864746a0b6f3****', - ], + 'schema' => ['description' => 'The name of the live stream to prefetch.', 'type' => 'string', 'required' => true, 'example' => 'stream', 'title' => ''], ], [ - 'name' => 'StreamInput', + 'name' => 'RegionCode', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the input stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://mydomain/app/stream1', - ], + 'schema' => ['description' => 'The prefetch area. For more information, see the RegionCode lookup table.'."\n" + ."\n" + .'> For regions within China, specify the corresponding code from the "Region codes for China" table. For all other regions, specify the country code.'."\n" + .'>'."\n" + .'> - If the CodeRegionHasNoNode error is returned after you specify a RegionCode, the corresponding area is not covered by L1 nodes and cannot be prefetched. In this case, specify a different RegionCode.', 'type' => 'string', 'required' => true, 'example' => 'ZHJ', 'title' => ''], ], [ - 'name' => 'StreamOutput', + 'name' => 'AudioMsid', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the output stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://testdomain/app/stream2', - ], + 'schema' => ['description' => 'The audio Msid.', 'type' => 'string', 'required' => true, 'example' => 'rts audio', 'title' => ''], + ], + [ + 'name' => 'VideoMsid', + 'in' => 'query', + 'schema' => ['description' => 'The video Msid.', 'type' => 'string', 'required' => true, 'example' => 'rts video', 'title' => ''], + ], + [ + 'name' => 'ConnectionTimeout', + 'in' => 'query', + 'schema' => ['description' => 'The duration to maintain the prefetch connection. Unit: milliseconds. The default value, 0, means the connection is always maintained.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'MediaTimeout', + 'in' => 'query', + 'schema' => ['description' => 'The custom timeout period for a timeout event. Unit: milliseconds.', 'type' => 'string', 'required' => false, 'example' => '100000', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The ID of the request.', 'type' => 'object', 'properties' => [ - 'JobId' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16BFE188-B193-4C3C-ADC5-79A7E31486EA', 'title' => ''], ], - 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'NoSpecialConfiguration', 'errorMessage' => 'no special configuration for domain name.', 'description' => ''], + ['errorCode' => 'CodeRegionHasNoNode', 'errorMessage' => 'this region has no corresponding node.', 'description' => ''], ], - 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'TemplateNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ****20b48fb04483915d4f2cd8ac****\\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'CreateEdgeTranscodeJob', - 'description' => '* You can call this operation to create an edge transcoding task.'."\n" - .'* To call this operation, make sure that you have the permissions to access the edge transcoding feature.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'title' => 'HotLiveRtcStream', + 'summary' => 'Prefetches Real-Time Communication (RTC) streams.', + 'description' => '### QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per second. API calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => '### RegionCode lookup table'."\n" + ."\n" + .'**Region codes for China**'."\n" + ."\n" + .'| Name | Code |'."\n" + .'| -------------- | ---- |'."\n" + .'| Beijing | BEJ |'."\n" + .'| Tianjin | TAJ |'."\n" + .'| Hebei | HEB |'."\n" + .'| Shanxi | SHX |'."\n" + .'| Inner Mongolia | NMG |'."\n" + .'| Liaoning | LIA |'."\n" + .'| Jilin | JIL |'."\n" + .'| Heilongjiang | HLJ |'."\n" + .'| Shanghai | SHH |'."\n" + .'| Jiangsu | JSU |'."\n" + .'| Zhejiang | ZHJ |'."\n" + .'| Anhui | ANH |'."\n" + .'| Fujian | FUJ |'."\n" + .'| Jiangxi | JXI |'."\n" + .'| Shandong | SHD |'."\n" + .'| Henan | HEN |'."\n" + .'| Hubei | HUB |'."\n" + .'| Hunan | HUN |'."\n" + .'| Guangdong | GUD |'."\n" + .'| Guangxi | GXI |'."\n" + .'| Hainan | HAI |'."\n" + .'| Chongqing | CHQ |'."\n" + .'| Sichuan | SCH |'."\n" + .'| Guizhou | GUI |'."\n" + .'| Yunnan | YUN |'."\n" + .'| Tibet | TIB |'."\n" + .'| Shaanxi | SHA |'."\n" + .'| Gansu | GAN |'."\n" + .'| Qinghai | QIH |'."\n" + .'| Ningxia | NXA |'."\n" + .'| Xinjiang | XIN |'."\n" + .'| Taiwan | TAI |'."\n" + .'| Hong Kong | HKG |'."\n" + .'| Macao | MAC |'."\n" + ."\n" + .'**Country codes**'."\n" + ."\n" + .'| Name | Code |'."\n" + .'| --------------------------- | ---- |'."\n" + .'| Papua New Guinea | PG |'."\n" + .'| Slovakia | SK |'."\n" + .'| Peru | PE |'."\n" + .'| Latvia | LV |'."\n" + .'| United Arab Emirates | AE |'."\n" + .'| Canada | CA |'."\n" + .'| Cuba | CU |'."\n" + .'| Mauritania | MR |'."\n" + .'| Japan | JP |'."\n" + .'| Armenia | AM |'."\n" + .'| Turkmenistan | TM |'."\n" + .'| Russia | RU |'."\n" + .'| Belarus | BY |'."\n" + .'| Guinea | GN |'."\n" + .'| Iraq | IQ |'."\n" + .'| Argentina | AR |'."\n" + .'| Chile | CL |'."\n" + .'| Eswatini | SZ |'."\n" + .'| Congo (DRC) | CD |'."\n" + .'| Belgium | BE |'."\n" + .'| Kazakhstan | KZ |'."\n" + .'| Serbia | RS |'."\n" + .'| Türkiye | TR |'."\n" + .'| Namibia | NA |'."\n" + .'| Lithuania | LT |'."\n" + .'| Puerto Rico | PR |'."\n" + .'| Congo (Brazzaville) | CG |'."\n" + .'| New Caledonia | NC |'."\n" + .'| Morocco | MA |'."\n" + .'| Greenland | GL |'."\n" + .'| Kuwait | KW |'."\n" + .'| Liberia | LR |'."\n" + .'| Ukraine | UA |'."\n" + .'| Indonesia | ID |'."\n" + .'| Myanmar | MM |'."\n" + .'| Bolivia | BO |'."\n" + .'| Moldova | MD |'."\n" + .'| Greece | GR |'."\n" + .'| New Zealand | NZ |'."\n" + .'| Solomon Islands | SB |'."\n" + .'| Ethiopia | ET |'."\n" + .'| Fiji | FJ |'."\n" + .'| Yemen | YE |'."\n" + .'| Cyprus | CY |'."\n" + .'| Bosnia and Herzegovina | BA |'."\n" + .'| Eritrea | ER |'."\n" + .'| Germany | DE |'."\n" + .'| Pakistan | PK |'."\n" + .'| Central African Republic | CF |'."\n" + .'| Croatia | HR |'."\n" + .'| Egypt | EG |'."\n" + .'| Thailand | TH |'."\n" + .'| Costa Rica | CR |'."\n" + .'| Tanzania | TZ |'."\n" + .'| Laos | LA |'."\n" + .'| Libya | LY |'."\n" + .'| Tunisia | TN |'."\n" + .'| Poland | PL |'."\n" + .'| United Kingdom | GB |'."\n" + .'| Equatorial Guinea | GQ |'."\n" + .'| China | CN |'."\n" + .'| Iceland | IS |'."\n" + .'| Oman | OM |'."\n" + .'| Mongolia | MN |'."\n" + .'| Chad | TD |'."\n" + .'| United States | US |'."\n" + .'| Mexico | MX |'."\n" + .'| Kyrgyzstan | KG |'."\n" + .'| Suriname | SR |'."\n" + .'| India | IN |'."\n" + .'| Guinea-Bissau | GW |'."\n" + .'| Venezuela | VE |'."\n" + .'| Italy | IT |'."\n" + .'| Algeria | DZ |'."\n" + .'| Qatar | QA |'."\n" + .'| France | FR |'."\n" + .'| South Africa | ZA |'."\n" + .'| Norway | NO |'."\n" + .'| Portugal | PT |'."\n" + .'| Hungary | HU |'."\n" + .'| South Korea | KR |'."\n" + .'| Uzbekistan | UZ |'."\n" + .'| Burundi | BI |'."\n" + .'| Estonia | EE |'."\n" + .'| Bangladesh | BD |'."\n" + .'| Bhutan | BT |'."\n" + .'| Afghanistan | AF |'."\n" + .'| Switzerland | CH |'."\n" + .'| Belize | BZ |'."\n" + .'| Timor-Leste | TL |'."\n" + .'| Haiti | HT |'."\n" + .'| Togo | TG |'."\n" + .'| Albania | AL |'."\n" + .'| Cameroon | CM |'."\n" + .'| Nicaragua | NI |'."\n" + .'| Nigeria | NG |'."\n" + .'| Honduras | HN |'."\n" + .'| Burkina Faso | BF |'."\n" + .'| Mozambique | MZ |'."\n" + .'| Georgia | GE |'."\n" + .'| Vanuatu | VU |'."\n" + .'| Paraguay | PY |'."\n" + .'| Luxembourg | LU |'."\n" + .'| Lebanon | LB |'."\n" + .'| Uganda | UG |'."\n" + .'| Mali | ML |'."\n" + .'| Saudi Arabia | SA |'."\n" + .'| Palestine | PS |'."\n" + .'| Montenegro | ME |'."\n" + .'| Colombia | CO |'."\n" + .'| Philippines | PH |'."\n" + .'| Sweden | SE |'."\n" + .'| Finland | FI |'."\n" + .'| Kenya | KE |'."\n" + .'| Romania | RO |'."\n" + .'| Panama | PA |'."\n" + .'| Jordan | JO |'."\n" + .'| Rwanda | RW |'."\n" + .'| Lesotho | LS |'."\n" + .'| North Macedonia | MK |'."\n" + .'| Zambia | ZM |'."\n" + .'| Syria | SY |'."\n" + .'| Spain | ES |'."\n" + .'| Ecuador | EC |'."\n" + .'| Gabon | GA |'."\n" + .'| Ireland | IE |'."\n" + .'| Dominican Republic | DO |'."\n" + .'| Ghana | GH |'."\n" + .'| Madagascar | MG |'."\n" + .'| Malaysia | MY |'."\n" + .'| Austria | AT |'."\n" + .'| Tajikistan | TJ |'."\n" + .'| Denmark | DK |'."\n" + .'| Uruguay | UY |'."\n" + .'| Cambodia | KH |'."\n" + .'| Senegal | SN |'."\n" + .'| El Salvador | SV |'."\n" + .'| Sierra Leone | SL |'."\n" + .'| Brunei Darussalam | BN |'."\n" + .'| Western Sahara | EH |'."\n" + .'| Niger | NE |'."\n" + .'| Iran | IR |'."\n" + .'| Guyana | GY |'."\n" + .'| Angola | AO |'."\n" + .'| Botswana | BW |'."\n" + .'| Brazil | BR |'."\n" + .'| Australia | AU |'."\n" + .'| Côte d\'Ivoire | CI |'."\n" + .'| Czech Republic | CZ |'."\n" + .'| Gambia | GM |'."\n" + .'| Benin | BJ |'."\n" + .'| Vietnam | VN |'."\n" + .'| Sudan | SD |'."\n" + .'| Netherlands | NL |'."\n" + .'| Djibouti | DJ |'."\n" + .'| Slovenia | SI |'."\n" + .'| Nepal | NP |'."\n" + .'| Zimbabwe | ZW |'."\n" + .'| Jamaica | JM |'."\n" + .'| Malawi | MW |'."\n" + .'| Azerbaijan | AZ |'."\n" + .'| Somalia | SO |'."\n" + .'| Israel | IL |'."\n" + .'| Falkland Islands (Malvinas) | FK |'."\n" + .'| North Korea | KP |'."\n" + .'| Guatemala | GT |'."\n" + .'| Bahamas | BS |'."\n" + .'| Sri Lanka | LK |'."\n" + .'| Singapore | SG |'."\n" + .'| Bahrain | BH |', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'HotLiveRtcStream'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:HotLiveRtcStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16BFE188-B193-4C3C-ADC5-79A7E31486EA\\"\\n}","type":"json"}]', ], - 'DeleteEdgeTranscodeJob' => [ - 'summary' => 'Deletes an edge transcoding task.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'InitializeAutoShowListTask' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -48570,42 +38655,55 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ClusterId', + 'name' => 'ResourceIds', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******3b-4d18-395c-8106-ff21a6******', - ], + 'schema' => ['description' => 'A list of video-on-demand (VOD) media asset IDs in the playlist. Currently, only MP4 files from the VOD platform are supported.'."\n" + .'A maximum of three programs are supported. The programs are played in the order they appear in the list and automatically stop at the specified EndTime.'."\n" + ."\n" + .'> - Get the video file ID from the console or from the parameters returned by an API operation. For more information, see [Media management](~~86057~~) or [Obtain upload URLs and credentials for audio and video](~~55407~~).', 'type' => 'string', 'required' => false, 'example' => '["89e02xxxxfb349axxxxa0c350d**** ","6ae0xxxxxb349axxxxa0c350a****"]', 'title' => ''], ], [ - 'name' => 'JobId', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], + 'schema' => ['description' => 'The start timestamp. Unit: milliseconds.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '1645688994000', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end timestamp. Unit: milliseconds.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'example' => '1645688994000', 'title' => ''], + ], + [ + 'name' => 'CasterConfig', + 'in' => 'query', + 'schema' => ['description' => 'The production studio configuration. It includes:'."\n" + ."\n" + .'- (Required) CasterTemplate: The output resolution of the production studio.'."\n" + ."\n" + .'- (Optional) LiveTemplate: The list of output transcoding jobs.'."\n" + ."\n" + .'> This parameter is a JSON-formatted string. The fields in the struct must be in UpperCamelCase.', 'type' => 'string', 'required' => true, 'example' => '{"CasterTemplate": "lp_ld","LiveTemplates":["lhd", "lsd","lud"]}', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The output streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'CallBackUrl', + 'in' => 'query', + 'schema' => ['description' => 'The user webhook address.', 'type' => 'string', 'required' => false, 'example' => 'http://***.com/callback', 'title' => ''], ], ], 'responses' => [ @@ -48613,563 +38711,446 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], + 'CasterId' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'> Use this ID as a request parameter to query the streaming URL, start the production studio, add video resources, add layouts, query layouts, add components, and add playlists.', 'type' => 'string', 'example' => 'b4810848-bcf9-4aef-bd4a-e6bba2d9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'StreamList' => ['description' => 'A list of output URLs for the production studio.'."\n" + ."\n" + .'- videoFormat: The format of the streaming URL.'."\n" + ."\n" + .'- outputStreamUrl: The stream pulling URL.'."\n" + ."\n" + .'- transcodeConfig: The description of the transcoding resolution for the stream pulling URL.', 'type' => 'string', 'example' => '[{"videoFormat":"flv","outputStreamUrl":"http://example.aliyundoc.com","transcodeConfig":"original"}]', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameter.PurchaseTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PurchaseTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.ExpireTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ExpireTime is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidChargeType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidChargeType.PostSupport', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ChargeType only supports post-paid, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterTemplate is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.ChargeType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidPeriod.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid time interval, please check and try again.'], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.StartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], ], [ - [ - 'errorCode' => 'JobNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'CasterNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of casters exceeds the limit. Please check and try again.'], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'IncorrectCasterStatus.EnableChannel', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Caster status does not support EnableChannel settings, please check and try again.'], + ['errorCode' => 'InvalidParameter.NormType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter NormType is invalid, please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 408 => [ + ['errorCode' => 'CreateCaster.Timeout', 'errorMessage' => '%s, please try again later.', 'description' => 'Call CreateCaster timed out, please try again later.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'DeleteEdgeTranscodeJob', - 'description' => '* You can call this operation to delete an edge transcoding task.'."\n" - .'* To call this operation, make sure that you have the permissions to access the edge transcoding feature.'."\n" + 'title' => 'InitializeAutoShowListTask', + 'summary' => 'Creates a scheduled task.', + 'description' => 'This operation creates a scheduled task to start and stop a playlist. When you call this operation, you must specify the required parameters.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ListEdgeTranscodeJob' => [ - 'summary' => 'Queries edge transcoding tasks.', - 'methods' => [ - 'post', - 'get', + .'This operation is limited to 10 queries per second (QPS) per user. Calls that exceed this limit are throttled. Throttling can affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:InitializeAutoShowListTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"b4810848-bcf9-4aef-bd4a-e6bba2d9****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StreamList\\": \\"[{\\\\\\"videoFormat\\\\\\":\\\\\\"flv\\\\\\",\\\\\\"outputStreamUrl\\\\\\":\\\\\\"http://example.aliyundoc.com\\\\\\",\\\\\\"transcodeConfig\\\\\\":\\\\\\"original\\\\\\"}]\\"\\n}","type":"json"}]', + ], + 'JoinMessageGroup' => [ + 'summary' => 'Join a message group.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update'], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive message application ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'a494caec-***-695ef345db77'], ], [ - 'name' => 'ClusterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cluster-1', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the message group to join. Make sure the GroupId you provide exists.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'AE35-****-T95F'], ], [ - 'name' => 'Type', - 'in' => 'query', + 'name' => 'UserId', + 'in' => 'formData', + 'schema' => ['description' => 'User ID, which is customized by the user and must be unique under the AppId. It can contain lowercase letters, numbers, underscores (\\_), and periods (.). The maximum length is 32 characters. Different users must use different UserIds.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'de1**a0'], + ], + [ + 'name' => 'BroadCastType', + 'in' => 'formData', + 'schema' => ['description' => 'System message diffusion type. Valid values:'."\n" + ."\n" + .'- 0 (default): No diffusion.'."\n" + .'- 1: Diffusion to specified users.'."\n" + .'- 2: Diffusion to the group.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '2'], + ], + [ + 'name' => 'BroadCastStatistics', + 'in' => 'formData', + 'schema' => ['description' => 'Specifies whether to broadcast statistics messages. When enabled, statistics information of the message group will be broadcast after joining the message group, and the client can receive and process this message. Valid values:'."\n" + ."\n" + .'- true: Broadcast statistics messages.'."\n" + .'- false: Do not broadcast statistics messages.', 'type' => 'boolean', 'required' => false, 'title' => '', 'example' => 'true'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The type of edge transcoding. Valid values:'."\n" - ."\n" - .'* common: standard transcoding and Narrowband HD™ 1.0 transcoding.'."\n" - .'* nbhd-2: Narrowband HD™ 2.0 transcoding'."\n" - .'* ultra-hd: ultra-high definition transcoding'."\n" - ."\n" - .'> If you do not specify this parameter, the query results are filtered based on the types of edge transcoding on which you are granted permissions.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'common', + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', + 'type' => 'object', + 'properties' => [ + 'Success' => ['description' => 'Indicates whether joining the message group was successful. Valid values:'."\n" + ."\n" + .'- true: Successful.'."\n" + .'- false: Unsuccessful.', 'type' => 'boolean', 'title' => '', 'example' => 'true'], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","type":"json"}]', + 'title' => 'JoinMessageGroup', + 'description' => 'The QPS limit for this API is 200 calls per second per user. If this limit is exceeded, API calls will be throttled, which may affect your business. Please use this API responsibly.', + 'changeSet' => [ + ['createdAt' => '2022-09-27T09:18:30.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'JoinMessageGroup'], + ], + ], + 'ramActions' => [ [ - 'name' => 'Status', - 'in' => 'query', - 'schema' => [ - 'description' => 'The task status. Valid values:'."\n" - ."\n" - .'* 0: not started'."\n" - .'* 1: running'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:JoinMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + ], + 'KickLiveMessageGroupUser' => [ + 'summary' => 'Removes a user from an interactive messaging group.'."\n", + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'PageNo', + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], + 'parameters' => [ + [ + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The ID of the interactive messaging application to which the interactive messaging group belongs.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Default value: 10. Maximum value: 100.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], + 'schema' => ['description' => 'The ID of the interactive messaging group from which you want to remove the user.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'SortBy', + 'name' => 'KickoffUser', 'in' => 'query', - 'schema' => [ - 'description' => 'The sort order of the tasks by creation time. Default value: desc. Valid values:'."\n" - ."\n" - .'* desc: descending order'."\n" - .'* asc: ascending order'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'desc', - ], + 'schema' => ['description' => 'The user that you want to remove.'."\n", 'type' => 'string', 'required' => true, 'example' => 'uid1', 'title' => ''], ], [ - 'name' => 'Keyword', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The keyword of the query.'."\n" - ."\n" - .'* You can specify a task ID for an exact match.'."\n" - .'* You can specify a task name for a fuzzy match.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'test', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'JobList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Job' => [ - 'description' => 'The edge transcoding tasks.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'CreateTime' => [ - 'description' => 'The time when the task was created.'."\n", - 'type' => 'string', - 'example' => '2023-07-24T16:44:55Z', - ], - 'JobId' => [ - 'description' => 'The ID of the task.'."\n", - 'type' => 'string', - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], - 'LastStartAt' => [ - 'description' => 'The time when the task was last started.'."\n", - 'type' => 'string', - 'example' => '2023-07-25T02:48:58Z', - ], - 'LastStopAt' => [ - 'description' => 'The time when the task was last stopped.'."\n", - 'type' => 'string', - 'example' => '2023-07-25T05:48:58Z', - ], - 'Name' => [ - 'description' => 'The name of the task.'."\n", - 'type' => 'string', - 'example' => 'my_job', - ], - 'Status' => [ - 'description' => 'The status of the task. Valid values:'."\n" - ."\n" - .'* 0: not started'."\n" - .'* 1: in progress'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'StreamInput' => [ - 'description' => 'The URL of the input stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://mydomain/app/stream1', - ], - 'StreamOutput' => [ - 'description' => 'The URL of the output stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://testdomain/app/stream2', - ], - 'TemplateId' => [ - 'description' => 'The ID of the edge transcoding template used by the task.'."\n", - 'type' => 'string', - 'example' => '9b1571b513cb44f7a1ba6ae561ff****', - ], - 'TemplateName' => [ - 'description' => 'The name of the edge transcoding template used by the task.'."\n", - 'type' => 'string', - 'example' => 'my_template', - ], - 'Type' => [ - 'description' => 'The type of edge transcoding. Valid values:'."\n" - ."\n" - .'* common: standard transcoding and Narrowband HD™ 1.0 transcoding.'."\n" - .'* nbhd-2: Narrowband HD™ 2.0 transcoding'."\n" - .'* ultra-hd: ultra-high definition transcoding'."\n", - 'type' => 'string', - 'example' => 'common', - ], - ], - 'description' => '', - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '100', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '97168878-5288-10CE-AE56-E2D1627F****'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobList\\": {\\n \\"Job\\": [\\n {\\n \\"CreateTime\\": \\"2023-07-24T16:44:55Z\\",\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"LastStartAt\\": \\"2023-07-25T02:48:58Z\\",\\n \\"LastStopAt\\": \\"2023-07-25T05:48:58Z\\",\\n \\"Name\\": \\"my_job\\",\\n \\"Status\\": \\"0\\",\\n \\"StreamInput\\": \\"rtmp://mydomain/app/stream1\\",\\n \\"StreamOutput\\": \\"rtmp://testdomain/app/stream2\\",\\n \\"TemplateId\\": \\"9b1571b513cb44f7a1ba6ae561ff****\\",\\n \\"TemplateName\\": \\"my_template\\",\\n \\"Type\\": \\"common\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TotalCount\\": 100\\n}","errorExample":""},{"type":"xml","example":"\\n \\n 2023-07-24T16:44:55Z\\n ****20b48fb04483915d4f2cd8ac****\\n 2023-07-25T02:48:58Z\\n 2023-07-25T05:48:58Z\\n my_job\\n 0\\n rtmp://mydomain/app/stream1\\n rtmp://testdomain/app/stream2\\n 9b1571b513cb44f7a1ba6ae561ff****\\n my_template\\n common\\n \\n ******3B-0E1A-586A-AC29-742247******\\n 100\\n","errorExample":""}]', - 'title' => 'ListEdgeTranscodeJob', - 'description' => '* You can call this operation to query edge transcoding tasks.'."\n" - .'* To call this operation, make sure that you have the permissions to access the edge transcoding feature.'."\n" - .'* You can query only tasks created or modified in the last 180 days.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'KickLiveMessageGroupUser', + 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## [](#)Notes about the request parameters'."\n" - ."\n" - .'* You can specify Type and Status to filter the query results by task type and status.'."\n" - .'* You can specify SortBy to sort the query results by creation time. By default, descending order is used.'."\n" - .'* You can set Keyword to a task ID for an exact match or a task name for a fuzzy match.'."\n", - ], - 'GetEdgeTranscodeJob' => [ - 'summary' => 'Queries the details of an edge transcoding task.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'KickLiveMessageGroupUser'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:KickLiveMessageGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"97168878-5288-10CE-AE56-E2D1627F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 97168878-5288-10CE-AE56-E2D1627FB5F4\\n","errorExample":""}]', + ], + 'LeaveMessageGroup' => [ + 'summary' => 'Call LeaveMessageGroup to allow users to exit a message group.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update'], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive message application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'ClusterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******3b-4d18-395c-8106-ff21a6******', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'JobId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], + 'name' => 'UserId', + 'in' => 'formData', + 'schema' => ['description' => 'User ID, which is customized by the user and must be unique under the AppId.', 'type' => 'string', 'required' => true, 'example' => 'de1**a0', 'title' => ''], + ], + [ + 'name' => 'BroadCastType', + 'in' => 'formData', + 'schema' => ['description' => 'System message diffusion type. Valid values:'."\n" + ."\n" + .'- 0 (default): No diffusion.'."\n" + .'- 1: Diffusion to specified users.'."\n" + .'- 2: Diffusion to the group.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'BroadCastStatistics', + 'in' => 'formData', + 'schema' => ['description' => 'Specifies whether to broadcast statistics messages. When enabled, the statistics information of the message group will be broadcast after joining the message group, and the client can receive and process this message. Valid values:'."\n" + ."\n" + .'- true: Broadcast statistics messages.'."\n" + .'- false: Do not broadcast statistics messages.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'Job' => [ - 'description' => 'The details of the edge transcoding task.'."\n", + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', 'type' => 'object', 'properties' => [ - 'CreateTime' => [ - 'description' => 'The time when the task was created.'."\n", - 'type' => 'string', - 'example' => '2023-07-24T16:44:55Z', - ], - 'JobId' => [ - 'description' => 'The ID of the task.'."\n", - 'type' => 'string', - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], - 'LastStartAt' => [ - 'description' => 'The time when the task was last started.'."\n", - 'type' => 'string', - 'example' => '2023-07-25T02:48:58Z', - ], - 'LastStopAt' => [ - 'description' => 'The time when the task was last stopped.'."\n", - 'type' => 'string', - 'example' => '2023-07-25T05:48:58Z', - ], - 'Name' => [ - 'description' => 'The name of the task.'."\n", - 'type' => 'string', - 'example' => 'my_job', - ], - 'Status' => [ - 'description' => 'The status of the task. Valid values:'."\n" - ."\n" - .'* 0: not started'."\n" - .'* 1: in progress'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'StreamInput' => [ - 'description' => 'The URL of the input stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://mydomain/app/stream1', - ], - 'StreamOutput' => [ - 'description' => 'The URL of the output stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://testdomain/app/stream2', - ], - 'TemplateId' => [ - 'description' => 'The ID of the edge transcoding template used by the task.'."\n", - 'type' => 'string', - 'example' => '9b1571b513cb44f7a1ba6ae561ff****', - ], - 'TemplateName' => [ - 'description' => 'The name of the edge transcoding template used by the task.'."\n", - 'type' => 'string', - 'example' => 'my_template', - ], - 'Type' => [ - 'description' => 'The type of edge transcoding. Valid values:'."\n" - ."\n" - .'* common: standard transcoding and Narrowband HD™ 1.0 transcoding'."\n" - .'* nbhd-2: Narrowband HD™ 2.0 transcoding'."\n" - .'* ultra-hd: ultra-high definition transcoding'."\n", - 'type' => 'string', - 'example' => 'common', - ], + 'Success' => ['description' => 'Indicates whether the user successfully left the message group. Valid values:'."\n" + ."\n" + .'- true: Successful.'."\n" + .'- false: Unsuccessful.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","type":"json"}]', + 'title' => 'LeaveMessageGroup', + 'description' => '## Usage notes'."\n" + ."\n" + .'The QPS limit for this API is 100 calls per second per user. If this limit is exceeded, API calls will be throttled, which may affect your business. You can call this API properly to avoid issues. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2022-09-27T09:18:30.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'LeaveMessageGroup'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'JobNotFound', - 'errorMessage' => '%s, please check and try again later.', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:LeaveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Job\\": {\\n \\"CreateTime\\": \\"2023-07-24T16:44:55Z\\",\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"LastStartAt\\": \\"2023-07-25T02:48:58Z\\",\\n \\"LastStopAt\\": \\"2023-07-25T05:48:58Z\\",\\n \\"Name\\": \\"my_job\\",\\n \\"Status\\": \\"0\\",\\n \\"StreamInput\\": \\"rtmp://mydomain/app/stream1\\",\\n \\"StreamOutput\\": \\"rtmp://testdomain/app/stream2\\",\\n \\"TemplateId\\": \\"9b1571b513cb44f7a1ba6ae561ff****\\",\\n \\"TemplateName\\": \\"my_template\\",\\n \\"Type\\": \\"common\\"\\n },\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n \\n 2023-07-24T16:44:55Z\\n ****20b48fb04483915d4f2cd8ac****\\n 2023-07-25T02:48:58Z\\n 2023-07-25T05:48:58Z\\n my_job\\n 0\\n rtmp://mydomain/app/stream1\\n rtmp://testdomain/app/stream2\\n 9b1571b513cb44f7a1ba6ae561ff****\\n my_template\\n common\\n \\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'GetEdgeTranscodeJob', - 'description' => 'To call this operation, make sure that you have the permissions to access the edge transcoding feature.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'UpdateEdgeTranscodeJob' => [ - 'summary' => 'Updates an edge transcoding task.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'ListEdgeTranscodeJob' => [ + 'summary' => 'Queries a list of edge transcoding jobs.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'ClusterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******3b-4d18-395c-8106-ff21a6******', - ], + 'schema' => ['description' => 'The data center ID.', 'type' => 'string', 'required' => true, 'example' => 'cluster-1', 'title' => ''], ], [ - 'name' => 'JobId', + 'name' => 'Type', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], + 'schema' => ['description' => 'The edge transcoding type. Valid values:'."\n" + ."\n" + .'- common: standard transcoding and Narrowband HD 1.0.'."\n" + ."\n" + .'- nbhd-2: Narrowband HD 2.0.'."\n" + ."\n" + .'- ultra-hd: ultra-high definition.'."\n" + ."\n" + .'> If you do not specify this parameter, transcoding templates for which you have permissions are displayed.', 'type' => 'string', 'required' => false, 'example' => 'common', 'title' => ''], ], [ - 'name' => 'Name', + 'name' => 'Status', 'in' => 'query', - 'schema' => [ - 'description' => 'The task name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'task1', - ], + 'schema' => ['description' => 'The status of the edge transcoding job. Valid values:'."\n" + ."\n" + .'- 0: The job has not started.'."\n" + ."\n" + .'- 1: The job is running.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], ], [ - 'name' => 'TemplateId', + 'name' => 'PageNo', 'in' => 'query', - 'schema' => [ - 'description' => 'The template ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '****96e8864746a0b6f3****', - ], + 'schema' => ['description' => 'The page number. The default value is 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'StreamInput', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the input stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://mydomain/app/stream1', - ], + 'schema' => ['description' => 'The number of entries per page. The default value is 10. The maximum value is 100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], ], [ - 'name' => 'StreamOutput', + 'name' => 'SortBy', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the output stream.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://testdomain/app/stream2', - ], + 'schema' => ['description' => 'The sorting rule. The results are sorted by CreateTime. The default value is desc. Valid values:'."\n" + ."\n" + .'- desc: descending order.'."\n" + ."\n" + .'- asc: ascending order.', 'type' => 'string', 'required' => false, 'example' => 'desc', 'title' => ''], + ], + [ + 'name' => 'Keyword', + 'in' => 'query', + 'schema' => ['description' => 'The keyword for the search. Valid values:'."\n" + ."\n" + .'- Job ID: an exact match is supported.'."\n" + ."\n" + .'- Job name: a fuzzy search is supported.', 'type' => 'string', 'required' => false, 'example' => 'test', 'title' => ''], ], ], 'responses' => [ @@ -49177,115 +39158,183 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'JobId' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', + 'JobList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Job' => [ + 'itemNode' => true, + 'description' => 'The list of edge transcoding jobs.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreateTime' => ['description' => 'The time the job was created.', 'type' => 'string', 'example' => '2023-07-24T16:44:55Z', 'title' => ''], + 'JobId' => ['description' => 'The job ID.', 'type' => 'string', 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], + 'LastStartAt' => ['description' => 'The time the job was last started.', 'type' => 'string', 'example' => '2023-07-25T02:48:58Z', 'title' => ''], + 'LastStopAt' => ['description' => 'The time the job was last stopped.', 'type' => 'string', 'example' => '2023-07-25T05:48:58Z', 'title' => ''], + 'Name' => ['description' => 'The job name.', 'type' => 'string', 'example' => 'my_job', 'title' => ''], + 'Status' => ['description' => 'The status of the edge transcoding job. Valid values:'."\n" + ."\n" + .'- 0: The job has not started.'."\n" + ."\n" + .'- 1: The job is running.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'StreamInput' => ['description' => 'The input stream URL.', 'type' => 'string', 'example' => 'rtmp://mydomain/app/stream1', 'title' => ''], + 'StreamOutput' => ['description' => 'The output stream URL.', 'type' => 'string', 'example' => 'rtmp://testdomain/app/stream2', 'title' => ''], + 'TemplateId' => ['description' => 'The ID of the edge transcoding template used by the job.', 'type' => 'string', 'example' => '9b1571b513cb44f7a1ba6ae561ff****', 'title' => ''], + 'TemplateName' => ['description' => 'The name of the edge transcoding template used by the job.', 'type' => 'string', 'example' => 'my_template', 'title' => ''], + 'Type' => ['description' => 'The edge transcoding type. Valid values:'."\n" + ."\n" + .'- common: standard transcoding and Narrowband HD 1.0.'."\n" + ."\n" + .'- nbhd-2: Narrowband HD 2.0.'."\n" + ."\n" + .'- ultra-hd: ultra-high definition.', 'type' => 'string', 'example' => 'common', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + 'TotalCount' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'TemplateNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'JobNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ****20b48fb04483915d4f2cd8ac****\\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'UpdateEdgeTranscodeJob', - 'description' => '* You can call this operation to update an edge transcoding task.'."\n" - .'* To call this operation, make sure that you have the permissions to access the edge transcoding feature and the edge transcoding task that you specify is not started.'."\n" + 'title' => 'ListEdgeTranscodeJob', + 'description' => '- You can call this operation to query a list of edge transcoding jobs.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- To call this operation, you must have permissions to access the edge transcoding service.'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'StartEdgeTranscodeJob' => [ - 'summary' => 'Starts an edge transcoding task.', - 'methods' => [ - 'post', - 'get', + .'- This operation returns only jobs that were created or modified in the last 180 days.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user on this operation is 6,000 calls per minute. If you exceed this limit, your calls to the operation are throttled. This may affect your business. We recommend that you plan your calls accordingly.', + 'requestParamsDescription' => '## Usage notes for request parameters'."\n" + ."\n" + .'- You can filter query results by transcoding type (Type) and job status (Status).'."\n" + ."\n" + .'- You can sort query results by creation time (CreateTime). By default, the results are sorted in descending order.'."\n" + ."\n" + .'- You can query by keyword (Keyword). You can use a job ID for an exact match or a job name for a fuzzy query.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:ListEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobList\\": {\\n \\"Job\\": [\\n {\\n \\"CreateTime\\": \\"2023-07-24T16:44:55Z\\",\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"LastStartAt\\": \\"2023-07-25T02:48:58Z\\",\\n \\"LastStopAt\\": \\"2023-07-25T05:48:58Z\\",\\n \\"Name\\": \\"my_job\\",\\n \\"Status\\": \\"0\\",\\n \\"StreamInput\\": \\"rtmp://mydomain/app/stream1\\",\\n \\"StreamOutput\\": \\"rtmp://testdomain/app/stream2\\",\\n \\"TemplateId\\": \\"9b1571b513cb44f7a1ba6ae561ff****\\",\\n \\"TemplateName\\": \\"my_template\\",\\n \\"Type\\": \\"common\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TotalCount\\": 100\\n}","type":"json"}]', + ], + 'ListEdgeTranscodeTemplate' => [ + 'summary' => 'Queries a list of edge transcoding templates.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'list', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'ClusterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******3b-4d18-395c-8106-ff21a6******', - ], + 'schema' => ['description' => 'The data center ID.', 'type' => 'string', 'required' => true, 'example' => '******3b-4d18-395c-8106-ff21a6******', 'title' => ''], ], [ - 'name' => 'JobId', + 'name' => 'Type', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], + 'schema' => ['description' => 'The edge transcoding type. Valid values:'."\n" + ."\n" + .'- **common**: standard transcoding and Narrowband HD 1.0.'."\n" + ."\n" + .'- **nbhd-2**: Narrowband HD 2.0.'."\n" + ."\n" + .'- **ultra-hd**: ultra-high definition.'."\n" + ."\n" + .'> If you do not specify this parameter, the system returns the transcoding templates for the transcoding types that you are authorized to use.', 'type' => 'string', 'required' => false, 'example' => 'nbhd-2', 'title' => ''], + ], + [ + 'name' => 'VideoCodec', + 'in' => 'query', + 'schema' => ['description' => 'The video encoding format. Valid values:'."\n" + ."\n" + .'- H.264.'."\n" + ."\n" + .'- H.265.'."\n" + ."\n" + .'> If you do not specify this parameter, the system returns the transcoding templates for the video encoding formats that you are authorized to use.', 'type' => 'string', 'required' => false, 'example' => 'H.264', 'title' => ''], + ], + [ + 'name' => 'PageNo', + 'in' => 'query', + 'schema' => ['description' => 'The page number. The default value is 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries to return on each page. The default value is 10. The maximum value is 100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], + ], + [ + 'name' => 'SortBy', + 'in' => 'query', + 'schema' => ['description' => 'The sorting rule. The templates are sorted by creation time (CreateTime). The default value is desc. Valid values:'."\n" + ."\n" + .'- desc: descending order.'."\n" + ."\n" + .'- asc: ascending order.', 'type' => 'string', 'required' => false, 'example' => 'desc', 'title' => ''], + ], + [ + 'name' => 'Keyword', + 'in' => 'query', + 'schema' => ['description' => 'The keyword for the search. Valid values:'."\n" + ."\n" + .'- Template ID. Exact match is supported.'."\n" + ."\n" + .'- Template name. Fuzzy search is supported.', 'type' => 'string', 'required' => false, 'example' => 'baseline', 'title' => ''], ], ], 'responses' => [ @@ -49293,309 +39342,372 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'JobId' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + 'TemplateList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Template' => [ + 'description' => 'The list of edge transcoding templates.', + 'type' => 'array', + 'items' => [ + 'description' => 'The list of edge transcoding templates.', + 'type' => 'object', + 'properties' => [ + 'Bitrate' => ['description' => 'The bitrate configuration. The bitrate can be fixed or can follow the source stream.', 'type' => 'string', 'example' => '3000', 'title' => ''], + 'Codec' => ['description' => 'The video encoding format. Valid values:'."\n" + ."\n" + .'- H.264.'."\n" + ."\n" + .'- H.265.', 'type' => 'string', 'example' => 'H.264', 'title' => ''], + 'CreateTime' => ['description' => 'The time when the template was created.', 'type' => 'string', 'example' => '2023-07-25T02:48:58Z', 'title' => ''], + 'Fps' => ['description' => 'The frame rate configuration. The frame rate can be fixed or can follow the source stream.', 'type' => 'string', 'example' => '30', 'title' => ''], + 'Gop' => ['description' => 'The keyframe configuration. You can configure keyframes by frame, by second, or set keyframes to follow the source stream.', 'type' => 'string', 'example' => '2s', 'title' => ''], + 'Name' => ['description' => 'The template name.', 'type' => 'string', 'example' => 'my_template', 'title' => ''], + 'Resolution' => ['description' => 'The resolution configuration. The resolution can be fixed or can follow the source stream.'."\n" + ."\n" + .'> If you set a fixed resolution, setting the width or height to -1 or -2 indicates that the width or height is adaptive.', 'type' => 'string', 'example' => '1920*1080', 'title' => ''], + 'TemplateId' => ['description' => 'The template ID.', 'type' => 'string', 'example' => '9b1571b513cb44f7a1ba6ae561ff46f7', 'title' => ''], + 'Type' => ['description' => 'The edge transcoding type.', 'type' => 'string', 'example' => 'common', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'TotalCount' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'UserTaskExceed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], 403 => [ - [ - 'errorCode' => 'UserQuotaExceed', - 'errorMessage' => 'Quota exceeded: %s.', - ], - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'JobNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ****20b48fb04483915d4f2cd8ac****\\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'StartEdgeTranscodeJob', - 'description' => '* You can call this operation to start an edge transcoding task.'."\n" - .'* To call this operation, make sure that you have the permissions to access the edge transcoding feature and the edge transcoding task that you specify is not started.'."\n" + 'title' => 'ListEdgeTranscodeTemplate', + 'description' => '- You can call this operation to query a list of edge transcoding templates.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- You must have permission to access the edge transcoding service before you can call this operation.'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'StopEdgeTranscodeJob' => [ - 'summary' => 'Stops an edge transcoding task.', - 'methods' => [ - 'post', - 'get', + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 6,000 calls per minute. API calls that exceed this limit are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListEdgeTranscodeTemplate'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListEdgeTranscodeTemplate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TemplateList\\": {\\n \\"Template\\": [\\n {\\n \\"Bitrate\\": \\"3000\\",\\n \\"Codec\\": \\"H.264\\",\\n \\"CreateTime\\": \\"2023-07-25T02:48:58Z\\",\\n \\"Fps\\": \\"30\\",\\n \\"Gop\\": \\"2s\\",\\n \\"Name\\": \\"my_template\\",\\n \\"Resolution\\": \\"1920*1080\\",\\n \\"TemplateId\\": \\"9b1571b513cb44f7a1ba6ae561ff46f7\\",\\n \\"Type\\": \\"common\\"\\n }\\n ]\\n },\\n \\"TotalCount\\": 100\\n}","type":"json"}]', + ], + 'ListEventSub' => [ + 'summary' => 'Queries the events generated in channels to which you subscribe.'."\n", + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveHVN9B2', - ], + 'abilityTreeCode' => '198164', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'ClusterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the data center.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '******3b-4d18-395c-8106-ff21a6******', - ], - ], - [ - 'name' => 'JobId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => '9qb1****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'JobId' => [ - 'description' => 'The ID of the edge transcoding task.'."\n", - 'type' => 'string', - 'example' => '****20b48fb04483915d4f2cd8ac****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08'], + 'Subscribers' => [ + 'description' => 'The events.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the event.'."\n", + 'type' => 'object', + 'properties' => [ + 'SubId' => ['title' => '', 'description' => 'The ID of the event.'."\n", 'type' => 'string', 'example' => '09be0d2254cb5a89f4cbd86403ec****'], + 'ChannelId' => ['description' => 'The ID of the channel to which you subscribe.'."\n", 'type' => 'string', 'example' => 'testmodify', 'title' => ''], + 'Events' => [ + 'title' => '', + 'description' => 'The type of the event. Valid values:'."\n" + ."\n" + .'* ChannelEvent: channel event. For example, the channel is opened or closed.'."\n" + .'* UserEvent: user event. For example, a user joins or leaves the channel.'."\n", + 'type' => 'array', + 'items' => ['description' => 'Subscribe to events.', 'type' => 'string', 'example' => 'ChannelEvent', 'title' => ''], + 'example' => '', + ], + 'CallbackUrl' => ['description' => 'The callback URL.'."\n", 'type' => 'string', 'example' => 'http://****.com/callback', 'title' => ''], + 'CreateTime' => ['title' => '', 'description' => 'The time when the subscription was created. The time is displayed in UTC+8. Format: yyyy-MM-dd hh:mm:ss.'."\n", 'type' => 'string', 'example' => '2023-08-18 10:14:49'], + 'ModifyTime' => ['title' => '', 'description' => 'The time when the subscription was modified. The time is displayed in UTC+8. Format: yyyy-MM-dd hh:mm:ss.'."\n", 'type' => 'string', 'example' => '2023-08-18 10:14:49'], + 'Users' => [ + 'title' => '', + 'description' => 'The user whose events are returned. We recommend that you use either this parameter or Roles.'."\n", + 'type' => 'array', + 'items' => ['description' => 'Callback only for events of this user, not recommended to be used with Roles.', 'type' => 'string', 'example' => 'testUser', 'title' => ''], + 'example' => '', + ], + 'Roles' => ['title' => '', 'description' => 'The role of the user whose events are returned. Valid values:'."\n" + ."\n" + .'* 1: streamer'."\n" + .'* 2: viewer'."\n" + ."\n" + .'An empty value or a value other than 1 and 2 indicates that events of all users in the channel are returned.'."\n" + ."\n" + .'> This parameter is deprecated. When you create a subscription, this parameter is no longer supported.'."\n", 'type' => 'integer', 'format' => 'int32', 'deprecated' => true, 'example' => '1'], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - [ - 'errorCode' => 'JobNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ****20b48fb04483915d4f2cd8ac****\\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'StopEdgeTranscodeJob', - 'description' => '* You can call this operation to stop an edge transcoding task.'."\n" - .'* To call this operation, make sure that you have the permissions to access the edge transcoding feature and the edge transcoding task that you specify is running.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'EnableLiveRealtimeLogDelivery' => [ - 'summary' => 'Enables real-time log delivery for one or more domain names.', - 'methods' => [ - 'get', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08\\",\\n \\"Subscribers\\": [\\n {\\n \\"SubId\\": \\"09be0d2254cb5a89f4cbd86403ec****\\",\\n \\"ChannelId\\": \\"testmodify\\",\\n \\"Events\\": [\\n \\"ChannelEvent\\"\\n ],\\n \\"CallbackUrl\\": \\"http://****.com/callback\\",\\n \\"CreateTime\\": \\"2023-08-18 10:14:49\\",\\n \\"ModifyTime\\": \\"2023-08-18 10:14:49\\",\\n \\"Users\\": [\\n \\"testUser\\"\\n ],\\n \\"Roles\\": 1\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08\\n \\n 09be0d2254cb5a89f4cbd86403ec****\\n testmodify\\n ChannelEvent\\n http://****.com/callback\\n 2023-08-18 10:14:49\\n 2023-08-18 10:14:49\\n testUser\\n 1\\n \\n","errorExample":""}]', + 'title' => 'ListEventSub', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2024-06-14T07:14:01.000Z', 'description' => 'Response parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListEventSub'], + ], ], - 'security' => [ + 'ramActions' => [ [ - 'AK' => [], + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListEventSub', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], ], ], - 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', + ], + 'ListEventSubEvent' => [ + 'summary' => 'Queries callback records.'."\n", + 'methods' => ['get'], + 'schemes' => ['https'], + 'security' => [ + [ + 'AK' => [], ], ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => '9qb1****', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'SubscribeId', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain for which you want to enable real-time log delivery.'."\n" - ."\n" - .'Separate multiple streaming domains with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The subscription ID. You can obtain the ID from the response to the [CreateEventSub](~~2848209~~) operation.'."\n", 'type' => 'string', 'required' => false, 'example' => 'ad53276431c****', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The beginning of the time range to query. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => true, 'maximum' => '2234313863', 'minimum' => '0', 'example' => '1698195600', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => true, 'maximum' => '2234313863', 'minimum' => '0', 'example' => '1698201013', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of callback records to return on each page. Valid values: 1 to 100.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => true, 'maximum' => '100', 'minimum' => '10', 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'PageNo', + 'in' => 'query', + 'schema' => ['description' => 'The page number.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => true, 'maximum' => '9999999999', 'minimum' => '1', 'example' => '20', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'CC8CB656-A7BA-1811-9D6B-4CC187E988BD'], + 'Count' => ['description' => 'The total number of callback records returned on the current page.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'HasMore' => ['description' => 'Indicates whether the current page is followed by a page.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'Logs' => [ + 'description' => 'The callback records.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'AppId' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'example' => '9qb1****', 'title' => ''], + 'SubId' => ['description' => 'The subscription ID.'."\n", 'type' => 'string', 'example' => 'ad53276431c****', 'title' => ''], + 'MessageId' => ['description' => 'The ID of the callback record.'."\n", 'type' => 'string', 'example' => '875d5266cbabb1834cc84a105cf6****', 'title' => ''], + 'Data' => ['description' => 'The details about the callback.'."\n", 'type' => 'string', 'example' => '{\\"MsgId\\":\\"875d5266cbabb1834cc84a105cf68454\\",\\"MsgTimestamp\\":1697545591,\\"SubscribeId\\":\\"09be0d2254cb5a89f4cbd86403ec5343\\",\\"AppId\\":\\"xxx\\",\\"ChannelId\\":\\"9099\\",\\"Contents\\":[{\\"Event\\":\\"UserEvent\\",\\"UserEvent\\":{\\"UserId\\":\\"linux_test\\",\\"EventTag\\":\\"Leave\\",\\"SessionId\\":\\"je7y2sBZJZQ0VBJZrh4LnBkxvGH2WyVs\\",\\"Timestamp\\":1697545591,\\"ChannelProfile\\":\\"interactive_live\\",\\"US\\":5068748604047364,\\"Reason\\":1,\\"Role\\":1,\\"TerminalType\\":6,\\"UserType\\":2}}]}', 'title' => ''], + 'Cost' => ['description' => 'The callback duration. Unit: milliseconds.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '22', 'title' => ''], + 'Time' => ['description' => 'The time when the callback was generated.'."\n", 'type' => 'string', 'example' => '2023-10-17 20:26:31.988', 'title' => ''], + 'Url' => ['description' => 'The callback URL.'."\n", 'type' => 'string', 'example' => 'http://****.com/callback', 'title' => ''], + 'Code' => ['description' => 'The HTTP status code. A value of 200 indicates that the callback was successful.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '200', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], - 404 => [ - [ - 'errorCode' => 'Domain.NotFound', - 'errorMessage' => 'Domain not found', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB87556CA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9732E117-8A37-49FD-A36F-ABBB87556CA7\\n","errorExample":""}]', - 'title' => 'EnableLiveRealtimeLogDelivery', - 'description' => '##'."\n" - ."\n" - .'This operation is applicable to only streaming domains. If you want to configure real-time log delivery for an ingest domain, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" - ."\n" - .'## QPS limit'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ListEventSubEvent', + 'description' => '* The maximum time range to query is seven days.'."\n" + .'* The minimum time granularity to query is 1 minute.'."\n" + .'* You can query data in the last seven days.'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" + .'## [](#qps-)QPS limit'."\n" ."\n" - .'|Error code|HTTP status code|Description|'."\n" - .'|---|---|---|'."\n" - .'|Unauthorized|403|The error message returned because you are not authorized to use Log Service.|', - ], - 'DisableLiveRealtimeLogDelivery' => [ - 'summary' => 'Suspends real-time log delivery for one or more domain names.', - 'methods' => [ - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListEventSubEvent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CC8CB656-A7BA-1811-9D6B-4CC187E988BD\\",\\n \\"Count\\": 1,\\n \\"HasMore\\": false,\\n \\"Logs\\": [\\n {\\n \\"AppId\\": \\"9qb1****\\",\\n \\"SubId\\": \\"ad53276431c****\\",\\n \\"MessageId\\": \\"875d5266cbabb1834cc84a105cf6****\\",\\n \\"Data\\": \\"{\\\\\\\\\\\\\\"MsgId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"875d5266cbabb1834cc84a105cf68454\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"MsgTimestamp\\\\\\\\\\\\\\":1697545591,\\\\\\\\\\\\\\"SubscribeId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"09be0d2254cb5a89f4cbd86403ec5343\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"AppId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"xxx\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"ChannelId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"9099\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"Contents\\\\\\\\\\\\\\":[{\\\\\\\\\\\\\\"Event\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"UserEvent\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"UserEvent\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"UserId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"linux_test\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"EventTag\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"Leave\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"SessionId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"je7y2sBZJZQ0VBJZrh4LnBkxvGH2WyVs\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"Timestamp\\\\\\\\\\\\\\":1697545591,\\\\\\\\\\\\\\"ChannelProfile\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"interactive_live\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"US\\\\\\\\\\\\\\":5068748604047364,\\\\\\\\\\\\\\"Reason\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"Role\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"TerminalType\\\\\\\\\\\\\\":6,\\\\\\\\\\\\\\"UserType\\\\\\\\\\\\\\":2}}]}\\",\\n \\"Cost\\": 22,\\n \\"Time\\": \\"2023-10-17 20:26:31.988\\",\\n \\"Url\\": \\"http://****.com/callback\\",\\n \\"Code\\": 200\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n CC8CB656-A7BA-1811-9D6B-4CC187E988BD\\n 1\\n false\\n \\n 9qb1****\\n ad53276431c****\\n 875d5266cbabb1834cc84a105cf6****\\n {\\\\\\"MsgId\\\\\\":\\\\\\"875d5266cbabb1834cc84a105cf68454\\\\\\",\\\\\\"MsgTimestamp\\\\\\":1697545591,\\\\\\"SubscribeId\\\\\\":\\\\\\"09be0d2254cb5a89f4cbd86403ec5343\\\\\\",\\\\\\"AppId\\\\\\":\\\\\\"xxx\\\\\\",\\\\\\"ChannelId\\\\\\":\\\\\\"9099\\\\\\",\\\\\\"Contents\\\\\\":[{\\\\\\"Event\\\\\\":\\\\\\"UserEvent\\\\\\",\\\\\\"UserEvent\\\\\\":{\\\\\\"UserId\\\\\\":\\\\\\"linux_test\\\\\\",\\\\\\"EventTag\\\\\\":\\\\\\"Leave\\\\\\",\\\\\\"SessionId\\\\\\":\\\\\\"je7y2sBZJZQ0VBJZrh4LnBkxvGH2WyVs\\\\\\",\\\\\\"Timestamp\\\\\\":1697545591,\\\\\\"ChannelProfile\\\\\\":\\\\\\"interactive_live\\\\\\",\\\\\\"US\\\\\\":5068748604047364,\\\\\\"Reason\\\\\\":1,\\\\\\"Role\\\\\\":1,\\\\\\"TerminalType\\\\\\":6,\\\\\\"UserType\\\\\\":2}}]}\\n 22\\n \\n http://****.com/callback\\n 200\\n \\n","errorExample":""}]', + ], + 'ListLiveDelayConfig' => [ + 'summary' => 'Retrieves stream delay configurations.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeNodes' => ['FEATUREliveBP94ZY'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain for which you want to suspend real-time log delivery. Separate multiple streaming domains with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Default value: 1.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries to return on each page. Valid values: 5 to 30. Default value: 10.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], ], ], 'responses' => [ @@ -49603,671 +39715,945 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', - ], - ], - 'description' => '', - ], - ], - ], + 'DelayConfigList' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DelayConfig' => [ + 'itemNode' => true, + 'description' => 'The delay configurations.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'App' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'DelayTime' => ['description' => 'The duration for which the playback is delayed. Unit: seconds.', 'type' => 'string', 'example' => '60', 'title' => ''], + 'Domain' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'Stream' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'TaskTriggerMode' => ['description' => 'The trigger mode. Valid values:'."\n" + ."\n" + .'- **PUBLISH\\_ONLY**: Stream delay is triggered only by relevant parameters in the ingest URL.'."\n" + ."\n" + .'- **CONFIG\\_ONLY**: Stream delay is triggered only by the configuration. Parameters in the ingest URL are ignored.'."\n" + ."\n" + .'- **PUBLISH\\_CONFIG**: Stream delay is triggered by both the configuration and parameters in the ingest URL. Parameters in the ingest URL have a higher priority than the configuration.', 'type' => 'string', 'example' => 'PUBLISH_ONLY', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A3136B58-5876-4168-83CA-B562781981A0', 'title' => ''], + 'Total' => ['description' => 'The total number of stream delay configurations.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'Invalid parameter:%s.'], ], - 404 => [ - [ - 'errorCode' => 'Domain.NotFound', - 'errorMessage' => 'Domain not found', + ], + 'title' => 'ListLiveDelayConfig', + 'description' => 'The queries per second (QPS) limit for a single user is 60. If you exceed this limit, API calls are throttled, which may impact your business. Ensure that you call this operation within this limit.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveDelayConfig'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB87556CA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9732E117-8A37-49FD-A36F-ABBB87556CA7\\n","errorExample":""}]', - 'title' => 'DisableLiveRealtimeLogDelivery', - 'description' => 'Obtain a domain name for which real-time log delivery is enabled, and then call this operation to suspend real-time log delivery for the domain name.'."\n" - ."\n" - .'This operation is applicable to only streaming domains. If you want to configure real-time log delivery for an ingest domain, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" - ."\n" - .'|HTTP status code|Error code|Description|'."\n" - .'|---|---|---|'."\n" - .'|403|Unauthorized|The error message returned because you are not authorized to use Log Service.|', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DelayConfigList\\": {\\n \\"DelayConfig\\": [\\n {\\n \\"App\\": \\"liveApp****\\",\\n \\"DelayTime\\": \\"60\\",\\n \\"Domain\\": \\"example.com\\",\\n \\"Stream\\": \\"liveStream****\\",\\n \\"TaskTriggerMode\\": \\"PUBLISH_ONLY\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"A3136B58-5876-4168-83CA-B562781981A0\\",\\n \\"Total\\": 1\\n}","type":"json"}]', ], - 'ModifyLiveRealtimeLogDelivery' => [ - 'summary' => 'Modifies the configuration of real-time log delivery for a domain name.', - 'methods' => [ - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'ListLiveMessageApps' => [ + 'summary' => 'Queries interactive messaging applications.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeCode' => '193889', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Project', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'project_example', - ], - ], - [ - 'name' => 'Logstore', + 'name' => 'SortType', 'in' => 'query', + 'allowEmptyValue' => false, 'schema' => [ - 'description' => 'The name of the Logstore to which log entries are delivered.'."\n", - 'type' => 'string', + 'title' => '', + 'description' => 'The sort order based on the creation time. Valid values:'."\n" + ."\n" + .'* 1: ascending order'."\n" + .'* 2: descending order'."\n", + 'type' => 'integer', + 'format' => 'int32', 'required' => true, - 'example' => 'logstore_example', + 'maximum' => '2', + 'minimum' => '1', + 'example' => '1', + 'enum' => ['1', '2'], ], ], [ - 'name' => 'Region', + 'name' => 'NextPageToken', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region where the Log Service project is deployed.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou', - ], + 'schema' => ['title' => '', 'description' => 'The starting page number for the query. If you leave this parameter empty or set this parameter to -1, the query starts from the first page.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '-1'], ], [ - 'name' => 'DomainName', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain for which you want to modify the configuration of real-time log delivery.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'The returned result.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', + 'RequestId' => ['title' => '', 'description' => 'The ID of the request.'."\n", 'type' => 'string', 'example' => 'B8EB4994-1368-1458-B9F3-5B88D76D734C'], + 'HasMore' => ['description' => 'Indicates whether the current page is followed by a page.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'NextPageToken' => ['description' => 'The starting page number for the next query. This parameter is returned only if the value of HasMore is true.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'AppList' => [ + 'description' => 'The interactive messaging applications.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the interactive messaging application.'."\n", + 'type' => 'object', + 'properties' => [ + 'AppId' => ['description' => 'The ID of the interactive messaging application queried.'."\n", 'type' => 'string', 'example' => 'demo', 'title' => ''], + 'AppKey' => ['description' => 'The AppKey of the interactive messaging application. It is used to authorize operations related to the application ID.'."\n", 'type' => 'string', 'example' => '**********************************', 'title' => ''], + 'AppSign' => ['description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", 'type' => 'string', 'example' => '**************************************************************************', 'title' => ''], + 'Disable' => ['description' => 'Indicates whether the interactive messaging application is disabled.'."\n", 'type' => 'string', 'example' => 'false', 'title' => ''], + 'AppName' => ['description' => 'The name of the application.'."\n", 'type' => 'string', 'example' => 'testApp', 'title' => ''], + 'CreateTime' => ['description' => 'The time when the application was created. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1698305471', 'title' => ''], + 'ModifyTime' => ['description' => 'The time when the application was last modified. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1698305471', 'title' => ''], + 'MsgLifeCycle' => ['description' => 'The retention period of group messages in the application. Valid values:'."\n" + ."\n" + .'* 0 (default): 30 days'."\n" + .'* 1: 90 days'."\n" + .'* 2: 180 days'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'DataCenter' => ['description' => 'The live center.'."\n", 'type' => 'string', 'example' => 'cn-shanghai', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], - 404 => [ - [ - 'errorCode' => 'Domain.NotFound', - 'errorMessage' => 'Domain not found', - ], - [ - 'errorCode' => 'LogstoreNotExist', - 'errorMessage' => 'Logstore does not exist', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB87556CA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9732E117-8A37-49FD-A36F-ABBB87556CA7\\n","errorExample":""}]', - 'title' => 'ModifyLiveRealtimeLogDelivery', - 'description' => '* You can call this operation to modify the configuration of real-time log delivery for a domain name. Logs for a domain name can be delivered to only one Logstore.'."\n" - ."\n" - .'This operation is applicable to only streaming domains. If you want to configure real-time log delivery for an ingest domain, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" - ."\n" - .'* You can call the [DescribeLiveDomainRealtimeLogDelivery](~~2848121~~) operation to query the Project, Logstore, and Region parameters.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" - ."\n" - .'|HTTP status code|Error code|Description|'."\n" - .'|---|---|---|'."\n" - .'|403|LogstoreNotExist|The error message returned because the specified Logstore was not found.|'."\n" - .'|404|Domain.NotFound|The error message returned because Log Service is not activated for the domain name.|', - ], - 'CreateLiveRealTimeLogDelivery' => [ - 'summary' => 'Configures real-time log delivery for a domain name.', - 'methods' => [ - 'get', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ListLiveMessageApps', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2025-03-26T02:53:05.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2025-01-23T12:00:01.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-08-01T02:18:30.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-01-09T03:34:27.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveMessageApps'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageApps', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B8EB4994-1368-1458-B9F3-5B88D76D734C\\",\\n \\"HasMore\\": true,\\n \\"NextPageToken\\": 1,\\n \\"AppList\\": [\\n {\\n \\"AppId\\": \\"demo\\",\\n \\"AppKey\\": \\"**********************************\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"Disable\\": \\"false\\",\\n \\"AppName\\": \\"testApp\\",\\n \\"CreateTime\\": 1698305471,\\n \\"ModifyTime\\": 1698305471,\\n \\"MsgLifeCycle\\": 1,\\n \\"DataCenter\\": \\"cn-shanghai\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n B8EB4994-1368-1458-B9F3-5B88D76D734C\\n true\\n 1\\n \\n demo\\n **********************************\\n **************************************************************************\\n false\\n testApp\\n 1698305471\\n 1698305471\\n 1\\n cn-shanghai\\n \\n","errorExample":""}]', + ], + 'ListLiveMessageGroupByPage' => [ + 'summary' => 'Queries interactive messaging groups by page.'."\n", + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeCode' => '222094', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the interactive messaging application.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'Project', + 'name' => 'SortType', 'in' => 'query', 'schema' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery.'."\n", - 'type' => 'string', + 'description' => 'The sort order based on the time when the groups were created. Valid values:'."\n" + ."\n" + .'* 1: ascending order'."\n" + .'* 2: descending order'."\n", + 'type' => 'integer', + 'format' => 'int32', 'required' => true, - 'example' => 'test_project', + 'maximum' => '2', + 'minimum' => '1', + 'example' => '1', + 'enum' => ['1', '2'], + 'title' => '', ], ], [ - 'name' => 'Logstore', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Logstore to which log entries are delivered.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'test_logstore', - ], + 'schema' => ['description' => 'The number of entries per page. Valid values:\\[1,50].'."\n" + ."\n" + .'Default value: 20.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '50', 'example' => '20', 'title' => ''], ], [ - 'name' => 'Region', + 'name' => 'PageNumber', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region where the Log Service project is deployed.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou', - ], + 'schema' => ['description' => 'The page number. Valid values: \\[1,10000].'."\n" + ."\n" + .'Default value: 1.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '10000', 'minimum' => '1', 'example' => '1', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'GroupStatus', 'in' => 'query', 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + 'description' => 'The status of the groups to query. Default value: 0. Valid values:'."\n" + ."\n" + .'* 0: all groups'."\n" + .'* 1: existing groups'."\n" + .'* 2: deleted groups'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'enum' => ['0', '1', '2'], + 'title' => '', ], ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'F32C57AA-7BF8-49AE-A2CC-9F42390F5A19', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.'."\n", 'type' => 'string', 'example' => 'B5D95365-5A46-1A6A-BBF5-C7B6BDED****'], + 'TotalCount' => ['description' => 'The total number of entries returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '50', 'title' => ''], + 'PageNumber' => ['description' => 'The page number.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries returned on each page.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '20', 'title' => ''], + 'GroupList' => [ + 'description' => 'The list of groups.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'GroupId' => ['description' => 'The ID of the interactive messaging group.'."\n", 'type' => 'string', 'example' => 'cU9MeBqf****', 'title' => ''], + 'CreatorId' => ['description' => 'The ID of the user who created the group.'."\n", 'type' => 'string', 'example' => 'user_77', 'title' => ''], + 'AdminList' => [ + 'description' => 'The list of administrators.'."\n", + 'type' => 'array', + 'items' => ['description' => 'The ID of the administrator.'."\n", 'type' => 'string', 'example' => 'uid1', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'Createtime' => ['description' => 'The time when the group was created. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1698299727', 'title' => ''], + 'GroupName' => ['description' => 'The name of the group.'."\n", 'type' => 'string', 'example' => 'mytestgroup', 'title' => ''], + 'GroupInfo' => ['description' => 'The additional information about the group.'."\n", 'type' => 'string', 'example' => 'testgroupinfo', 'title' => ''], + 'Delete' => ['description' => 'Indicates whether the group is deleted.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], - 404 => [ - [ - 'errorCode' => 'LogstoreNotExist', - 'errorMessage' => 'Logstore does not exist', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F32C57AA-7BF8-49AE-A2CC-9F42390F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n F32C57AA-7BF8-49AE-A2CC-9F42390F5A19\\r\\n","errorExample":""}]', - 'title' => 'CreateLiveRealTimeLogDelivery', - 'description' => '##'."\n" - ."\n" - .'Obtain the streaming domain, and then call this operation to configure real-time log delivery for the streaming domain.'."\n" - ."\n" - .'This operation is applicable to only streaming domains. If you want to configure real-time log delivery for an ingest domain, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" - ."\n" - .'## QPS limit'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B5D95365-5A46-1A6A-BBF5-C7B6BDED****\\",\\n \\"TotalCount\\": 50,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 20,\\n \\"GroupList\\": [\\n {\\n \\"GroupId\\": \\"cU9MeBqf****\\",\\n \\"CreatorId\\": \\"user_77\\",\\n \\"AdminList\\": [\\n \\"uid1\\"\\n ],\\n \\"Createtime\\": 1698299727,\\n \\"GroupName\\": \\"mytestgroup\\",\\n \\"GroupInfo\\": \\"testgroupinfo\\",\\n \\"Delete\\": true\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n B5D95365-5A46-1A6A-BBF5-C7B6BDED****\\n 50\\n 1\\n 20\\n \\n cU9MeBqf****\\n user_77\\n uid1\\n 1698299727\\n mytestgroup\\n testgroupinfo\\n true\\n \\n","errorExample":""}]', + 'title' => 'ListLiveMessageGroupByPage', + 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" + .'## [](#qps-)QPS limit'."\n" ."\n" - .'|HTTP status code|Error code|Description|'."\n" - .'|---|---|---|'."\n" - .'|403|Unauthorized|The error message returned because you are not authorized to use Log Service.|'."\n" - .'|404|LogstoreNotExist|The error message returned because the specified Logstore is not found.|', - ], - 'DeleteLiveRealtimeLogDelivery' => [ - 'summary' => 'Deletes the configurations of real-time log delivery for one or more domain names.', - 'methods' => [ - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveMessageGroupByPage'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageGroupByPage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'ListLiveMessageGroupMessages' => [ + 'summary' => 'Queries the messages sent in a group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], - ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the interactive messaging application to query.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'GroupId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the group to query.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The number of entries per page. Valid values: **10 to 50**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '50', 'minimum' => '10', 'example' => '10'], + ], + [ + 'name' => 'SortType', 'in' => 'query', 'schema' => [ - 'description' => 'The streaming domain.'."\n" + 'title' => '', + 'description' => 'The sort order based on the time when the messages were sent. Valid values:'."\n" ."\n" - .'Separate multiple streaming domains with commas (,).'."\n", - 'type' => 'string', + .'* 1: ascending order'."\n" + .'* 2: descending order'."\n", + 'type' => 'integer', + 'format' => 'int32', 'required' => true, - 'example' => 'example.com,example.aliyundoc.com', + 'maximum' => '2', + 'minimum' => '1', + 'example' => '1', + 'enum' => ['1', '2'], ], ], [ - 'name' => 'Project', + 'name' => 'NextPageToken', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'project_example', - ], + 'schema' => ['title' => '', 'description' => 'The starting page number for the query. If you leave this parameter empty, the query starts from the first page.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1'], ], [ - 'name' => 'Logstore', + 'name' => 'MsgType', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Logstore to which log entries are delivered.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'logstore_example', - ], + 'schema' => ['title' => '', 'description' => 'The type of messages that you want to query. If you leave this parameter empty, all types of messages are queried.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1'], ], [ - 'name' => 'Region', + 'name' => 'BeginTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region where the Log Service project is deployed.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou', - ], + 'schema' => ['title' => '', 'description' => 'The beginning of the time range to query. The value is a UNIX timestamp. Unit: seconds. If you leave this parameter empty, the earliest available time is used.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1697783235'], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The end of the time range to query. The value is a UNIX timestamp. Unit: seconds. If you leave this parameter empty, the latest available time is used.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1698301635'], + ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '1668FDC3-63D7-102F-B5D4-3D2F91D1****'], + 'GroupId' => ['description' => 'The ID of the group queried.'."\n", 'type' => 'string', 'example' => 'grouptest', 'title' => ''], + 'NextPageToken' => ['title' => '', 'description' => 'The starting page number for the next query. A value of 0 indicates that no further pages can be queried.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'Hasmore' => ['title' => '', 'description' => 'Indicates whether the current page is followed by another page.'."\n", 'type' => 'boolean', 'example' => 'false'], + 'MessageList' => [ + 'description' => 'Details about the messages.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Sender' => [ + 'description' => 'The details about the user who sent the message.'."\n", + 'type' => 'object', + 'properties' => [ + 'UserId' => ['description' => 'The ID of the user who sent the message.'."\n", 'type' => 'string', 'example' => 'uid2', 'title' => ''], + 'UserInfo' => ['description' => 'The additional information about the user who sent the message.'."\n", 'type' => 'string', 'example' => 'testusermeta2', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'Body' => ['description' => 'The message body.'."\n", 'type' => 'string', 'example' => 'step2 helo, cc group', 'title' => ''], + 'Timestamp' => ['description' => 'The time when the message was sent. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1697081134', 'title' => ''], + 'MsgTid' => ['description' => 'The ID of the message.'."\n", 'type' => 'string', 'example' => 'c-1-1-0', 'title' => ''], + 'MsgType' => ['description' => 'The type of the message.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '2', 'title' => ''], + 'SeqNumber' => ['description' => 'The sequence number of the message.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'TotalMessages' => ['description' => 'The total number of messages.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], - 404 => [ - [ - 'errorCode' => 'LogstoreNotExist', - 'errorMessage' => 'Logstore does not exist', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB87556CA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9732E117-8A37-49FD-A36F-ABBB87556CA7\\n","errorExample":""}]', - 'title' => 'DeleteLiveRealtimeLogDelivery', - 'description' => '*'."\n" - .'* This operation is applicable to only streaming domains. If you want to configure real-tome log delivery for an ingest domain, [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" - .'* You can call the [DescribeLiveDomainRealtimeLogDelivery](~~2848121~~) to query the Project, Logstore, and Region parameters.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1668FDC3-63D7-102F-B5D4-3D2F91D1****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"NextPageToken\\": 0,\\n \\"Hasmore\\": false,\\n \\"MessageList\\": [\\n {\\n \\"Sender\\": {\\n \\"UserId\\": \\"uid2\\",\\n \\"UserInfo\\": \\"testusermeta2\\"\\n },\\n \\"Body\\": \\"step2 helo, cc group\\",\\n \\"Timestamp\\": 1697081134,\\n \\"MsgTid\\": \\"c-1-1-0\\",\\n \\"MsgType\\": 2,\\n \\"SeqNumber\\": 1,\\n \\"TotalMessages\\": 1\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 1668FDC3-63D7-102F-B5D4-3D2F91D1****\\n grouptest\\n 0\\n false\\n \\n \\n uid2\\n testusermeta2\\n \\n step2 helo, cc group\\n 1697081134\\n c-1-1-0\\n 2\\n 1\\n 1\\n \\n","errorExample":""}]', + 'title' => 'ListLiveMessageGroupMessages', + 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" - ."\n" - .'|HTTP status code|Error code|Description|'."\n" - .'|---|---|---|'."\n" - .'|403|Unauthorized|The error message returned because you are not authorized to use Log Service.|'."\n" - .'|404|LogstoreNotExist|The error message returned because the specified Logstore is not found.|', - ], - 'DescribeLiveDomainRealtimeLogDelivery' => [ - 'summary' => 'Queries the information about real-time log delivery for a domain name.', - 'methods' => [ - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageGroupMessages', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'ListLiveMessageGroupUsers' => [ + 'summary' => 'Queries the users in an interactive messaging group.'."\n", + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107035', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeCode' => '194318', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the interactive messaging application to query.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'GroupId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the group to query.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The number of entries per page. Valid values: **10 to 50**.'."\n", 'type' => 'integer', 'format' => 'int32', 'required' => true, 'maximum' => '30', 'minimum' => '10', 'example' => '10'], + ], + [ + 'name' => 'SortType', 'in' => 'query', 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', + 'title' => '', + 'description' => 'The sort order based on the time when the users joined the group. Valid values:'."\n" + ."\n" + .'* 1: ascending order'."\n" + .'* 2: descending order'."\n", + 'type' => 'integer', + 'format' => 'int32', 'required' => true, - 'example' => 'example.com', + 'maximum' => '2', + 'minimum' => '1', + 'example' => '1', + 'enum' => ['1', '2'], ], ], + [ + 'name' => 'NextPageToken', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The starting page number for the query. If you leave this parameter empty, the query starts from the first page.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1'], + ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'Status' => [ - 'description' => 'The status of real-time log delivery. Valid values:'."\n" - ."\n" - .'* online: Real-time log delivery is enabled.'."\n" - .'* offline: Real-time log delivery is disabled.'."\n", - 'type' => 'string', - 'example' => 'online', - ], - 'Logstore' => [ - 'description' => 'The name of the Logstore to which log entries are delivered.'."\n", - 'type' => 'string', - 'example' => 'logstore_example', - ], - 'Project' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery.'."\n", - 'type' => 'string', - 'example' => 'project_example', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '2F8F3852-912F-42AC-80EB-F1CF4284DE93', - ], - 'Region' => [ - 'description' => 'The ID of the region where the Log Service project is deployed.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'A1D75BEA-1329-116F-B29C-76F3F200****'], + 'GroupId' => ['description' => 'The ID of the group queried.'."\n", 'type' => 'string', 'example' => 'grouptest', 'title' => ''], + 'NextPageToken' => ['title' => '', 'description' => 'The starting page number for the next query. A value of 0 indicates that no further pages can be queried.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '0'], + 'Hasmore' => ['title' => '', 'description' => 'Indicates whether the current page is followed by another page.'."\n", 'type' => 'boolean', 'example' => 'false'], + 'UserList' => [ + 'description' => 'Details about the users.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'UserId' => ['title' => '', 'description' => 'The ID of the user.'."\n", 'type' => 'string', 'example' => 'uid1'], + 'UserInfo' => ['title' => '', 'description' => 'The additional information about the user.'."\n", 'type' => 'string', 'example' => 'info1'], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], - 404 => [ - [ - 'errorCode' => 'Domain.NotFound', - 'errorMessage' => 'Domain not found', - ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 420 => [ + ['errorCode' => 'SuperLargeGroup', 'errorMessage' => '%s.', 'description' => 'When the group has more than 2000 members, the group is upgraded to a super large group and no longer supports querying the user list.'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Status\\": \\"online\\",\\n \\"Logstore\\": \\"logstore_example\\",\\n \\"Project\\": \\"project_example\\",\\n \\"RequestId\\": \\"2F8F3852-912F-42AC-80EB-F1CF4284DE93\\",\\n \\"Region\\": \\"cn-shanghai\\"\\n}","errorExample":""},{"type":"xml","example":"\\n online\\n logstore_example\\n project_example\\n 2F8F3852-912F-42AC-80EB-F1CF4284DE93\\n cn-shanghai\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainRealtimeLogDelivery', - 'description' => 'You can call this operation to query the status of real-time log delivery for a domain name. Make sure that the parameter settings meet the requirements.'."\n" - ."\n" - .'## QPS limit'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ListLiveMessageGroupUsers', + 'description' => '* Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + .'* For a super group, which has more than 2,000 users, the user list cannot be queried. In addition, the notifications about users entering or leaving the group are sent at an interval of at least of 5 seconds. These notifications display the accurate number of users in the group for the time being, but do not display the list of all users entering or leaving the group. Once a group is upgraded to a super group, the user list of the group is immediately cleared. The super group cannot be restored to a normal group until all users in the group leave the group (that is, the group is closed). After you reopen the group, it is restored to a normal group.'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" + .'## [](#qps-)QPS limit'."\n" ."\n" - .'|HTTP status code|Error code|Description|'."\n" - .'|---|---|---|'."\n" - .'|404|Domain.NotFound|The error message returned because Log Service is not activated for the domain name.|', - ], - 'ListLiveRealtimeLogDelivery' => [ - 'summary' => 'Queries all configurations of real-time log delivery under an Alibaba Cloud account.', - 'methods' => [ - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2025-03-26T02:42:53.000Z', 'description' => 'Error codes changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageGroupUsers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A1D75BEA-1329-116F-B29C-76F3F200****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"NextPageToken\\": 0,\\n \\"Hasmore\\": false,\\n \\"UserList\\": [\\n {\\n \\"UserId\\": \\"uid1\\",\\n \\"UserInfo\\": \\"info1\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n A1D75BEA-1329-116F-B29C-76F3F200****\\n grouptest\\n 0\\n false\\n \\n uid1\\n info1\\n \\n","errorExample":""}]', + ], + 'ListLiveMessageGroups' => [ + 'summary' => 'Queries the interactive messaging groups in an interactive messaging application.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeCode' => '194270', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'LiveOpenapiReserve', + 'name' => 'SortType', 'in' => 'query', 'schema' => [ - 'description' => 'This parameter has no practical significance.'."\n", - 'type' => 'string', - 'required' => false, + 'title' => '', + 'description' => 'The sort order based on the time when the groups were created. Valid values:'."\n" + ."\n" + .'* 1: ascending order'."\n" + .'* 2: descending order'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'maximum' => '2', + 'minimum' => '1', 'example' => '1', + 'enum' => ['1', '2'], ], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'description' => 'The details about real-time log delivery.'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '30559C03-86C9-4EEC-B840-0DC5F5A2189B', + [ + 'name' => 'NextPageToken', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The starting page number for the query. If you leave this parameter empty, the query starts from the first page.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1001'], + ], + [ + 'name' => 'GroupStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the groups to query. Default value: 0. Valid values:'."\n" + ."\n" + .'* 0: all groups'."\n" + .'* 1: existing groups'."\n" + .'* 2: deleted groups'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'enum' => ['0', '1', '2'], + 'title' => '', + ], + ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => 'B5D95365-5A46-1A6A-BBF5-C7B6BDED****'], + 'Hasmore' => ['title' => '', 'description' => 'Indicates whether the current page is followed by another page.'."\n", 'type' => 'boolean', 'example' => 'false'], + 'NextpageToken' => ['description' => 'The starting page number for the next query. This parameter is returned only if the value of Hasmore is true.'."\n", 'type' => 'string', 'example' => '1001', 'title' => ''], + 'GroupList' => [ + 'description' => 'Details about the groups.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the groups.', + 'type' => 'object', + 'properties' => [ + 'GroupId' => ['description' => 'The ID of the group.'."\n", 'type' => 'string', 'example' => 'cU9MeBqf****', 'title' => ''], + 'CreatorId' => ['description' => 'The ID of the group creator.'."\n", 'type' => 'string', 'example' => 'user_77', 'title' => ''], + 'AdminList' => [ + 'description' => 'The list of the IDs of the group administrators.'."\n", + 'type' => 'array', + 'items' => ['description' => 'Administrator.', 'type' => 'string', 'example' => 'uid1', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'Createtime' => ['description' => 'The time when the group was created. The value is a UNIX timestamp. Unit: seconds.'."\n", 'type' => 'integer', 'format' => 'int64', 'example' => '1698299727', 'title' => ''], + 'GroupName' => ['description' => 'The name of the group.'."\n", 'type' => 'string', 'example' => 'mytestgroup', 'title' => ''], + 'GroupInfo' => ['description' => 'The additional information about the group.'."\n", 'type' => 'string', 'example' => 'testgroupinfo', 'title' => ''], + 'Delete' => ['description' => 'Indicates whether the group is deleted.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + ], + 'example' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B5D95365-5A46-1A6A-BBF5-C7B6BDED****\\",\\n \\"Hasmore\\": false,\\n \\"NextpageToken\\": \\"1001\\",\\n \\"GroupList\\": [\\n {\\n \\"GroupId\\": \\"cU9MeBqf****\\",\\n \\"CreatorId\\": \\"user_77\\",\\n \\"AdminList\\": [\\n \\"uid1\\"\\n ],\\n \\"Createtime\\": 1698299727,\\n \\"GroupName\\": \\"mytestgroup\\",\\n \\"GroupInfo\\": \\"testgroupinfo\\",\\n \\"Delete\\": true\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n B5D95365-5A46-1A6A-BBF5-C7B6BDED****\\n false\\n \\n cU9MeBqf****\\n user_77\\n uid1\\n 1698299727\\n mytestgroup\\n testgroupinfo\\n true\\n \\n","errorExample":""}]', + 'title' => 'ListLiveMessageGroups', + 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2024-05-23T05:54:49.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveMessageGroups'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageGroups', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], + ], + ], + 'ListLiveRealtimeLogDelivery' => [ + 'methods' => ['get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATURElive066BXV'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'LiveOpenapiReserve', + 'in' => 'query', + 'schema' => ['description' => 'This parameter is not used.', 'type' => 'string', 'required' => false, 'example' => '无', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The real-time log delivery information.', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '30559C03-86C9-4EEC-B840-0DC5F5A2189B', 'title' => ''], 'Content' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'RealtimeLogDeliveryInfo' => [ - 'description' => 'The configurations of real-time log delivery.'."\n", + 'description' => 'The real-time log delivery information.', 'type' => 'array', 'items' => [ - 'description' => 'The configuration of real-time log delivery.'."\n", + 'description' => 'The real-time log delivery information.', 'type' => 'object', 'properties' => [ - 'Status' => [ - 'description' => 'The status of real-time log delivery. Valid values:'."\n" - ."\n" - .'* **online**: enabled'."\n" - .'* **offline**: disabled'."\n", - 'type' => 'string', - 'example' => 'online', - ], - 'DmId' => [ - 'description' => 'The ID of the domain name.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1001010', - ], - 'Region' => [ - 'description' => 'The ID of the region where the Log Service project is deployed.'."\n", - 'type' => 'string', - 'example' => 'cn-hangzhou', - ], - 'Logstore' => [ - 'description' => 'The name of the Logstore to which log entries are delivered.'."\n", - 'type' => 'string', - 'example' => 'logstore_example', - ], - 'Project' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery.'."\n", - 'type' => 'string', - 'example' => 'project_example', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], + 'Status' => ['description' => 'The status of the log service. Valid values:'."\n" + ."\n" + .'- **online**: The service is running.'."\n" + ."\n" + .'- **offline**: The service is stopped.', 'type' => 'string', 'example' => 'online', 'title' => ''], + 'DmId' => ['description' => 'The domain ID.', 'type' => 'integer', 'format' => 'int32', 'example' => '1001010', 'title' => ''], + 'Region' => ['description' => 'The region where logs are delivered to Simple Log Service (SLS).', 'type' => 'string', 'example' => 'cn-hangzhou', 'title' => ''], + 'Logstore' => ['description' => 'The name of the Logstore in SLS.', 'type' => 'string', 'example' => 'logstore_example', 'title' => ''], + 'Project' => ['description' => 'The name of the project in SLS.', 'type' => 'string', 'example' => 'project_example', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"30559C03-86C9-4EEC-B840-0DC5F5A2189B\\",\\n \\"Content\\": {\\n \\"RealtimeLogDeliveryInfo\\": [\\n {\\n \\"Status\\": \\"online\\",\\n \\"DmId\\": 1001010,\\n \\"Region\\": \\"cn-hangzhou\\",\\n \\"Logstore\\": \\"logstore_example\\",\\n \\"Project\\": \\"project_example\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 30559C03-86C9-4EEC-B840-0DC5F5A2189B\\n \\n \\n online\\n cn-hangzhou-corp\\n example.com\\n 1001010\\n project_example\\n logstore_example\\n \\n \\n online\\n cn-hangzhou\\n example.com\\n 101010101\\n project_example\\n logstore_example\\n \\n \\n","errorExample":""}]', 'title' => 'ListLiveRealtimeLogDelivery', - 'description' => 'You can call this operation to query all configurations of real-time log delivery under an account. Make sure that the parameter settings meet the requirements.'."\n" + 'summary' => 'You can call the ListLiveRealtimeLogDelivery operation to query all real-time log delivery configurations.', + 'description' => 'You can call this operation to query all real-time log delivery configurations. Make sure that the parameters are set as required.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for this operation is 6,000 calls per minute for each user. API calls that exceed this limit are throttled, which may impact your business. Call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'ListLiveRealtimeLogDeliveryDomains' => [ - 'summary' => 'Queries all domain names that are associated with a specific configuration of real-time log delivery.', - 'methods' => [ - 'get', + 'extraInfo' => '## 特定错误码'."\n" + .'| HttpCode| 错误码 | 错误信息|描述 |'."\n" + .'|--------------------------|----------------------|---------------------|-----------|'."\n" + .'| 403| Unauthorized |RealtimeLogDelivery Service Not Authorized | 没有开启实时投递授权。|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"30559C03-86C9-4EEC-B840-0DC5F5A2189B\\",\\n \\"Content\\": {\\n \\"RealtimeLogDeliveryInfo\\": [\\n {\\n \\"Status\\": \\"online\\",\\n \\"DmId\\": 1001010,\\n \\"Region\\": \\"cn-hangzhou\\",\\n \\"Logstore\\": \\"logstore_example\\",\\n \\"Project\\": \\"project_example\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'ListLiveRealtimeLogDeliveryDomains' => [ + 'summary' => 'Call ListLiveRealtimeLogDeliveryDomains to query all streaming domains that are configured for the real-time log delivery service.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -50279,49 +40665,28 @@ 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '107178', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'Project', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'project_example', - ], + 'schema' => ['description' => 'The name of the SLS project for real-time log delivery.', 'type' => 'string', 'required' => true, 'example' => 'project_example', 'title' => ''], ], [ 'name' => 'Logstore', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Logstore to which log entries are delivered.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'logstore_example', - ], + 'schema' => ['description' => 'The name of the SLS Logstore for real-time log delivery.', 'type' => 'string', 'required' => true, 'example' => 'logstore_example', 'title' => ''], ], [ 'name' => 'Region', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region where the Log Service project is deployed.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou', - ], + 'schema' => ['description' => 'The region of the SLS project for real-time log delivery.', 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou', 'title' => ''], ], ], 'responses' => [ @@ -50329,71 +40694,64 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '95D5B69F-8AEC-419B-8F3A-612B35032B0D', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '95D5B69F-8AEC-419B-8F3A-612B35032B0D', 'title' => ''], 'Content' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'Domains' => [ - 'description' => 'The domain names.'."\n", + 'itemNode' => true, + 'description' => 'The details of the domain names.', + 'title' => '', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'Status' => [ - 'description' => 'The status of real-time log delivery. Valid values:'."\n" - ."\n" - .'* **online**: enabled'."\n" - .'* **offline**: disabled'."\n", - 'type' => 'string', - 'example' => 'online', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], + 'Status' => ['description' => 'The status of the log delivery service. Valid values:'."\n" + ."\n" + .'- **online**: The service is running.'."\n" + ."\n" + .'- **offline**: The service is stopped.', 'type' => 'string', 'example' => 'online', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], ], 404 => [ - [ - 'errorCode' => 'LogstoreNotExist', - 'errorMessage' => 'Logstore does not exist', - ], + ['errorCode' => 'LogstoreNotExist', 'errorMessage' => 'Logstore does not exist', 'description' => ''], ], ], 'eventInfo' => [ 'enable' => false, 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"95D5B69F-8AEC-419B-8F3A-612B35032B0D\\",\\n \\"Content\\": {\\n \\"Domains\\": [\\n {\\n \\"Status\\": \\"online\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 95D5B69F-8AEC-419B-8F3A-612B35032B0D\\n \\n online\\n example.com\\n \\n","errorExample":""}]', 'title' => 'ListLiveRealtimeLogDeliveryDomains', - 'description' => '* You can call this operation to query all domain names that are associated with a specific configuration of real-time log delivery. The returned results indicate whether real-time log delivery is enabled or disabled for the domain names.'."\n" - .'* You can call the [DescribeLiveDomainRealtimeLogDelivery](~~2848121~~) to query the Project, Logstore, and Region parameters.'."\n" + 'description' => '- This operation queries all streaming domains that are configured for the real-time log delivery service. The response indicates whether the service is online or offline for each domain.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- You can call [DescribeLiveDomainRealtimeLogDelivery](~~2848121~~) to query parameters such as Project, Logstore, and Region.'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 6,000 calls per minute. If you exceed this limit, API calls are throttled. Throttling may affect your business. We recommend that you call this operation within the specified limit.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => '## Special error codes'."\n" @@ -50402,16 +40760,31 @@ .'|---|---|---|---|'."\n" .'|403|Unauthorized|RealtimeLogDelivery Service Not Authorized|The error message returned because you are not authorized to use Log Service.|'."\n" .'|404|LogstoreNotExist|Logstore does not exist|The error message returned because the specified Logstore is not found.|', - ], - 'ListLiveRealtimeLogDeliveryInfos' => [ - 'summary' => 'Queries all configurations of real-time log delivery.', - 'methods' => [ - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveRealtimeLogDeliveryDomains'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveRealtimeLogDeliveryDomains', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"95D5B69F-8AEC-419B-8F3A-612B35032B0D\\",\\n \\"Content\\": {\\n \\"Domains\\": [\\n {\\n \\"Status\\": \\"online\\",\\n \\"DomainName\\": \\"example.com\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'ListLiveRealtimeLogDeliveryInfos' => [ + 'summary' => 'Queries information about all real-time log delivery services.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -50422,29 +40795,18 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'LiveOpenapiReserve', 'in' => 'query', - 'schema' => [ - 'description' => 'This parameter has no practical significance.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'This parameter is reserved.', 'type' => 'string', 'required' => false, 'example' => '无', 'title' => ''], ], ], 'responses' => [ @@ -50452,74 +40814,81 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '95D5B69F-8AEC-419B-8F3A-612B35032B0D', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '95D5B69F-8AEC-419B-8F3A-612B35032B0D', 'title' => ''], 'Content' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ 'RealtimeLogDeliveryInfos' => [ - 'description' => 'Details about the configuration of real-time log delivery.'."\n", + 'itemNode' => true, + 'description' => 'The information about the log delivery services.', + 'title' => '', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'Logstore' => [ - 'description' => 'The name of the Logstore to which log entries are delivered.'."\n", - 'type' => 'string', - 'example' => 'logstore_example', - ], - 'Project' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery.'."\n", - 'type' => 'string', - 'example' => 'project_example', - ], - 'Region' => [ - 'description' => 'The ID of the region where the Log Service project is deployed.'."\n", - 'type' => 'string', - 'example' => 'cn-hangzhou', - ], + 'Logstore' => ['description' => 'The name of the Logstore in Simple Log Service (SLS) for real-time log delivery.', 'type' => 'string', 'example' => 'logstore_example', 'title' => ''], + 'Project' => ['description' => 'The name of the project in SLS for real-time log delivery.', 'type' => 'string', 'example' => 'project_example', 'title' => ''], + 'Region' => ['description' => 'The region where the SLS project for real-time log delivery resides.', 'type' => 'string', 'example' => 'cn-hangzhou', 'title' => ''], ], - 'description' => 'The details about real-time log delivery.'."\n", + 'description' => '', + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"95D5B69F-8AEC-419B-8F3A-612B35032B0D\\",\\n \\"Content\\": {\\n \\"RealtimeLogDeliveryInfos\\": [\\n {\\n \\"Logstore\\": \\"logstore_example\\",\\n \\"Project\\": \\"project_example\\",\\n \\"Region\\": \\"cn-hangzhou\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\n95D5B69F-8AEC-419B-8F3A-612B35032B0D\\n\\n \\n project_example\\n logstore_example\\n cn-hangzhou\\n \\n\\n","errorExample":""}]', 'title' => 'ListLiveRealtimeLogDeliveryInfos', - 'description' => 'You can call this operation to query all configurations of real-time log delivery. Make sure that the parameter settings meet the requirements.'."\n" + 'description' => 'Make sure that you configure the parameters as required when you call this operation.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'The queries per second (QPS) limit for a single user is 6,000 calls per minute. If you exceed this limit, API calls are throttled. This can affect your business, so you should plan your calls accordingly.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', - ], - 'DescribeLivePushProxyLog' => [ - 'summary' => 'Queries the stream relay logs, which are available for download.', - 'methods' => [ - 'post', - 'get', + 'extraInfo' => '## 特定错误码'."\n" + .'| HttpCode| 错误码 | 错误信息 | 描述 |'."\n" + .'|--------------------------|----------------|---------------------------|-----------|'."\n" + .'| 403| Unauthorized | RealtimeLogDelivery Service Not Authorized | 没有开启实时投递授权。 |', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListLiveRealtimeLogDeliveryInfos', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"95D5B69F-8AEC-419B-8F3A-612B35032B0D\\",\\n \\"Content\\": {\\n \\"RealtimeLogDeliveryInfos\\": [\\n {\\n \\"Logstore\\": \\"logstore_example\\",\\n \\"Project\\": \\"project_example\\",\\n \\"Region\\": \\"cn-hangzhou\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'ListLiveTagResources' => [ + 'summary' => 'Queries resources and tags that meet the specified conditions.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -50530,924 +40899,921 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DomainName', + 'name' => 'ResourceId', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The ingest domain. You can specify only one domain in each request.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + 'description' => 'The list of resource IDs. ResourceId and Tag cannot both be empty.', + 'type' => 'array', + 'items' => ['description' => 'The resource ID.'."\n" + ."\n" + .'- When ResourceType is set to DOMAIN, specify the live streaming domain name (such as `example.alivecdn.com`). You can call DescribeLiveUserDomains to obtain the list of domain names under your account.', 'type' => 'string', 'required' => false, 'example' => 'my-resource-id', 'title' => ''], + 'required' => false, + 'maxItems' => 51, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'PageSize', + 'name' => 'Tag', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The number of entries per page. Valid values: \\[1,1000]. Default value: 300.'."\n", - 'type' => 'integer', - 'format' => 'int64', + 'description' => 'The list of tags. ResourceId and Tag cannot both be empty.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag information.', + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The tag key of the resource.', 'type' => 'string', 'required' => false, 'example' => 'env', 'title' => ''], + 'Value' => ['description' => 'The tag value that corresponds to the tag key.', 'type' => 'string', 'required' => false, 'example' => 'dev', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => false, - 'example' => '300', - 'default' => '300', + 'maxItems' => 21, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'PageNumber', + 'name' => 'TagOwnerUid', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '2', - 'default' => '1', - ], + 'schema' => ['description' => 'The Alibaba Cloud account ID to which the tag belongs.', 'type' => 'string', 'required' => false, 'example' => 'xxx1234xxx', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'TagOwnerBid', 'in' => 'query', - 'schema' => [ - 'description' => 'Get the log start time in ISO8601 format with UTC+0 timezone, formatted as yyyy-MM-ddTHH:mm:ssZ.', - 'type' => 'string', - 'required' => false, - 'example' => '2023-09-20T08:00:00Z', - ], + 'schema' => ['description' => 'The Bid of the tag owner.', 'type' => 'string', 'required' => false, 'example' => '26842', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'ResourceType', 'in' => 'query', 'schema' => [ - 'description' => 'Get the log end time.'."\n" - .'Date format follows the ISO8601 representation and uses UTC+0 time, formatted as yyyy-MM-ddTHH:mm:ssZ.', + 'description' => 'The resource type.', + 'enumValueTitles' => ['DOMAIN' => 'domain name resource.'], 'type' => 'string', - 'required' => false, - 'example' => '2023-09-20T09:00:00Z', + 'required' => true, + 'enum' => ['DOMAIN'], + 'example' => 'DOMAIN', + 'title' => '', ], ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => ['description' => 'The token for the next query.', 'type' => 'string', 'required' => false, 'example' => 'q2j8bLtBdhONLRkgaPBa6A==', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => 'The returned results.'."\n", 'type' => 'object', 'properties' => [ - 'DomainLogDetails' => [ + 'NextToken' => ['description' => 'The token for the next query.', 'type' => 'string', 'example' => '6a5e8f4fae643e70d1a2ff1827cd91bd', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + 'TagResources' => [ 'type' => 'object', 'itemNode' => true, 'properties' => [ - 'DomainLogDetail' => [ - 'description' => 'The log information.'."\n", + 'TagResource' => [ + 'description' => 'The list of tag resources.', 'type' => 'array', 'items' => [ - 'description' => '--', + 'description' => 'The tag resource.', 'type' => 'object', 'properties' => [ - 'LogCount' => [ - 'description' => 'The total number of entries returned on the current page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', - ], - 'LogInfos' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LogInfoDetail' => [ - 'description' => 'Details about the logs.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '--', - 'type' => 'object', - 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range during which data was queried.'."\n" - ."\n" - .'The value is a UNIX timestamp.'."\n", - 'type' => 'string', - 'example' => '1695189600', - ], - 'LogName' => [ - 'description' => 'The name of the log file.'."\n", - 'type' => 'string', - 'example' => 'example.com'."\n" - .'_2023_09_20_160000_170000.****.gz', - ], - 'LogPath' => [ - 'description' => 'The path of the log file.'."\n", - 'type' => 'string', - 'example' => '****.aliyuncs.com/push_proxy/****/example.com/2023_09_20/1600/example.com'."\n" - .'_2023_09_20_160000_170000.****.gz', - ], - 'LogSize' => [ - 'description' => 'The size of the log file.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '512', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range during which data was queried.'."\n" - ."\n" - .'The value is a UNIX timestamp.'."\n", - 'type' => 'string', - 'example' => '1695193200', - ], - ], - ], - ], - ], - ], - 'PageInfos' => [ - 'description' => 'The page information.'."\n", - 'type' => 'object', - 'properties' => [ - 'PageIndex' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - 'Total' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - ], - ], + 'ResourceId' => ['description' => 'The resource ID.', 'type' => 'string', 'example' => 'my-resource-id', 'title' => ''], + 'ResourceType' => ['description' => 'The resource type.', 'type' => 'string', 'example' => 'DOMAIN', 'title' => ''], + 'TagKey' => ['description' => 'The tag key.', 'type' => 'string', 'example' => 'env', 'title' => ''], + 'TagValue' => ['description' => 'The tag value.', 'type' => 'string', 'example' => 'dev', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], - ], - 'DomainName' => [ - 'description' => 'Push domain.', - 'type' => 'string', - 'example' => 'example.com', - ], - 'RequestId' => [ - 'description' => 'Request ID.', - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'Specified StartTime is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The specified value of parameter StartTime is not supported.', - ], - [ - 'errorCode' => 'Invalid Parameter', - 'errorMessage' => 'The specified Invalid Parameter', - ], - [ - 'errorCode' => 'Internal Error', - 'errorMessage' => 'Internal Error contact admin', - ], + 401 => [ + ['errorCode' => 'InvalidResourceType', 'errorMessage' => 'The resourceType is invalid.', 'description' => 'The specified resourceType parameter is invalid.'], + ['errorCode' => 'InvalidTagKey', 'errorMessage' => 'The tag key is invalid, %s.', 'description' => 'Invalid tag key.'], + ], + 403 => [ + ['errorCode' => 'InvalidResourcesCount', 'errorMessage' => 'The count of resources is invalid, %s.', 'description' => 'The input resource array. The total number of resources cannot exceed the maximum value and must be greater than 0.'], + ['errorCode' => 'Duplicate.TagKey', 'errorMessage' => 'The tags should not contain duplicate keys.', 'description' => 'The tag should not contain duplicate keys.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DomainLogDetails\\": {\\n \\"DomainLogDetail\\": [\\n {\\n \\"LogCount\\": 10,\\n \\"LogInfos\\": {\\n \\"LogInfoDetail\\": [\\n {\\n \\"EndTime\\": \\"1695189600\\",\\n \\"LogName\\": \\"example.com\\\\n_2023_09_20_160000_170000.****.gz\\",\\n \\"LogPath\\": \\"****.aliyuncs.com/push_proxy/****/example.com/2023_09_20/1600/example.com\\\\n_2023_09_20_160000_170000.****.gz\\",\\n \\"LogSize\\": 512,\\n \\"StartTime\\": \\"1695193200\\"\\n }\\n ]\\n },\\n \\"PageInfos\\": {\\n \\"PageIndex\\": 1,\\n \\"PageSize\\": 20,\\n \\"Total\\": 20\\n }\\n }\\n ]\\n },\\n \\"DomainName\\": \\"example.com\\",\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","errorExample":""},{"type":"xml","example":"\\n example.com\\n CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\n \\n 10\\n \\n 1695189600\\n 512\\n 1695193200\\n example.com\\n_2023_09_20_160000_170000.****.gz\\n ****.aliyuncs.com/push_proxy/****/example.com/2023_09_20/1600/example.com\\n_2023_09_20_160000_170000.****.gz\\n \\n \\n 1\\n 20\\n 20\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLivePushProxyLog', - 'description' => '* The time granularity of the data is 1 hour.'."\n" - .'* You can query data in the last 31 days.'."\n" - .'* If you do not specify the StartTime or EndTime parameter, the data of the last 24 hours is queried. You can specify both the StartTime and EndTime parameters to query the data of a specific time range.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveRealTimeLogLogstore' => [ - 'summary' => 'Deletes the Logstore that is specified by a configuration of real-time log delivery.', - 'methods' => [ - 'get', + 'title' => 'Query resources and tags that meet specified conditions', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListLiveTagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"6a5e8f4fae643e70d1a2ff1827cd91bd\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TagResources\\": {\\n \\"TagResource\\": [\\n {\\n \\"ResourceId\\": \\"my-resource-id\\",\\n \\"ResourceType\\": \\"DOMAIN\\",\\n \\"TagKey\\": \\"env\\",\\n \\"TagValue\\": \\"dev\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'ListMessage' => [ + 'summary' => 'Queries the message list.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], - ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'Project', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Log Service project that is used for real-time log delivery.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'project_example', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'The interactive message application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'Logstore', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the Logstore to which log entries are delivered.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'logstore_example', - ], + 'name' => 'Type', + 'in' => 'formData', + 'schema' => ['description' => 'The user-defined message type. The value must be greater than 10000.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10002', 'title' => ''], ], [ - 'name' => 'Region', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the region where the Log Service project is deployed.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-hangzhou', - ], + 'name' => 'SortType', + 'in' => 'formData', + 'schema' => ['description' => 'The sorting method. Valid values:'."\n" + ."\n" + .'- 0: ascending order by time.'."\n" + ."\n" + .'- 1: descending order by time.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'formData', + 'schema' => ['description' => 'The page number. Default value: 1. Valid values: 1 to 100000.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'formData', + 'schema' => ['description' => 'The number of users displayed per page. Default value: 20. Valid values: 1 to 50.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '20', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'The returned results.', + 'type' => 'object', + 'properties' => [ + 'HasMore' => ['description' => 'Indicates whether there is a next page. Valid values:'."\n" + ."\n" + .'- true: There is a next page.'."\n" + ."\n" + .'- false: There is no next page.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'MessageList' => [ + 'description' => 'The message list.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Data' => ['description' => 'The message body, in JSONString format.', 'type' => 'string', 'example' => 'test', 'title' => ''], + 'GroupId' => ['description' => 'The message group ID.', 'type' => 'string', 'example' => 'AE35-****-T95F', 'title' => ''], + 'MessageId' => ['description' => 'The message ID.', 'type' => 'string', 'example' => 'qt***', 'title' => ''], + 'SenderId' => ['description' => 'The message sender ID.', 'type' => 'string', 'example' => 'yi***', 'title' => ''], + 'Type' => ['description' => 'The message type.', 'type' => 'integer', 'format' => 'int32', 'example' => '10002', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Unauthorized', - 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', - ], + 'title' => 'ListMessage', + 'description' => '## QPS limits'."\n" + ."\n" + .'The single-user QPS limit for this API operation is 100 queries per second (QPS). If the limit is exceeded, API calls will be throttled, which may affect your business. You can call the API operation properly to avoid this issue. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2022-11-24T12:44:21.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-09-13T02:27:23.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-09-13T02:27:23.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMessage'], ], - 404 => [ - [ - 'errorCode' => 'LogstoreNotExist', - 'errorMessage' => 'Logstore does not exist', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB*******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9732E117-8A37-49FD-A36F-ABBB87556CA7\\n","errorExample":""}]', - 'title' => 'DeleteLiveRealTimeLogLogstore', - 'description' => '* You can call this operation to delete the Logstore that is specified by a configuration of real-time log delivery. Make sure that all parameters meet the requirements when you call this operation.'."\n" - .'* You can call the [DescribeLiveDomainRealtimeLogDelivery](~~2848121~~) operation to query the Project, Logstore, and Region parameters.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 6,000 times per minute per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => '## Special error codes'."\n" - ."\n" - .'|HTTP status code|Error code|Error message|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|403|Unauthorized|RealtimeLogDelivery Service Not Authorized|The error message returned because you are not authorized to use Log Service.|'."\n" - .'|404|LogstoreNotExist|Logstore does not exist|The error message returned because the specified Logstore is not found.|', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"HasMore\\": false,\\n \\"MessageList\\": [\\n {\\n \\"Data\\": \\"test\\",\\n \\"GroupId\\": \\"AE35-****-T95F\\",\\n \\"MessageId\\": \\"qt***\\",\\n \\"SenderId\\": \\"yi***\\",\\n \\"Type\\": 10002\\n }\\n ]\\n }\\n}","type":"json"}]', ], - 'DescribeLiveDomainLog' => [ - 'summary' => 'Queries the address from which you can download the raw access logs of a domain name.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'ListMessageApp' => [ + 'summary' => 'Call ListMessageApp to query the list of interactive message applications.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'systemTags' => [ - 'operationType' => 'get', - 'abilityTreeCode' => '107021', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', - ], - ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'name' => 'SortType', + 'in' => 'formData', + 'schema' => ['description' => 'Sorting method. Valid values:'."\n" + ."\n" + .'- 0: Ascending order by time.'."\n" + .'- 1: Descending order by time.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '1'], ], [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain or ingest domain.'."\n" - ."\n" - .'You can specify only one domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], + 'name' => 'PageNum', + 'in' => 'formData', + 'schema' => ['description' => 'Page number. Default value: 1. Valid values: 1 to 100000.'."\n" + ."\n" + .'> This page number is the current display page.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '10'], ], [ 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page.'."\n" - ."\n" - .'* Valid values: integers from **1 to 1000**.'."\n" - .'* Default value: **300**.'."\n" - .'* Maximum value: **1000**.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '20', - 'default' => '300', - ], - ], - [ - 'name' => 'PageNumber', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number.'."\n" - ."\n" - .'> If you do not specify the PageNumber parameter, the data on the first page is returned.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-10-20T04:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query data. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'The end time must be later than the start time. The maximum time range that can be specified is 31 days.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2016-10-20T05:00:00Z', - ], + 'in' => 'formData', + 'schema' => ['description' => 'Number of applications displayed per page. Default value: 20. Valid values: 1 to 50.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '20'], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'DomainName' => [ - 'description' => 'The streaming domain or ingest domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'DomainLogDetails' => [ + 'RequestId' => ['title' => '', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', 'type' => 'object', - 'itemNode' => true, 'properties' => [ - 'DomainLogDetail' => [ - 'description' => 'The log information.'."\n", + 'AppList' => [ + 'description' => 'Application list.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'LogCount' => [ - 'description' => 'The total number of entries returned on the current page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', + 'AppConfig' => [ + 'description' => 'Application configuration.', + 'type' => 'object', + 'additionalProperties' => ['type' => 'string', 'description' => 'Application configuration.', 'title' => '', 'example' => '"appAlias":"localApp"'], + 'title' => '', + 'example' => '', ], - 'LogInfos' => [ + 'AppId' => ['description' => 'Interactive message application ID.', 'type' => 'string', 'title' => '', 'example' => 'VKL3***'], + 'AppName' => ['description' => 'Interactive message application name.', 'type' => 'string', 'title' => '', 'example' => 'test'], + 'CreateTime' => ['description' => 'UTC timestamp when the application was created.', 'type' => 'integer', 'format' => 'int64', 'title' => '', 'example' => '502280113'], + 'Extension' => [ + 'description' => 'Extension field.', 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LogInfoDetail' => [ - 'description' => 'Details about the logs.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'EndTime' => [ - 'description' => 'The end of the time range for which the logs were queried.'."\n", - 'type' => 'string', - 'example' => '2016-10-20T05:00:00Z', - ], - 'LogSize' => [ - 'description' => 'The size of the log file.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '10', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which the logs were queried.'."\n", - 'type' => 'string', - 'example' => '2016-10-20T04:00:00Z', - ], - 'LogName' => [ - 'description' => 'The name of the log file.'."\n", - 'type' => 'string', - 'example' => 'developer.aliyundoc.com_2016_10_20_040000_050000.gz', - ], - 'LogPath' => [ - 'description' => 'The path of the log file.'."\n", - 'type' => 'string', - 'example' => 'learn.aliyundoc.com/developer.aliyundoc.com/2016_10_20/example.aliyundoc.com_2016_10_20_040000_050000.gz?Expires=1522659931&OSSAccessKeyId=LTAI******eo4ZEuA&Signature=C01p%2BtA%******KP9Sru2Oxwy7Do0%3D', - ], - ], - ], - ], - ], - ], - 'PageInfos' => [ - 'description' => 'The page information.'."\n", - 'type' => 'object', - 'properties' => [ - 'PageIndex' => [ - 'description' => 'The page number of the returned page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries returned per page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - 'Total' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '20', - ], - ], + 'additionalProperties' => ['type' => 'string', 'description' => 'Extension field.', 'title' => '', 'example' => 'test001'], + 'title' => '', + 'example' => '', ], + 'Status' => ['description' => 'Interactive message application status. A value of **1** indicates that the application status is Normal.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1'], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], + 'HasMore' => ['description' => 'Indicates whether there is a next page. Valid values:'."\n" + ."\n" + .'- true: There is a next page.'."\n" + .'- false: There is no next page.', 'type' => 'boolean', 'title' => '', 'example' => 'false'], + 'Total' => ['description' => 'Total number of interactive message applications.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '15'], ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"DomainName\\": \\"example.com\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"DomainLogDetails\\": {\\n \\"DomainLogDetail\\": [\\n {\\n \\"LogCount\\": 10,\\n \\"LogInfos\\": {\\n \\"LogInfoDetail\\": [\\n {\\n \\"EndTime\\": \\"2016-10-20T05:00:00Z\\",\\n \\"LogSize\\": 10,\\n \\"StartTime\\": \\"2016-10-20T04:00:00Z\\",\\n \\"LogName\\": \\"developer.aliyundoc.com_2016_10_20_040000_050000.gz\\",\\n \\"LogPath\\": \\"learn.aliyundoc.com/developer.aliyundoc.com/2016_10_20/example.aliyundoc.com_2016_10_20_040000_050000.gz?Expires=1522659931&OSSAccessKeyId=LTAI******eo4ZEuA&Signature=C01p%2BtA%******KP9Sru2Oxwy7Do0%3D\\"\\n }\\n ]\\n },\\n \\"PageInfos\\": {\\n \\"PageIndex\\": 1,\\n \\"PageSize\\": 20,\\n \\"Total\\": 20\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\nexample.com\\n\\n \\n 10\\n \\n \\n 10\\n 2016-10-20T05:00:00Z\\n 2016-10-20T04:00:00Z\\n developer.aliyundoc.com_2016_10_20_040000_050000.gz\\n learn.aliyundoc.com/developer.aliyundoc.com/2016_10_20/example.aliyundoc.com_2016_10_20_040000_050000.gz?Expires=1522659931&OSSAccessKeyId=LTAI******eo4ZEuA&Signature=C01p%2BtA%******KP9Sru2Oxwy7Do0%3D\\n \\n \\n \\n 20\\n 20\\n 1\\n \\n \\n\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainLog', - 'description' => '* You can call this operation to query the offline logs of a single domain name.'."\n" - .'* The StartTime and EndTime parameters are optional. You can specify both the parameters to query logs that are generated within the specified time period.'."\n" - .'* If you do not specify the StartTime and EndTime parameters, logs that are generated in the last 24 hours are queried by default.'."\n" - ."\n" - .'## QPS limit'."\n" + 'title' => 'ListMessageApp', + 'description' => '## QPS limits'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'CreateLiveStreamMonitor' => [ - 'summary' => 'Creates a monitoring session.', - 'methods' => [ - 'post', - 'get', + .'The single-user QPS limit for this API is 100 queries per second (QPS). API calls exceeding this limit will be throttled, which may affect your business. You can call this API at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMessageApp'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"AppList\\": [\\n {\\n \\"AppConfig\\": {\\n \\"key\\": \\"\\\\\\"appAlias\\\\\\":\\\\\\"localApp\\\\\\"\\"\\n },\\n \\"AppId\\": \\"VKL3***\\",\\n \\"AppName\\": \\"test\\",\\n \\"CreateTime\\": 502280113,\\n \\"Extension\\": {\\n \\"key\\": \\"test001\\"\\n },\\n \\"Status\\": 1\\n }\\n ],\\n \\"HasMore\\": false,\\n \\"Total\\": 15\\n }\\n}","type":"json"}]', + ], + 'ListMessageGroup' => [ + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'systemTags' => [ - 'operationType' => 'create', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '106895', - 'abilityTreeNodes' => [ - 'FEATUREliveSM955S', - ], - ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'name' => 'UserId', + 'in' => 'formData', + 'schema' => ['description' => 'User ID, which is customized by the user and must be unique within an AppId. Different users must use different UserIds.'."\n" + ."\n" + .'> You must correctly fill in this parameter to perform a normal query.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'de1**a0'], ], [ - 'name' => 'MonitorName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the monitoring session.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveMonitor****', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive Messages application ID.'."\n" + ."\n" + .'> You must correctly fill in this parameter to perform a normal query.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'VKL3***'], ], [ - 'name' => 'OutputTemplate', - 'in' => 'query', - 'schema' => [ - 'description' => 'The output template of the monitoring session. Valid values:'."\n" - ."\n" - .'* **lp_ld**: low definition.'."\n" - .'* **lp_sd**: standard definition.'."\n" - .'* **lp_hd**: high definition.'."\n" - .'* **lp_ud**: ultra high definition.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'lp_ud', - ], + 'name' => 'SortType', + 'in' => 'formData', + 'schema' => ['description' => 'Sorting method. Valid values:'."\n" + ."\n" + .'- 0: Ascending order by time.'."\n" + .'- 1: Descending order by time.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '1'], ], [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The endpoint of the monitoring session.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'name' => 'PageNum', + 'in' => 'formData', + 'schema' => ['description' => 'Page number. Default value: 1. Valid values: 1 to 100000.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '10'], ], [ - 'name' => 'App', - 'in' => 'query', + 'name' => 'PageSize', + 'in' => 'formData', + 'schema' => ['description' => 'Number of message groups to display per page. Default value: 20.'."\n" + ."\n" + .'Valid values: 1 to 50.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '20'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the application that plays the output streams of the monitoring session.'."\n" - ."\n" - .'You can specify a name. If you do not specify a name, the system uses **monitor** as the name of the application.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'monitor****', + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', + 'type' => 'object', + 'properties' => [ + 'GroupList' => [ + 'description' => 'Message group list.', + 'type' => 'array', + 'items' => [ + 'description' => 'Message group details.', + 'type' => 'object', + 'properties' => [ + 'AppId' => ['description' => 'Interactive Messages application ID.', 'type' => 'string', 'title' => '', 'example' => 'VKL3***'], + 'CreateTime' => ['description' => 'UTC timestamp when the message group was created.', 'type' => 'integer', 'format' => 'int64', 'title' => '', 'example' => '1502280113'], + 'CreatorId' => ['description' => 'Creator ID.', 'type' => 'string', 'title' => '', 'example' => 'as****hs'], + 'Extension' => [ + 'description' => 'Extension field.', + 'type' => 'object', + 'additionalProperties' => ['type' => 'string', 'description' => 'Extension field.', 'title' => '', 'example' => 'test001'], + 'title' => '', + 'example' => '', + ], + 'GroupId' => ['description' => 'Message group ID.', 'type' => 'string', 'title' => '', 'example' => 'AE35-****-T95F'], + 'Status' => ['description' => 'Message group status. The default value is **1**, indicating that the message group status is normal.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '1'], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'HasMore' => ['description' => 'Indicates whether there is a next page. Valid values:'."\n" + ."\n" + .'- true: There is a next page.'."\n" + .'- false: There is no next page.', 'type' => 'boolean', 'title' => '', 'example' => 'false'], + 'Total' => ['description' => 'Total number of message groups.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '5'], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], + ], + 'title' => 'ListMessageGroup', + 'summary' => 'Call ListMessageGroup to query the message group list for a specified user.', + 'description' => '## QPS limits'."\n" + ."\n" + .'The single-user QPS limit for this API is 100 queries per second. If this limit is exceeded, API calls will be throttled, which may affect your business. You can call this API at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2022-12-05T02:25:52.000Z', 'description' => 'Request parameters changed, Response parameters changed'], + ['createdAt' => '2022-10-27T06:54:26.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-09-08T15:22:52.000Z', 'description' => 'OpenAPI offline'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMessageGroup'], + ], + ], + 'ramActions' => [ [ - 'name' => 'Stream', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the output stream of the monitoring session. If you do not specify a name, the system generates a name at random.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'monitorStream****', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"GroupList\\": [\\n {\\n \\"AppId\\": \\"VKL3***\\",\\n \\"CreateTime\\": 1502280113,\\n \\"CreatorId\\": \\"as****hs\\",\\n \\"Extension\\": {\\n \\"key\\": \\"test001\\"\\n },\\n \\"GroupId\\": \\"AE35-****-T95F\\",\\n \\"Status\\": 1\\n }\\n ],\\n \\"HasMore\\": false,\\n \\"Total\\": 5\\n }\\n}","type":"json"}]', + ], + 'ListMessageGroupUser' => [ + 'summary' => 'Query message group members.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], + 'parameters' => [ [ - 'name' => 'InputList', - 'in' => 'query', - 'schema' => [ - 'description' => 'The list of input streams to monitor. For more information, see the following **InputConfig** table.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'InputConfig', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive Messages application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'MonitorConfig', - 'in' => 'query', - 'schema' => [ - 'description' => 'Alarm threshold setting for monitoring, in JSON format. For more details, please refer to the table below for MonitorConfig.', - 'type' => 'string', - 'required' => false, - 'example' => '"{\\"fpsLowThres\\": 0.6,\\"brLowThres\\": 1.1,\\"eofDurationThresSec\\": 10}"', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'CallbackUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'Supports input of callback addresses in HTTP(S) format.', - 'type' => 'string', - 'required' => false, - 'example' => 'http://guide.aliyundoc.com/notify', - ], + 'name' => 'SortType', + 'in' => 'formData', + 'schema' => ['description' => 'Sorting method. Valid values:'."\n" + ."\n" + .'- 0: Ascending order by time.'."\n" + .'- 1: Descending order by time.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'DingTalkWebHookUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'DingTalk alert monitoring sends alert notifications through a DingTalk group robot. Please set up the DingTalk group robot first and enter the HTTP(S) address of the robot here. For more details, see [Custom Robot Access](https://open.dingtalk.com/document/robots/custom-robot-access).'."\n" - .'> Configure the custom keyword for the DingTalk group robot as \'alert\', otherwise, messages will not be received.', - 'type' => 'string', - 'required' => false, - 'example' => 'https://oapi.dingtalk.com/robot/send?access_token=7a7d404056eee1f2fd944ace9bcfc361dc6448583e1d3d3baa****', - ], + 'name' => 'PageNum', + 'in' => 'formData', + 'schema' => ['description' => 'Page number. Default value: 1.'."\n" + ."\n" + .'Valid values: 1 to 100000.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'formData', + 'schema' => ['description' => 'Number of message group members to display per page. Default value: 20.'."\n" + ."\n" + .'Valid values: 1 to 50.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'MonitorId' => [ - 'description' => 'The ID of the monitoring session.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', + 'RequestId' => ['title' => '', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return results.', + 'type' => 'object', + 'properties' => [ + 'HasMore' => ['description' => 'Indicates whether there is a next page. Valid values:'."\n" + ."\n" + .'- true: There is a next page.'."\n" + .'- false: There is no next page.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'Total' => ['description' => 'Total number of message group users.', 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'UserList' => [ + 'description' => 'User list.', + 'type' => 'array', + 'items' => [ + 'description' => 'User list.', + 'type' => 'object', + 'properties' => [ + 'JoinTime' => ['description' => 'UTC timestamp when the user joined the message group.', 'type' => 'integer', 'format' => 'int64', 'example' => '12**45', 'title' => ''], + 'UserId' => ['description' => 'User ID.', 'type' => 'string', 'example' => 'de1**a0,hu**9', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', ], ], - 'description' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'StreamMonitorExist', - 'errorMessage' => '%s, please check and try again later.', - ], + 'title' => 'ListMessageGroupUser', + 'description' => '## QPS limits'."\n" + ."\n" + .'The single-user QPS limit for this API is 100 queries per second (QPS). If you exceed this limit, API calls will be throttled, which may affect your business. You can make API calls at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2022-11-24T09:12:47.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-09-08T15:22:52.000Z', 'description' => 'OpenAPI offline'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMessageGroupUser'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 404 => [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessageGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"MonitorId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n5c6a2a0d-f228-4a64-af62-20e91b9676b3\\n445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'CreateLiveStreamMonitor', - 'description' => 'You can call this operation to create a monitoring session. Make sure that the parameter settings meet the requirements.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '**InputConfig**| Parameter | Type | Description | Example |'."\n" - .'| --------- | ---- | ----------- | ------- |'."\n" - .'| Index | Integer | The index. | 1 |'."\n" - .'| LayoutId | Integer | The ID of the layout. The value starts from 1. | 1 |'."\n" - .'| StreamName | String | The display name of a monitored stream. | monitorStream**** |'."\n" - .'| InputUrl | String | The URL of an input stream. | demo.aliyundoc.com |'."\n" - .'| LayoutConfig | LayoutConfig | The details of the layout. | For more information, see the following table **LayoutConfig**. |'."\n" - .'| PlayConfig | PlayConfig | The playback configurations. | For more information, see the following table **PlayConfig**. |'."\n" - .'**LayoutConfig**| Parameter | Type | Description | Example |'."\n" - .'| --------- | ---- | ----------- | ------- |'."\n" - .'| FillMode | String | The fill type. Set this value to none. | none |'."\n" - .'| PositionRefer | String | The reference coordinate value of an element position. Valid values: topLeft (upper left), topRight (upper right), bottomLeft (lower left), and bottomRight (lower right). | topLeft |'."\n" - .'| PositionNormalized | Float | The normalized value [x,y] of the coordinates of the layer. '."\n" - ."\n" - .'The values of x and y range from 0 to 1. '."\n" - ."\n" - .'For example, [0.1,0.1] indicates that the layer is horizontally offset by 10% and vertically offset by 10% towards the upper-left corner. | [0.1, 0.1] |'."\n" - .'| SizeNormalized | Float | The normalized value [w,h] of the size of the layer. '."\n" - ."\n" - .' The values of w and h range from 0 to 1. '."\n" - ."\n" - .'For example, [0.2,0.3] indicates that the width of the layer is 20% of the screen width, and the height of the layer is 30% of the screen height. | [0.2, 0.3] |'."\n" - .'**PlayConfig**| Parameter | Type | Description | Example |'."\n" - .'| --------- | ---- | ----------- | ------- |'."\n" - .'| VolumeRate | Float | The volume. The value ranges from 0 to 1 and rounded down to two decimal places. | 0.50 |', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - 'translator' => 'machine', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"HasMore\\": false,\\n \\"Total\\": 2,\\n \\"UserList\\": [\\n {\\n \\"JoinTime\\": 0,\\n \\"UserId\\": \\"de1**a0,hu**9\\"\\n }\\n ]\\n }\\n}","type":"json"}]', ], - 'UpdateLiveStreamMonitor' => [ - 'summary' => 'Updates the configurations of a monitoring session.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'ListMessageGroupUserById' => [ + 'summary' => 'Call ListMessageGroupUserById to query user information by user ID list.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '107285', - 'abilityTreeNodes' => [ - 'FEATUREliveSM955S', - ], + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive message application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'MonitorId', - 'in' => 'query', + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], + ], + [ + 'name' => 'UserIdList', + 'in' => 'formData', + 'style' => 'simple', 'schema' => [ - 'description' => 'The ID of the monitoring session.'."\n" - ."\n" - .'> You can obtain the monitoring session ID from the response of the [CreateLiveStreamMonitor](~~2848129~~) operation.'."\n", - 'type' => 'string', + 'description' => 'User list.', + 'type' => 'array', + 'items' => ['description' => 'User ID.', 'type' => 'string', 'required' => false, 'example' => 'de1**a0', 'title' => ''], 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'MonitorName', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the monitoring session.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveMonitor****', + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8', 'title' => ''], + 'Result' => [ + 'description' => 'Return result.', + 'type' => 'object', + 'properties' => [ + 'HasMore' => ['description' => 'Indicates whether there is a next page. Valid values:'."\n" + ."\n" + .'- true: There is a next page.'."\n" + ."\n" + .'- false: There is no next page.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'Total' => ['description' => 'Total number of users queried.', 'type' => 'integer', 'format' => 'int32', 'example' => '3', 'title' => ''], + 'UserList' => [ + 'description' => 'User list information.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'IsMute' => ['description' => 'Indicates whether the user is muted. Valid values:'."\n" + ."\n" + .'- true: Muted.'."\n" + ."\n" + .'- false: Not muted.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + 'MuteBy' => [ + 'description' => 'Mute type. Valid values:'."\n" + ."\n" + .'- group: All members in the message group are muted.'."\n" + ."\n" + .'- user: Individual user is muted.', + 'type' => 'array', + 'items' => ['description' => 'Mute type. Valid values:'."\n" + ."\n" + .'- group: All members in the message group are muted.'."\n" + ."\n" + .'- user: Individual user is muted.', 'type' => 'string', 'example' => 'user', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'UserAvatar' => ['description' => 'Profile picture URL.', 'type' => 'string', 'example' => '"http://www.aliyundoc.com/xxyy.png"', 'title' => ''], + 'UserExtension' => ['description' => 'Custom user information content.', 'type' => 'string', 'example' => '12e', 'title' => ''], + 'UserId' => ['description' => 'User ID.', 'type' => 'string', 'example' => 'ad***', 'title' => ''], + 'UserNick' => ['description' => 'User nickname.', 'type' => 'string', 'example' => 'xxyy', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + ], + 'title' => 'Indicates whether the user is muted. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can call the API properly to avoid this issue. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2023-03-16T02:40:01.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'demo.aliyundoc.com', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessageGroupUserById', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"HasMore\\": false,\\n \\"Total\\": 3,\\n \\"UserList\\": [\\n {\\n \\"IsMute\\": true,\\n \\"MuteBy\\": [\\n \\"user\\"\\n ],\\n \\"UserAvatar\\": \\"\\\\\\"http://www.aliyundoc.com/xxyy.png\\\\\\"\\",\\n \\"UserExtension\\": \\"12e\\",\\n \\"UserId\\": \\"ad***\\",\\n \\"UserNick\\": \\"xxyy\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + ], + 'ListMuteGroupUser' => [ + 'summary' => 'Call ListMuteGroupUser to query the list of muted members in a message group.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the output stream of the monitoring session belongs. You can specify a name. If you do not specify a name, the system uses **monitor** as the name of the application.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'monitor****', - ], + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], + 'parameters' => [ + [ + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the interactive message application.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'VKL3***'], ], [ - 'name' => 'Stream', - 'in' => 'query', + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The ID of the message group.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'AE35-****-T95F'], + ], + [ + 'name' => 'PageNum', + 'in' => 'formData', + 'schema' => ['description' => 'The page number. Default value: 1. Valid values: 1 to 100000.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '10'], + ], + [ + 'name' => 'PageSize', + 'in' => 'formData', + 'schema' => ['description' => 'The number of users to display on each page. Default value: 20. Valid values: 1 to 50.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'title' => '', 'example' => '20'], + ], + [ + 'name' => 'OperatorUserId', + 'in' => 'formData', + 'schema' => ['description' => 'The user ID of the operator. This user must be the creator of the group.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'de1**a0'], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the output stream of the monitoring session.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'monitorStream****', + 'title' => 'Schema of Response', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'The returned results.', + 'type' => 'object', + 'properties' => [ + 'HasMore' => ['description' => 'Indicates whether there is a next page. Valid values:'."\n" + ."\n" + .'- true: There is a next page.'."\n" + .'- false: There is no next page.', 'type' => 'boolean', 'title' => '', 'example' => 'false'], + 'Total' => ['description' => 'The total number of muted members.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'example' => '2'], + 'UserList' => [ + 'description' => 'The list of muted users.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'UserId' => ['description' => 'The ID of the muted user.', 'type' => 'string', 'title' => '', 'example' => '1sd***,yu***'], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"HasMore\\": false,\\n \\"Total\\": 2,\\n \\"UserList\\": [\\n {\\n \\"UserId\\": \\"1sd***,yu***\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'ListMuteGroupUser', + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second (QPS) per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can call this API at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMuteGroupUser'], + ], + ], + 'ramActions' => [ [ - 'name' => 'OutputTemplate', - 'in' => 'query', - 'schema' => [ - 'description' => 'The output template of the monitoring session. Valid values:'."\n" - ."\n" - .'* **lp_ld**: low definition'."\n" - .'* **lp_sd**: standard definition'."\n" - .'* **lp_hd**: high definition'."\n" - .'* **lp_ud**: ultra-high definition'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'lp_ud', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMuteGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + ], + 'ListPlaylist' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ [ - 'name' => 'InputList', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The list of input streams to monitor. For more information, see the following **InputConfig** table.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'InputConfig', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'MonitorConfig', + 'name' => 'ProgramId', 'in' => 'query', - 'schema' => [ - 'description' => 'The monitoring alert thresholds. The value is a JSON string. For more information, see the following MonitorConfig table.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '"{\\"fpsLowThres\\": 0.6,\\"brLowThres\\": 1.1,\\"eofDurationThresSec\\": 10}"', - ], + 'schema' => ['description' => 'The ID of the playlist. If you specify this parameter, only the information about the specified playlist is returned. If you leave this parameter empty, the information about all playlists that belong to your account is returned. Use the ProgramId value returned by the [AddPlaylistItems](~~2848078~~) operation.', 'type' => 'string', 'required' => false, 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', 'title' => ''], ], [ - 'name' => 'CallbackUrl', + 'name' => 'Page', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL. Supported formats include HTTP and HTTPS.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://guide.aliyundoc.com/notify', - ], + 'schema' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'DingTalkWebHookUrl', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the DingTalk chatbot. Specify a DingTalk chatbot that you have configured, and you can receive live monitoring alerts from the chatbot. For more information, see [Configure a custom chatbot](https://open.dingtalk.com/document/robots/custom-robot-access).'."\n" - ."\n" - .'> Specify "Alert" as the custom keyword of the DingTalk chatbot. Otherwise, you cannot receive messages.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://oapi.dingtalk.com/robot/send?access_token=7a7d404056eee1f2fd944ace9bcfc361dc6448583e1d3d3baa****', - ], + 'schema' => ['description' => 'The number of entries to return on each page.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], ], ], 'responses' => [ @@ -51455,111 +41821,91 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', + 'ProgramList' => [ + 'description' => 'The list of playlists.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CasterId' => ['description' => 'The ID of the production studio to which the playlist belongs. Use this ID as a request parameter to add, delete, modify, or query the layout of a virtual studio.', 'type' => 'string', 'example' => 'casdfasdfasfdasdflkasjdflaj****', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'ProgramId' => ['description' => 'The ID of the playlist.', 'type' => 'string', 'example' => 'c09f3d63-eacf-4fbf-bd48-a07a6ba7****', 'title' => ''], + 'ProgramName' => ['description' => 'The name of the playlist.', 'type' => 'string', 'example' => 'playlist1', 'title' => ''], + 'RepeatNumber' => ['description' => 'The number of times the playlist repeats after the first playback. Valid values:'."\n" + ."\n" + .'- **0** (default): The playlist does not repeat.'."\n" + ."\n" + .'- **-1**: The playlist plays in a loop.'."\n" + ."\n" + .'- Other positive integers: The number of times the playlist repeats.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'Status' => ['description' => 'The status of the playlist. Valid values:'."\n" + ."\n" + .'- **0**: stopped.'."\n" + ."\n" + .'- **1**: running.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], + 'Total' => ['description' => 'The total number of playlists.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidMonitorId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidPageSize.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PageSize is invalid, please check and try again.'], + ['errorCode' => 'InvalidPageNum.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PageNum is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], 404 => [ - [ - 'errorCode' => 'InvalidDomainName.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'StreamMonitorNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'PlayListNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'PlayList does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n5c6a2a0d-f228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'UpdateLiveStreamMonitor', - 'description' => 'You can call this operation to update the configurations of a monitoring session. The updates that you make to the input source configurations when the monitoring session is in the Running state immediately take effect.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '**InputConfig**'."\n" - ."\n" - .'|Field|Type|Description|Example|'."\n" - .'|---|---|---|---|'."\n" - .'|Index|Integer|The index.|1|'."\n" - .'|LayoutId|Integer|The layout ID, which must start from 1.|1|'."\n" - .'|StreamName|String|The display name of the stream to monitor.|monitorStream\\*\\*\\*\\*|'."\n" - .'|InputUrl|String|The URL of the input stream.|demo.aliyundoc.com|'."\n" - .'|LayoutConfig|LayoutConfig|The layout information.|See the following **LayoutConfig** table.|'."\n" - .'|PlayConfig|PlayConfig|The playback configurations.|See the following **PlayConfig** table.|'."\n" - ."\n" - .'**LayoutConfig**'."\n" - ."\n" - .'|Field|Type|Description|Example|'."\n" - .'|---|---|---|---|'."\n" - .'|FillMode|String|The fill type. Set this value to none.|none|'."\n" - .'|PositionRefer|String|The reference position of the element. Valid values: topLeft, topRight, bottomLeft, and bottomRight.|TopLeft|'."\n" - .'|PositionNormalized|Float|The normalized value of the position of the layer, in the format of \\[x,y\\].The values of x and y range from 0 to 1.For example, \\[0.1,0.1\\] indicates that the layer is horizontally offset by 10% and vertically offset by 10% towards the upper-left corner.|\\[0.1, 0.1\\]|'."\n" - .'|SizeNormalized|Float|The normalized value of the size of the layer, in the format of \\[w,h\\].The values of w and h range from 0 to 1.For example, \\[0.2,0.3\\] indicates that the width of the layer is 20% of the screen width and the height of the layer is 30% of the screen height.|\\[0.2, 0.3\\]|'."\n" - ."\n" - .'**PlayConfig**'."\n" - ."\n" - .'|Field|Type|Description|Example|'."\n" - .'|---|---|---|---|'."\n" - .'|VolumeRate|Float|The volume. Valid values: 0 to 1. The value is rounded to two decimal places.|0.50|'."\n" + 'title' => 'ListPlaylist', + 'summary' => 'Queries episode lists.', + 'description' => 'Call the [AddPlaylistItems](~~2848078~~) operation to add items to a playlist before you query it.'."\n" ."\n" - .'**MonitorConfig**'."\n" + .'## QPS limits'."\n" ."\n" - .'|Field|Type|Description|Example|'."\n" - .'|---|---|---|---|'."\n" - .'|fpsLowThres|Float|The video frame rate alert threshold. This threshold is a scale factor. Valid values: (0.0,1.0\\]. Default value: 0.7. When the video frame rate of the monitored stream is less than the threshold times the original frame rate of the stream, an alert is triggered.|0.7|'."\n" - .'|brHighThres|Float|The audio/video bitrate alert threshold. This threshold is a scale factor. Valid values: (0.0,100\\]. Default value: 1.0. When the audio/video bitrate of the monitored stream is greater than the threshold times the original bitrate of the stream, an alert is triggered.|1.0|'."\n" - .'|eofDurationThresSec|Float|The interruption duration alert threshold. If the monitored stream is interrupted for a period of time that is longer than the threshold, an alert is triggered. Valid values: (0,65535\\]. Default value: 0. Unit: seconds. - After the stream is interrupted, the connection is still available and a packet timeout occurs after 5 seconds. The system determines whether there is an interruption based on the timeout. If you set this parameter to a value that is less than or equal to 5 seconds, the threshold is fixed at 5 seconds. If you set this parameter to a value that is greater than 5 seconds, the threshold is the specified value. - If the stream is resumed within the threshold after it is interrupted, no alert is triggered. If you modify the URL of the monitored stream within the threshold after the stream is interrupted, interruption detection is not performed for the stream and no alert is triggered.|10|', + .'This operation is limited to 10 queries per second (QPS) per user. API calls that exceed this limit are throttled. Throttling may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'DescribeLiveStreamMonitorList' => [ - 'summary' => 'Queries the list of created monitoring sessions.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListPlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ProgramList\\": [\\n {\\n \\"CasterId\\": \\"casdfasdfasfdasdflkasjdflaj****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"ProgramId\\": \\"c09f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ProgramName\\": \\"playlist1\\",\\n \\"RepeatNumber\\": 1,\\n \\"Status\\": 1\\n }\\n ],\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\",\\n \\"Total\\": 1\\n}","type":"json"}]', + ], + 'ListPlaylistItems' => [ + 'summary' => 'Queries the items in a specified playlist.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -51570,372 +41916,135 @@ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveSM955S', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'MonitorId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the monitoring session.'."\n" - ."\n" - .'> You can obtain the monitoring session ID from the response parameter MonitorId of the [CreateLiveStreamMonitor](~~2848129~~) operation. If you leave this parameter empty, the data of all monitoring sessions is returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageNum', + 'name' => 'ProgramId', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The ID of the playlist. You can obtain the ID from the ProgramId parameter in the response of the [AddPlaylistItems](~~2848078~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'ProgramItemIds', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of monitoring sessions to return per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + 'schema' => ['description' => 'The IDs of the playlist items. Separate multiple IDs with commas (,). If you specify this parameter, only the information about the specified items is returned. If you leave this parameter empty, the information about all items in the playlist is returned.', 'type' => 'string', 'required' => false, 'example' => 'c10f3d63-eacf-4fbf-bd48-a07a6ba7****,c09f3d63-eacf-4fbf-bd48-a07a6ba7****', 'title' => ''], ], - [ - 'name' => 'Status', - 'in' => 'query', - 'schema' => [ - 'description' => 'The status of the monitoring session. Valid values:'."\n" - ."\n" - .'* 1: Monitoring'."\n" - .'* 0: Unmonitored'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - ], - [ - 'name' => 'OrderRule', - 'in' => 'query', - 'schema' => [ - 'description' => 'The sorting order of monitoring sessions. Valid values:'."\n" - ."\n" - .'* 0: Monitoring sessions are sorted by status.'."\n" - .'* 1: Monitoring sessions are sorted by start time in descending order.'."\n" - .'* 2: Monitoring sessions are sorted by start time in ascending order.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], - ], - ], - 'responses' => [ - 200 => [ + ], + 'responses' => [ + 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Total' => [ - 'description' => 'The number of monitoring sessions.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '2234baba-a586-46ea-8bd4-c8f7891abcdef', - ], - 'LiveStreamMonitorList' => [ - 'description' => 'The list of monitoring sessions.'."\n", + 'Total' => ['description' => 'The number of playlist items.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9****', 'title' => ''], + 'ProgramItems' => [ + 'description' => 'The list of playlist items.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'MonitorConfig' => [ - 'description' => 'The monitoring alert thresholds. The following fields are included:'."\n" - ."\n" - .'* fpsLowThres: the video frame rate alert threshold. The value is a floating-point number.'."\n" - .'* brHighThres: the audio/video bitrate alert threshold. The value is a floating-point number.'."\n" - .'* eofDurationThresSec: the interruption duration alert threshold. The value is a floating-point number.'."\n", - 'type' => 'string', - 'example' => '"{\\"fpsLowThres\\": 0.6,\\"brLowThres\\": 1.1,\\"eofDurationThresSec\\": 10}"', - ], - 'Status' => [ - 'description' => 'The status of the monitoring session. Valid values:'."\n" - ."\n" - .'* 1: Monitoring'."\n" - .'* 0: Unmonitored'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'MonitorId' => [ - 'description' => 'The ID of the monitoring session.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - 'Domain' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'CallbackUrl' => [ - 'description' => 'The callback URL that sends monitoring alerts.'."\n", - 'type' => 'string', - 'example' => 'http://guide.aliyundoc.com/notify', - ], - 'AudioFrom' => [ - 'description' => 'The audio source in the layout.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'DingTalkWebHookUrl' => [ - 'description' => 'The URL of the DingTalk chatbot.'."\n", - 'type' => 'string', - 'example' => 'https://oapi.dingtalk.com/robot/send?access_token=7a7d404056eee1f2fd944ace9bcfc361dc6448583e1d3d3baa****', - ], - 'MonitorName' => [ - 'description' => 'The name of the monitoring session.'."\n", - 'type' => 'string', - 'example' => 'liveMonito****', - ], - 'StopTime' => [ - 'description' => 'The end time of live monitoring. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-01-11T12:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The start time of live monitoring. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2017-01-11T12:00:00Z', - ], - 'OutputTemplate' => [ - 'description' => 'The output resolution template. Valid values:'."\n" - ."\n" - .'* **lp_ld**: low definition'."\n" - .'* **lp_sd**: standard definition'."\n" - .'* **lp_hd**: high definition'."\n" - .'* **lp_ud**: ultra-high definition'."\n", - 'type' => 'string', - 'example' => 'lp_ud', - ], - 'Region' => [ - 'description' => 'The ID of the region. Valid values:'."\n" - ."\n" - .'* cn-shanghai: China (Shanghai)'."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* ap-southeast-1: Singapore'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - 'InputList' => [ - 'description' => 'The list of monitored input streams.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Index' => [ - 'description' => 'The index.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'InputUrl' => [ - 'description' => 'The URL of the input stream.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'LayoutId' => [ - 'description' => 'The layout ID, which must start from 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'StreamName' => [ - 'description' => 'The display name of the monitored stream.'."\n", - 'type' => 'string', - 'example' => 'monitorStream****', - ], - 'LayoutConfig' => [ - 'description' => 'The layout information.'."\n", - 'type' => 'object', - 'properties' => [ - 'FillMode' => [ - 'description' => 'The fill type. Set this value to none.'."\n", - 'type' => 'string', - 'example' => 'none', - ], - 'PositionRefer' => [ - 'description' => 'The reference position of the element. Valid values:'."\n" - ."\n" - .'* topLeft'."\n" - .'* topRight'."\n" - .'* bottomLeft'."\n" - .'* bottomRight'."\n", - 'type' => 'string', - 'example' => 'topLeft', - ], - 'PositionNormalized' => [ - 'description' => 'The position of the layer, in the format of \\[unk]\\[x,y]\\[unk]. The values of x and y need to be normalized.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The normalized value of the position of the layer, in the format of \\[x,y].\\'."\n" - .'For example, \\[0.1,0.1] indicates that the layer is horizontally offset by 10% and vertically offset by 10% towards the upper-left corner.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.1', - ], - ], - 'SizeNormalized' => [ - 'description' => 'The size of the layer. Unit: bytes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The normalized value of the size of the layer, in the format of \\[w,h].\\'."\n" - .'For example, \\[0.2,0.3] indicates that the width of the layer is 20% of the screen width and the height of the layer is 30% of the screen height.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.3', - ], - ], - ], - ], - 'PlayConfig' => [ - 'description' => 'The playback configurations.'."\n", - 'type' => 'object', - 'properties' => [ - 'VolumeRate' => [ - 'description' => 'The volume. Valid values: 0 to 1. The value is rounded to two decimal places.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.50', - ], - ], - ], - ], - 'description' => '', - ], - ], - 'OutputUrls' => [ - 'description' => 'The output URLs.'."\n", - 'type' => 'object', - 'properties' => [ - 'FlvUrl' => [ - 'description' => 'The output URL in the Flash Video (FLV) format.'."\n", - 'type' => 'string', - 'example' => 'http://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****.flv', - ], - 'RtmpUrl' => [ - 'description' => 'The output URL in the Real-Time Messaging Protocol (RTMP) format.'."\n", - 'type' => 'string', - 'example' => 'rtmp://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****', - ], - ], - ], + 'Index' => ['description' => 'The orchestration index.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'ResourceType' => ['description' => 'The type of the resource.', 'type' => 'string', 'example' => 'vod', 'title' => ''], + 'ProgramItemId' => ['description' => 'The ID of the playlist item.', 'type' => 'string', 'example' => 'c10f3d63-eacf-4fbf-bd48-a07a6ba7****', 'title' => ''], + 'ProgramId' => ['description' => 'The ID of the playlist. You can use this ID as a request parameter when you edit, delete, query, start, or stop the playlist.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'ProgramItemName' => ['description' => 'The name of the playlist item.', 'type' => 'string', 'example' => 'playlistItem1', 'title' => ''], + 'ResourceValue' => ['description' => 'The ID of the resource.', 'type' => 'string', 'example' => 'asdfasdf8as9df8sa9df89****', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], + ['errorCode' => 'InvalidProgramId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ProgramId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + 404 => [ + ['errorCode' => 'PlayListNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'PlayList does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Total\\": 1,\\n \\"RequestId\\": \\"2234baba-a586-46ea-8bd4-c8f7891abcdef\\",\\n \\"LiveStreamMonitorList\\": [\\n {\\n \\"MonitorConfig\\": \\"\\\\\\"{\\\\\\\\\\\\\\"fpsLowThres\\\\\\\\\\\\\\": 0.6,\\\\\\\\\\\\\\"brLowThres\\\\\\\\\\\\\\": 1.1,\\\\\\\\\\\\\\"eofDurationThresSec\\\\\\\\\\\\\\": 10}\\\\\\"\\",\\n \\"Status\\": 1,\\n \\"MonitorId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"Domain\\": \\"demo.aliyundoc.com\\",\\n \\"CallbackUrl\\": \\"http://guide.aliyundoc.com/notify\\",\\n \\"AudioFrom\\": 1,\\n \\"DingTalkWebHookUrl\\": \\"https://oapi.dingtalk.com/robot/send?access_token=7a7d404056eee1f2fd944ace9bcfc361dc6448583e1d3d3baa****\\",\\n \\"MonitorName\\": \\"liveMonito****\\",\\n \\"StopTime\\": \\"2017-01-11T12:00:00Z\\",\\n \\"StartTime\\": \\"2017-01-11T12:00:00Z\\",\\n \\"OutputTemplate\\": \\"lp_ud\\",\\n \\"Region\\": \\"cn-shanghai\\",\\n \\"InputList\\": [\\n {\\n \\"Index\\": 1,\\n \\"InputUrl\\": \\"demo.aliyundoc.com\\",\\n \\"LayoutId\\": 1,\\n \\"StreamName\\": \\"monitorStream****\\",\\n \\"LayoutConfig\\": {\\n \\"FillMode\\": \\"none\\",\\n \\"PositionRefer\\": \\"topLeft\\",\\n \\"PositionNormalized\\": [\\n 0.1\\n ],\\n \\"SizeNormalized\\": [\\n 0.3\\n ]\\n },\\n \\"PlayConfig\\": {\\n \\"VolumeRate\\": 0.5\\n }\\n }\\n ],\\n \\"OutputUrls\\": {\\n \\"FlvUrl\\": \\"http://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****.flv\\",\\n \\"RtmpUrl\\": \\"rtmp://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****\\"\\n }\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n2234baba-a586-46ea-8bd4-c8f7891abcdef\\n1\\n\\n 1\\n 1\\n lp_ud\\n 2017-01-11T12:00:00Z\\n liveMonito****\\n cn-shanghai\\n demo.aliyundoc.com\\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n 2017-01-11T12:00:00Z\\n \\n monitorStream****\\n 1\\n 1\\n demo.aliyundoc.com\\n \\n none\\n topLeft\\n 0.1\\n 0.3\\n \\n \\n 0.50\\n \\n \\n \\n http://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****.flv\\n rtmp://demo.aliyundoc.com/monitor/445409ec-7eaa-461d-8f29-4bec2eb9****\\n \\n\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamMonitorList', - 'description' => '[Create monitoring sessions](~~2848129~~) before you call this operation to query the monitoring session list. Make sure that the parameter settings meet the requirements.'."\n" + 'title' => 'ListPlaylistItems', + 'description' => 'Before you call this operation, you must call the [AddPlaylistItems](~~2848078~~) operation to add items to a playlist.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 15 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + .'This operation has a queries per second (QPS) limit of 10 calls per user. If you exceed this limit, your API calls are throttled. Throttling can affect your business. We recommend that you call this operation at a reasonable rate.', 'requestParamsDescription' => ' ', 'responseParamsDescription' => ' ', 'extraInfo' => ' ', - ], - 'StartLiveStreamMonitor' => [ - 'summary' => 'Starts live monitoring.', - 'methods' => [ - 'post', - 'get', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListPlaylistItems'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListPlaylistItems', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Total\\": 1,\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9****\\",\\n \\"ProgramItems\\": [\\n {\\n \\"Index\\": 1,\\n \\"ResourceType\\": \\"vod\\",\\n \\"ProgramItemId\\": \\"c10f3d63-eacf-4fbf-bd48-a07a6ba7****\\",\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"ProgramItemName\\": \\"playlistItem1\\",\\n \\"ResourceValue\\": \\"asdfasdf8as9df8sa9df89****\\"\\n }\\n ]\\n}","type":"json"}]', + ], + 'ListRTCLiveRooms' => [ + 'path' => '', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'none', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeNodes' => [ - 'FEATUREliveSM955S', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + 'autoTest' => false, + 'notSupportAutoTestReason' => '需要前置客户端入会等操作', ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['type' => 'string', 'required' => true, 'title' => '', 'description' => 'The ID of the application.', 'example' => 'a494caec-***-695ef345db77'], ], [ - 'name' => 'MonitorId', + 'name' => 'PageSize', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the monitoring session.'."\n" - ."\n" - .'> You can obtain the monitoring session ID from the response of the [CreateLiveStreamMonitor](~~2848129~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['type' => 'integer', 'format' => 'int32', 'maximum' => '100', 'minimum' => '10', 'default' => '50', 'title' => '', 'description' => 'The number of entries per page. Valid values: 10 to 100. Default value: 50.', 'required' => false, 'example' => '50'], + ], + [ + 'name' => 'PageNo', + 'in' => 'query', + 'schema' => ['type' => 'integer', 'format' => 'int32', 'minimum' => '1', 'default' => '1', 'title' => '', 'description' => 'The page number. Page numbers start from 1.', 'required' => false, 'example' => '1'], ], ], 'responses' => [ @@ -51943,112 +42052,105 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', + 'RequestId' => ['type' => 'string', 'title' => '', 'description' => 'The request ID.', 'example' => '5c6a2a0df228-4a64-af62-20e91b96****'], + 'Total' => ['type' => 'integer', 'format' => 'int32', 'description' => 'The total number of entries returned.', 'title' => '', 'example' => '2'], + 'Rooms' => [ + 'type' => 'array', + 'items' => ['type' => 'string', 'description' => 'The channel ID.', 'title' => '', 'example' => 'room1'], + 'title' => '', + 'description' => 'The active channels.', + 'example' => '', ], ], - 'description' => '', + 'title' => '', + 'description' => 'Schema of Response', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidMonitorId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'StreamMonitorAlreadyStarted', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], 403 => [ - [ - 'errorCode' => 'UserQuotaExceed', - 'errorMessage' => 'Quota exceeded: %s.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - [ - 'errorCode' => 'StreamMonitorNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ListRTCLiveRooms', + 'summary' => 'Retrieves active ARTC channels.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:ListRTCLiveRooms', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n5c6a2a0d-f228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'StartLiveStreamMonitor', - 'description' => 'You can call the [CreateLiveStreamMonitor](~~2848129~~) operation to create a monitoring session, obtain the value of the response parameter **MonitorId**, and then start live monitoring.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\",\\n \\"Total\\": 2,\\n \\"Rooms\\": [\\n \\"room1\\"\\n ]\\n}","type":"json"}]', ], - 'StopLiveStreamMonitor' => [ - 'summary' => 'Stops live monitoring.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'ListRtcMPUEventSubRecord' => [ + 'summary' => 'Queries the callback records of a subscription to mixed-stream relay events.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveSM955S', - ], + 'abilityTreeCode' => '225589', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the application.'."\n" + ."\n" + .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], ], [ - 'name' => 'MonitorId', + 'name' => 'SubId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the monitoring session.'."\n" - ."\n" - .'> You can obtain the monitoring session ID**** from the response of the [CreateLiveStreamMonitor](~~2848129~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The ID of the subscription.', 'type' => 'string', 'required' => false, 'example' => 'yourSubId', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format.', 'type' => 'string', 'required' => true, 'example' => '1970-01-01T00:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format.', 'type' => 'string', 'required' => true, 'example' => '1970-01-01T00:00:00Z', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Valid values: 1 to 100.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'PageNo', + 'in' => 'query', + 'schema' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '20', 'title' => ''], ], ], 'responses' => [ @@ -52056,112 +42158,127 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + 'Count' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int64', 'example' => '1', 'title' => ''], + 'HasMore' => ['description' => 'Indicates whether the current page is followed by a page.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'Logs' => [ + 'description' => 'The callback records.', + 'type' => 'array', + 'items' => [ + 'description' => 'The callback record.', + 'type' => 'object', + 'properties' => [ + 'AppId' => ['description' => 'The ID of the application.', 'type' => 'string', 'example' => 'yourAppId', 'title' => ''], + 'SubId' => ['description' => 'The ID of the subscription.', 'type' => 'string', 'example' => 'Sub-******9799B2C4500******', 'title' => ''], + 'MsgId' => ['description' => 'The ID of the callback record.', 'type' => 'string', 'example' => '42bba8b5-********-9b501dd6cb6e', 'title' => ''], + 'Data' => ['description' => 'For more information about the callback, see [CreateRtcMPUEventSub](~~2804583~~).', 'type' => 'string', 'example' => '{\\"EventType\\":1,\\"MsgId\\":\\"42bba8b5-94ab-468c-9dae-9b501dd6c***\\",\\"AppId\\":\\"rtcdev\\",\\"SubId\\":\\"Sub-9799B2C45009799B2C4***\\",\\"TaskId\\":\\"mpucallbacktest\\",\\"CallbackTs\\":1712656430***,\\"Payload\\":{\\"DstUrl\\":\\"rtmp://domain/app/stream?auth\\",\\"EventTs\\":1712656430***,\\"EventCode\\":1,\\"ErrorCode\\":0,\\"ErrorMessage\\":\\"\\"}}', 'title' => ''], + 'Time' => ['description' => 'The time when the callback was invoked. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ss format. The time is displayed in UTC.', 'type' => 'string', 'example' => '1970-01-01T00:00:00Z', 'title' => ''], + 'Cost' => ['description' => 'The callback duration. Unit: milliseconds.', 'type' => 'integer', 'format' => 'int64', 'example' => '22', 'title' => ''], + 'CallbackUrl' => ['description' => 'The callback URL.', 'type' => 'string', 'example' => 'http://testcallback***.com/callback', 'title' => ''], + 'HTTPCode' => ['description' => 'The HTTP status code. 200 indicates that the callback is successful.', 'type' => 'string', 'example' => '200', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidMonitorId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'StreamMonitorAlreadyStop', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'UserQuotaExceed', - 'errorMessage' => 'Quota exceeded: %s.', - ], - ], - [ - [ - 'errorCode' => 'StreamMonitorNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n5c6a2a0d-f228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'StopLiveStreamMonitor', - 'description' => 'Before you call this operation to stop live monitoring, make sure that live monitoring is started. You can call the [CreateLiveStreamMonitor](~~2848129~~) operation to create a monitoring session, obtain the value of the response parameter **MonitorId**, and then start live monitoring.'."\n" + 'title' => 'ListRtcMPUEventSubRecord', + 'description' => 'You can call this operation to query the callback records of a subscription to mixed-stream relay events in the last seven days.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveStreamMonitor' => [ - 'summary' => 'Deletes a monitoring session.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'changeSet' => [ + ['createdAt' => '2024-07-04T06:14:36.000Z', 'description' => 'Error codes changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [], ], + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListRtcMPUEventSubRecord', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"Count\\": 1,\\n \\"HasMore\\": false,\\n \\"Logs\\": [\\n {\\n \\"AppId\\": \\"yourAppId\\",\\n \\"SubId\\": \\"Sub-******9799B2C4500******\\",\\n \\"MsgId\\": \\"42bba8b5-********-9b501dd6cb6e\\",\\n \\"Data\\": \\"{\\\\\\\\\\\\\\"EventType\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"MsgId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"42bba8b5-94ab-468c-9dae-9b501dd6c***\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"AppId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"rtcdev\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"SubId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"Sub-9799B2C45009799B2C4***\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"TaskId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"mpucallbacktest\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"CallbackTs\\\\\\\\\\\\\\":1712656430***,\\\\\\\\\\\\\\"Payload\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"DstUrl\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"rtmp://domain/app/stream?auth\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"EventTs\\\\\\\\\\\\\\":1712656430***,\\\\\\\\\\\\\\"EventCode\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"ErrorCode\\\\\\\\\\\\\\":0,\\\\\\\\\\\\\\"ErrorMessage\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"\\\\\\\\\\\\\\"}}\\",\\n \\"Time\\": \\"1970-01-01T00:00:00Z\\",\\n \\"Cost\\": 22,\\n \\"CallbackUrl\\": \\"http://testcallback***.com/callback\\",\\n \\"HTTPCode\\": \\"200\\"\\n }\\n ]\\n}","type":"json"}]', + ], + 'ListRtcMPUTaskDetail' => [ + 'summary' => 'Queries the parameters of mixed-stream relay tasks.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'list', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveSM955S', - ], + 'abilityTreeCode' => '226001', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the application.'."\n" + ."\n" + .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], ], [ - 'name' => 'MonitorId', + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the monitoring session.'."\n" - ."\n" - .'> You can obtain the monitoring session ID from the response parameter **MonitorId** of the [CreateLiveStreamMonitor](~~2848129~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The task ID.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'- If you specify TaskId, the parameters of the specified tasks are returned.', 'type' => 'string', 'required' => false, 'example' => 'yourTaskId', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Valid values: 1 to 100.'."\n" + ."\n" + .'> If you do not specify TaskId, you must specify PageSize and PageNo. Then, the parameters of all stream relay tasks for the specified application are returned in pages.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'PageNo', + 'in' => 'query', + 'schema' => ['description' => 'The page number.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '20', 'title' => ''], ], ], 'responses' => [ @@ -52169,1998 +42286,2711 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + 'MPUTasks' => [ + 'description' => 'The parameters that you configured when you called the StartLiveMPUTask operation to create the tasks.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AppId' => ['description' => 'The ID of the application.', 'type' => 'string', 'example' => 'yourAppId', 'title' => ''], + 'ChannelId' => ['description' => 'The ID of the channel.', 'type' => 'string', 'example' => 'yourChannelId', 'title' => ''], + 'TaskId' => ['description' => 'The ID of the stream relay task.', 'type' => 'string', 'example' => 'yourTaskId', 'title' => ''], + 'MixMode' => ['description' => 'The stream mixing mode. Valid values:'."\n" + ."\n" + .'- 0: relays the original single stream without mixing streams. If the value of this parameter is 0, the TranscodeParams parameter is empty.'."\n" + ."\n" + .'- 1 (default): mixes multiple streams into a single stream and relays the mixed stream.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'StreamURL' => ['description' => 'The ingest URL.', 'type' => 'string', 'example' => 'rtmp://example.com/live/stream****', 'title' => ''], + 'MultiStreamURL' => [ + 'description' => 'The multiple ingest URLs relayed.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'URL' => ['description' => 'The ingest URL.', 'type' => 'string', 'example' => 'rtmp://example.com/live/stream****', 'title' => ''], + 'IsAliCdn' => ['description' => 'Indicates whether stream relay is performed by using Alibaba Cloud CDN. Valid values:'."\n" + ."\n" + .'- false: Stream relay is performed by using a CDN service that is not Alibaba Cloud CDN.'."\n" + ."\n" + .'- true: Stream relay is performed by using Alibaba Cloud CDN.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'Region' => ['description' => 'The region in which the streams are mixed. Valid values:'."\n" + ."\n" + .'- **CN-shanghai**'."\n" + ."\n" + .'- **AP-Singapore (default)**'."\n" + ."\n" + .'- **EMAA-Saudi**', 'type' => 'string', 'example' => 'CN-Shanghai', 'title' => ''], + 'MaxIdleTime' => ['description' => 'The timeout period of an idle connection. Unit: seconds.'."\n" + ."\n" + .'> If the task is idle for a period of time longer than the duration specified by the MaxIdleTime parameter, the task is automatically stopped. If the parameter is not specified, the task is stopped after the channel is closed.', 'type' => 'string', 'example' => '10', 'title' => ''], + 'SingleSubParams' => [ + 'description' => 'The parameters of the single-stream relay task.', + 'type' => 'object', + 'properties' => [ + 'SourceType' => ['description' => 'The source of the video. This parameter is valid only if you set StreamType to 2. Valid values:'."\n" + ."\n" + .'- camera (default): captures the video by using a camera.'."\n" + ."\n" + .'- shareScreen: captures the content displayed on a screen.', 'type' => 'string', 'example' => 'camera', 'title' => ''], + 'StreamType' => ['description' => 'The type of the stream that is relayed. Valid values:'."\n" + ."\n" + .'- 0 (default): the original stream.'."\n" + ."\n" + .'- 1: the audio-only stream.'."\n" + ."\n" + .'- 2: the video-only stream.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'UserId' => ['description' => 'The ID of the user whose stream is relayed. In single-stream relay mode, you can relay only one stream in a request.', 'type' => 'string', 'example' => 'yourSubUserId', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'TranscodeParams' => [ + 'description' => 'The mixed-stream relay parameters.', + 'type' => 'object', + 'properties' => [ + 'Background' => [ + 'description' => 'The global background image.', + 'type' => 'object', + 'properties' => [ + 'RenderMode' => ['description' => 'The display mode. Valid values:'."\n" + ."\n" + .'- 0: proportionally scales the video or background image to fit the pane. Black bars are added to fill the extra space.'."\n" + ."\n" + .'- 1 (default): crops the video or background image to fit the pane.', 'type' => 'string', 'example' => '1', 'title' => ''], + 'URL' => ['description' => 'The URL of the global background image.', 'type' => 'string', 'example' => 'yourImageUrl', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'EncodeParams' => [ + 'description' => 'The encoding parameters of the output stream.', + 'type' => 'object', + 'properties' => [ + 'AudioOnly' => ['description' => 'Indicates whether the output stream is an audio-only stream. Valid values:'."\n" + ."\n" + .'- true'."\n" + ."\n" + .'- false (default)', 'type' => 'string', 'example' => 'false', 'title' => ''], + 'AudioBitrate' => ['description' => 'The bitrate of the audio. Unit: Kbit/s.', 'type' => 'string', 'example' => '128', 'title' => ''], + 'AudioChannels' => ['description' => 'The number of audio channels. Valid values: 1 and 2.', 'type' => 'string', 'example' => '2', 'title' => ''], + 'AudioSampleRate' => ['description' => 'The audio sampling rate. Unit: Hz.', 'type' => 'string', 'example' => '44100', 'title' => ''], + 'VideoCodec' => ['description' => 'The video encoding format. Default value: H.264.', 'type' => 'string', 'example' => 'H.264', 'title' => ''], + 'VideoBitrate' => ['description' => 'The bitrate of the video. Unit: Kbit/s.', 'type' => 'string', 'example' => '3500', 'title' => ''], + 'VideoFramerate' => ['description' => 'The frame rate of the video. Unit: frames per second (FPS).', 'type' => 'string', 'example' => '25', 'title' => ''], + 'VideoGop' => ['description' => 'The group of pictures (GOP) size of the video.', 'type' => 'string', 'example' => '20', 'title' => ''], + 'VideoHeight' => ['description' => 'The height of the video. Unit: pixels.', 'type' => 'string', 'example' => '1000', 'title' => ''], + 'VideoWidth' => ['description' => 'The width of the video. Unit: pixels.', 'type' => 'string', 'example' => '1920', 'title' => ''], + 'EnhancedParam' => ['description' => 'The parameter for advanced video encoding. The value is a JSON string. Optional fields:'."\n" + ."\n" + .'- profile: the encoding level. If the video encoding format is set to H.264, the valid values of this field are baseline, main, and high.'."\n" + ."\n" + .'- preset: adjusts the trade-off between encoding speed and video quality. Valid values: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, and placebo. Each value specifies a level of trade-off between encoding speed and video quality. For example, the ultrafast preset has the fastest encoding speed but the lowest video quality, while the placebo preset sacrifices the encoding speed for the best video quality.', 'type' => 'string', 'example' => '{"profile": "high", "preset": "veryfast"}', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'Layout' => [ + 'description' => 'The video layout information.'."\n" + ."\n" + .'> The video layout information includes the x-coordinate, y-coordinate, width, height, and layer of the pane. For audio-only transcoding, no video layout information is returned.', + 'type' => 'object', + 'properties' => [ + 'UserPanes' => [ + 'description' => 'The information about the panes.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'UserInfo' => [ + 'description' => 'The information about the user whose stream is played in the pane.', + 'type' => 'object', + 'properties' => [ + 'SourceType' => ['description' => 'The source of the video. This parameter is valid only if you set StreamType to 2. Valid values:'."\n" + ."\n" + .'- camera (default): captures the video by using a camera.'."\n" + ."\n" + .'- shareScreen: captures the content displayed on a screen.', 'type' => 'string', 'example' => 'camera', 'title' => ''], + 'ChannelId' => ['description' => 'The ID of the channel where the user is.', 'type' => 'string', 'example' => 'yourChannelId', 'title' => ''], + 'UserId' => ['description' => 'The ID of the user.', 'type' => 'string', 'example' => 'yourSubUserId', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'Height' => ['description' => 'The height of the pane. The value is normalized.', 'type' => 'string', 'example' => '0.2632', 'title' => ''], + 'Width' => ['description' => 'The width of the pane. The value is normalized.', 'type' => 'string', 'example' => '0.3564', 'title' => ''], + 'X' => ['description' => 'The x-coordinate of the pane. The value is normalized.', 'type' => 'string', 'example' => '0.2456', 'title' => ''], + 'Y' => ['description' => 'The y-coordinate of the pane. The value is normalized.', 'type' => 'string', 'example' => '0.3789', 'title' => ''], + 'ZOrder' => ['description' => 'The layer of the pane. A value of 0 indicates that the pane is placed at the bottom layer. A larger value indicates a higher layer.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'BackgroundImageUrl' => ['description' => 'The URL of the background image of the pane. This image is displayed if the user turns off the camera or is not present in the channel.', 'type' => 'string', 'example' => 'yourImageUrl', 'title' => ''], + 'RenderMode' => ['description' => 'The display mode. Valid values:'."\n" + ."\n" + .'- 0: proportionally scales the video or background image to fit the pane. Black bars are added to fill the extra space.'."\n" + ."\n" + .'- 1 (default): crops the video or background image to fit the pane.', 'type' => 'string', 'example' => '1', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'UserInfos' => [ + 'description' => 'The information about the user whose stream is mixed. If an empty value is returned, streams from all users are mixed.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ChannelId' => ['description' => 'The ID of the channel where the user is.', 'type' => 'string', 'example' => 'yourChannelId', 'title' => ''], + 'UserId' => ['description' => 'The ID of the user.', 'type' => 'string', 'example' => 'yourSubUserId', 'title' => ''], + 'SourceType' => ['description' => 'The source of the video. This parameter is valid only if you set StreamType to 2. Valid values:'."\n" + ."\n" + .'- camera (default): captures the video by using a camera.'."\n" + ."\n" + .'- shareScreen: captures the content displayed on a screen.', 'type' => 'string', 'example' => 'camera', 'title' => ''], + 'StreamType' => ['description' => 'The type of the stream that is relayed. Valid values:'."\n" + ."\n" + .'- 0 (default): the original stream.'."\n" + ."\n" + .'- 1: the audio-only stream.'."\n" + ."\n" + .'- 2: the video-only stream.', 'type' => 'string', 'example' => '0', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'title' => '', + 'example' => '', + ], + 'SeiParams' => [ + 'description' => 'The supplemental enhancement information (SEI) parameters.', + 'type' => 'object', + 'properties' => [ + 'LayoutVolume' => [ + 'description' => 'The layout and volume SEI. If the return value is an empty string, the default layout and volume SEI is used.', + 'type' => 'object', + 'properties' => [ + 'FollowIdr' => ['description' => 'Indicates whether to add SEI messages to Instantaneous Decoder Refresh (IDR) frames. Valid values:'."\n" + ."\n" + .'- 0: does not add SEI messages.'."\n" + ."\n" + .'- 1: adds SEI messages.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'Interval' => ['description' => 'The interval at which the SEI messages are added. Unit: milliseconds.', 'type' => 'string', 'example' => '1000', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'PassThrough' => [ + 'description' => 'The custom SEI.', + 'type' => 'object', + 'properties' => [ + 'FollowIdr' => ['description' => 'Indicates whether to add SEI messages to Instantaneous Decoder Refresh (IDR) frames. Valid values:'."\n" + ."\n" + .'- 0: does not add SEI messages.'."\n" + ."\n" + .'- 1: adds SEI messages.', 'type' => 'string', 'example' => '0', 'title' => ''], + 'Interval' => ['description' => 'The interval at which the SEI messages are added. Unit: milliseconds.', 'type' => 'string', 'example' => '1000', 'title' => ''], + 'PayloadContent' => ['description' => 'The payload content of the custom SEI.', 'type' => 'string', 'example' => 'yourPayloadContent', 'title' => ''], + 'PayloadContentKey' => ['description' => 'The key of the payload content. Default value: udd.', 'type' => 'string', 'example' => 'yourPayloadContentKey', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'PayloadType' => ['description' => 'The custom payload type. Valid values: 100 to 254. Default value: 5.', 'type' => 'string', 'example' => '100', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidMonitorId.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], - 404 => [ - [ - 'errorCode' => 'StreamMonitorNotExist', - 'errorMessage' => '%s, please check and try again later.', - ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n5c6a2a0d-f228-4a64-af62-20e91b9676b3\\r\\n","errorExample":""}]', - 'title' => 'DeleteLiveStreamMonitor', - 'description' => 'Before you call this operation, obtain the monitoring session ID from the response parameter **MonitorId** of the [CreateLiveStreamMonitor](~~2848129~~) operation.'."\n" + 'title' => 'ListRtcMPUTaskDetail', + 'description' => '- You can call the ListRtcMPUTaskDetail operation to query the parameters of mixed-stream relay tasks that were created by calling the StartLiveMPUTask operation.'."\n" ."\n" - .'> You cannot delete a monitoring session that is in the started state. If you try to delete it, a 400 error is reported.'."\n" + .'- By default, the query results are sorted in reverse chronological order based on the task update time.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'GetMessageToken' => [ - 'summary' => 'Obtains a token that the client can use to establish a persistent connection over the LWP protocol and based on atomic capabilities.', - 'methods' => [ - 'post', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'changeSet' => [ + ['createdAt' => '2024-11-14T09:21:05.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-10-30T09:33:19.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-08-13T08:23:10.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-08-06T07:59:23.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2024-07-04T07:02:35.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListRtcMPUTaskDetail'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListRtcMPUTaskDetail', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"MPUTasks\\": [\\n {\\n \\"AppId\\": \\"yourAppId\\",\\n \\"ChannelId\\": \\"yourChannelId\\",\\n \\"TaskId\\": \\"yourTaskId\\",\\n \\"MixMode\\": \\"0\\",\\n \\"StreamURL\\": \\"rtmp://example.com/live/stream****\\",\\n \\"MultiStreamURL\\": [\\n {\\n \\"URL\\": \\"rtmp://example.com/live/stream****\\",\\n \\"IsAliCdn\\": false\\n }\\n ],\\n \\"Region\\": \\"CN-Shanghai\\",\\n \\"MaxIdleTime\\": \\"10\\",\\n \\"SingleSubParams\\": {\\n \\"SourceType\\": \\"camera\\",\\n \\"StreamType\\": \\"0\\",\\n \\"UserId\\": \\"yourSubUserId\\"\\n },\\n \\"TranscodeParams\\": {\\n \\"Background\\": {\\n \\"RenderMode\\": \\"1\\",\\n \\"URL\\": \\"yourImageUrl\\"\\n },\\n \\"EncodeParams\\": {\\n \\"AudioOnly\\": \\"false\\",\\n \\"AudioBitrate\\": \\"128\\",\\n \\"AudioChannels\\": \\"2\\",\\n \\"AudioSampleRate\\": \\"44100\\",\\n \\"VideoCodec\\": \\"H.264\\",\\n \\"VideoBitrate\\": \\"3500\\",\\n \\"VideoFramerate\\": \\"25\\",\\n \\"VideoGop\\": \\"20\\",\\n \\"VideoHeight\\": \\"1000\\",\\n \\"VideoWidth\\": \\"1920\\",\\n \\"EnhancedParam\\": \\"{\\\\\\"profile\\\\\\": \\\\\\"high\\\\\\", \\\\\\"preset\\\\\\": \\\\\\"veryfast\\\\\\"}\\"\\n },\\n \\"Layout\\": {\\n \\"UserPanes\\": [\\n {\\n \\"UserInfo\\": {\\n \\"SourceType\\": \\"camera\\",\\n \\"ChannelId\\": \\"yourChannelId\\",\\n \\"UserId\\": \\"yourSubUserId\\"\\n },\\n \\"Height\\": \\"0.2632\\",\\n \\"Width\\": \\"0.3564\\",\\n \\"X\\": \\"0.2456\\",\\n \\"Y\\": \\"0.3789\\",\\n \\"ZOrder\\": \\"0\\",\\n \\"BackgroundImageUrl\\": \\"yourImageUrl\\",\\n \\"RenderMode\\": \\"1\\"\\n }\\n ]\\n },\\n \\"UserInfos\\": [\\n {\\n \\"ChannelId\\": \\"yourChannelId\\",\\n \\"UserId\\": \\"yourSubUserId\\",\\n \\"SourceType\\": \\"camera\\",\\n \\"StreamType\\": \\"0\\"\\n }\\n ]\\n },\\n \\"SeiParams\\": {\\n \\"LayoutVolume\\": {\\n \\"FollowIdr\\": \\"0\\",\\n \\"Interval\\": \\"1000\\"\\n },\\n \\"PassThrough\\": {\\n \\"FollowIdr\\": \\"0\\",\\n \\"Interval\\": \\"1000\\",\\n \\"PayloadContent\\": \\"yourPayloadContent\\",\\n \\"PayloadContentKey\\": \\"yourPayloadContentKey\\"\\n },\\n \\"PayloadType\\": \\"100\\"\\n }\\n }\\n ]\\n}","type":"json"}]', + ], + 'ModifyCasterComponent' => [ + 'summary' => 'Modifies a component of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'title' => '应用ID', - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a494caec-***-695ef345db77', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DeviceId', - 'in' => 'formData', - 'schema' => [ - 'title' => '终端设备ID', - 'description' => 'The ID of the device. Each device has a unique ID. You can specify a custom ID. The ID can be up to 64 characters in length and can contain lowercase letters, digits, underscores (\\_), and hyphen (-). You can specify multiple device IDs. We recommend that you obtain the IDs from the devices and pass the IDs to the server.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a494caec-***-695ef345db77', - ], + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- The ID is returned after you call the [CreateCaster](~~2848009~~) operation.'."\n" + ."\n" + .'- If you create a production studio in the LIVE console, go to the **LIVE** > **Production Studio** > **Cloud Production Studio** page to find the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'DeviceType', - 'in' => 'formData', - 'schema' => [ - 'title' => '终端设备类型', - 'description' => 'The type of the device. Valid values:'."\n" - ."\n" - .'* ios'."\n" - .'* android'."\n" - .'* web'."\n" - .'* pc'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'android', - ], + 'name' => 'ComponentId', + 'in' => 'query', + 'schema' => ['description' => 'The component ID. The ID is returned after you call the [AddCasterComponent](~~2848030~~) operation.', 'type' => 'string', 'required' => true, 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', 'title' => ''], ], [ - 'name' => 'UserId', - 'in' => 'formData', - 'schema' => [ - 'title' => '用户UserId,在AppId下单独唯一', - 'description' => 'The ID of the user. Each user has a unique ID in the application. The ID can be up to 32 characters in length and can contain lowercase letters, digits, underscores (\\_), and periods (.). You can specify multiple user IDs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'de1**a0', - ], + 'name' => 'ComponentName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the component. The default value is the component ID.', 'type' => 'string', 'required' => false, 'example' => 'text01', 'title' => ''], + ], + [ + 'name' => 'ComponentType', + 'in' => 'query', + 'schema' => ['description' => 'The type of the component. Valid values:'."\n" + ."\n" + .'- **text**: A text component. The TextLayerContent parameter is required only if you set ComponentType to text.'."\n" + ."\n" + .'- **image**: An image component. The ImageLayerContent parameter is required only if you set ComponentType to image.'."\n" + ."\n" + .'- **caption**: A translation caption component. The CaptionLayerContent parameter is required only if you set ComponentType to caption.', 'type' => 'string', 'required' => false, 'example' => 'text', 'title' => ''], + ], + [ + 'name' => 'Effect', + 'in' => 'query', + 'schema' => ['description' => 'The display effect of the component. Valid values:'."\n" + ."\n" + .'- **none** (default): no effect.'."\n" + ."\n" + .'- **animateH**: horizontal scroll.'."\n" + ."\n" + .'- **animateV**: vertical scroll.', 'type' => 'string', 'required' => false, 'example' => 'animateV', 'title' => ''], + ], + [ + 'name' => 'ComponentLayer', + 'in' => 'query', + 'schema' => ['description' => 'The size and layout of the layer. The value is a JSON string. The following properties are supported:'."\n" + ."\n" + .'- **HeightNormalized**: The normalized height.'."\n" + ."\n" + .'- **WidthNormalized**: The normalized width.'."\n" + ."\n" + .'- **PositionNormalized**: The normalized position of the layer.'."\n" + ."\n" + .'- **PositionRefer**: The reference point for the position of the layer.', 'type' => 'string', 'required' => false, 'example' => '{"HeightNormalized":"1","PositionRefer":"topRight","WidthNormalized":"0","PositionNormalized":["0.1","0.2"]}', 'title' => ''], + ], + [ + 'name' => 'TextLayerContent', + 'in' => 'query', + 'schema' => ['description' => 'The properties of the text layer. The value is a JSON string. The following properties are supported:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required if you set ComponentType to text.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- **SizeNormalized**: The normalized font size. The font size is calculated using the formula: font\\_size/output\\_height. The value must be in the range of `[0,1]`. If the calculated font size is greater than 1024, the value 1024 is used.'."\n" + ."\n" + .'- **BorderWidthNormalized**: The normalized width of the text border. The normalized width is calculated based on the font size using the formula: BorderWidth/FontSize. The value must be in the range of `[0,1]`. If the calculated value is greater than 16, the value 16 is used. Default value: 0.'."\n" + ."\n" + .'- **FontName**: The font name. For more information about valid values, see **Production studio fonts**. Default value: KaiTi.'."\n" + ."\n" + .'- **BorderColor**: The color of the text border. Valid values are from 0x000000 to 0xffffff. The default value is an empty string, which indicates that this parameter is not used.'."\n" + ."\n" + .'- **Text**: The text content. The default value is an empty string.'."\n" + ."\n" + .'- **Color**: The color of the text. Default value: 0xff0000, which is red.', 'type' => 'string', 'required' => false, 'example' => '{"BorderWidthNormalized":"1","SizeNormalized":"0.2","Color":"0x000000","FontName":"KaiTi","BorderColor":"0x000000","Text":"hello world!"}', 'title' => ''], + ], + [ + 'name' => 'ImageLayerContent', + 'in' => 'query', + 'schema' => ['description' => 'The properties of the image layer. The value is a JSON string.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required if you set ComponentType to image.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'MaterialId is the ID of the material in the media asset library.', 'type' => 'string', 'required' => false, 'example' => '{"MaterialId":"6cf724c6ebfd4a59b5b3cec6f10d5ecf"}', 'title' => ''], + ], + [ + 'name' => 'CaptionLayerContent', + 'in' => 'query', + 'schema' => ['description' => 'The properties of the caption layer. The value is a JSON string. The following properties are supported:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required if you set ComponentType to caption.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- **SizeNormalized**: The normalized font size. The font size is calculated using the formula: font\\_size/output\\_height. The value must be in the range of `[0,1]`. If the calculated font size is greater than 1024, the value 1024 is used.'."\n" + ."\n" + .'- **BorderWidthNormalized**: The normalized width of the text border. The normalized width is calculated based on the font size using the formula: BorderWidth/FontSize. The value must be in the range of `[0,1]`. If the calculated value is greater than 16, the value 16 is used. Default value: 0.'."\n" + ."\n" + .'- **FontName**: The font name. For more information about valid values, see **Production studio fonts**. Default value: KaiTi.'."\n" + ."\n" + .'- **BorderColor**: The color of the text border. Valid values are from 0x000000 to 0xffffff. The default value is an empty string, which indicates that this parameter is not used.'."\n" + ."\n" + .'- **LocationId**: The channel ID of the translation source.'."\n" + ."\n" + .'- **SourceLan**: The source language of the audio in the video source. Valid values are en (English), cn (Chinese), es (Spanish), and ru (Russian). Default value: cn.'."\n" + ."\n" + .'- **TargetLan**: The target language for translation. If you do not set this parameter, only speech recognition is performed. If you set this parameter, translation is also performed. Valid values are en (English), cn (Chinese), es (Spanish), and ru (Russian).'."\n" + ."\n" + .'- **ShowSourceLan**: Specifies whether to display the source language. Valid values are true (display) and false (do not display). Default value: false.'."\n" + ."\n" + .'- **Truncation**: Specifies whether to truncate the caption. Valid values are true (truncate) and false (do not truncate). Default value: false.'."\n" + ."\n" + .'- **SourceLanPerLineWordCount**: The number of words per line for the source language. This parameter takes effect only if Truncation is set to true. Default value: 20.'."\n" + ."\n" + .'- **TargetLanPerLineWordCount**: The number of words per line for the target language. This parameter takes effect only if Truncation is set to true. Default value: 20.', 'type' => 'string', 'required' => false, 'example' => '{"BorderWidthNormalized":0.01,"SizeNormalized":0.05,"Color":"0x000000","LocationId":"RV01","SourceLan":"cn","FontName":"KaiTi","BorderColor":"0xffffff"}', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'AccessToken' => [ - 'title' => '用于长连接建连的token', - 'description' => 'The token used to establish a persistent connection.'."\n", - 'type' => 'string', - 'example' => 'oauth_cloud_key:***-b0YY5Gy6Q', - ], - 'AccessTokenExpiredTime' => [ - 'title' => '登录token过期时间(毫秒)', - 'description' => 'Indicates how long until the token expires. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '86400000', - ], - 'RefreshToken' => [ - 'title' => '更新Token,若AccessToken过期,则可以使用RefreshToken再次获取新Token', - 'description' => 'The updated token. If a token expires, you can call RefreshToken to obtain a new token.'."\n", - 'type' => 'string', - 'example' => 'oauth_cloud_key:****-Q62xggOTdgk3gw=', - ], - ], - ], + 'ComponentId' => ['description' => 'The component ID. You can use this ID as a request parameter to query the components of the production studio.', 'type' => 'string', 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvaildParameter', - 'errorMessage' => 'Invalid Parameter', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidPositionNormalized.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PositionNormalized is invalid, please check and try again.'], ], - 403 => [ - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => 'User not authorized to operate on the specified resource.', - ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], + ['errorCode' => 'CanvasNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Canvas does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"AccessToken\\": \\"oauth_cloud_key:***-b0YY5Gy6Q\\",\\n \\"AccessTokenExpiredTime\\": 86400000,\\n \\"RefreshToken\\": \\"oauth_cloud_key:****-Q62xggOTdgk3gw=\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n oauth_cloud_key:***-b0YY5Gy6Q\\n oauth_cloud_key:****-Q62xggOTdgk3gw=\\n 86400000\\n \\n","errorExample":""}]', - 'title' => 'GetMessageToken', - 'description' => '##'."\n" - ."\n" - .'Obtain the user ID, device ID, and device type of the client, and then pass the information to the server. When you call this operation, the server obtains a token and returns the token to the client. Different users have different user IDs, and different devices have different device IDs.'."\n" + 'title' => 'ModifyCasterComponent', + 'description' => 'You can call this operation to modify a production studio component, such as a text, image, or translation caption component.'."\n" ."\n" - .'## QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'CreateMessageApp' => [ - 'summary' => 'Creates an interactive messaging application.', - 'methods' => [ - 'post', + .'The queries per second (QPS) limit for a single user is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation as needed.', + 'requestParamsDescription' => '## Production studio fonts'."\n" + ."\n" + .'| Font | Value of FontName |'."\n" + .'| ----------------------- | ---------------------- |'."\n" + .'| KaiTi | KaiTi |'."\n" + .'| Alibaba PuHuiTi-Regular | AlibabaPuHuiTi-Regular |'."\n" + .'| Alibaba PuHuiTi-Bold | AlibabaPuHuiTi-Bold |'."\n" + .'| Alibaba PuHuiTi-Light | AlibabaPuHuiTi-Light |'."\n" + .'| Source Han Sans-Regular | NotoSansHans-Regular |'."\n" + .'| Source Han Sans-Bold | NotoSansHans-Bold |'."\n" + .'| Source Han Sans-Light | NotoSansHans-Light |', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterComponent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ComponentId\\": \\"05ab713c-676e-49c0-96ce-cc408da1****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'ModifyCasterEpisode' => [ + 'summary' => 'Modifies the configuration of a production studio episode. The episode type cannot be modified.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppName', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The name of the interactive message application. The name must be 2 to 16 characters in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'test', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AppConfig', - 'in' => 'formData', - 'style' => 'json', + 'name' => 'ComponentId', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The configurations of the application.'."\n", - 'type' => 'object', + 'description' => 'The IDs of the components. The components are arranged from bottom to top and are switched in sync with the video source.'."\n" + ."\n" + .'- This parameter is required and takes effect only if EpisodeType is set to **Component**.'."\n" + ."\n" + .'- If EpisodeType is set to **Resource**, this parameter specifies the components that are attached to the video source and switched in sync.'."\n" + ."\n" + .'> N specifies the Nth component ID. For example, ComponentId.1 specifies the first component ID and ComponentId.2 specifies the second component ID.', + 'type' => 'array', + 'items' => ['description' => 'A list of components.', 'type' => 'string', 'required' => false, 'example' => '["16A96B9A-F203-4EC5-8E43-CB92E68F****"]', 'title' => ''], 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The custom configuration.'."\n", - 'example' => '"appAlias":"localApp"', - ], + 'example' => '["16A96B9A-F203-4EC5-8E43-CB92E68F****"]', + 'maxItems' => 10, + 'title' => '', ], ], [ - 'name' => 'Extension', - 'in' => 'formData', - 'style' => 'json', - 'schema' => [ - 'description' => 'The extended fields.'."\n", - 'type' => 'object', - 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The extended field. Specify an additional parameter based on your business requirements.'."\n", - 'example' => 'test001', - ], - ], + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you created the production studio in the LIVE console, find the ID on the Cloud Production Studio page. To go to the page, choose **LIVE Console** > **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> The name of a production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + ], + [ + 'name' => 'EpisodeId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the episode.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf938623****', 'title' => ''], + ], + [ + 'name' => 'EpisodeName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the episode.', 'type' => 'string', 'required' => false, 'example' => 'episode_name_1', 'title' => ''], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the video source.'."\n" + ."\n" + .'- This parameter is required and takes effect only if EpisodeType is set to **Resource**.'."\n" + ."\n" + .'- This parameter is not available if EpisodeType is set to **Component**.', 'type' => 'string', 'required' => false, 'example' => '16A96B9A-F203-4EC5-8E43-CB92E683****', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time. The time must be in UTC. The format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T09:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. The time must be in UTC. The format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T10:20:00Z', 'title' => ''], + ], + [ + 'name' => 'SwitchType', + 'in' => 'query', + 'schema' => ['description' => 'The switch policy. This parameter takes effect only if EpisodeType is set to **Resource**.'."\n" + ."\n" + .'- **TimeFirst**: time-priority. This is the only policy available for live stream video sources.'."\n" + ."\n" + .'- **ContentFirst**: content-priority.', 'type' => 'string', 'required' => false, 'example' => 'TimeFirst', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppId' => [ - 'title' => '用于长连接建连的token', - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'VKL3***', - ], - ], - ], + 'CasterId' => ['description' => 'The ID of the production studio. You can use this ID to perform operations on the scenario. These operations include copying, updating, querying, starting, and stopping the scenario. You can also use the ID to query the audio configuration of the scenario.', 'type' => 'string', 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + 'EpisodeId' => ['description' => 'The ID of the episode. You can use this ID to manage the episode list and its items. For the episode list, you can perform operations such as query, edit, delete, start, and stop. For episode items, you can perform operations such as create, add, delete, and query.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf938623****', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"AppId\\": \\"VKL3***\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n 7m***q\\n \\n","errorExample":""}]', - 'title' => 'CreateMessageApp', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'SwitchTypeInvalid.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SwitchType is invalid, please check and try again.'], + ['errorCode' => 'IncorrectStartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['errorCode' => 'IncorrectEndTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ['errorCode' => 'IncorrectEpisodeStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The current status of the program is not operational, please check and try again.'], + ['errorCode' => 'EpisodeConflict.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'There is a conflict with the program time, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidEpisode.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Episode does not exist, please check and try again.'], + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'ModifyCasterEpisode', + 'description' => 'You can call this operation to modify the configuration of a production studio episode. The episode type cannot be modified.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'UpdateMessageApp' => [ - 'summary' => 'Updates the configurations of an interactive message application.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 4 calls per second. If this limit is exceeded, API calls are throttled. This may affect your business. We recommend that you call this API operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyCasterEpisode'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterEpisode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"EpisodeId\\": \\"a2b8e671-2fe5-4642-a2ec-bf938623****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'ModifyCasterLayout' => [ + 'summary' => 'Modifies a layout configuration. Only the items to be modified need to be passed. Items that do not require modification do not need to be included.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'VideoLayer', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', + 'description' => 'The video information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The video information.', + 'type' => 'object', + 'properties' => [ + 'FillMode' => ['description' => 'The element fill mode. '."\n" + ."\n" + .'- **none** (default): no fill. The Layer settings are configured with the image as the target.'."\n" + .'- **fit**: adaptive. The Layer settings are configured with the fill area (box) as the target. The image is scaled based on the original aspect ratio and centered within the fill area (box) using a long-edge alignment method. If the aspect ratio of the fill area does not match the image, the short edges are not filled (the lower Layer image is displayed. If no lower Layer is configured, the default black background is displayed).', 'type' => 'string', 'required' => false, 'example' => 'fit', 'title' => ''], + 'FixedDelayDuration' => ['description' => 'The fixed delay for the video. This can be used for subtitle synchronization. Unit: milliseconds. Default value: **0**. Valid values: **0 to 5000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5000', 'title' => ''], + 'HeightNormalized' => ['description' => 'The normalized height ratio of the Layer element. '."\n" + .' '."\n" + .'- If the no-fill mode is used, the width of the element is proportionally scaled based on this height. Default value: **0**, which indicates that the image is displayed at its original size.'."\n" + .'- If the adaptive mode is used, this field is required and must be greater than **0**. It specifies the normalized height ratio of the fill area (box).', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '1', 'title' => ''], + 'PositionNormalized' => [ + 'description' => 'The normalized position values `[x,y]` of the Layer element. Default value: `[0,0]`.'."\n" + ."\n" + .'>Note: The x and y values must be normalized.', + 'type' => 'array', + 'items' => ['description' => 'The normalized position values `[x,y]` of the Layer element. Default value: `[0,0]`.'."\n" + ."\n" + .'>Note: The x and y values must be normalized.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.5', 'title' => ''], + 'required' => false, + 'example' => '0.3', + 'maxItems' => 2, + 'title' => '', + ], + 'PositionRefer' => ['description' => 'The reference coordinate for the position of the element. Valid values:'."\n" + .'- **topLeft** (default): top-left.'."\n" + .'- **topRight**: top-right.'."\n" + .'- **bottomLeft**: bottom-left.'."\n" + .'- **bottomRight**: bottom-right.'."\n" + .'- **center**: center.'."\n" + .'- **topCenter**: top-center.'."\n" + .'- **bottomCenter**: bottom-center.'."\n" + .'- **leftCenter**: left-center.'."\n" + .'- **rightCenter**: right-center.', 'type' => 'string', 'required' => false, 'example' => 'topLeft', 'title' => ''], + 'WidthNormalized' => ['description' => 'The normalized width ratio of the Layer element. '."\n" + ."\n" + .'- If the no-fill mode is used, the height of the element is proportionally scaled based on this width. Default value: **0**, which indicates that the image is displayed at its original size.'."\n" + .'- If the adaptive mode is used, this field is required and must be greater than **0**. It specifies the normalized width ratio of the fill area (box).', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '1', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => true, - 'example' => 'VKL3***', + 'maxItems' => 12, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'AppName', - 'in' => 'formData', + 'name' => 'AudioLayer', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The name of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testApp', + 'description' => 'The audio information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The audio information.', + 'type' => 'object', + 'properties' => [ + 'FixedDelayDuration' => ['description' => 'The fixed delay for the audio. This can be used for subtitle synchronization. Unit: milliseconds. Default value: **0**. Valid values: **0 to 5000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5000', 'title' => ''], + 'ValidChannel' => ['description' => 'The audio channels that can be used as volume input. Valid values:'."\n" + .'- **leftChannel**: left channel.'."\n" + .'- **rightChannel**: right channel.'."\n" + .'- **all** (default): both channels.', 'type' => 'string', 'required' => false, 'example' => 'all', 'title' => ''], + 'VolumeRate' => ['description' => 'The normalized height ratio of the Layer element. The width of the element is proportionally scaled based on this height. '."\n" + ."\n" + .'Default value: **0**, which indicates that the element is displayed at its original size.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '1', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => true, + 'maxItems' => 12, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'AppConfig', - 'in' => 'formData', - 'style' => 'json', + 'name' => 'BlendList', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The configurations of the application.'."\n", - 'type' => 'object', - 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The custom configuration.'."\n", - 'example' => '"appAlias":"localApp"', - ], + 'description' => 'The location ID (LocationId) of the video resource element.'."\n" + ."\n" + .'For the LocationId, see [Add a video source](~~2848020~~). The elements correspond to the VideoLayers elements in order.', + 'type' => 'array', + 'items' => ['description' => 'The location ID (LocationId) of the video resource element.'."\n" + ."\n" + .'For the LocationId, see [Add a video source](~~2848020~~). The elements correspond to the VideoLayers elements in order.', 'type' => 'string', 'required' => false, 'example' => 'RV02', 'title' => ''], + 'required' => true, + 'example' => 'RV02', + 'maxItems' => 12, + 'title' => '', ], ], [ - 'name' => 'Extension', - 'in' => 'formData', - 'style' => 'json', + 'name' => 'MixList', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The extended field. Specify an additional parameter based on your business requirements.'."\n", - 'example' => 'test001', - ], + 'description' => 'The location ID (LocationId) of the audio resource element.'."\n" + ."\n" + .'For the LocationId, see [Add a video source](~~2848020~~). The elements correspond to the AudioLayers elements in order.', + 'type' => 'array', + 'items' => ['description' => 'The location ID (LocationId) of the audio resource element.'."\n" + ."\n" + .'For the LocationId, see [Add a video source](~~2848020~~). The elements correspond to the AudioLayers elements in order.', 'type' => 'string', 'required' => false, 'example' => 'RV02', 'title' => ''], + 'required' => true, + 'example' => 'RV02', + 'maxItems' => 12, + 'title' => '', ], ], + [ + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The production studio ID.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster operation](~~2848009~~), check the CasterId parameter returned by the CreateCaster operation.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, go to **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** to view the ID.'."\n" + ."\n" + .'> The production studio name in the production studio list on the Cloud Production Studio page of the ApsaraVideo Live console is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + ], + [ + 'name' => 'LayoutId', + 'in' => 'query', + 'schema' => ['description' => 'The layout ID. If you added the production studio layout by calling the [AddCasterLayout operation](~~2848025~~), check the LayoutId parameter returned by the AddCasterLayout operation.', 'type' => 'string', 'required' => true, 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the update is successful. Valid values:'."\n" - ."\n" - .'* true: The update is successful.'."\n" - .'* false: The update failed.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - ], - ], + 'LayoutId' => ['description' => 'The layout ID. This can be used as a request parameter to query the list of production studio layouts.', 'type' => 'string', 'example' => '21926b36-7dd2-4fde-ae25-51b5bc8e****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n true\\n \\n","errorExample":""}]', - 'title' => 'UpdateMessageApp', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidLayoutId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The LayoutId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidVideoLayersAndBlendListSize.Mismatch', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The size of the VideoLayers does not match the size of the BlendList, please check and try again.'], + ['errorCode' => 'InvalidAudioLayersAndMixListSize.Mismatch', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The size of the AudioLayers does not match the size of the MixList, please check and try again.'], + ['errorCode' => 'InvalidPositionNormalized.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PositionNormalized is invalid, please check and try again.'], + ['errorCode' => 'InvalidBlendList.ExceedNorm', 'errorMessage' => '%s, please check and try again later.', 'description' => 'BlendList size exceeds specification, please check and try again.'], + ['errorCode' => 'InvalidMixList.ExceedNorm', 'errorMessage' => '%s, please check and try again later.', 'description' => 'MixList size exceeds specification, please check and try again.'], + ['errorCode' => 'InvalidHeightOrWidthNormalized', 'errorMessage' => '%s, please check and try again later.', 'description' => 'HeightNormalized or WidthNormalized parameters are invalid, please check and try again.'], + ['errorCode' => 'InvalidVideoLayersConfig', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The size of the VideoLayers does not match the size of the BlendList, please check and try again.'], + ['errorCode' => 'InvalidAudioLayersConfig', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The size of the AudioLayers does not match the size of the MixList, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"LayoutId\\": \\"21926b36-7dd2-4fde-ae25-51b5bc8e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + 'title' => 'Modify production studio layout', + 'description' => 'Create a production studio by calling the [CreateCaster operation](~~2848009~~) first, and then call this operation to modify the layout configuration. Only the items to be modified need to be passed. Items that do not require modification do not need to be included. This operation currently supports the following element fill modes: default and adaptive.'."\n" + ."\n\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'ListMessageApp' => [ - 'summary' => 'Queries interactive messaging applications.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => '> N in the request parameters indicates the sequence number of the element. For example, VideoLayer.N.FillMode specifies the fill mode of the Nth element. VideoLayer.1.FillMode specifies the fill mode of the first element, and VideoLayer.2.FillMode specifies the fill mode of the second element.', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + ], + 'ModifyCasterProgram' => [ + 'summary' => 'This operation modifies the program list of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'SortType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The sort order. Valid values:'."\n" - ."\n" - .'* 0: ascending order by time'."\n" - .'* 1: descending order by time'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageNum', - 'in' => 'formData', + 'name' => 'Episode', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The number of the page to return. Default value: 1. Valid values: 1 to 100000.'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'The program information.', + 'type' => 'array', + 'items' => [ + 'description' => 'The program information.', + 'type' => 'object', + 'properties' => [ + 'ComponentId' => [ + 'description' => 'The list of component IDs. The components are layered from bottom to top in the order they are listed. The components are switched in sync with the video source.'."\n" + ."\n" + .'- This parameter is required and takes effect only when the node type is **Component**.'."\n" + ."\n" + .'- If the node type is **Resource**, the components are attached to the video source and switched in sync.', + 'type' => 'array', + 'items' => ['description' => 'The list of component IDs. The components are layered from bottom to top in the order they are listed. The components are switched in sync with the video source.'."\n" + ."\n" + .'- This parameter is required and takes effect only when the node type is **Component**.'."\n" + ."\n" + .'- If the node type is **Resource**, the components are attached to the video source and switched in sync.', 'type' => 'string', 'required' => false, 'example' => '["a2b8e671-2fe5-4642-a2ec-bf93888****" ]', 'title' => ''], + 'required' => false, + 'example' => '["a2b8e671-2fe5-4642-a2ec-bf93888****" ]', + 'maxItems' => 10, + 'title' => '', + ], + 'EndTime' => ['description' => 'The end time. The time is in UTC. The format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T10:04:00Z', 'title' => ''], + 'EpisodeId' => ['description' => 'The program ID. If you add a program for the production studio by calling the [AddCasterEpisode]() operation, use the value of the EpisodeId parameter that is returned in the response.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf938887****', 'title' => ''], + 'EpisodeName' => ['description' => 'The program name.', 'type' => 'string', 'required' => false, 'example' => 'program_name_2', 'title' => ''], + 'EpisodeType' => ['description' => 'The program type. Valid values:'."\n" + ."\n" + .'- **Resource**: video source.'."\n" + ."\n" + .'- **Component**: component.', 'type' => 'string', 'required' => false, 'example' => 'Resource', 'title' => ''], + 'ResourceId' => ['description' => 'The ID of the video source. If you add a video source for the production studio by calling the [AddCasterVideoResource]() operation, use the value of the ResourceId parameter that is returned in the response.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf938887****', 'title' => ''], + 'StartTime' => ['description' => 'The start time. The time is in UTC. The format is *yyyy-MM-dd*T*HH:mm:ss*Z.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T09:02:00Z', 'title' => ''], + 'SwitchType' => ['description' => 'The switch policy. This parameter is valid only when the node type is **Resource**.'."\n" + ."\n" + .'- **TimeFirst**: time-first. This is the only valid policy for live stream video sources.'."\n" + ."\n" + .'- **ContentFirst**: content-first.', 'type' => 'string', 'required' => false, 'example' => 'TimeFirst', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => true, - 'example' => '10', + 'maxItems' => 100, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'PageSize', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of applications to return on each page. Default value: 20. Valid values: 1 to 50.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '20', - ], + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster]() operation, use the value of the CasterId parameter that is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppList' => [ - 'description' => 'Details about the applications.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AppConfig' => [ - 'description' => 'The configurations of the application.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The configuration.'."\n", - 'example' => '"appAlias":"localApp"', - ], - ], - 'AppId' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'VKL3***', - ], - 'AppName' => [ - 'description' => 'The name of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'test', - ], - 'CreateTime' => [ - 'description' => 'The time when the interactive messaging application was created. The time is displayed in UTC.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '502280113', - ], - 'Extension' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - 'example' => 'test001', - 'description' => 'The extended field.'."\n", - ], - ], - 'Status' => [ - 'description' => 'The status of the interactive message application. A value of **1** indicates that the application is normal.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - ], - ], - ], - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by another page. Valid values:'."\n" - ."\n" - .'* true: The current page is followed by another page.'."\n" - .'* false: The current page is not followed by another page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'Total' => [ - 'description' => 'The total number of interactive message applications.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '15', - ], - ], - ], + 'CasterId' => ['description' => 'The ID of the production studio.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"AppList\\": [\\n {\\n \\"AppConfig\\": {\\n \\"key\\": \\"\\\\\\"appAlias\\\\\\":\\\\\\"localApp\\\\\\"\\"\\n },\\n \\"AppId\\": \\"VKL3***\\",\\n \\"AppName\\": \\"test\\",\\n \\"CreateTime\\": 502280113,\\n \\"Extension\\": {\\n \\"key\\": \\"test001\\"\\n },\\n \\"Status\\": 1\\n }\\n ],\\n \\"HasMore\\": false,\\n \\"Total\\": 15\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n 15\\n false\\n \\n VKL3***\\n test\\n 502280113\\n 1\\n \\n \\"appAlias\\":\\"localApp\\"\\n \\n \\n test001\\n \\n \\n \\n","errorExample":""}]', - 'title' => 'ListMessageApp', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'SwitchTypeInvalid.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SwitchType is invalid, please check and try again.'], + ['errorCode' => 'IncorrectStartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['errorCode' => 'IncorrectEndTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ['errorCode' => 'IncorrectEpisodeStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The current status of the program is not operational, please check and try again.'], + ['errorCode' => 'EpisodeConflict.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'There is a conflict with the program time, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidEpisode.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Episode does not exist, please check and try again.'], + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'ModifyCasterProgram', + 'description' => 'You can call the [AddCasterProgram](~~2848074~~) operation to add a program list for a production studio. Then, you can call this operation to modify the program list. This operation supports programs of the video source and component types.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'GetMessageApp' => [ - 'summary' => 'Queries the information about a specified interactive messaging application.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 4 calls per second. If you exceed this limit, API calls are throttled, which may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => 'A request must include at least one Episode property to specify the program content to be modified.'."\n" + ."\n" + .'> In the request parameters, N indicates the sequence number of a parameter. For example, Episode.N.EpisodeName specifies the name of the Nth program. Episode.1.EpisodeName specifies the name of the first program and Episode.2.EpisodeName specifies the name of the second program.', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyCasterProgram'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterProgram', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'ModifyCasterVideoResource' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the console, find the ID on the **Cloud Production Studio** page. To go to this page, choose **LIVE Console** > **Production Studio**.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is its ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => ['description' => 'The resource ID. If you add a video source to the production studio by calling the [AddCasterVideoResource](~~2848020~~) operation, use the ResourceId returned in the response.', 'type' => 'string', 'required' => true, 'example' => '05ab713c-676e-49c0-96ce-cc408da1****', 'title' => ''], + ], + [ + 'name' => 'ResourceName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the video source.', 'type' => 'string', 'required' => false, 'example' => 'test001', 'title' => ''], + ], + [ + 'name' => 'LiveStreamUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL of the live stream.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required only if the video source is a live stream.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => 'rtmp://guide.aliyundoc.com/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-ac8c628078541d7055a170ec59a5****', 'title' => ''], + ], + [ + 'name' => 'MaterialId', + 'in' => 'query', + 'schema' => ['description' => 'The material ID.', 'type' => 'string', 'required' => false, 'example' => 'f080575eb5f4427684fc0715159a****', 'title' => ''], + ], + [ + 'name' => 'VodUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL of the video on demand (VOD) file.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is available only if the video source is a video file that has not been imported to the material library.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'> VOD files must be in MP4, FLV, or TS format.', 'type' => 'string', 'required' => false, 'example' => 'http://developer.aliyundoc.com/AppName/StreamName.flv', 'title' => ''], + ], + [ + 'name' => 'BeginOffset', + 'in' => 'query', + 'schema' => ['description' => 'The start offset of the video file. Unit: milliseconds.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is valid only if the video source is a video file.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'> A value greater than 0 specifies the start time to read the file. The time is an offset from the first frame.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'EndOffset', + 'in' => 'query', + 'schema' => ['description' => 'This parameter is valid only for video files. Unit: milliseconds.'."\n" + ."\n" + .'- If the value is greater than **0**, it specifies the end time to read the file. The time is an offset from the first frame.'."\n" + ."\n" + .'- If the value is less than **0**, it specifies the end time to read the file. The time is an offset from the last frame.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10000', 'title' => ''], + ], + [ + 'name' => 'RepeatNum', + 'in' => 'query', + 'schema' => ['description' => 'This parameter is valid only for video files. It specifies the number of times to loop the video after playback is complete.'."\n" + ."\n" + .'- **0** (default): The video does not loop.'."\n" + ."\n" + .'- **-1**: The video loops indefinitely.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '60', 'minimum' => '-1', 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'PtsCallbackInterval', + 'in' => 'query', + 'schema' => ['description' => 'The Presentation Time Stamp (PTS) callback interval. Unit: milliseconds. This parameter is valid only for VOD materials.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'minimum' => '0', 'example' => '2000', 'title' => ''], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the image material in the media asset library.'."\n" + ."\n" + .'> This parameter is required only if the video source is an image.', 'type' => 'string', 'required' => false, 'example' => 'a089175eb5f4427684fc0715159a****', 'title' => ''], + ], + [ + 'name' => 'ImageUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL of the image material.'."\n" + ."\n" + .'> This parameter is available only if the video source is an image that has not been imported to the material library. The image must be in JPG or PNG format, and its size cannot exceed 10 MB.', 'type' => 'string', 'required' => false, 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppConfig' => [ - 'description' => 'The configurations of the application.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - 'example' => '"appAlias":"localApp"', - 'description' => 'The configuration.'."\n", - ], - ], - 'AppId' => [ - 'title' => '应用ID。', - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'VKL3***', - ], - 'AppName' => [ - 'title' => '应用名称。长度2~16位。', - 'description' => 'The name of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'testApp', - ], - 'CreateTime' => [ - 'description' => 'The time when the interactive messaging application was created. The time is displayed in UTC.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '502280113', - ], - 'Extension' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The extended field.'."\n", - 'example' => 'test001', - ], - ], - 'Status' => [ - 'description' => 'The status of the interactive message application. A value of 1 indicates that the application is normal.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - ], - ], + 'CasterId' => ['description' => 'The ID of the production studio. You can use this ID to query video sources, add layouts, or query layout lists for the production studio.', 'type' => 'string', 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], + 'ResourceId' => ['description' => 'The resource ID.', 'type' => 'string', 'example' => '98461064-1c94-4dc1-85ce-94098764****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + 400 => [ + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidResourceId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ResourceId is invalid, please check and try again.'], + ['errorCode' => 'InvalidLiveStreamUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter LiveStreamUrl is invalid, please check and try again.'], + ['errorCode' => 'InvalidMaterialId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter MaterialId is invalid, please check and try again.'], + ['errorCode' => 'InvalidVodUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter VodUrl is invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"AppConfig\\": {\\n \\"key\\": \\"\\\\\\"appAlias\\\\\\":\\\\\\"localApp\\\\\\"\\"\\n },\\n \\"AppId\\": \\"VKL3***\\",\\n \\"AppName\\": \\"testApp\\",\\n \\"CreateTime\\": 502280113,\\n \\"Extension\\": {\\n \\"key\\": \\"test001\\"\\n },\\n \\"Status\\": 1\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n VKL3***\\n testApp\\n 1\\n \\n \\"appAlias\\":\\"localApp\\"\\n \\n \\n test001\\n \\n \\n","errorExample":""}]', - 'title' => 'GetMessageApp', - 'description' => '## QPS limit'."\n" + 'title' => 'ModifyCasterVideoResource', + 'summary' => 'Modifies the video resources of a production studio.', + 'description' => 'Before calling this operation, you must create a production studio by calling the [CreateCaster](~~2848009~~) operation.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'QueryMessageApp' => [ - 'summary' => 'Queries interactive messaging applications based on specified conditions.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'This operation supports up to 10 queries per second (QPS) per user. If you exceed this limit, your API calls are throttled, which may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-03-31T11:03:01.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-03-31T08:26:54.000Z', 'description' => 'Request parameters changed, Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterVideoResource', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"LIVEPRODUCER_POST-cn-0pp1czt****\\",\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"ResourceId\\": \\"98461064-1c94-4dc1-85ce-94098764****\\"\\n}","type":"json"}]', + ], + 'ModifyLiveAIStudio' => [ + 'summary' => 'This API is used to modify the specified virtual studio template.', + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '250887', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'Region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'StudioName', + 'in' => 'query', + 'schema' => ['description' => 'Virtual studio template name, same as the StudioName parameter in the create API.', 'type' => 'string', 'required' => true, 'example' => 'stu02', 'title' => ''], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => ['description' => 'Custom description.', 'type' => 'string', 'required' => false, 'example' => 'custom', 'title' => ''], + ], + [ + 'name' => 'Width', + 'in' => 'query', + 'schema' => ['description' => 'Preview screen width, unit: px.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1920', 'title' => ''], + ], + [ + 'name' => 'Height', + 'in' => 'query', + 'schema' => ['description' => 'Preview screen height, unit: px.'."\n" + ."\n" + .'The preview screen width x height only supports the following specifications:'."\n" + ."\n" + .'- Landscape Smooth 360P 640x360'."\n" + .'- Portrait Smooth 360P 360x640'."\n" + .'- Landscape Standard Definition 480P 854x480'."\n" + .'- Portrait Standard Definition 480P 480x854'."\n" + .'- Landscape HD 720P 1280x720'."\n" + .'- Portrait HD 720P 720x1280'."\n" + .'- Landscape Full HD 1080P 1920x1080'."\n" + .'- Portrait Full HD 1080P 1080x1920', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1080', 'title' => ''], + ], + [ + 'name' => 'BackgroundType', + 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", + 'description' => 'Background material type:'."\n" + .'- VOD: Video on demand'."\n" + .'- PIC: Image'."\n" + .'- LIVE: Live stream', + 'enumValueTitles' => ['VOD' => 'Video on demand', 'PIC' => 'Image', 'LIVE' => 'Live stream'], 'type' => 'string', + 'enum' => ['VOD', 'LIVE', 'PIC'], 'required' => false, - 'example' => 'VKL3***', + 'example' => 'VOD'."\n", + 'title' => '', ], ], [ - 'name' => 'AppName', - 'in' => 'formData', + 'name' => 'BackgroundResourceId', + 'in' => 'query', 'schema' => [ - 'description' => 'The name of the interactive messaging application.'."\n", + 'description' => 'VOD resource ID of the background material, obtained from the VOD console.', 'type' => 'string', + 'enum' => [], 'required' => false, - 'example' => 'testApp', + 'example' => 'd0eb493192c771efba644531858c0102', + 'title' => '', ], ], [ - 'name' => 'SortType', - 'in' => 'formData', + 'name' => 'BackgroundResourceUrl', + 'in' => 'query', 'schema' => [ - 'description' => 'The sort order. Valid values:'."\n" - ."\n" - .'* 0: ascending order by time'."\n" - .'* 1: descending order by time'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'Resource access URL of the background material.', + 'type' => 'string', + 'enum' => [], 'required' => false, - 'example' => '1', + 'example' => 'https://xxx.com/2.mp4'."\n", + 'title' => '', ], ], [ - 'name' => 'PageNum', - 'in' => 'formData', + 'name' => 'MediaType', + 'in' => 'query', 'schema' => [ - 'description' => 'The number of the page to return. Default value: 1. Valid values: 1 to 100000.'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'Multimedia material type:'."\n" + .'- VOD: Video on demand'."\n" + .'- PIC: Image'."\n" + .'- LIVE: Live stream', + 'enumValueTitles' => ['VOD' => 'Video on demand', 'PIC' => 'Image', 'LIVE' => 'Live stream'], + 'type' => 'string', + 'enum' => ['VOD', 'LIVE', 'PIC'], 'required' => false, - 'example' => '10', + 'example' => 'VOD', + 'title' => '', ], ], [ - 'name' => 'PageSize', - 'in' => 'formData', + 'name' => 'MediaResourceId', + 'in' => 'query', 'schema' => [ - 'description' => 'The number of applications to return on each page. Default value: 20. Valid values: 1 to 50.'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'VOD resource ID of the multimedia material, obtained from the VOD console.', + 'type' => 'string', + 'enum' => [], + 'required' => false, + 'example' => 'd0eb493192c771efba644531858c01102', + 'title' => '', + ], + ], + [ + 'name' => 'MediaResourceUrl', + 'in' => 'query', + 'schema' => [ + 'description' => 'Resource access URL of the multimedia material. Either this or the resource ID should be provided.', + 'type' => 'string', + 'enum' => [], + 'required' => false, + 'example' => 'https://xxx.com/1.mp4'."\n", + 'title' => '', + ], + ], + [ + 'name' => 'MediaLayout', + 'in' => 'query', + 'style' => 'json', + 'schema' => [ + 'description' => 'Layout position information of the multimedia material.', + 'type' => 'object', + 'properties' => [ + 'PositionX' => ['description' => 'Position parameter, X coordinate. Value range: **0~1**. The material position uses the upper-left corner as the reference point.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0', 'title' => ''], + 'PositionY' => ['description' => 'Position parameter, Y coordinate. Value range: **0~1**. The material position uses the upper-left corner as the reference point.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0', 'title' => ''], + 'HeightNormalized' => ['description' => 'Normalized height value of the material, which is the height ratio of the material to the background. Value range: **0~1**.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.5', 'title' => ''], + ], 'required' => false, - 'example' => '20', + 'title' => '', + 'example' => '', + ], + ], + [ + 'name' => 'MattingType', + 'in' => 'query', + 'schema' => [ + 'description' => 'Matting type:'."\n" + .'- green: Green screen matting'."\n" + .'- blue: Blue screen matting'."\n" + .'- complex: Real-scene matting', + 'enumValueTitles' => ['green' => 'Green screen matting', 'blue' => 'Blue screen matting', 'complex' => 'Real-scene matting'], + 'type' => 'string', + 'required' => true, + 'enum' => ['green', 'blue', 'complex'], + 'example' => 'complex', + 'title' => '', + ], + ], + [ + 'name' => 'MattingLayout', + 'in' => 'query', + 'style' => 'json', + 'schema' => [ + 'description' => 'Layout position information of the source stream after matting.', + 'type' => 'object', + 'properties' => [ + 'PositionX' => ['description' => 'Position parameter, X coordinate. Value range: **0~1**. The material position uses the upper-left corner as the reference point.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0', 'title' => ''], + 'PositionY' => ['description' => 'Position parameter, Y coordinate. Value range: **0~1**. The material position uses the upper-left corner as the reference point.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0', 'title' => ''], + 'HeightNormalized' => ['description' => 'Normalized height value, which is the height ratio of the matted portrait to the background. Value range: **0~1**.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.5', 'title' => ''], + ], + 'required' => true, + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'title' => '', + 'description' => 'Response structure.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AppList' => [ - 'description' => 'Details about the interactive messaging applications.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AppConfig' => [ - 'description' => 'The configurations of the application.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The configuration.'."\n", - 'example' => 'dawd', - ], - ], - 'AppId' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'VKL3***', - ], - 'AppName' => [ - 'description' => 'The name of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'test', - ], - 'CreateTime' => [ - 'description' => 'The time when the interactive messaging application was created. The time is displayed in UTC.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '502280113', - ], - 'Extension' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - 'example' => 'test001', - 'description' => 'The extended field.'."\n", - ], - ], - 'Status' => [ - 'description' => 'The status of the interactive message application. A value of **1** indicates that the application is normal.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - ], - ], - ], - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by another page. Valid values:'."\n" - ."\n" - .'* true: The current page is followed by another page.'."\n" - .'* false: The current page is not followed by another page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'TotalCount' => [ - 'description' => 'The total number of applications returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '4', - ], - ], - ], - ], + 'RequestId' => ['title' => '', 'description' => 'Request ID.', 'type' => 'string', 'example' => '0BA6B3C4-525A-5381-A2B0-5351323F31C5'], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": [\\n {\\n \\"AppList\\": [\\n {\\n \\"AppConfig\\": {\\n \\"key\\": \\"dawd\\"\\n },\\n \\"AppId\\": \\"VKL3***\\",\\n \\"AppName\\": \\"test\\",\\n \\"CreateTime\\": 502280113,\\n \\"Extension\\": {\\n \\"key\\": \\"test001\\"\\n },\\n \\"Status\\": 1\\n }\\n ],\\n \\"HasMore\\": false,\\n \\"TotalCount\\": 4\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n 4\\n false\\n \\n VKL3***\\n test\\n 502280113\\n 1\\n \\n dawd\\n \\n \\n test001\\n \\n \\n \\n","errorExample":""}]', - 'title' => 'QueryMessageApp', - 'description' => '## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'DeleteMessageApp' => [ - 'summary' => 'Deletes an interactive messaging application.', - 'methods' => [ - 'post', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The live service is not enabled. Please check and try again.'], + ['errorCode' => 'InvalidParameter.PurchaseTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PurchaseTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.ExpireTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ExpireTime is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidChargeType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidChargeType.PostSupport', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ChargeType only supports post-paid, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterTemplate is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.ChargeType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidPeriod.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid time interval, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], + ], + [ + ['errorCode' => 'CasterNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of casters exceeds the limit. Please check and try again.'], + ], + 403 => [ + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], + ], + [ + ['errorCode' => 'InvalidParameter.NormType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter NormType is invalid, please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 408 => [ + ['errorCode' => 'ModifyLiveAIStudio.Timeout', 'errorMessage' => '%s, please try again later.', 'description' => 'Call ModifyLiveAIStudio timed out, please try again later.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0BA6B3C4-525A-5381-A2B0-5351323F31C5\\"\\n}","type":"json"}]', + 'title' => 'Modify Virtual Studio Template', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveAIStudio'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveAIStudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'ModifyLiveDomainSchdmByProperty' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '107191', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application that you want to delete. You can specify only one ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The live streaming domain for which you want to modify the acceleration region.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'Property', + 'in' => 'query', + 'schema' => ['description' => 'The acceleration region. A value of {"coverage":"overseas"} specifies that the configuration is for regions outside mainland China. The following list describes the valid values for coverage:'."\n" + ."\n" + .'- domestic: mainland China.'."\n" + ."\n" + .'- overseas: regions outside mainland China.'."\n" + ."\n" + .'- global: regions in and outside mainland China.', 'type' => 'string', 'required' => true, 'example' => '{"coverage":"global"}', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the application was deleted. Valid values:'."\n" - ."\n" - .'* true: The application was deleted.'."\n" - .'* false: The application failed to be deleted.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '15C66C7B-671A-4297-9187-2C4477247A74', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n true\\n \\n","errorExample":""}]', - 'title' => 'DeleteMessageApp', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Schedule.NotFound', 'errorMessage' => 'there is no schedule domain found by the targeted coverage value', 'description' => ''], + ['errorCode' => 'DomainTraffic.ExceedThreshold', 'errorMessage' => 'not allowed to do this operation because the last day traffic exceeds the threshold', 'description' => ''], + ['errorCode' => 'Domain.BeianInvalid', 'errorMessage' => 'not allowed to do this operation because the domain registration record invalid in China main land', 'description' => 'This operation is not allowed because the domain name is registered in the Chinese mainland.'], + ['errorCode' => 'Schedule.ChangeFail', 'errorMessage' => 'change domain failed', 'description' => ''], + ['errorCode' => 'LockFail', 'errorMessage' => 'The domain name is being used by another operation, please try again later.', 'description' => 'The domain name is being used by another operation, please try again later'], + ], + ], + 'title' => 'ModifyLiveDomainSchdmByProperty', + 'summary' => 'Modifies the acceleration region of a domain name.', + 'description' => '### QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'CreateMessageGroup' => [ - 'summary' => 'Creates a message group.', - 'methods' => [ - 'post', + .'You can call this operation up to 100 queries per second (QPS) per user. API calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveDomainSchdmByProperty', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"15C66C7B-671A-4297-9187-2C4477247A74\\"\\n}","type":"json"}]', + ], + 'ModifyLiveMessageAppAudit' => [ + 'summary' => 'Modifies the content moderation settings of an interactive messaging application.'."\n", + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'create', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a494caec-***-695ef345db77', - ], + 'in' => 'query', + 'schema' => ['description' => 'The ID of the interactive messaging application whose content moderation settings you want to modify.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'CreatorId', - 'in' => 'formData', + 'name' => 'AuditType', + 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the creator. The ID can be up to 36 characters in length and can contain only letters and digits.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'as****hs', + 'title' => '', + 'description' => 'The content moderation method. Valid values:'."\n" + ."\n" + .'* 0: disables content moderation.'."\n" + .'* 1: uses built-in content moderation.'."\n" + .'* 2: uses custom content moderation.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + 'enum' => ['0', '1', '2'], ], ], [ - 'name' => 'Extension', - 'in' => 'formData', - 'style' => 'json', - 'schema' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The extended field. Specify an additional parameter based on your business requirements.'."\n", - 'example' => 'test001', - ], - ], + 'name' => 'AuditUrl', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The URL for content moderation. This parameter is required if you set AuditType to 2. The URL must start with http:// or https:// and cannot contain a private IP address or a port number.'."\n", 'type' => 'string', 'required' => false, 'example' => 'http://example.aliyundoc.com/exampleaudit'], + ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'Extension' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'example' => 'test001', - ], - 'GroupId' => [ - 'title' => '用于长连接建连的token', - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'example' => 'AE35-****-T95F', - ], - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '4C4E8440-3838-1831-9BDE-AFC15803****'], + 'AppId' => ['description' => 'The ID of the interactive messaging application.'."\n", 'type' => 'string', 'example' => 'demo', 'title' => ''], + 'AppSign' => ['description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", 'type' => 'string', 'example' => '**************************************************************************', 'title' => ''], + 'AuditType' => ['description' => 'The content moderation method.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '2', 'title' => ''], + 'AuditUrl' => ['description' => 'The URL for content moderation. This parameter is returned when the value of AuditType is 2.'."\n", 'type' => 'string', 'example' => 'http: //example.aliyundoc.com/exampleaudit', 'title' => ''], + 'AuditNeedAuthentication' => ['description' => 'Indicates whether authentication is enabled. If custom content moderation is used, the value of this parameter is true by default.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Extension\\": {\\n \\"test\\": \\"test\\",\\n \\"test2\\": 1\\n },\\n \\"GroupId\\": \\"AE35-****-T95F\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n AE35-****-T95F\\n \\n","errorExample":""}]', - 'title' => 'CreateMessageGroup', - 'description' => '## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'UpdateMessageGroup' => [ - 'summary' => 'Updates the information about a message group.', - 'methods' => [ - 'post', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'ErrorInvalidAuditUrl', 'errorMessage' => '%s.', 'description' => 'The AuditUrl is invalid, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4C4E8440-3838-1831-9BDE-AFC15803****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"AuditType\\": 2,\\n \\"AuditUrl\\": \\"http: //example.aliyundoc.com/exampleaudit\\",\\n \\"AuditNeedAuthentication\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 4C4E8440-3838-1831-9BDE-AFC15803****\\n demo\\n **************************************************************************\\n 2\\n http: //example.aliyundoc.com/exampleaudit\\n true\\n","errorExample":""}]', + 'title' => 'ModifyLiveMessageAppAudit', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2024-02-02T01:46:06.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageAppAudit'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageAppAudit', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'ModifyLiveMessageAppCallback' => [ + 'summary' => 'Modifies the callback settings of an interactive messaging application.'."\n", + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'name' => 'AppId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the interactive messaging application whose callback settings you want to modify.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'name' => 'EventCallbackUrl', + 'in' => 'query', + 'schema' => ['description' => 'The callback URL for events such as user logon, logoff, joining a group, and leaving a group. If you leave this parameter empty, callbacks are disabled. The callback URL must start with http:// or https:// and cannot contain a private IP address or a port number.'."\n", 'type' => 'string', 'required' => false, 'example' => 'http://example.aliyundoc.com/examplecallback', 'title' => ''], ], [ - 'name' => 'Extension', - 'in' => 'formData', - 'style' => 'json', - 'schema' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'required' => false, - 'additionalProperties' => [ - 'type' => 'string', - 'description' => 'The extended field of the message group.'."\n", - 'example' => 'test01', - ], - ], + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the update was successful. Valid values:'."\n" - ."\n" - .'* true: The update was successful.'."\n" - .'* false: The update failed.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '1F0FFEAD-B7D5-1D4A-A6B9-8C63ADF6****'], + 'AppId' => ['description' => 'The ID of the interactive messaging application.'."\n", 'type' => 'string', 'example' => 'demo', 'title' => ''], + 'AppSign' => ['description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", 'type' => 'string', 'example' => '**************************************************************************', 'title' => ''], + 'EventCallbackUrl' => ['description' => 'The callback URL for events such as user logon, logoff, joining a group, and leaving a group. This parameter is not returned if it has an empty value.'."\n", 'type' => 'string', 'example' => 'http://example.aliyundoc.com/examplecallback', 'title' => ''], + 'EventCallbackNeedAuthentication' => ['description' => 'Indicates whether authentication is required for event callbacks. Default value: true.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n true\\n \\n","errorExample":""}]', - 'title' => 'UpdateMessageGroup', - 'description' => '## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'ListMessageGroupUser' => [ - 'summary' => 'Queries the members of a message group.', - 'methods' => [ - 'post', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'ErrorInvalidEventCallbackUrl', 'errorMessage' => '%s.', 'description' => 'The EventCallbackUrl is invalid, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1F0FFEAD-B7D5-1D4A-A6B9-8C63ADF6****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"EventCallbackUrl\\": \\"http://example.aliyundoc.com/examplecallback\\",\\n \\"EventCallbackNeedAuthentication\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 1F0FFEAD-B7D5-1D4A-A6B9-8C63ADF6****\\n demo\\n **************************************************************************\\n http://example.aliyundoc.com/examplecallback\\n true\\n","errorExample":""}]', + 'title' => 'ModifyLiveMessageAppCallback', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2024-02-02T01:46:07.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageAppCallback'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageAppCallback', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'ModifyLiveMessageAppDisable' => [ + 'summary' => 'Disables or enables an interactive messaging application.'."\n", + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], - ], - [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], - ], - [ - 'name' => 'SortType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The sort order. Valid values:'."\n" - ."\n" - .'* 0: ascending order by time'."\n" - .'* 1: descending order by time'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'in' => 'query', + 'schema' => ['description' => 'The ID of the interactive messaging application.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'PageNum', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of the page to return. Default value: 1.'."\n" - ."\n" - .'Valid values: 1 to 100000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', - ], + 'name' => 'Disable', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to disable the interactive messaging application.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], [ - 'name' => 'PageSize', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of members to return on each page. Default value: 20.'."\n" - ."\n" - .'Valid values: 1 to 50.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'title' => '', + 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by another page. Valid values:'."\n" - ."\n" - .'* true: The current page is followed by another page.'."\n" - .'* false: The current page is not followed by another page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'Total' => [ - 'description' => 'The total number of users in the message group.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'UserList' => [ - 'description' => 'Details about the users.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the user.'."\n", - 'type' => 'object', - 'properties' => [ - 'JoinTime' => [ - 'description' => 'The time when the user joined the message group. The value is a UTC timestamp.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '12**45', - ], - 'UserId' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'example' => 'de1**a0,hu**9', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '6AA1AE11-EA78-1FD4-A966-6BA84307****'], + 'AppId' => ['description' => 'The ID of the interactive messaging application.'."\n", 'type' => 'string', 'example' => 'demo', 'title' => ''], + 'AppSign' => ['description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", 'type' => 'string', 'example' => '********************', 'title' => ''], + 'Disable' => ['description' => 'Indicates whether the interactive messaging application is disabled.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"HasMore\\": false,\\n \\"Total\\": 2,\\n \\"UserList\\": [\\n {\\n \\"JoinTime\\": 0,\\n \\"UserId\\": \\"de1**a0,hu**9\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n 2\\n false\\n \\n de1**a0,hu**9\\n \\n \\n","errorExample":""}]', - 'title' => 'ListMessageGroupUser', - 'description' => '## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'ListMessageGroup' => [ - 'summary' => 'Queries the message groups of a specified user.', - 'methods' => [ - 'post', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'ModifyLiveMessageAppDisable', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageAppDisable'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageAppDisable', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6AA1AE11-EA78-1FD4-A966-6BA84307****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppSign\\": \\"********************\\",\\n \\"Disable\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 6AA1AE11-EA78-1FD4-A966-6BA843073F6D\\n ab6b5740****\\n H4sIAAAAAAAE/wBwAI//zguHB+lYCilkv7diSkk4GhHQAvMXs5tWyI+I09+uEBiB5sqa28ycJSJFmsd50Mhz8nDrvvqmti+fVaNLC5CMgLvNIy48v1aV9x74LRNFN0+Dxd2Al51xuDNkEIDaEwjqfyxscTXjSr0iQjHu2WgkpQAAAP//AQAA//+yR5XCc****\\n true\\n","errorExample":""}]', + ], + 'ModifyLiveMessageGroup' => [ + 'summary' => 'You can call the ModifyLiveMessageGroup operation to modify information about an interactive message group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ - 'name' => 'UserId', - 'in' => 'formData', + 'name' => 'AppId', + 'in' => 'query', + 'schema' => ['description' => 'The application ID.', 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], + ], + [ + 'name' => 'GroupId', + 'in' => 'query', + 'schema' => ['description' => 'The group ID.', 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], + ], + [ + 'name' => 'ModifyAdmin', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to modify the group administrators.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'AdminList', + 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The ID of the user. Each user has a unique ID in the application. You can specify multiple user IDs.'."\n", - 'type' => 'string', + 'description' => 'The updated list of administrators. Separate multiple administrators with commas (,). You can specify up to three administrators.', + 'type' => 'array', + 'items' => ['description' => 'The user ID of the administrator. The ID can contain uppercase letters, lowercase letters, and digits. The ID can be up to 64 bytes in length.', 'type' => 'string', 'required' => false, 'example' => 'uid1', 'title' => ''], 'required' => false, - 'example' => 'de1**a0', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'VKL3***', - ], - ], - [ - 'name' => 'SortType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The sort order. Valid values:'."\n" - ."\n" - .'* 0: ascending order by time'."\n" - .'* 1: descending order by time'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'name' => 'ModifyInfo', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to modify the extended information of the group.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], [ - 'name' => 'PageNum', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of the page to return. Default value: 1. Valid values: 1 to 100000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '10', - ], + 'name' => 'GroupInfo', + 'in' => 'query', + 'schema' => ['description' => 'The updated extended information of the group. The information can be up to 32 KB in length.', 'type' => 'string', 'required' => false, 'example' => 'newmeta', 'title' => ''], ], [ - 'name' => 'PageSize', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of message groups to return on each page. Default value: 20.'."\n" - ."\n" - .'Valid values: 1 to 50.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '20', - ], + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center specified in the [CreateLiveMessageApp](~~2848162~~) call. Valid values: cn-shanghai (Shanghai) and ap-southeast-1 (Singapore).', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'GroupList' => [ - 'description' => 'The list of message groups.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Details about the message group.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppId' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'VKL3***', - ], - 'CreateTime' => [ - 'description' => 'The time when the message group was created. The time is displayed in UTC.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1502280113', - ], - 'CreatorId' => [ - 'description' => 'The ID of the creator.'."\n", - 'type' => 'string', - 'example' => 'as****hs', - ], - 'Extension' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'string', - 'example' => 'test001', - 'description' => 'The extended field.'."\n", - ], - ], - 'GroupId' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'example' => 'AE35-****-T95F', - ], - 'Status' => [ - 'description' => 'The status of the message group. The default value is **1**, which indicates that the status of the message group is normal.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - ], - ], - ], - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by another page. Valid values:'."\n" - ."\n" - .'* true: The current page is followed by another page.'."\n" - .'* false: The current page is not followed by another page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'Total' => [ - 'description' => 'The total number of message groups.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '5', - ], - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****'], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"GroupList\\": [\\n {\\n \\"AppId\\": \\"VKL3***\\",\\n \\"CreateTime\\": 1502280113,\\n \\"CreatorId\\": \\"as****hs\\",\\n \\"Extension\\": {\\n \\"key\\": \\"test001\\"\\n },\\n \\"GroupId\\": \\"AE35-****-T95F\\",\\n \\"Status\\": 1\\n }\\n ],\\n \\"HasMore\\": false,\\n \\"Total\\": 5\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n 5\\n false\\n \\n AE35-****-T95F\\n VKL3***\\n 1502280113\\n 1\\n as****hs\\n \\n test001\\n \\n \\n \\n","errorExample":""}]', - 'title' => 'ListMessageGroup', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","type":"json"}]', + 'title' => 'ModifyLiveMessageGroup', + 'description' => 'Before you call this operation, call [CreateLiveMessageGroup](~~2848163~~) to create an interactive message group.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'GetMessageGroup' => [ - 'summary' => 'Queries the information about a message group.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'This operation has a queries per second (QPS) limit of 50 for each user. If you exceed the limit, API calls are throttled. This may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageGroup'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'ModifyLiveMessageGroupBand' => [ + 'summary' => 'Changes the mute status of users in a group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - ], + 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ + [ + 'name' => 'AppId', + 'in' => 'query', + 'schema' => ['description' => 'The application ID.', 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], + ], [ 'name' => 'GroupId', - 'in' => 'formData', + 'in' => 'query', + 'schema' => ['description' => 'The group ID.', 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], + ], + [ + 'name' => 'BannedAll', + 'in' => 'query', + 'schema' => ['title' => 'false', 'description' => 'Specifies whether to mute all users in the group.', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'BannnedUsers', + 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', + 'title' => '', + 'description' => 'The list of users to mute. You can specify up to 30 users. Separate multiple user IDs with a comma (,).', + 'type' => 'array', + 'items' => ['description' => 'The user to mute.', 'type' => 'string', 'required' => false, 'example' => 'uid1', 'title' => ''], + 'required' => false, + 'example' => '', ], ], [ - 'name' => 'AppId', - 'in' => 'formData', + 'name' => 'ExceptUsers', + 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', + 'title' => '', + 'description' => 'The list of users who are not muted when all users in the group are muted. You can specify up to 30 users. Separate multiple user IDs with a comma (,).', + 'type' => 'array', + 'items' => ['description' => 'A user who is not muted when all users in the group are muted.', 'type' => 'string', 'required' => false, 'example' => 'uid3', 'title' => ''], + 'required' => false, + 'example' => '', ], ], + [ + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. This must be the same data center specified in the [CreateLiveMessageApp](~~2848162~~) call. Valid values: \\`cn-shanghai\\` (Shanghai) and \\`ap-southeast-1\\` (Singapore).', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'CreateTime' => [ - 'description' => 'The time when the message group was created. The time is displayed in UTC.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1502280113', - ], - 'CreatorId' => [ - 'description' => 'The ID of the creator.'."\n", - 'type' => 'string', - 'example' => 'as****hs', - ], - 'Extension' => [ - 'description' => 'The extended field.'."\n", - 'type' => 'object', - 'example' => '1', - ], - 'GroupId' => [ - 'title' => '用于长连接建连的token', - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'example' => 'AE35-****-T95F', - ], - 'IsMuteAll' => [ - 'description' => 'Indicates whether the message group is muted.'."\n" - ."\n" - .'* true: The message group is muted.'."\n" - .'* false: The message group is not muted.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'Status' => [ - 'description' => 'The status of the message group. The default value is **1**, which indicates that the message group is normal.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****'], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"CreateTime\\": 1502280113,\\n \\"CreatorId\\": \\"as****hs\\",\\n \\"Extension\\": 1,\\n \\"GroupId\\": \\"AE35-****-T95F\\",\\n \\"IsMuteAll\\": true,\\n \\"Status\\": 1\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n AE35-****-T95F\\n 1502280113\\n 1\\n as****hs\\n true\\n \\n","errorExample":""}]', - 'title' => 'GetMessageGroup', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).', - ], - 'JoinMessageGroup' => [ - 'summary' => 'Joins a message group.', - 'methods' => [ - 'post', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","type":"json"}]', + 'title' => 'ModifyLiveMessageGroupBand', + 'description' => 'Before you call this operation, you must call the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'A single user can make up to 10 queries per second (QPS). If you exceed this limit, API calls are throttled, which may impact your business. Call this operation at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageGroupBand'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageGroupBand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'ModifyLiveMessageUserInfo' => [ + 'summary' => 'Modifies the information about a user.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '198649', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a494caec-***-695ef345db77', - ], - ], - [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group to join.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'in' => 'query', + 'schema' => ['description' => 'The ID of the interactive messaging application whose user information you want to modify.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ 'name' => 'UserId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the user. Each user has a unique ID in the application. The ID can be up to 32 characters in length and can contain lowercase letters, digits, underscores (\\_), and periods (.). You can specify multiple user IDs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'de1**a0', - ], + 'in' => 'query', + 'schema' => ['description' => 'The ID of the user whose information you want to modify.'."\n", 'type' => 'string', 'required' => true, 'example' => 'uid2', 'title' => ''], ], [ - 'name' => 'BroadCastType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The mode in which system messages are broadcasted. Valid values:'."\n" - ."\n" - .'* 0: specifies that system messages are not broadcasted. This is the default value.'."\n" - .'* 1: specifies that system messages are broadcasted to specified users.'."\n" - .'* 2: specifies that system messages are broadcasted to the message group.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'name' => 'UserMetaInfo', + 'in' => 'query', + 'schema' => ['description' => 'The additional information about the user after the modification. The value can be up to 512 bytes in length.'."\n", 'type' => 'string', 'required' => false, 'example' => 'uid2meta2', 'title' => ''], ], [ - 'name' => 'BroadCastStatistics', - 'in' => 'formData', - 'schema' => [ - 'description' => 'Specifies whether to broadcast statistical messages. If you set the value to true, statistical messages of the message group are broadcasted after the users join the message group. The client can receive and process these messages. Valid values:'."\n" - ."\n" - .'* true: broadcasts statistical messages.'."\n" - .'* false: does not broadcast statistical messages.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'name' => 'DataCenter', + 'in' => 'query', + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2593195~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', + 'FailList' => [ + 'description' => 'The users whose information failed to be modified.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Code' => ['description' => 'The error code.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '440', 'title' => ''], + 'GroupId' => ['description' => 'The ID of the group to which the user belongs. For failed modification, the information of the user is not updated when you query the users in the group. You can try again after you check the failure reason and fix the issue.'."\n", 'type' => 'string', 'example' => 'grouptest2', 'title' => ''], + 'Reason' => ['description' => 'The reason why the information of the user failed to be modified.'."\n", 'type' => 'string', 'example' => 'group not exists or already deleted', 'title' => ''], + 'Success' => ['description' => 'Indicates whether the group to which the user belongs is modified. In this case, the group is not modified.'."\n", 'type' => 'boolean', 'example' => 'false', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the users successfully joined the message group. Valid values:'."\n" - ."\n" - .'* true: The users successfully joined the message group.'."\n" - .'* false: The users failed to join the message group.'."\n", - 'type' => 'boolean', - 'example' => 'true', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '3271ACD2-F143-1204-AFDB-9A87C131****'], + 'SuccessList' => [ + 'description' => 'The users whose information was modified.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'GroupId' => ['description' => 'The ID of the group to which the user belongs. For successful modification, the information of the user is updated when you query the users in the group.'."\n", 'type' => 'string', 'example' => 'grouptest1', 'title' => ''], + 'Success' => ['description' => 'Indicates whether the group to which the user belongs is modified. In this case, the group is modified.'."\n", 'type' => 'boolean', 'example' => 'true', 'title' => ''], ], + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n true\\n \\n","errorExample":""}]', - 'title' => 'JoinMessageGroup', - 'description' => 'You can call this operation up to 200 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'MuteAllGroupUser' => [ - 'summary' => 'Mutes a message group. In this case, all members of the message group are muted.', - 'methods' => [ - 'post', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ], + 403 => [ + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], + ], + 500 => [ + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"FailList\\": [\\n {\\n \\"Code\\": 440,\\n \\"GroupId\\": \\"grouptest2\\",\\n \\"Reason\\": \\"group not exists or already deleted\\",\\n \\"Success\\": false\\n }\\n ],\\n \\"RequestId\\": \\"3271ACD2-F143-1204-AFDB-9A87C131****\\",\\n \\"SuccessList\\": [\\n {\\n \\"GroupId\\": \\"grouptest1\\",\\n \\"Success\\": true\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 3271ACD2-F143-1204-AFDB-9A87C131****\\n \\n grouptest1\\n true\\n \\n \\n grouptest2\\n false\\n group not exists or already deleted\\n 440\\n \\n","errorExample":""}]', + 'title' => 'ModifyLiveMessageUserInfo', + 'description' => '本接口的单用户QPS限制为50次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。', + 'changeSet' => [ + ['createdAt' => '2024-05-10T02:46:38.000Z', 'description' => 'Response parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageUserInfo'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageUserInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'ModifyLiveRealtimeLogDelivery' => [ + 'summary' => 'Modifies the real-time log delivery configuration for a domain name.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATURElive066BXV'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'name' => 'Project', + 'in' => 'query', + 'schema' => ['description' => 'The name of the Simple Log Service (SLS) project to which logs are delivered.', 'type' => 'string', 'required' => true, 'example' => 'project_example', 'title' => ''], ], [ - 'name' => 'OperatorUserId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the user who performs the operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'de1**a0', - ], + 'name' => 'Logstore', + 'in' => 'query', + 'schema' => ['description' => 'The name of the Logstore in SLS to which logs are delivered.', 'type' => 'string', 'required' => true, 'example' => 'logstore_example', 'title' => ''], ], [ - 'name' => 'BroadCastType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The mode in which system messages are broadcasted. Valid values:'."\n" - ."\n" - .'* 0: specifies that system messages are not broadcasted.'."\n" - .'* 1: specifies that system messages are broadcasted to specified users.'."\n" - .'* 2: specifies that system messages are broadcasted to the message group.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'name' => 'Region', + 'in' => 'query', + 'schema' => ['description' => 'The region where the SLS project is located.', 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The primary streaming domain for which you want to change the real-time log delivery configuration.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the mute was successful. Valid values:'."\n" - ."\n" - .'* true: The mute was successful.'."\n" - .'* false: The mute failed.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '9732E117-8A37-49FD-A36F-ABBB87556CA7', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n true\\n \\n","errorExample":""}]', - 'title' => 'MuteAllGroupUser', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'Unauthorized', 'errorMessage' => 'RealtimeLogDelivery Service Not Authorized', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'Domain.NotFound', 'errorMessage' => 'Domain not found', 'description' => ''], + ['errorCode' => 'LogstoreNotExist', 'errorMessage' => 'Logstore does not exist', 'description' => ''], + ], + ], + 'title' => 'ModifyLiveRealtimeLogDelivery', + 'description' => '- Call this operation to modify the real-time log delivery configuration for a domain name. A domain name can deliver logs to only one Logstore at a time. Currently, only streaming domains can be configured. To push real-time upstream logs (by configuring an ingest domain), [submit a ticket](https://workorder.console.aliyun.com/console.htm#/ticket/add?productCode=live\\&commonQuestionId=4545\\&isSmart=true\\&iatraceid=1608439120675-2a5c48de0b84805313c708\\&channel=selfservice). Currently, only streaming domains can be configured. To push real-time upstream logs (by configuring an ingest domain), [submit a ticket](https://workorder-intl.console.aliyun.com/?spm=5176.12818093.nav-right.dticket.6cb216d07otFWR#/ticket/createIndex).'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'MuteGroupUser' => [ - 'summary' => 'Mutes members in a message group.', - 'methods' => [ - 'post', + .'- Call [DescribeLiveDomainRealtimeLogDelivery](~~2848121~~) to query information about the Project, Logstore, and Region parameters.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 6,000 times per minute per user. If you exceed the queries per second (QPS) limit, API calls are throttled, which may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Special error codes'."\n" + ."\n" + .'|HTTP status code|Error code|Description|'."\n" + .'|---|---|---|'."\n" + .'|403|LogstoreNotExist|The error message returned because the specified Logstore was not found.|'."\n" + .'|404|Domain.NotFound|The error message returned because Log Service is not activated for the domain name.|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"9732E117-8A37-49FD-A36F-ABBB87556CA7\\"\\n}","type":"json"}]', + ], + 'ModifyShowList' => [ + 'summary' => 'Modifies the attributes of an episode list.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you created the production studio in the LIVE console, find the production studio name on the Cloud Production Studio page. To go to the page, choose **LIVE Console** > **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> The name of the production studio on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'MuteUserList', - 'in' => 'formData', - 'style' => 'simple', - 'schema' => [ - 'description' => 'Details about the mute.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The IDs of the users to mute.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'qu***,yu1***', - ], - 'required' => true, - ], + 'name' => 'ShowId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the show whose position in the playlist you want to modify.'."\n" + ."\n" + .'> Obtain the ShowId value from the response of the [AddShowIntoShowList](~~2848051~~) or [DescribeShowList](~~2848054~~) operation.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'MuteTime', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The duration of the mute. Unit: seconds.'."\n" - ."\n" - .'> If you do not specify this parameter or set the value to 0, the default duration of 86,400 seconds is used.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '3600', - ], + 'name' => 'RepeatTimes', + 'in' => 'query', + 'schema' => ['description' => 'The number of times the playlist loops.'."\n" + ."\n" + .'> - RepeatTimes specifies the number of repetitions. For example, a value of **0** means the playlist is played once without repetition. A value of **1** means the playlist is played twice (one initial playback and one repetition).'."\n" + .'>'."\n" + .'> - A value of -1 indicates that the playlist loops indefinitely.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '5', 'title' => ''], ], [ - 'name' => 'OperatorUserId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the user who performs the operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'de1**a0', - ], + 'name' => 'Spot', + 'in' => 'query', + 'schema' => ['description' => 'The new position of the show in the playlist. The show specified by ShowId is moved to the position specified by **Spot**.'."\n" + ."\n" + .'> The value must be greater than or equal to 0 and less than or equal to the total number of shows in the playlist.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'BroadCastType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The mode in which system messages are broadcasted. Valid values:'."\n" - ."\n" - .'* 0: specifies that system messages are not broadcasted. This is the default value.'."\n" - .'* 1: specifies that system messages are broadcasted to specified users.'."\n" - .'* 2: specifies that system messages are broadcasted to the message group.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'name' => 'HighPriorityShowId', + 'in' => 'query', + 'schema' => ['description' => 'The highest-priority show.'."\n" + ."\n" + .'> This parameter can be configured only before the playlist starts.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + ], + [ + 'name' => 'HighPriorityShowStartTime', + 'in' => 'query', + 'schema' => ['description' => 'The time to play the highest-priority show. The format is yyyy-MM-dd\'T\'HH:mm:ss.'."\n" + ."\n" + .'> This parameter can be configured only before the playlist starts.
'."\n" + .'> After this parameter is configured, the system switches from the currently playing show to the highest-priority show at the specified time.', 'type' => 'string', 'required' => false, 'example' => '2021-11-23T12:30:00', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the mute is successful. Valid values:'."\n" - ."\n" - .'* true: The mute is successful.'."\n" - .'* false: The mute failed.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n true\\n \\n","errorExample":""}]', - 'title' => 'MuteGroupUser', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidVodUrl.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter VodUrl is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidShowList.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ShowList does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'ModifyShowList', + 'description' => 'This API operation modifies the position of a show in a playlist, the total number of playback loops for the playlist, and the specific playback time of the highest-priority show.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'CancelMuteGroupUser' => [ - 'summary' => 'Unmutes members in a message group.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for this API operation is 10 calls per second per user. If this limit is exceeded, API calls are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## 代码示例'."\n" + ."\n" + .'```'."\n" + .' public static DefaultAcsClient initClient(String accessKeyId, String accessKeySecret) throws ClientException {'."\n" + .' String regionId = "cn-shanghai"; '."\n" + .' DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);'."\n" + .' DefaultAcsClient client = new DefaultAcsClient(profile);'."\n" + .' return client;'."\n" + .' }'."\n" + ."\n\n" + .'private static CommonResponse ModfiyShowList(DefaultAcsClient client, String casterId, String showId, Integer repeatTimes, Integer spot,'."\n" + .' String highPriorityShowId, String highPriorityShowStartTime) throws ClientException {'."\n" + ."\n" + .' CommonRequest modfiyShowListRequest = new CommonRequest();'."\n" + .' modfiyShowListRequest.setSysDomain("live.aliyuncs.com");'."\n" + .' modfiyShowListRequest.setSysVersion("2016-11-01");'."\n" + .' modfiyShowListRequest.setSysAction("ModifyShowList");'."\n" + .' if (casterId != null) {'."\n" + .' modfiyShowListRequest.putQueryParameter("CasterId", casterId);'."\n" + .' }'."\n" + .' if (showId != null) {'."\n" + .' modfiyShowListRequest.putQueryParameter("ShowId", showId);'."\n" + .' }'."\n" + .' if (repeatTimes != null) {'."\n" + .' modfiyShowListRequest.putQueryParameter("RepeatTimes", repeatTimes.toString());'."\n" + .' }'."\n" + .' if (spot != null) {'."\n" + .' modfiyShowListRequest.putQueryParameter("Spot", spot.toString());'."\n" + .' }'."\n" + .' if (highPriorityShowId != null) {'."\n" + .' modfiyShowListRequest.putQueryParameter("HighPriorityShowId", highPriorityShowId.toString());'."\n" + .' }'."\n" + .' if (highPriorityShowStartTime != null) {'."\n" + .' modfiyShowListRequest.putQueryParameter("HighPriorityShowStartTime", highPriorityShowStartTime.toString());'."\n" + .' }'."\n" + .' CommonResponse modfiyShowListResponse = client.getCommonResponse(modfiyShowListRequest);'."\n" + .' System.out.println("修改showList成功,返回值:" + JSON.toJSONString(modfiyShowListResponse));'."\n" + .' return modfiyShowListResponse;'."\n" + ."\n" + .' }'."\n" + ."\n" + .'public void modifyShowList() throws ClientException {'."\n" + .' DefaultAcsClient client = initClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET);'."\n" + .' String showId= "";'."\n" + .' Integer repeatTimes=10;'."\n" + .' String highPriorityShowId="";'."\n" + .' String highPriorityShowStartTime = "2021-11-23T12:30:00";'."\n" + .' modfiyShowList(client,testCasterId, showId,repeatTimes,0,highPriorityShowId, highPriorityShowStartTime);'."\n" + .' }'."\n" + .'```', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyShowList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'ModifyStudioLayout' => [ + 'summary' => 'Modifies the layout of a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio. >The production studio must be created in advance and must be of the virtual studio type.>'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'CancelMuteUserList', - 'in' => 'formData', - 'style' => 'simple', - 'schema' => [ - 'description' => 'The IDs of the users.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The IDs of the users to unmute.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'qu***,yu1***', - ], - 'required' => true, - ], + 'name' => 'LayoutId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the layout. If you add a layout for a production studio by calling the [AddStudioLayout](~~2848062~~) operation, use the LayoutId value returned in the response.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'OperatorUserId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the user who performs the operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'de1**a0', - ], + 'name' => 'LayoutName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the production studio layout.', 'type' => 'string', 'example' => 'Test layout', 'required' => false, 'title' => ''], ], [ - 'name' => 'BroadCastType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The mode in which system messages are broadcasted. Valid values:'."\n" - ."\n" - .'* 0: specifies that system messages are not broadcasted. This is the default value.'."\n" - .'* 1: specifies that system messages are broadcasted to specified users.'."\n" - .'* 2: specifies that system messages are broadcasted to the message group.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'name' => 'CommonConfig', + 'in' => 'query', + 'schema' => ['description' => 'The configuration of the common layout. This parameter is a JSON string. For more information, see **CommonConfig**. >This parameter is required only when LayoutType is set to common.>', 'type' => 'string', 'required' => false, 'example' => '{ "ChannelId":"RV01" }', 'title' => ''], + ], + [ + 'name' => 'BgImageConfig', + 'in' => 'query', + 'schema' => ['description' => 'The configuration of the background resource. This parameter is a JSON string. For more information, see **BgImageConfig**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required only when LayoutType is set to studio.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => '{ "Id":"k12kj31****", "MaterialId":"f080575eb5f4427684fc0715159a****" }', 'title' => ''], + ], + [ + 'name' => 'ScreenInputConfigList', + 'in' => 'query', + 'schema' => ['description' => 'The settings for the chroma keying input. This parameter is a JSON string. For more information, see **ScreenInputConfig**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required only when LayoutType is set to studio.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => '[ { "Index":"1", "ChannelId":"RV01", "Color":"green", "PositionX":"0.1", "PositionY":"0.2", "HeightNormalized":"0.4" } ]', 'title' => ''], + ], + [ + 'name' => 'MediaInputConfigList', + 'in' => 'query', + 'schema' => ['description' => 'The settings for the multimedia input resource. This parameter is a JSON string. For more information, see **MediaInputConfig**.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is valid and optional only when LayoutType is set to studio.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => '[ { "Id":"k12kj31****", "Index":"1", "ChannelId":"RV01", "FillMode":"none", "PositionRefer":"topLeft", "WidthNormalized":"0.4", "HeightNormalized":"0.4", "PositionNormalized":"[0.1, 0.2]" }, { "Id":"k12kj31****", "Index":"2", "ImageMaterialId":"lkajsdfsa8fd89asd8****", "FillMode":"none", "PositionRefer":"topLeft", "WidthNormalized":"0.6", "HeightNormalized":"0.4", "PositionNormalized":"[0.1, 0.2]" } ]', 'title' => ''], + ], + [ + 'name' => 'LayerOrderConfigList', + 'in' => 'query', + 'schema' => ['description' => 'The layer order settings. This parameter is a JSON string. For more information, see **layerOrderConfig**. You can sort background and multimedia materials. Chroma keying layers are not supported. The earlier an item appears in the list, the lower its layer.', 'type' => 'string', 'required' => false, 'example' => '[ { "Type":"media", "Id":"k12kj31****" }, { "Type":"media", "Id":"k12kj31****" } ]', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the members are unmuted. Valid values:'."\n" - ."\n" - .'* true: The members are unmuted.'."\n" - .'* false: The members failed to be unmuted.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - ], - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": false\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n false\\n \\n","errorExample":""}]', - 'title' => 'CancelMuteGroupUser', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidPositionNormalized.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PositionNormalized is invalid, please check and try again.'], + ['errorCode' => 'InvalidHeightOrWidthNormalized', 'errorMessage' => '%s, please check and try again later.', 'description' => 'HeightNormalized or WidthNormalized parameters are invalid, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","type":"json"}]', + 'title' => 'ModifyStudioLayout', + 'description' => 'You can call this operation to modify the layout of a production studio. When you modify the layout settings, pass only the parameters that you want to change.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'CancelMuteAllGroupUser' => [ - 'summary' => 'Unmutes a message group.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'The QPS limit for this operation is 10 calls per second for each user. If you exceed the limit, API calls are throttled. This may affect your business. We recommend that you call this operation at a reasonable rate.', + 'requestParamsDescription' => '## CommonConfig'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| --------- | ------ | ------- | -------------------------------------------------------------- |'."\n" + .'| ChannelId | String | RV01 | The ID of the channel to which the video resource is attached. |'."\n" + ."\n" + .'## BgImageConfig'."\n" + ."\n" + .'> ImageUrl and MaterialId are mutually exclusive.'."\n" + ."\n" + .'## ScreenInputConfig'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| ---------------- | ------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| Index | Integer | 1 | The ID of the chroma keying source. This ID is used for frontend display and has no logical function. It must be a positive integer (>0). |'."\n" + .'| ChannelId | String | RV01 | The ID of the channel to which the video resource is attached. |'."\n" + .'| Color | String | green | The chroma keying color domain. Valid values:
**blue**: Blue screen background.
**green**: Green screen background.
**auto**: Automatic detection.
**complex**: Real-world scene matting. |'."\n" + .'| PositionX | Float | 0.1 | The position parameter for the x-coordinate. The value must be between 0 and 1, inclusive.
The material\'s position is based on the top-left corner as the reference point. |'."\n" + .'| PositionY | Float | 0.2 | The position parameter for the y-coordinate. The value must be between 0 and 1, inclusive.
The material\'s position is based on the top-left corner as the reference point. |'."\n" + .'| HeightNormalized | Float | 0.4 | The normalized height. This is the height ratio of the keyed portrait to the background. The value must be between 0 and 1, inclusive. |'."\n" + ."\n" + .'## MediaInputConfig'."\n" + ."\n" + .'- For a video source, specify ChannelId.'."\n" + ."\n" + .'- For an image, specify ImageMaterialId.'."\n" + ."\n" + .'- ChannelId and ImageMaterialId are mutually exclusive. You can specify only one.'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| ------------------ | ------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| Id | String | k12kj31**** | The unique ID of the multimedia material. |'."\n" + .'| Index | Integer | 1 | The ID of the multimedia material. This ID is used for frontend display and has no logical function. It must be a positive integer (>0). |'."\n" + .'| ChannelId | String | RV01 | The ID of the channel to which the video resource is attached. |'."\n" + .'| ImageMaterialId | String | lkajsdfsa8fd89asd8**** | The ID of the VOD image material. |'."\n" + .'| FillMode | String | none | The fill type. Set this parameter to **none**. |'."\n" + .'| PositionRefer | String | topLeft | The reference coordinate for the material\'s position. Set this parameter to **topLeft** to use the top-left corner as the reference point. |'."\n" + .'| WidthNormalized | Float | 0.4 | The normalized width of the material. This is the width ratio of the material to the background. The value must be between 0 and 1, inclusive. |'."\n" + .'| HeightNormalized | Float | 0.4 | The normalized height of the material. This is the height ratio of the material to the background. The value must be between 0 and 1, inclusive. |'."\n" + .'| PositionNormalized | Float | \\[0.1, 0.2] | The normalized position [x,y] of the material\'s fill area. The values of x and y must be between 0 and 1, inclusive.
For example, a value of [0.1, 0.2] represents a horizontal offset of 10% and a vertical offset of 20% from the top-left corner. |'."\n" + ."\n" + .'## layerOrderConfig'."\n" + ."\n" + .'| Name | Type | Example | Description |'."\n" + .'| ---- | ------ | ----------- | ------------------------------------------------------------------------------------------------------ |'."\n" + .'| Id | String | k12kj31**** | The unique ID of the resource. |'."\n" + .'| Type | String | media | The type of resource configuration.
background: Background material.
media: Multimedia material. |', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyStudioLayout'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyStudioLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'translator' => 'machine', + ], + 'MuteAllGroupUser' => [ + 'summary' => 'Call MuteAllGroupUser to mute a message group, enabling group-wide muting.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -54168,108 +44998,90 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - ], + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'formData', - 'schema' => [ - 'description' => 'Interactive message application ID.', - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'schema' => ['description' => 'The application ID for interactive messages.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'VKL3***'], ], [ 'name' => 'GroupId', 'in' => 'formData', - 'schema' => [ - 'description' => 'Message group ID.', - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'schema' => ['description' => 'The message group ID.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'AE35-****-T95F'], ], [ 'name' => 'OperatorUserId', 'in' => 'formData', - 'schema' => [ - 'description' => 'Operator\'s UserId. > This parameter is required and the user must be the creator of the group.', - 'type' => 'string', - 'required' => false, - 'example' => 'de1**a0', - ], + 'schema' => ['description' => 'The user ID of the operator. This user must be the creator of the group.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'de1**a0'], ], [ 'name' => 'BroadCastType', 'in' => 'formData', - 'schema' => [ - 'description' => '系统消息扩散类型,取值:'."\n" - ."\n" - .'- 0:不扩散。'."\n" - ."\n" - .'- 1:扩散到指定人。'."\n" - ."\n" - .'- 2:扩散到群组。', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The system message diffusion type. Valid values:'."\n" + ."\n" + .'- 0: No diffusion.'."\n" + .'- 1: Diffusion to specified users.'."\n" + .'- 2: Diffusion to the group.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'title' => '', 'example' => '2'], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', + 'title' => '', 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], 'Result' => [ - 'description' => 'The returned result.'."\n", + 'description' => 'The returned results.', 'type' => 'object', 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the cancellation was successful, with values:'."\n" - .'- true: Success. '."\n" - .'- false: Not successful.', - 'type' => 'boolean', - 'example' => 'true', - ], + 'Success' => ['description' => 'Indicates whether the muting was successful. Valid values:'."\n" + ."\n" + .'- true: Successful.'."\n" + .'- false: Unsuccessful.', 'type' => 'boolean', 'title' => '', 'example' => 'true'], ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n true\\n \\n","errorExample":""}]', - 'title' => 'CancelMuteAllGroupUser', - 'description' => '## QPS限制'."\n" - .'本接口的单用户QPS限制为100次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。更多信息,请参见[QPS限制](~~343507~~)。', - 'translator' => 'machine', - ], - 'LeaveMessageGroup' => [ - 'summary' => 'Leaves a message group.', - 'methods' => [ - 'post', + 'title' => 'MuteAllGroupUser', + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second (QPS) per user. If you exceed this limit, API calls will be throttled, which may affect your business. You can make API calls at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2023-04-04T06:09:59.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-12-08T09:05:53.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MuteAllGroupUser'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:MuteAllGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","type":"json"}]', + ], + 'MuteGroupUser' => [ + 'summary' => 'Call MuteGroupUser to mute multiple members in a message group.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -54277,490 +45089,415 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - ], + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'schema' => ['description' => 'Interactive message application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ 'name' => 'GroupId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'schema' => ['description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'UserId', + 'name' => 'MuteUserList', 'in' => 'formData', + 'style' => 'simple', 'schema' => [ - 'description' => 'The ID of the user. Each user has a unique ID in the application.'."\n", - 'type' => 'string', + 'description' => 'Mute details.', + 'type' => 'array', + 'items' => ['description' => 'List of user IDs to be muted.', 'type' => 'string', 'required' => false, 'example' => 'qu***,yu1***', 'title' => ''], 'required' => true, - 'example' => 'de1**a0', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'BroadCastType', + 'name' => 'MuteTime', 'in' => 'formData', - 'schema' => [ - 'description' => 'The mode in which system messages are broadcasted. Valid values:'."\n" - ."\n" - .'* 0: specifies that system messages are not broadcasted. This is the default value.'."\n" - .'* 1: specifies that system messages are broadcasted to specified users.'."\n" - .'* 2: specifies that system messages are broadcasted to the message group.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'Mute duration in seconds.'."\n" + ."\n" + .'> If this parameter is not specified or set to 0, the default mute duration (86400 seconds) is used.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '3600', 'title' => ''], ], [ - 'name' => 'BroadCastStatistics', + 'name' => 'OperatorUserId', 'in' => 'formData', - 'schema' => [ - 'description' => 'Specifies whether to broadcast statistical messages. If you set the value to true, statistical messages of the message group are broadcasted after the users join the message group. The client can receive and process these messages. Valid values:'."\n" - ."\n" - .'* true: broadcasts statistical messages.'."\n" - .'* false: does not broadcast statistical messages.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'Operator\'s user ID.'."\n" + ."\n" + .'> This parameter must be specified and the user must be the creator of the group.', 'type' => 'string', 'required' => false, 'example' => 'de1**a0', 'title' => ''], + ], + [ + 'name' => 'BroadCastType', + 'in' => 'formData', + 'schema' => ['description' => 'System message diffusion type. Valid values:'."\n" + ."\n" + .'- 0: No diffusion.'."\n" + .'- 1: Diffusion to specified users.'."\n" + .'- 2: Diffusion to the group.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], 'Result' => [ - 'description' => 'The returned result.'."\n", + 'description' => 'Return result.', 'type' => 'object', 'properties' => [ - 'Success' => [ - 'description' => 'Indicates whether the user left the message group. Valid values:'."\n" - ."\n" - .'* true: The user left the message group.'."\n" - .'* false: The user failed to leave the message group.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], + 'Success' => ['description' => 'Indicates whether the mute operation was successful. Valid values:'."\n" + ."\n" + .'- true: Successful.'."\n" + .'- false: Unsuccessful.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n true\\n \\n","errorExample":""}]', - 'title' => 'LeaveMessageGroup', - 'description' => '##'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","type":"json"}]', + 'title' => 'MuteGroupUser', + 'description' => '## QPS limits'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'SendLike' => [ - 'summary' => 'Configures likes in a message group.', - 'methods' => [ - 'post', + .'The QPS limit for this API is 100 queries per second (QPS) per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can make API calls at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MuteGroupUser'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:MuteGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'OpenLiveShift' => [ + 'summary' => 'You can call the OpenLiveShift operation to enable time shifting for a specific domain name, application, or stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveGDJYFA'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'title' => '应用ID。', - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'title' => '消息组ID。', - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'OperatorUserId', - 'in' => 'formData', - 'schema' => [ - 'title' => '操作者ID。示例值:testUserId。', - 'description' => 'The ID of the user who performs the operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'de1**a0', - ], + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the application. The wildcard character (\\*) is supported. An asterisk (\\*) represents all applications under the specified domain name. For more information, see [Stream management](~~197397~~).', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'Count', - 'in' => 'formData', - 'schema' => [ - 'title' => '点赞数。示例值:1。', - 'description' => 'The number of likes.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '10', - ], + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the stream. The wildcard character (\\*) is supported. An asterisk (\\*) represents all streams under the specified application. For more information, see [Stream management](~~197397~~).', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'BroadCastType', - 'in' => 'formData', - 'schema' => [ - 'title' => '系统消息广播类型,取值0,1,2.'."\n" - .'0:不广播。'."\n" - .'1:广播至消息组指定成员。'."\n" - .'2:广播至消息组。', - 'description' => 'The mode in which system messages are broadcasted. Valid values:'."\n" - ."\n" - .'* 0: specifies that system messages are not broadcasted. This is the default value.'."\n" - .'* 1: specifies that system messages are broadcasted to specified users.'."\n" - .'* 2: specifies that system messages are broadcasted to the message group.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'name' => 'Duration', + 'in' => 'query', + 'schema' => ['description' => 'The duration of an HTTP Live Streaming (HLS) transport stream (TS) segment. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '3', 'title' => ''], + ], + [ + 'name' => 'Vision', + 'in' => 'query', + 'schema' => ['description' => 'The data retention period. The default value is 7. Unit: days.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'IgnoreTranscode', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable time shifting for transcoded streams. Valid values:'."\n" + ."\n" + .'- **true**: Time shifting is disabled for transcoded streams.'."\n" + ."\n" + .'- **false**: Time shifting is enabled for transcoded streams.'."\n" + ."\n" + .'Default value: true.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'LikeCount' => [ - 'description' => 'The number of likes.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"LikeCount\\": 10\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n 10\\n \\n","errorExample":""}]', - 'title' => 'SendLike', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ], + 404 => [ + ['errorCode' => 'InvalidDataNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Data does not exist, please check and try again.'], + ], + 409 => [ + ['errorCode' => 'InvalidStreamNum', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of streams is abnormal. Please check and try again.'], + ], + ], + 'title' => 'OpenLiveShift', + 'description' => 'You cannot configure time shifting and delayed transcoding at the same time.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'SendMessageToGroup' => [ - 'summary' => 'Sends a message to all members in a message group.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'This operation supports up to 10 queries per second (QPS) per user. If you exceed this limit, the system throttles your API calls, which can impact your business. To prevent throttling, call this operation at a reasonable rate.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '### 特殊错误码'."\n" + .'| 错误代码 | 描述 | HTTP 状态码 | 语义 |'."\n" + .'|------------|--------|---------|------|'."\n" + .'| InvalidParam | param error|400| 用户参数错误。|'."\n" + .'| InvalidDataNotFound | data not found |404| 用户数据未找到。|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'OpenLiveShift'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:OpenLiveShift', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'PlayChoosenShow' => [ + 'summary' => 'Switches to a specified episode.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], - ], - [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], - ], - [ - 'name' => 'OperatorUserId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the user who performed the operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'de1**a0', - ], - ], - [ - 'name' => 'Type', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The type of the message. A value that is less than or equal to 10000 specifies a system message. A value that is greater than 10000 specifies a custom message.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '12000', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the region.'."\n", 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Data', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The message body. The value is a JSON string.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'test', - ], + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'* If the production studio was created by calling the [CreateCaster](~~2848009~~) operation, check the value of the response parameter CasterId to obtain the ID.'."\n" + .'* If the production studio was created by using the ApsaraVideo Live console, obtain the ID on the **Production Studio Management** page. To go to the page, log on to the **ApsaraVideo Live console** and click **Production Studios** in the left-side navigation pane.'."\n" + ."\n" + .'> You can find the ID of the production studio in the Instance ID/Name column.'."\n", 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'SkipAudit', + 'name' => 'ShowId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether the message requires Alibaba Cloud content moderation. Valid values:'."\n" - ."\n" - .'- **true**: does not require content moderation.'."\n" - .'- **false**: requires content moderation. This is the default value.', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The ID of the episode that you want to switch to.'."\n" + ."\n" + .'> You can call the [AddShowIntoShowList](~~2848051~~) or [DescribeShowList](~~2848054~~) operation and check the value of the response parameter ShowId to obtain the ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The data returned.'."\n", - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'title' => '用于长连接建连的token', - 'description' => 'The ID of the message.'."\n", - 'type' => 'string', - 'example' => 'qt***', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'ShowId' => ['description' => 'The ID of the episode.'."\n", 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"MessageId\\": \\"qt***\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n qt***\\n \\n","errorExample":""}]', - 'title' => 'SendMessageToGroup', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidShowList.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ShowList does not exist, please check and try again.'], + ['errorCode' => 'InvalidShow.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Show does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'PlayChoosenShow', + 'description' => '添加节目完成开启直播后,可调用本接口切换节目。使用API添加节目,请参见[添加一个节目到节目单](~~2848051~~)。'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'SendMessageToGroupUsers' => [ - 'summary' => 'Sends a message to specified users in a message group.', - 'methods' => [ - 'post', + .'## QPS限制'."\n" + .'本接口的单用户QPS限制为10次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'PlayChoosenShow'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:PlayChoosenShow', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\"\\n}","type":"json"}]', + ], + 'PublishLiveStagingConfigToProduction' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], - ], - [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], - ], - [ - 'name' => 'Type', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The type of the message. A value that is less than or equal to 10000 specifies a system message. A value that is greater than 10000 specifies a custom message.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '12000', - ], - ], - [ - 'name' => 'OperatorUserId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the user who performs the operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'de1**a0', - ], - ], - [ - 'name' => 'ReceiverIdList', - 'in' => 'formData', - 'style' => 'simple', - 'schema' => [ - 'description' => 'The list of users to receive the message.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the user to receive the message.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'hj***,3h***', - ], - 'required' => false, - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Data', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The message body. The value is a JSON string.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'test', - ], + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => true, 'example' => 'developer.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'SkipAudit', + 'name' => 'FunctionName', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether the message requires Alibaba Cloud content moderation. Valid values:'."\n" - ."\n" - .'- **true**: does not require content moderation.'."\n" - .'- **false**: requires content moderation. This is the default value.', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The name of the feature. To obtain the feature name, call the [DescribeLiveDomainStagingConfig](~~297374~~) operation.', 'type' => 'string', 'required' => true, 'example' => 'aliauth', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'MessageId' => [ - 'title' => '用于长连接建连的token', - 'description' => 'The ID of the message.'."\n", - 'type' => 'string', - 'example' => 'hp***', - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"MessageId\\": \\"hp***\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n hp***\\n \\n","errorExample":""}]', - 'title' => 'SendMessageToGroupUsers', - 'description' => '## QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'StagingConfig.Failed', 'errorMessage' => 'The rules for the staging environment are being configured. Try again later.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'StagingConfig.NotFound', 'errorMessage' => 'The staging configuration does not exist.', 'description' => ''], + ], + ], + 'title' => 'PublishLiveStagingConfigToProduction', + 'summary' => 'Publishes the configurations of an accelerated domain name from the canary release environment to the production environment.', + 'description' => '## Usage notes'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'ListMessage' => [ - 'summary' => 'Queries messages.', - 'methods' => [ - 'post', + .'You can call the [DescribeLiveDomainStagingConfig](~~297374~~) operation to obtain the feature name. Then, you can call this operation to publish the configurations from the canary release environment to the production environment.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 30 times per second per user. Throttling is triggered if the number of calls exceeds the limit. This may affect your business operations. We recommend that you plan your calls accordingly. For more information, see [QPS limits](~~343507~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'PublishLiveStagingConfigToProduction'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:PublishLiveStagingConfigToProduction', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","type":"json"}]', + ], + 'QueryLiveDomainMultiStreamList' => [ + 'summary' => 'Queries dual-stream disaster recovery online records.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -54770,157 +45507,174 @@ 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '250498', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'name' => 'Domain', + 'in' => 'query', + 'schema' => ['description' => 'The primary streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream. This parameter is used for exact match filtering.', 'type' => 'string', 'required' => false, 'example' => 'teststream', 'title' => ''], ], [ - 'name' => 'Type', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The type of the custom message. Valid values: integers greater than 10000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10002', - ], + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time of the query range. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC time). The interval between StartTime and EndTime must be within 7 days.', 'type' => 'string', 'required' => false, 'example' => '2024-12-01T01:00:00Z', 'title' => ''], ], [ - 'name' => 'SortType', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The sort order. Valid values:'."\n" - ."\n" - .'* 0: ascending order by time'."\n" - .'* 1: descending order by time'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time. Specify the time in the yyyy-MM-ddTHH:mm:ssZ format (UTC time).'."\n" + ."\n" + .'The end time must be later than the start time. The interval between the start time and end time cannot exceed 7 days. Default value: the last 24 hours.', 'type' => 'string', 'required' => false, 'example' => '2024-12-02T01:00:00Z', 'title' => ''], ], [ - 'name' => 'PageNum', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of the page to return. Default value: 1. Valid values: 1 to 100000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '10', - ], + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => ['description' => 'The page number. Default value: **1**.', 'type' => 'integer', 'format' => 'int64', 'default' => '1', 'required' => false, 'example' => '1', 'title' => ''], ], [ 'name' => 'PageSize', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of entries to return on each page. Default value: 20. Valid values: 1 to 50.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '20', - ], + 'in' => 'query', + 'schema' => ['description' => 'The number of entries per page. Default value: 10.'."\n" + ."\n" + .'Valid values: 1 to 100.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '100', 'minimum' => '1', 'default' => '10', 'required' => false, 'example' => '10', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by another page. Valid values:'."\n" - ."\n" - .'* true: The current page is followed by another page.'."\n" - .'* false: The current page is not followed by another page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'MessageList' => [ - 'description' => 'Details about the messages.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Data' => [ - 'description' => 'The message body. The value is a JSON string.'."\n", - 'type' => 'string', - 'example' => 'test', - ], - 'GroupId' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'example' => 'AE35-****-T95F', - ], - 'MessageId' => [ - 'description' => 'The ID of the message.'."\n", - 'type' => 'string', - 'example' => 'qt***', - ], - 'SenderId' => [ - 'description' => 'The ID of the user who sent the message.'."\n", - 'type' => 'string', - 'example' => 'yi***', + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A5****'], + 'PageNumber' => ['description' => 'The current page number.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'PageSize' => ['description' => 'The number of entries per page.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], + 'TotalCount' => ['description' => 'The total number of entries.', 'type' => 'integer', 'format' => 'int32', 'example' => '19', 'title' => ''], + 'OnlineStreams' => [ + 'description' => 'The number of online records.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Domain' => ['description' => 'The streaming domain of the streamer.', 'type' => 'string', 'example' => 'play.***.com', 'title' => ''], + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'apptest', 'title' => ''], + 'StreamName' => ['description' => 'The name of the live stream.', 'type' => 'string', 'example' => 'teststream', 'title' => ''], + 'OptimalMode' => [ + 'description' => 'The feature switch. Valid values:'."\n" + .'- **on**: enabled.'."\n" + .'- **off**: disabled.', + 'enumValueTitles' => ['off' => 'off', 'on' => 'on'], + 'type' => 'string', + 'example' => 'on', + 'title' => '', + ], + 'UpstreamList' => [ + 'description' => 'The list of all candidate streams.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'UpstreamSequence' => ['description' => 'The unique identifier of the ingest stream.', 'type' => 'string', 'example' => '***test_Alirewrite1', 'title' => ''], + 'UpstreamIp' => ['description' => 'The IP address of the ingest client.', 'type' => 'string', 'example' => '1.1.1.1', 'title' => ''], + 'UpstreamTime' => ['description' => 'The stream ingest time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format (UTC+0).', 'type' => 'string', 'example' => '2024-11-13T09:20:47Z', 'title' => ''], + 'MasterFlag' => [ + 'description' => 'The primary/secondary flag.'."\n" + .'> Indicates which stream is currently being used for merged distribution.', + 'enumValueTitles' => ['true' => 'true', 'false' => 'false'], + 'type' => 'boolean', + 'example' => 'false', + 'title' => '', + ], ], - 'Type' => [ - 'description' => 'The type of the message.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10002', + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + 'ChangeLogs' => [ + 'description' => 'The stream switching records.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ChangeTime' => ['description' => 'The stream switching time. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format (UTC+0).', 'type' => 'string', 'example' => '2024-11-13T09:20:47Z', 'title' => ''], + 'ChangeReason' => ['description' => 'The reason for stream switching.'."\n" + .'* merge cut manually: The user manually switched the stream.'."\n" + .'* master stream no data: The primary stream has no data.'."\n" + .'* master stream low quality: The primary stream quality degraded.', 'type' => 'string', 'example' => 'merge cut manually', 'title' => ''], + 'MasterUpstream' => ['description' => 'The stream that is actually used after the switch.', 'type' => 'string', 'example' => 'rtmp://118.178.168.35:1936/wwMultitest/pull.livetest2.aliyunlive.com_wwMultitest428_AliRewrite_2?vhost=pull.livetest2.aliyunlive.com&live_rtmp_test=on', 'title' => ''], + 'UpstreamSequence' => ['description' => 'The stream identifier after the switch.', 'type' => 'string', 'example' => '***test_AliRewrite_2', 'title' => ''], + 'UpstreamIp' => ['description' => 'The IP address used after the stream switch.', 'type' => 'string', 'example' => '1.1.1.1', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"HasMore\\": false,\\n \\"MessageList\\": [\\n {\\n \\"Data\\": \\"test\\",\\n \\"GroupId\\": \\"AE35-****-T95F\\",\\n \\"MessageId\\": \\"qt***\\",\\n \\"SenderId\\": \\"yi***\\",\\n \\"Type\\": 10002\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n false\\n \\n AE35-****-T95F\\n qt***\\n 10002\\n yi***\\n test\\n \\n \\n","errorExample":""}]', - 'title' => 'ListMessage', - 'description' => '## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'ListMessageGroupUserById' => [ - 'summary' => 'Queries user information by user ID.', - 'methods' => [ - 'post', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'InvalidParam.CodeIllegalDuration', 'errorMessage' => '%s.', 'description' => 'The value of start time should be less than the value of end time .'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A5****\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 19,\\n \\"OnlineStreams\\": [\\n {\\n \\"Domain\\": \\"play.***.com\\",\\n \\"AppName\\": \\"apptest\\",\\n \\"StreamName\\": \\"teststream\\",\\n \\"OptimalMode\\": \\"on\\",\\n \\"UpstreamList\\": [\\n {\\n \\"UpstreamSequence\\": \\"***test_Alirewrite1\\",\\n \\"UpstreamIp\\": \\"1.1.1.1\\",\\n \\"UpstreamTime\\": \\"2024-11-13T09:20:47Z\\",\\n \\"MasterFlag\\": false\\n }\\n ],\\n \\"ChangeLogs\\": [\\n {\\n \\"ChangeTime\\": \\"2024-11-13T09:20:47Z\\",\\n \\"ChangeReason\\": \\"merge cut manually\\",\\n \\"MasterUpstream\\": \\"rtmp://118.178.168.35:1936/wwMultitest/pull.livetest2.aliyunlive.com_wwMultitest428_AliRewrite_2?vhost=pull.livetest2.aliyunlive.com&live_rtmp_test=on\\",\\n \\"UpstreamSequence\\": \\"***test_AliRewrite_2\\",\\n \\"UpstreamIp\\": \\"1.1.1.1\\"\\n }\\n ]\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'Query dual-stream disaster recovery online records', + 'changeSet' => [ + ['createdAt' => '2025-04-27T04:00:13.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryLiveDomainMultiStreamList'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:QueryLiveDomainMultiStreamList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'QueryMessageApp' => [ + 'summary' => 'Call QueryMessageApp to query interactive message applications based on specified conditions.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -54928,1242 +45682,822 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], - ], + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], + 'schema' => ['description' => 'Interactive message application ID.', 'type' => 'string', 'required' => false, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'AppName', 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], + 'schema' => ['description' => 'Interactive message application name.', 'type' => 'string', 'required' => false, 'example' => 'testApp', 'title' => ''], ], [ - 'name' => 'UserIdList', + 'name' => 'SortType', 'in' => 'formData', - 'style' => 'simple', - 'schema' => [ - 'description' => 'The list of users.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'de1**a0', - ], - 'required' => true, - ], + 'schema' => ['description' => 'Sorting method. Valid values:'."\n" + ."\n" + .'- 0: Ascending order by time.'."\n" + .'- 1: Descending order by time.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'PageNum', + 'in' => 'formData', + 'schema' => ['description' => 'Page number. Default value: 1. Valid values: 1 to 100000.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'PageSize', + 'in' => 'formData', + 'schema' => ['description' => 'Number of applications displayed per page. Default value: 20. Valid values: 1 to 50.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], 'Result' => [ - 'description' => 'The returned results.'."\n", - 'type' => 'object', - 'properties' => [ - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by another page. Valid values:'."\n" - ."\n" - .'* true'."\n" - .'* false'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'Total' => [ - 'description' => 'The total number of users returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3', - ], - 'UserList' => [ - 'description' => 'The list of users.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'IsMute' => [ - 'description' => 'Indicates whether the user is muted. Valid values:'."\n" - ."\n" - .'* true: The user is muted.'."\n" - .'* false: The user is not muted.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'MuteBy' => [ - 'description' => 'The type of the mute. Valid values:'."\n" - ."\n" - .'* group: All members in the message group are muted.'."\n" - .'* user: Specific members in the message group are muted.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The type of the mute. Valid values:'."\n" - ."\n" - .'* group: All members in the message group are muted.'."\n" - .'* user: Specific members in the message group are muted.'."\n", - 'type' => 'string', - 'example' => 'user', + 'description' => 'Return result.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AppList' => [ + 'description' => 'Interactive Messages application list.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AppConfig' => [ + 'description' => 'Application configuration.', + 'type' => 'object', + 'additionalProperties' => ['type' => 'string', 'description' => 'Application configuration.', 'example' => 'dawd', 'title' => ''], + 'title' => '', + 'example' => '', ], + 'AppId' => ['description' => 'Interactive Messages application ID.', 'type' => 'string', 'example' => 'VKL3***', 'title' => ''], + 'AppName' => ['description' => 'Interactive Messages application name.', 'type' => 'string', 'example' => 'test', 'title' => ''], + 'CreateTime' => ['description' => 'UTC timestamp when the application was created.', 'type' => 'integer', 'format' => 'int64', 'example' => '502280113', 'title' => ''], + 'Extension' => [ + 'description' => 'Extension field.', + 'type' => 'object', + 'additionalProperties' => ['type' => 'string', 'description' => 'Extension field.', 'example' => 'test001', 'title' => ''], + 'title' => '', + 'example' => '', + ], + 'Status' => ['description' => 'Interactive Messages application status. A value of **1** indicates that the application status is Normal.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], - 'UserAvatar' => [ - 'description' => 'The URL of the profile picture of the user.'."\n", - 'type' => 'string', - 'example' => '"http://www.aliyundoc.com/xxyy.png"', - ], - 'UserExtension' => [ - 'description' => 'The custom information about the user.'."\n", - 'type' => 'string', - 'example' => '12e', - ], - 'UserId' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'example' => 'ad***', - ], - 'UserNick' => [ - 'description' => 'The nickname of the user.'."\n", - 'type' => 'string', - 'example' => 'xxyy', - ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], + 'HasMore' => ['description' => 'Indicates whether there is a next page. Valid values:'."\n" + ."\n" + .'- true: There is a next page.'."\n" + .'- false: There is no next page.', 'type' => 'boolean', 'example' => 'false', 'title' => ''], + 'TotalCount' => ['description' => 'Total number of query results.', 'type' => 'integer', 'format' => 'int32', 'example' => '4', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => 'Parameter invalid.', - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": [\\n {\\n \\"AppList\\": [\\n {\\n \\"AppConfig\\": {\\n \\"key\\": \\"dawd\\"\\n },\\n \\"AppId\\": \\"VKL3***\\",\\n \\"AppName\\": \\"test\\",\\n \\"CreateTime\\": 502280113,\\n \\"Extension\\": {\\n \\"key\\": \\"test001\\"\\n },\\n \\"Status\\": 1\\n }\\n ],\\n \\"HasMore\\": false,\\n \\"TotalCount\\": 4\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'QueryMessageApp', + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can call the API properly to avoid this issue. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryMessageApp'], ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', + ], + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:QueryMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"HasMore\\": false,\\n \\"Total\\": 3,\\n \\"UserList\\": [\\n {\\n \\"IsMute\\": true,\\n \\"MuteBy\\": [\\n \\"user\\"\\n ],\\n \\"UserAvatar\\": \\"\\\\\\"http://www.aliyundoc.com/xxyy.png\\\\\\"\\",\\n \\"UserExtension\\": \\"12e\\",\\n \\"UserId\\": \\"ad***\\",\\n \\"UserNick\\": \\"xxyy\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n 3\\n false\\n \\n ad***\\n xxyy\\n \\"http://www.aliyundoc.com/xxyy.png\\"\\n 12e\\n true\\n user\\n \\n \\n","errorExample":""}]', - 'title' => 'ListMessageGroupUserById', - 'description' => '## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", ], - 'BatchGetOnlineUsers' => [ - 'summary' => 'Queries whether users are online by UID.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'QueryRtcAsrTasks' => [ + 'summary' => 'Queries the status of created real-time speech-to-text or translation tasks.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeCode' => '219787', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'a494caec-***-695ef345db77', - ], - ], - [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the message group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '23wcaec-***695ef', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'UserIds', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The list of user IDs. Separate multiple user IDs with commas (,). You can specify a maximum of 20 user IDs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'de1**a0,hu**9', - ], + 'name' => 'TaskId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the task to query. If you do not specify this parameter, all running tasks under your user ID are queried.', 'type' => 'string', 'required' => false, 'example' => 'asr-a6ac15e0-9118-4b4c-9e64-306163a0****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned results.'."\n", + 'Description' => ['description' => 'The description of the result. A value of \\`success\\` indicates that the call is successful. If the call fails, an error message is returned.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'D8ADAB55-1BB8-5C01-8434-C45D353BB1FD', 'title' => ''], + 'RetCode' => ['description' => 'The status code. A value of 2000 indicates that the call is successful. Other values indicate that an error occurred.', 'type' => 'integer', 'format' => 'int64', 'example' => '2000', 'title' => ''], + 'Tasks' => [ + 'description' => 'The result set of tasks.', 'type' => 'object', - 'properties' => [ - 'OnlineUsers' => [ - 'description' => 'The information about users.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'JoinTime' => [ - 'description' => 'The time when the user joined the group. The value is a UTC timestamp. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '12**45', - ], - 'Online' => [ - 'description' => 'Indicates whether the user is online. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'UserId' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'example' => 'de1**a0', - ], - ], - ], - ], - ], + 'additionalProperties' => ['description' => 'The result set of tasks.', 'type' => 'any', 'example' => '"asr-a7bdde0a-0939-4288-973e-170082aa****": { "createdAt": "2024-05-14T11:52:02+08:00", "updatedAt": "2024-05-14T11:52:03+08:00", "mode": "live", "taskId": "asr-a7bdde0a-0939-4288-973e-170082aa****", "language": "cn", "callbackUrl": "default", "autoTerminateDelay": "10", "streamUrl": "http://pull-lveditor.alivecdn.com/caster/9c6c26281a6f4da29af7d3ec84d2****.flv?auth_key=1715745062-0-0-fbc68f2ccebb4d46b5ab6d4801ed****", "status": 1, "reportInterval": "0", "aliUid": "1119309225474343", "tag": "" }', 'title' => ''], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 403 => [ - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => 'User not authorized to operate on the specified resource.', - ], + 400 => [ + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"OnlineUsers\\": [\\n {\\n \\"JoinTime\\": 0,\\n \\"Online\\": true,\\n \\"UserId\\": \\"de1**a0\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n \\n de1**a0\\n true\\n \\n \\n","errorExample":""}]', - 'title' => 'BatchGetOnlineUsers', - 'description' => '## Usage notes'."\n" - ."\n" - .'You can query whether up to 20 users are online at a time.'."\n" - ."\n" - .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limit on an API operation in ApsaraVideo Live](~~343507~~).'."\n", - ], - 'ListMuteGroupUser' => [ - 'summary' => 'Queries muted members in a messaging group.', - 'methods' => [ - 'post', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'QueryRtcAsrTasks', + 'description' => 'The queries per second (QPS) limit for a single user is 20 calls per second. If you exceed this limit, your API calls are throttled, which can affect your business. Call this API only as needed.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryRtcAsrTasks'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:QueryRtcAsrTasks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"success\\",\\n \\"RequestId\\": \\"D8ADAB55-1BB8-5C01-8434-C45D353BB1FD\\",\\n \\"RetCode\\": 2000,\\n \\"Tasks\\": {\\n \\"key\\": \\"\\\\\\"asr-a7bdde0a-0939-4288-973e-170082aa****\\\\\\": { \\\\\\"createdAt\\\\\\": \\\\\\"2024-05-14T11:52:02+08:00\\\\\\", \\\\\\"updatedAt\\\\\\": \\\\\\"2024-05-14T11:52:03+08:00\\\\\\", \\\\\\"mode\\\\\\": \\\\\\"live\\\\\\", \\\\\\"taskId\\\\\\": \\\\\\"asr-a7bdde0a-0939-4288-973e-170082aa****\\\\\\", \\\\\\"language\\\\\\": \\\\\\"cn\\\\\\", \\\\\\"callbackUrl\\\\\\": \\\\\\"default\\\\\\", \\\\\\"autoTerminateDelay\\\\\\": \\\\\\"10\\\\\\", \\\\\\"streamUrl\\\\\\": \\\\\\"http://pull-lveditor.alivecdn.com/caster/9c6c26281a6f4da29af7d3ec84d2****.flv?auth_key=1715745062-0-0-fbc68f2ccebb4d46b5ab6d4801ed****\\\\\\", \\\\\\"status\\\\\\": 1, \\\\\\"reportInterval\\\\\\": \\\\\\"0\\\\\\", \\\\\\"aliUid\\\\\\": \\\\\\"1119309225474343\\\\\\", \\\\\\"tag\\\\\\": \\\\\\"\\\\\\" }\\"\\n }\\n}","type":"json"}]', + ], + 'QuerySnapshotCallbackAuth' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'VKL3***', - ], - ], - [ - 'name' => 'GroupId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the messaging group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AE35-****-T95F', - ], - ], - [ - 'name' => 'PageNum', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The page number. Default value: 1. Valid values: 1 to 100000.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '10', - ], - ], - [ - 'name' => 'PageSize', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The number of entries per page. Default value: 20. Valid values: 1 to 50.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '20', - ], + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'OperatorUserId', - 'in' => 'formData', - 'schema' => [ - 'description' => 'The ID of the user who performs the operation.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'de1**a0', - ], + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - 'Result' => [ - 'description' => 'The returned result.'."\n", - 'type' => 'object', - 'properties' => [ - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by another page. Valid values:'."\n" - ."\n" - .'* true'."\n" - .'* false'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'Total' => [ - 'description' => 'The total number of muted members.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'UserList' => [ - 'description' => 'The list of muted users.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'description' => 'The ID of the muted user.'."\n", - 'type' => 'string', - 'example' => '1sd***,yu***', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD5', 'title' => ''], + 'CallbackAuthKey' => ['description' => 'The authentication key for callbacks.', 'type' => 'string', 'example' => 'yourkey', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.aliyundoc.com', 'title' => ''], + 'CallbackReqAuth' => ['description' => 'Indicates whether authentication for callbacks is enabled. Valid values:'."\n" + ."\n" + .'- **yes**: enabled.'."\n" + ."\n" + .'- **no**: disabled.', 'type' => 'string', 'example' => 'yes', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"HasMore\\": false,\\n \\"Total\\": 2,\\n \\"UserList\\": [\\n {\\n \\"UserId\\": \\"1sd***,yu***\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-****-CB92E68F4CD8\\n \\n 2\\n false\\n \\n 1sd***,yu***\\n \\n \\n","errorExample":""}]', - 'title' => 'ListMuteGroupUser', - 'description' => '## [](#qps-)QPS limit'."\n" + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], + ], + ], + 'title' => 'QuerySnapshotCallbackAuth', + 'summary' => 'Queries the authentication configuration for snapshot callbacks.', + 'description' => 'You can call this operation to query the authentication configuration for snapshot callbacks for a streaming domain. Before you call this operation, you must configure authentication. For more information, see [Set snapshot callback authentication](~~2847907~~).'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'CreateLiveMessageApp' => [ - 'summary' => 'Creates an interactive messaging application.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'This operation is limited to 30 queries per second (QPS) per user. If you exceed this limit, throttling is triggered, which can affect your services.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QuerySnapshotCallbackAuth'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:QuerySnapshotCallbackAuth', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\",\\n \\"CallbackAuthKey\\": \\"yourkey\\",\\n \\"DomainName\\": \\"example.aliyundoc.com\\",\\n \\"CallbackReqAuth\\": \\"yes\\"\\n}","type":"json"}]', + ], + 'RealTimeRecordCommand' => [ + 'summary' => 'Controls recordings manually on demand. You can start or stop recording at any time.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'none', 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '198173', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application. The name must be 2 to 16 characters in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testApp', - ], - ], - [ - 'name' => 'AuditType', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'title' => '安全审核方式:0为不开启安全审核,1为内置安全审核, 2为自定义安全审核', - 'description' => 'The content moderation method. Valid values:'."\n" - ."\n" - .'* 0 (default): disables content moderation.'."\n" - .'* 1: uses built-in content moderation.'."\n" - .'* 2: uses custom content moderation.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - 'enum' => [ - '0', - '1', - '2', - ], - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AuditUrl', + 'name' => 'Command', 'in' => 'query', - 'schema' => [ - 'title' => '如果是自定义安全审核,则需要提供安全审核的地址', - 'description' => 'The URL for content moderation. If you set AuditType to 2, you must specify this parameter. The URL must start with http:// or https:// and cannot contain a private IP address or a port number. For more information about custom content moderation, see the "Custom content moderation" section of this topic.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://demo.aliyundoc.com/exampleaudit', - ], + 'schema' => ['description' => 'The action to perform. Valid values:'."\n" + ."\n" + .'- **start**: Starts the recording. This command must be the first one called for a session and cannot be called again before a stop command is issued.'."\n" + ."\n" + .'- stop: Stops the recording. A recording file is generated after the configured stream merge window (default: 180 seconds). Call this command only after start or restart. To generate the recording file immediately, call **cancel\\_delay** after this command.'."\n" + ."\n" + .'- cancel\\_delay: Immediately finalizes the recording file, terminating the waiting period. This must be called after stop to generate the file ahead of schedule.'."\n" + ."\n" + .'- **restart**: Restarts the recording. If a recording is already in progress, this command first finalizes the current recording file and then immediately starts a new one. This can only be called when the recording session is in a started or stopped state.', 'type' => 'string', 'required' => true, 'example' => 'start', 'title' => ''], ], [ - 'name' => 'EventCallbackUrl', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'title' => '用户登录、登出,加入、离开群组等事件回调地址,若为空则不开启事件回调', - 'description' => 'The callback URL for events, such as logon, logoff, and joining and leaving a group. If you leave this parameter empty, event callbacks are disabled. [](~~2672836~~)The callback URL must start with http:// or https:// and cannot contain a private IP address or a port number. For information about the callback message format and authentication logic, see the "Event callbacks" and "Callback authentication" sections of this topic.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://demo.aliyundoc.com/examplecallback', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. Valid values:'."\n" - ."\n" - .'* cn-shanghai (default)'."\n" - .'* ap-southeast-1: Singapore'."\n" - ."\n" - .'> When you call other operations to manage the interactive messaging application, you must specify the same data center in which the application is created.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The AppName of the live stream. View AppNames on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'MsgLifeCycle', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The retention period of group messages in the application. Valid values:'."\n" - ."\n" - .'* 0 (default): 30 days.'."\n" - .'* 1: 90 days.'."\n" - .'* 2: 180 days.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The stream name. Make sure the StreamName is correct. View StreamNames on the [Stream Management](~~197397~~) page.'."\n" + ."\n" + .'> This API only supports operations on a single stream. Wildcard are not supported.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '65EEDBEB-43FE-1E15-976F-3DDD753A****', - ], - 'AppId' => [ - 'description' => 'The application ID. The ID is used in subsequent operations, such as joining a group.'."\n", - 'type' => 'string', - 'example' => 'demo', - ], - 'AppKey' => [ - 'description' => 'The AppKey for authentication of this application.'."\n", - 'type' => 'string', - 'example' => '**********************************', - ], - 'AppSign' => [ - 'description' => 'The application signature. The signature is required when you use the interactive messaging SDK.'."\n", - 'type' => 'string', - 'example' => '**************************************************************************', - ], - 'DataCenter' => [ - 'description' => 'The data center in which the interactive messaging application was created.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorInvalidAppName', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorTooManyApps', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorInvalidEventCallbackUrl', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorInvalidAuditUrl', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'CodeConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + 409 => [ + ['errorCode' => 'StreamNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Stream does not exist, please check and try again.'], + ['errorCode' => 'TaskAlreadyStarted', 'errorMessage' => '%s, please do not start again.', 'description' => 'Task already started, do not start again.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"65EEDBEB-43FE-1E15-976F-3DDD753A****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppKey\\": \\"**********************************\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"DataCenter\\": \\"cn-shanghai\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 65EEDBEB-43FE-1E15-976F-3DDD753A****\\n demo\\n **********************************\\n **************************************************************************\\n","errorExample":""}]', - 'title' => 'CreateLiveMessageApp', - 'description' => '* When you call other operations to manage the interactive messaging application, you must specify the same data center in which the application is created.'."\n" - .'* You can create up to 300 interactive messaging applications in an Alibaba Cloud account.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '### [](#)Custom content moderation'."\n" - ."\n" - .'* Request protocol: HTTP'."\n" - .'* Request method: POST'."\n" - .'* Sample request:'."\n" - ."\n" - .''."\n" - ."\n" - .' {'."\n" - .' "content": "testaudit"'."\n" - .' }'."\n" - ."\n" - .'* Sample response:'."\n" - ."\n" - .''."\n" - ."\n" - .' {'."\n" - .' "pass": true,'."\n" - .' "reason":"****" | If the value of pass is true, the content passes the moderation. Otherwise, the content fails the moderation. The reason field describes the reason for failure.}'."\n" - ."\n" - .'> HTTP status code 200 indicates success. If other HTTP status codes are returned, the service is considered unavailable and no content moderation is performed.'."\n" - ."\n" - .'### [](#)Event callbacks'."\n" + 'title' => 'RealTimeRecordCommand', + 'description' => '- Before you call this API, review the billing methods and pricing of live stream recording. For more information, see [Billing of live stream recording](~~195287~~).'."\n" ."\n" - .'The HTTP or HTTPS request method is POST. The request body is a JSON string encoded in UTF-8. Sample event callback:'."\n" + .'- This API applies to live streams that have an active recording configuration. You must first [add a recording configuration](~~2847881~~).'."\n" ."\n" - .' {'."\n" - .' "transactionid":"A8C7B033-B339-1A58-B0E0-7B9197BA****",'."\n" - .' "appid":"demo",'."\n" - .' "eves":[{'."\n" - .' "uid":"uid1",'."\n" - .' "sid":"sessionid",'."\n" - .' "events":[{'."\n" - .' "e": 3, | The event. Valid values: 1 (logon), 2 (logoff), 3 (joining a group), 4 (leaving a group), and 5 (reconnection).'."\n" - .' "r": 1, | The reason for logoff. This field is returned for only the logoff event. Valid values: 1 (normal call), 3 (timeout), and 4 (logon from another device).'."\n" - .' "g": "testgroup", | The group ID. This field is returned for the event of joining a group or leaving a group, but not returned for the logon or logoff event.'."\n" - .' "gs":["testgroupid"] | The list of group IDs, which indicates the information about the groups that the client joins upon reconnection. This field is not returned for other events.'."\n" - .' }]'."\n" - .' }]'."\n" - .' }'."\n" + .'- You can use this API to stop a recording that was started either automatically or manually. However, if you call this API to start a recording that is already in progress, the system returns a TaskAlreadyStarted error.'."\n" ."\n" - .'> HTTP status code 200 indicates success. If other HTTP status codes are returned, the system tries to send the callback again.'."\n" + .'- If a manually started recording is interrupted, the recording stops. If automatic recording is not configured, the recording does not automatically restart when stream ingest resumes.'."\n" ."\n" - .'### [](#)Callback authentication'."\n" + .'## QPS limits'."\n" ."\n" - .'When the service initiates a request, it includes the Ali-Live-Timestamp and Ali-Live-Signature fields as HTTP or HTTPS request headers, which are received by the callback receiving server for signature verification. The value of Ali-Live-Signature is calculated based on the following formula: Ali-Live-Signature = sha256(CONTENT), in which MD5CONTENT = Callback domain name|Ali-Live-Timestamp value|Authentication key. The callback domain name is the domain name for which the callback URL is configured, and the authentication key is the AppKey that is generated when you create the application.'."\n", - ], - 'CreateLiveMessageGroup' => [ - 'summary' => 'Creates an interactive messaging group.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## 注意事项: '."\n" + .'- 视频直播支持触发拉流,当使用触发拉流域名对应的播放地址进行播放时,会自动触发阿里云视频直播服务进行拉流直播,无人播放时则不会回源站进行拉流。自动录制、按需录制、手动录制功能应用在触发拉流场景时,如果触发拉流无人播放,则不会回源站拉流,自动录制、按需录制、手动录制同样也不会进行录制。', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RealTimeRecordCommand'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:RealTimeRecordCommand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'RecoverLiveMessageDeletedGroup' => [ + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ + [ + 'AK' => [], ], ], 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeCode' => '227785', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the group that you want to create. The group ID must be unique within your business. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], - ], - [ - 'name' => 'GroupName', - 'in' => 'query', - 'schema' => [ - 'title' => '群组名', - 'description' => 'The name of the group. The name can be up to 128 bytes in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'mytestgroup', - ], - ], - [ - 'name' => 'GroupInfo', - 'in' => 'query', - 'schema' => [ - 'title' => '群组扩展信息', - 'description' => 'The additional information about the group. The value can be up to 32 KB in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testgroupinfo', - ], - ], - [ - 'name' => 'Administrators', - 'in' => 'query', - 'style' => 'simple', - 'schema' => [ - 'title' => '管理员用户ID列表,不能超过3个', - 'description' => 'The list of administrators.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the administrator. The ID can be up to 64 bytes in length and can contain letters and digits. Separate multiple administrator IDs with commas (,). You can specify up to three administrator IDs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'uid1', - ], - 'required' => false, - 'maxItems' => 3, - ], - ], - [ - 'name' => 'CreatorId', - 'in' => 'query', - 'schema' => [ - 'title' => '群创建者ID', - 'description' => 'The ID of the group creator. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'uid1', - ], + 'schema' => ['description' => 'The ID of the group that you want to restore.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2593195~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', + 'title' => '', + 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A8C7B033-B339-1A58-B0E0-7B9197BA****', - ], - 'GroupId' => [ - 'description' => 'The ID of the group created.'."\n", - 'type' => 'string', - 'example' => 'grouptest', - ], - 'AlreadyExists' => [ - 'title' => '是否已经存在', - 'description' => 'Indicates whether the group already exists.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'AlreadyDelete' => [ - 'description' => 'Indicates whether the group is deleted. If the group existed and is deleted, the group ID is unavailable. We recommend that you create a new group.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], + 'RequestId' => ['title' => '', 'description' => 'The ID of the request.'."\n", 'type' => 'string', 'example' => 'B95BE680-5A6A-1CAD-8AB1-09DFF5D6****'], + 'GroupId' => ['description' => 'The ID of the group that was restored.'."\n", 'type' => 'string', 'example' => 'grouptest', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorTooManyGroups', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'ErrorTooManyGroups', 'errorMessage' => '%s.', 'description' => 'For each AppId, a maximum of 5000 groups are allowed to be created at the same time.'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A8C7B033-B339-1A58-B0E0-7B9197BA****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"AlreadyExists\\": true,\\n \\"AlreadyDelete\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n A8C7B033-B339-1A58-B0E0-7B9197BA****\\n grouptest\\n true\\n true\\n","errorExample":""}]', - 'title' => 'CreateLiveMessageGroup', - 'description' => '* Before you call this operation, make sure that you have called the [CreateLiveMessageApp](~~2848162~~) operation to create an interactive messaging application.'."\n" - .'* You can create up to 5,000 interactive messaging groups in an interactive messaging application.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'RecoverLiveMessageDeletedGroup', + 'summary' => 'Restores a deleted interactive messaging group.', + 'description' => '* You can call this operation to restore a deleted interactive messaging group within 30 days after you call the [DeleteLiveMessageGroup](~~2848163~~) to delete the group.'."\n" + .'* After you restore a group, the messages that were stored in the group before it was deleted can still be queried.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveMessageGroup' => [ - 'summary' => 'Queries the information about an interactive messaging group.', - 'methods' => [ - 'post', + 'changeSet' => [ + ['createdAt' => '2024-07-19T03:44:22.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RecoverLiveMessageDeletedGroup'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:RecoverLiveMessageDeletedGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\",\\n \\"GroupId\\": \\"grouptest\\"\\n}","errorExample":""},{"type":"xml","example":"\\n B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\n grouptest\\n","errorExample":""}]', + ], + 'RemoveLiveMessageGroupBand' => [ + 'summary' => 'Unmutes users in a live interactive message group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '194284', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeCode' => '235211', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'coims-pre', - ], + 'schema' => ['description' => 'The application ID.', 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ 'name' => 'GroupId', 'in' => 'query', + 'schema' => ['description' => 'The group ID.', 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], + ], + [ + 'name' => 'UnbannedUsers', + 'in' => 'query', + 'style' => 'simple', 'schema' => [ - 'description' => 'The ID of the interactive messaging group whose information you want to query.'."\n", - 'type' => 'string', + 'description' => 'The list of users to unmute. You can specify up to 30 users. Separate multiple user IDs with commas (,).', + 'type' => 'array', + 'items' => ['description' => 'The user to unmute.'."\n" + ."\n" + .'- To unmute all muted users, set this parameter to an asterisk (\\*).', 'type' => 'string', 'required' => false, 'example' => 'uid1', 'title' => ''], 'required' => true, - 'example' => 'grouptest', + 'title' => '', + 'example' => '', ], ], [ 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The data center. This must be the same data center that you specified when you called [CreateLiveMessageApp](~~2848162~~).'."\n" + ."\n" + .'> Valid values: \\`cn-shanghai\\` (Shanghai) and \\`ap-southeast-1\\` (Singapore).', 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", + 'description' => 'Response schema', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '1815A27D-BAE2-10E6-89FD-D477951C67C7', - ], - 'GroupId' => [ - 'description' => 'The group ID.'."\n", - 'type' => 'string', - 'example' => 'grouptest1', - ], - 'CreatorId' => [ - 'description' => 'The ID of the group creator.'."\n", - 'type' => 'string', - 'example' => 'uid1', - ], - 'AdminList' => [ - 'description' => 'The list of the group administrators.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the administrator.'."\n", - 'type' => 'string', - 'example' => 'uid1', - ], - ], - 'Createtime' => [ - 'description' => 'The time when the group was created. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1698305471', - ], - 'GroupName' => [ - 'description' => 'The name of the group.'."\n", - 'type' => 'string', - 'example' => 'mytestgroup', - ], - 'GroupInfo' => [ - 'description' => 'Additional information about the group.'."\n", - 'type' => 'string', - 'example' => 'testgroupinfo', - ], - 'Delete' => [ - 'description' => 'Indicates whether the group was deleted.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'TotalTimes' => [ - 'description' => 'The total number of sessions. This parameter is returned only if the group exists.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '50', - ], - 'OnlineUserCounts' => [ - 'description' => 'The number of online users in the group. This parameter is returned only if the group exists.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2', - ], - 'MsgAmount' => [ - 'description' => 'The categorized message statistics. This parameter is returned only if the group exists.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'integer', - 'format' => 'int64', - 'example' => '{1 : 20, 2 : 30}', - 'description' => 'Number of messages.', - ], - ], - 'Deletatime' => [ - 'description' => 'The time when the group was deleted. This parameter is returned only if the group was deleted.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1698299827', - ], - 'Deletor' => [ - 'description' => 'The ID of the user who deleted the group. This parameter is returned only if the group was deleted.'."\n", - 'type' => 'string', - 'example' => 'uid1', - ], - 'SuperLargeGroup' => [ - 'description' => 'Indicates whether the group is a super group. Valid values:'."\n" - ."\n" - .'* True'."\n" - .'* False'."\n", - 'type' => 'boolean', - 'example' => 'False', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1815A27D-BAE2-10E6-89FD-D477951C****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"CreatorId\\": \\"uid1\\",\\n \\"AdminList\\": [\\n \\"[\\\\\\"uid1\\\\\\",\\\\\\"uid2\\\\\\"]\\"\\n ],\\n \\"Createtime\\": 1698305471,\\n \\"GroupName\\": \\"mytestgroup\\",\\n \\"GroupInfo\\": \\"testgroupinfo\\",\\n \\"Delete\\": false,\\n \\"TotalTimes\\": 50,\\n \\"OnlineUserCounts\\": 2,\\n \\"MsgAmount\\": {\\n \\"key\\": 0\\n },\\n \\"Deletatime\\": 1698299827,\\n \\"Deletor\\": \\"uid1\\",\\n \\"SuperLargeGroup\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 1815A27D-BAE2-10E6-89FD-D477951C****\\n grouptest\\n uid1\\n [\\"uid1\\",\\"uid2\\"]\\n 1698305471\\n mytestgroup\\n testgroupinfo\\n false\\n 50\\n 2\\n {1:20,2:30}\\n","errorExample":""}]', - 'title' => 'DescribeLiveMessageGroup', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848162~~) operation to create an interactive messaging group.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","type":"json"}]', + 'title' => 'RemoveLiveMessageGroupBand', + 'description' => 'You must call [CreateLiveMessageGroup](~~2848163~~) to create an interactive message group before you call this operation.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ModifyLiveMessageGroup' => [ - 'summary' => 'Modifies the information about an interactive messaging group.', - 'methods' => [ - 'post', + .'The queries per second (QPS) limit for a single user is 10 calls per second. Exceeding this limit triggers API throttling, which may affect your business. We recommend that you call this operation at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveLiveMessageGroupBand'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:RemoveLiveMessageGroupBand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'RemoveShowFromShowList' => [ + 'summary' => 'Removes an episode from an episode list.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], - ], - [ - 'name' => 'GroupId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], - ], - [ - 'name' => 'ModifyAdmin', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to change the group administrators.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AdminList', + 'name' => 'showIdList', 'in' => 'query', - 'style' => 'simple', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The list of administrators after your change.'."\n", + 'description' => 'The IDs of the shows to delete.', 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the administrator. The ID can be up to 64 bytes in length and can contain letters and digits. Separate multiple administrator IDs with commas (,). You can specify up to three administrator IDs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '["uid1","uid2","uid3"]', - ], + 'items' => ['description' => 'The ID of the show to delete.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], 'required' => false, + 'maxItems' => 80, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ModifyInfo', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to modify the additional information about the group.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you created the production studio in the LIVE console, find the production studio name in the LIVE console by choosing **LIVE Console** > **Production Studio** > **Cloud Production Studio**.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'GroupInfo', + 'name' => 'ShowId', 'in' => 'query', - 'schema' => [ - 'description' => 'The additional information about the group after the modification. The value can be up to 32 KB in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'newmeta', - ], + 'schema' => ['description' => 'The show ID.'."\n" + ."\n" + .'> Obtain the ShowId from the response of the [AddShowIntoShowList](~~2848051~~) operation.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'isBatchMode', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'Specifies whether to delete shows in a batch. Valid values:'."\n" + ."\n" + .'- true: Deletes shows in a batch.'."\n" + ."\n" + .'- false: Deletes a single show.'."\n" + ."\n" + .'> If you do not specify this parameter or leave it empty, a single show is deleted.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + 'ShowId' => ['description' => 'The show ID.', 'type' => 'string', 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + 'failedList' => ['description' => 'A list of IDs of the shows that failed to be deleted and the failure information.', 'type' => 'string', 'example' => 'failedList[Show1, Show2...]', 'title' => ''], + 'successfulShowIds' => ['description' => 'The IDs of the shows that were successfully deleted.', 'type' => 'string', 'example' => 'f1933f16-5467-4308-b3a9-e8d451a90999', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidShowList.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ShowList does not exist, please check and try again.'], + ['errorCode' => 'InvalidShow.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Show does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 84AF36BF-0B39-1F8A-A416-FAC7C484****\\n","errorExample":""}]', - 'title' => 'ModifyLiveMessageGroup', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + 'title' => 'RemoveShowFromShowList', + 'description' => 'This operation deletes a show from a show list. You must first call the [AddShowIntoShowList](~~2848051~~) operation to add the show.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveMessageGroup' => [ - 'summary' => 'Deletes an interactive messaging group.', - 'methods' => [ - 'post', + .'The limit for this operation is 10 queries per second (QPS) per user. API calls that exceed this limit are throttled, which may affect your business. Plan your API calls to avoid exceeding this limit.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## 代码示例'."\n" + .'```'."\n" + .' public static DefaultAcsClient initClient(String accessKeyId, String accessKeySecret) throws ClientException {'."\n" + .' String regionId = "cn-shanghai"; '."\n" + .' DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);'."\n" + .' DefaultAcsClient client = new DefaultAcsClient(profile);'."\n" + .' return client;'."\n" + .' }'."\n" + ."\n" + .'private static void removeShowFromShowList(DefaultAcsClient client, String casterId, String showId) throws ClientException {'."\n" + ."\n" + .' CommonRequest removeShowFromShowListFromShowList = new CommonRequest();'."\n" + .' removeShowFromShowListFromShowList.setSysDomain("live.aliyuncs.com");'."\n" + .' removeShowFromShowListFromShowList.setSysVersion("2016-11-01");'."\n" + .' removeShowFromShowListFromShowList.setSysAction("RemoveShowFromShowList");'."\n" + ."\n" + .' removeShowFromShowListFromShowList.putQueryParameter("ShowId", showId);'."\n" + .' removeShowFromShowListFromShowList.putQueryParameter("CasterId", casterId);'."\n" + ."\n" + .' CommonResponse removeShowFromShowListFromShowListResponse = client.getCommonResponse(removeShowFromShowListFromShowList);'."\n" + .' System.out.println("删除导播台节目,removeShowFromShowListFromShowListResponse:" + JSON.toJSONString(removeShowFromShowListFromShowListResponse));'."\n" + .' }'."\n" + ."\n\n" + .' public void removeShow() throws ClientException {'."\n" + .' String showId = "xxx";'."\n" + .' DefaultAcsClient client = initClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET);'."\n" + .' removeShowFromShowList(client, testCasterId, showId);'."\n" + .' }'."\n" + .'```', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveShowFromShowList'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:RemoveShowFromShowList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"ShowId\\": \\"a2b8e671-2fe5-4642-a2ec-bf93880e****\\",\\n \\"failedList\\": \\"failedList[Show1, Show2...]\\",\\n \\"successfulShowIds\\": \\"f1933f16-5467-4308-b3a9-e8d451a90999\\"\\n}","type":"json"}]', + ], + 'RemoveTerminals' => [ + 'summary' => 'Removes users from a channel.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeCode' => '178423', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], - ], - [ - 'name' => 'GroupId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the group that you want to delete.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'schema' => ['description' => 'The ID of the application. You can specify only one application ID in each request.'."\n", 'type' => 'string', 'required' => true, 'example' => 'aec****', 'title' => ''], ], [ - 'name' => 'OperatorId', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the user who performs the deletion operation. The ID can be up to 64 bytes in length and can contain only letters and digits.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'uid1', - ], + 'schema' => ['description' => 'The ID of the channel. You can specify only one channel ID in each request.'."\n", 'type' => 'string', 'required' => true, 'example' => 'testId', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'TerminalIds', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', + 'description' => 'The IDs of the users that you want to remove.', + 'type' => 'array', + 'items' => ['description' => 'The IDs of the users that you want to remove. Valid values of N: **1 to 30**. Format:'."\n" + ."\n" + .'```'."\n" + ."\n" + .'TerminalIds.1=****'."\n" + .'TerminalIds.2=****'."\n" + .'......'."\n" + .' '."\n" + .'```', 'type' => 'string', 'required' => false, 'example' => '1811****', 'title' => ''], + 'required' => true, + 'maxItems' => 30, + 'title' => '', + 'example' => '', ], ], ], @@ -56174,804 +46508,465 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B95BE680-5A6A-1CAD-8AB1-09DFF5D6****', - ], - 'GroupId' => [ - 'description' => 'The ID of the deleted or non-existent group.'."\n", - 'type' => 'string', - 'example' => 'grouptest', + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.'."\n", 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4AF8'], + 'Terminals' => [ + 'description' => 'The information about the users.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Code' => ['description' => 'The returned status code. A value of 0 indicates that the request is successful. If the request fails, an error message is returned.'."\n", 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'Message' => ['description' => 'The result of removing the specified users from the channel. Valid values:'."\n" + ."\n" + .'* Success'."\n" + .'* Failed'."\n", 'type' => 'string', 'example' => 'Success', 'title' => ''], + 'Id' => ['description' => 'The ID of the user.'."\n", 'type' => 'string', 'example' => '1811****', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'synchronous'], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\",\\n \\"GroupId\\": \\"grouptest\\"\\n}","errorExample":""},{"type":"xml","example":"\\n B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\n grouptest\\n","errorExample":""}]', - 'title' => 'DeleteLiveMessageGroup', - 'description' => '* Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - .'* After you delete an interactive messaging group, it is no longer available. Every user in the group is notified that the group is closed.'."\n" - .'* After you delete an interactive messaging group, messages in the group are retained for 30 days.'."\n" + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4AF8\\",\\n \\"Terminals\\": [\\n {\\n \\"Code\\": 0,\\n \\"Message\\": \\"Success\\",\\n \\"Id\\": \\"1811****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4AF8\\n \\n 0\\n Success\\n 1811****\\n \\n","errorExample":""}]', + 'title' => 'RemoveTerminals', + 'description' => 'You can call this operation to remove one or more users from a channel.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ListLiveMessageGroups' => [ - 'summary' => 'Queries the interactive messaging groups in an interactive messaging application.', - 'methods' => [ - 'post', + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2024-10-18T03:59:13.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2023-08-31T01:48:03.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveTerminals'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:RemoveTerminals', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live:*:{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'RestartCaster' => [ + 'summary' => 'Restarts a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '194270', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], - ], - [ - 'name' => 'SortType', - 'in' => 'query', - 'schema' => [ - 'title' => '排序方式,1为正序,2为逆序', - 'description' => 'The sort order based on the time when the groups were created. Valid values:'."\n" - ."\n" - .'* 1: ascending order'."\n" - .'* 2: descending order'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '2', - 'minimum' => '1', - 'example' => '1', - 'enum' => [ - '1', - '2', - ], - ], - ], - [ - 'name' => 'NextPageToken', - 'in' => 'query', - 'schema' => [ - 'title' => '查询页的起始位置,若为空或者 -1 则默认为首页', - 'description' => 'The starting page number for the query. If you leave this parameter empty, the query starts from the first page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1001', - ], - ], - [ - 'name' => 'GroupStatus', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The status of the groups to query. Default value: 0. Valid values:'."\n" - ."\n" - .'* 0: all groups'."\n" - .'* 1: existing groups'."\n" - .'* 2: deleted groups'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'enum' => [ - '0', - '1', - '2', - ], - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you created a production studio in the Live console, go to **Live console** > **Production Studio** > **Cloud Production Studio** to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B5D95365-5A46-1A6A-BBF5-C7B6BDED****', - ], - 'Hasmore' => [ - 'title' => '是否有下一页', - 'description' => 'Indicates whether the current page is followed by another page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'NextpageToken' => [ - 'description' => 'The starting page number for the next query. This parameter is returned only if the value of Hasmore is true.'."\n", - 'type' => 'string', - 'example' => '1001', - ], - 'GroupList' => [ - 'description' => 'Details about the groups.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Details about the groups.', - 'type' => 'object', - 'properties' => [ - 'GroupId' => [ - 'description' => 'The ID of the group.'."\n", - 'type' => 'string', - 'example' => 'cU9MeBqf****', - ], - 'CreatorId' => [ - 'description' => 'The ID of the group creator.'."\n", - 'type' => 'string', - 'example' => 'user_77', - ], - 'AdminList' => [ - 'description' => 'The list of the IDs of the group administrators.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Administrator.', - 'type' => 'string', - 'example' => 'uid1', - ], - ], - 'Createtime' => [ - 'description' => 'The time when the group was created. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1698299727', - ], - 'GroupName' => [ - 'description' => 'The name of the group.'."\n", - 'type' => 'string', - 'example' => 'mytestgroup', - ], - 'GroupInfo' => [ - 'description' => 'The additional information about the group.'."\n", - 'type' => 'string', - 'example' => 'testgroupinfo', - ], - 'Delete' => [ - 'description' => 'Indicates whether the group is deleted.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '6EBD1AC4-C34D-4AE1-963E-B688A228BE31', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The caster is not open, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidNormType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The norm type is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B5D95365-5A46-1A6A-BBF5-C7B6BDED****\\",\\n \\"Hasmore\\": false,\\n \\"NextpageToken\\": \\"1001\\",\\n \\"GroupList\\": [\\n {\\n \\"GroupId\\": \\"cU9MeBqf****\\",\\n \\"CreatorId\\": \\"user_77\\",\\n \\"AdminList\\": [\\n \\"uid1\\"\\n ],\\n \\"Createtime\\": 1698299727,\\n \\"GroupName\\": \\"mytestgroup\\",\\n \\"GroupInfo\\": \\"testgroupinfo\\",\\n \\"Delete\\": true\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n B5D95365-5A46-1A6A-BBF5-C7B6BDED****\\n false\\n \\n cU9MeBqf****\\n user_77\\n uid1\\n 1698299727\\n mytestgroup\\n testgroupinfo\\n true\\n \\n","errorExample":""}]', - 'title' => 'ListLiveMessageGroups', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + 'title' => 'RestartCaster', + 'description' => '- This operation supports only production studios in playlist mode (carousel) or general mode. Virtual studios are not supported.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- When you restart a production studio, its current settings, such as resolution and screen orientation, are reloaded to restore the previous playback status.'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ListLiveMessageGroupByPage' => [ - 'summary' => 'Queries interactive messaging groups by page.', - 'methods' => [ - 'get', + .'## QPS limits'."\n" + ."\n" + .'This operation is limited to 10 queries per second (QPS) per user. Calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RestartCaster'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:RestartCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}","type":"json"}]', + ], + 'RestartLivePullToPush' => [ + 'summary' => 'Restarts a stream pulling task.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '222094', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeCode' => '257299', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'default' => 'cn-shanghai', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'Region', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", + 'description' => 'The live center to query. Valid values:'."\n" + .'- ap-southeast-1 (Singapore)'."\n" + .'- ap-southeast-5 (Indonesia)'."\n" + .'- cn-beijing (Beijing)'."\n" + .'- cn-shanghai (Shanghai).', + 'enumValueTitles' => ['cn-shenzhen' => 'Shenzhen.', 'cn-qingdao' => 'Qingdao.', 'preregion' => 'Pre-release.', 'cn-beijing' => 'Beijing.', 'cn-shanghai' => 'Shanghai.', 'ap-southeast-1' => 'Singapore.', 'eu-central-1' => 'Germany (Frankfurt).', 'ap-northeast-1' => 'Japan (Tokyo).', 'ap-southeast-5' => 'Indonesia.', 'me-central-1' => 'Saudi Arabia (Riyadh).'], 'type' => 'string', 'required' => true, - 'example' => 'demo', + 'enum' => ['ap-northeast-1', 'ap-southeast-1', 'ap-southeast-5', 'eu-central-1', 'me-central-1', 'cn-beijing', 'cn-shanghai', 'cn-shenzhen', 'cn-qingdao', 'preregion'], + 'example' => 'preregion', + 'title' => '', ], ], [ - 'name' => 'SortType', + 'name' => 'TaskId', 'in' => 'query', 'schema' => [ - 'description' => 'The sort order based on the time when the groups were created. Valid values:'."\n" - ."\n" - .'* 1: ascending order'."\n" - .'* 2: descending order'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '2', - 'minimum' => '1', - 'example' => '1', - 'enum' => [ - '1', - '2', - ], - ], - ], - [ - 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values:\\[1,50].'."\n" - ."\n" - .'Default value: 20.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '50', - 'example' => '20', - ], - ], - [ - 'name' => 'PageNumber', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Valid values: \\[1,10000].'."\n" - ."\n" - .'Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '10000', - 'minimum' => '1', - 'example' => '1', - ], - ], - [ - 'name' => 'GroupStatus', - 'in' => 'query', - 'schema' => [ - 'description' => 'The status of the groups to query. Default value: 0. Valid values:'."\n" - ."\n" - .'* 0: all groups'."\n" - .'* 1: existing groups'."\n" - .'* 2: deleted groups'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'enum' => [ - '0', - '1', - '2', - ], - ], - ], - [ - 'name' => 'DataCenter', - 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", + 'description' => 'The task ID.', 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', + 'required' => true, + 'enum' => [], + 'example' => '6f869419-0692-4fd5-8cf0-66cab659****', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'B5D95365-5A46-1A6A-BBF5-C7B6BDED****', - ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '50', - ], - 'PageNumber' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries returned on each page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'GroupList' => [ - 'description' => 'The list of groups.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'GroupId' => [ - 'description' => 'The ID of the interactive messaging group.'."\n", - 'type' => 'string', - 'example' => 'cU9MeBqf****', - ], - 'CreatorId' => [ - 'description' => 'The ID of the user who created the group.'."\n", - 'type' => 'string', - 'example' => 'user_77', - ], - 'AdminList' => [ - 'description' => 'The list of administrators.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the administrator.'."\n", - 'type' => 'string', - 'example' => 'uid1', - ], - ], - 'Createtime' => [ - 'description' => 'The time when the group was created. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1698299727', - ], - 'GroupName' => [ - 'description' => 'The name of the group.'."\n", - 'type' => 'string', - 'example' => 'mytestgroup', - ], - 'GroupInfo' => [ - 'description' => 'The additional information about the group.'."\n", - 'type' => 'string', - 'example' => 'testgroupinfo', - ], - 'Delete' => [ - 'description' => 'Indicates whether the group is deleted.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - ], - ], - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'a05e6b15-15af-405b-a4a2-01522450****'], + 'TaskId' => ['description' => 'The node ID returned when you create task.', 'type' => 'string', 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => 'Your account does not open Live service yet', 'description' => 'Your account has not yet activated ApsaraVideo Live.'], + ['errorCode' => 'InvalidParam.CodeIllegalDuration', 'errorMessage' => '%s.', 'description' => 'The value of start time should be less than the value of end time .'], + ['errorCode' => 'CodeInvalidAliUid', 'errorMessage' => 'This aliuid does not have a live domain name.', 'description' => 'This aluid does not have a live domain name.'], + ['errorCode' => 'CodeTaskNotExist', 'errorMessage' => 'Task does not exist.', 'description' => 'The task does not exist.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B5D95365-5A46-1A6A-BBF5-C7B6BDED****\\",\\n \\"TotalCount\\": 50,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 20,\\n \\"GroupList\\": [\\n {\\n \\"GroupId\\": \\"cU9MeBqf****\\",\\n \\"CreatorId\\": \\"user_77\\",\\n \\"AdminList\\": [\\n \\"uid1\\"\\n ],\\n \\"Createtime\\": 1698299727,\\n \\"GroupName\\": \\"mytestgroup\\",\\n \\"GroupInfo\\": \\"testgroupinfo\\",\\n \\"Delete\\": true\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n B5D95365-5A46-1A6A-BBF5-C7B6BDED****\\n 50\\n 1\\n 20\\n \\n cU9MeBqf****\\n user_77\\n uid1\\n 1698299727\\n mytestgroup\\n testgroupinfo\\n true\\n \\n","errorExample":""}]', - 'title' => 'ListLiveMessageGroupByPage', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"a05e6b15-15af-405b-a4a2-01522450****\\",\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\"\\n}","type":"json"}]', + 'title' => 'Restart a stream pulling task', + 'description' => '- Calls this operation to restart a stream pulling task.'."\n" + .'- You can restart a task that is running (including tasks in abnormal retry status) or stopped. A running task is stopped and then started again. A non-running task is started directly.'."\n" + .'- If the task has not reached the configured start time, the restart does not take effect.'."\n" + .'- The restarted task runs based on the latest task configuration, which causes stream ingest interruption.'."\n" + .'- After a video-on-demand task is restarted, playback starts from the beginning based on the latest playlist. You can call the update operation to set the video index and video playback progress to resume playback.'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ModifyLiveMessageGroupBand' => [ - 'summary' => 'Modifies the mute status of users.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [ + ['createdAt' => '2025-04-27T08:03:58.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RestartLivePullToPush'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:RestartLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'ResumeLiveStream' => [ + 'summary' => 'Resumes stream ingest for a specified stream.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'LiveStreamType', 'in' => 'query', 'schema' => [ - 'description' => 'The group ID.'."\n", + 'description' => 'Specifies whether the stream is a streamer ingest stream or a client playback stream. Currently supported value: **publisher** (streamer ingest).', + 'enumValueTitles' => ['publisher' => 'streamer ingest.'], 'type' => 'string', 'required' => true, - 'example' => 'grouptest', - ], - ], - [ - 'name' => 'BannedAll', - 'in' => 'query', - 'schema' => [ - 'title' => '是否全员禁言', - 'description' => 'Specifies whether to mute all users.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - ], - [ - 'name' => 'BannnedUsers', - 'in' => 'query', - 'style' => 'simple', - 'schema' => [ - 'title' => '被禁言的用户', - 'description' => 'The ID of the user whom you want to mute. Separate multiple user IDs with commas (,). You can specify up to 30 users IDs.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Users who are muted, separated by commas (,). Up to 30 users.', - 'type' => 'string', - 'required' => false, - 'example' => '["uid1","uid2"]', - ], - 'required' => false, + 'enum' => ['publisher'], + 'example' => 'publisher', + 'title' => '', ], ], [ - 'name' => 'ExceptUsers', + 'name' => 'AppName', 'in' => 'query', - 'style' => 'simple', - 'schema' => [ - 'title' => '不被禁言的用户', - 'description' => 'The ID of the user whom you do not want to mute when you set the BannedAll parameter to true. Separate multiple user IDs with commas (,). You can specify up to 30 users IDs.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Users who are not muted when global mute is enabled, separated by commas (,). Up to 30 users allowed.', - 'type' => 'string', - 'required' => false, - 'example' => '["uid3"]', - ], - 'required' => false, - ], + 'schema' => ['description' => 'The name of the application to which the ingest stream belongs. You can set this parameter to * to indicate all AppName values (no restriction on AppName). You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The name of the ingest stream. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16BFE188-B193-4C3C-ADC5-79A7E31486EA', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + 'errorCodes' => [], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16BFE188-B193-4C3C-ADC5-79A7E31486EA\\"\\n}","type":"json"}]', + 'title' => 'Resume stream ingest for a live stream', + 'description' => 'Calls this operation to resume stream ingest for a specified stream. This operation currently supports only publisher (streamer ingest).'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 30 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ResumeLiveStream'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ResumeLiveStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 84AF36BF-0B39-1F8A-A416-FAC7C484****\\n","errorExample":""}]', - 'title' => 'ModifyLiveMessageGroupBand', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'DescribeLiveMessageGroupBand' => [ - 'summary' => 'Queries the mute status of users.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'RollbackLiveStagingConfig' => [ + 'summary' => 'Rolls back the configurations of an accelerated domain name in the canary release environment.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging group.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => true, 'example' => 'developer.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'FunctionName', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The name of the feature. To obtain the feature name, call the [DescribeLiveDomainStagingConfig](~~297374~~) operation.', 'type' => 'string', 'required' => true, 'example' => 'aliauth', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '021D1FE7-2E87-16AC-9364-4E7EA47C****', - ], - 'GroupId' => [ - 'description' => 'The group ID.'."\n", - 'type' => 'string', - 'example' => 'grouptest', - ], - 'BannedUserList' => [ - 'description' => 'The list of users that were muted separately, but not by muting the entire group.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the users.'."\n", - 'type' => 'string', - 'example' => '["uid1","uid2"]', - ], - ], - 'UnbannedUserList' => [ - 'description' => 'The list of users who were not muted when the entire group was muted.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the users.'."\n", - 'type' => 'string', - 'example' => '["uid3"]', - ], - ], - 'IsbannedAll' => [ - 'description' => 'Indicates whether all users in the interactive messaging group are muted.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + 404 => [ + ['errorCode' => 'StagingConfig.NotFound', 'errorMessage' => 'The staging configuration does not exist.', 'description' => ''], ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ], + 'title' => 'RollbackLiveStagingConfig', + 'description' => '## Usage notes'."\n" + ."\n" + .'You must first call the [DescribeLiveDomainStagingConfig](~~297374~~) operation to obtain the feature name. Then, you can call this operation to roll back the configurations in the canary release environment.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 30 times per second per user. API calls that exceed this limit are throttled. This can affect your business. For more information, see [QPS limits](~~343507~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RollbackLiveStagingConfig'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:RollbackLiveStagingConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"021D1FE7-2E87-16AC-9364-4E7EA47C****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"BannedUserList\\": [\\n \\"[\\\\\\"uid1\\\\\\",\\\\\\"uid2\\\\\\"]\\"\\n ],\\n \\"UnbannedUserList\\": [\\n \\"[\\\\\\"uid3\\\\\\"]\\"\\n ],\\n \\"IsbannedAll\\": false\\n}","errorExample":""},{"type":"xml","example":"\\n 021D1FE7-2E87-16AC-9364-4E7EA47C****\\n grouptest\\n [\\"uid1\\",\\"uid2\\"]\\n [\\"uid3\\"]\\n false\\n","errorExample":""}]', - 'title' => 'DescribeLiveMessageGroupBand', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","type":"json"}]', ], - 'CheckLiveMessageUsersOnline' => [ - 'summary' => 'Queries whether one or more specified users are online.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'SendLike' => [ + 'summary' => 'Call SendLike to configure system like messages.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -56979,479 +46974,377 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'in' => 'formData', + 'schema' => ['title' => '', 'description' => 'Interactive Messages application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***'], ], [ - 'name' => 'UserIds', - 'in' => 'query', - 'style' => 'simple', - 'schema' => [ - 'title' => '需要查询的用户,范围为1-10个', - 'description' => 'The list of users that you want to query.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The user ID. Separate multiple user IDs with commas (,). The number of users to query in each call can range from 1 to 10.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'uid', - ], - 'required' => true, - 'maxItems' => 10, - 'minItems' => 1, - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['title' => '', 'description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F'], ], [ - 'name' => 'DataCenter', - 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'name' => 'OperatorUserId', + 'in' => 'formData', + 'schema' => ['title' => '', 'description' => 'Operator user ID.', 'type' => 'string', 'required' => false, 'example' => 'de1**a0'], + ], + [ + 'name' => 'Count', + 'in' => 'formData', + 'schema' => ['title' => '', 'description' => 'Number of likes.', 'type' => 'string', 'required' => true, 'example' => '10'], + ], + [ + 'name' => 'BroadCastType', + 'in' => 'formData', + 'schema' => ['title' => '', 'description' => 'System message diffusion type. Valid values:'."\n" + ."\n" + .'- 0: No diffusion.'."\n" + .'- 1: Diffusion to specified users.'."\n" + .'- 2: Diffusion to a group.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '178F572F-AECF-100B-937A-B8047B4D****', - ], - 'UserList' => [ - 'description' => 'The list of users queried.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Online' => [ - 'description' => 'Indicates whether the user is online.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'UserId' => [ - 'description' => 'The user ID.'."\n", - 'type' => 'string', - 'example' => 'uid1', - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', + 'type' => 'object', + 'properties' => [ + 'LikeCount' => ['description' => 'Number of likes.', 'type' => 'integer', 'format' => 'int32', 'example' => '10', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"LikeCount\\": 10\\n }\\n}","type":"json"}]', + 'title' => 'SendLike', + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second (QPS) per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can call the API properly to avoid this issue. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendLike'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:SendLike', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"178F572F-AECF-100B-937A-B8047B4D****\\",\\n \\"UserList\\": [\\n {\\n \\"Online\\": false,\\n \\"UserId\\": \\"uid1\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 178F572F-AECF-100B-937A-B8047B4D****\\n \\n uid1\\n false\\n \\n","errorExample":""}]', - 'title' => 'CheckLiveMessageUsersOnline', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'CheckLiveMessageUsersInGroup' => [ - 'summary' => 'Queries whether a user is in an interactive messaging group.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'SendLiveMessageGroup' => [ + 'summary' => 'Sends a message to a group.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeCode' => '198196', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The ID of the interactive messaging application that is used to receive the message.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'demo'], ], [ 'name' => 'GroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'schema' => ['description' => 'The ID of the group that receives the message.'."\n" + ."\n" + .'> Make sure that the specified GroupId is available. Otherwise, a ResourceNotExist error is returned.', 'type' => 'string', 'required' => true, 'minLength' => 1, 'title' => '', 'example' => 'grouptest'], ], [ - 'name' => 'UserIds', + 'name' => 'SenderId', 'in' => 'query', - 'style' => 'simple', - 'schema' => [ - 'title' => '需要查询的UserId,查询个数范围为1-10', - 'description' => 'The list of users that you want to query.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The user ID. Separate multiple user IDs with commas (,). The number of users to query in each call can range from 1 to 10.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'uid', - ], - 'required' => true, - 'maxItems' => 10, - 'minItems' => 1, - ], + 'schema' => ['description' => 'The ID of the user who sends the message. The ID can be up to 64 bytes in length and can contain letters and digits.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'uid1'], + ], + [ + 'name' => 'SenderMetaInfo', + 'in' => 'query', + 'schema' => ['description' => 'The additional information about the user who sends the message. The value can be up to 512 bytes in length.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'uid1meta1'], + ], + [ + 'name' => 'Body', + 'in' => 'query', + 'schema' => ['description' => 'The message body. It can be up to 15 KB in length.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'hello,group'], + ], + [ + 'name' => 'MsgType', + 'in' => 'query', + 'schema' => ['description' => 'The message type. The total number of message types sent within a single group cannot exceed 30.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'title' => '', 'example' => '1'], + ], + [ + 'name' => 'MsgTid', + 'in' => 'query', + 'schema' => ['description' => 'The unique identifier of the message. This parameter is used to delete the message. The ID can contain only letters and digits and can be up to 64 bytes in length.', 'type' => 'string', 'required' => false, 'title' => '', 'example' => '169830****'], + ], + [ + 'name' => 'StaticsIncrease', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The contribution of the message to the increase in the number of messages of this type. Default value: 1.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1'], + ], + [ + 'name' => 'Weight', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The weight of the message. Default value: 1.'."\n" + ."\n" + .'- For low-priority messages such as likes, you can set the weight to 1.'."\n" + .'- For regular text messages such as bullet comments, you can set the weight to 5.'."\n" + .'- For high-priority messages such as red envelopes and gifts, you can set the weight to 1000000.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '1'], + ], + [ + 'name' => 'NoStorage', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'Specifies whether to disable message storage. Valid values: true and false. Default value: false, which indicates that the message is stored for a validity period of 30 days. You can find the message in the response of the ListLiveMessageGroupMessages operation. If you do not need to store the message, set this parameter to true.', 'type' => 'boolean', 'required' => false, 'example' => 'false'], + ], + [ + 'name' => 'NoCache', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'Specifies whether to disable message caching to the list of the latest messages in the group. Valid values: true and false. Default value: false, which indicates that the message is cached.', 'type' => 'boolean', 'required' => false, 'example' => 'false'], ], [ 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The data center, which must be the same as the data center specified in [CreateLiveMessageApp](~~2848162~~). Valid values:'."\n" + ."\n" + .'- cn-shanghai: Shanghai'."\n" + .'- ap-southeast-1: Singapore', 'type' => 'string', 'required' => false, 'title' => '', 'example' => 'cn-shanghai'], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => '', + 'description' => 'The returned results.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'F1F68D81-1543-1FE4-B56E-82200DD2****', - ], - 'Users' => [ - 'description' => 'The list of users queried.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'example' => 'uid1', - ], - 'Online' => [ - 'description' => 'Indicates whether the user is in the group.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - ], - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => 'E4C1245F-597B-1BD1-B9BB-9D220E99****'], + 'MsgTid' => ['description' => 'The unique identifier of the message, which can be used to delete the message. The ID can contain only letters and digits and can be up to 64 bytes in length.', 'type' => 'string', 'title' => '', 'example' => '169830****'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'ErrorTooManyMsgTypes', 'errorMessage' => '%s.', 'description' => ''], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F1F68D81-1543-1FE4-B56E-82200DD2****\\",\\n \\"Users\\": [\\n {\\n \\"UserId\\": \\"uid1\\",\\n \\"Online\\": false\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n F1F68D81-1543-1FE4-B56E-82200DD2****\\n \\n uid1\\n false\\n \\n","errorExample":""}]', - 'title' => 'CheckLiveMessageUsersInGroup', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"E4C1245F-597B-1BD1-B9BB-9D220E99****\\",\\n \\"MsgTid\\": \\"169830****\\"\\n}","type":"json"}]', + 'title' => 'SendLiveMessageGroup', + 'description' => 'Before you call this operation, you must call [](t2586945.xdita#)to create an interactive messaging group. You can send messages to a group only if the group is active, which means that one or more users have joined the group. Offline messages are not supported. If you fail to send a message, check whether there are users in the group. If you want to send an offline message, we recommend that you store the message locally and send it after users come online.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ListLiveMessageGroupUsers' => [ - 'summary' => 'Queries the users in an interactive messaging group.', - 'methods' => [ - 'post', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you consider this limit when calling this operation.', + 'changeSet' => [ + ['createdAt' => '2025-01-23T12:00:00.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2025-01-13T05:40:40.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-01-09T03:34:27.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-12-13T07:06:40.000Z', 'description' => 'Request parameters changed'], ], - 'schemes' => [ - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendLiveMessageGroup'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:SendLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'SendLiveMessageUser' => [ + 'summary' => 'Sends a message to a specified user. The user is identified by ReceiverId.'."\n", + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '194318', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeCode' => '194332', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application to query.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The ID of the interactive messaging application in which the message is sent.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'ReceiverId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the group to query.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'schema' => ['title' => '', 'description' => 'The ID of the user who receives the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n" + ."\n" + .'> Make sure that the user who receives the message is online. You can call the CheckLiveMessageUsersOnline operation to query whether the user is online.'."\n", 'type' => 'string', 'required' => true, 'example' => 'uid2'], ], [ - 'name' => 'PageSize', + 'name' => 'SenderId', 'in' => 'query', - 'schema' => [ - 'title' => '一次显示的用户数量,最小值10,最大值50', - 'description' => 'The number of entries per page. Valid values: **10 to 50**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '30', - 'minimum' => '10', - 'example' => '10', - ], + 'schema' => ['title' => '', 'description' => 'The ID of the user who sends the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", 'type' => 'string', 'required' => true, 'example' => 'uid1'], ], [ - 'name' => 'SortType', + 'name' => 'SenderInfo', 'in' => 'query', - 'schema' => [ - 'title' => '排序方式,1为正序,2为逆序', - 'description' => 'The sort order based on the time when the users joined the group. Valid values:'."\n" - ."\n" - .'* 1: ascending order'."\n" - .'* 2: descending order'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '2', - 'minimum' => '1', - 'example' => '1', - 'enum' => [ - '1', - '2', - ], - ], + 'schema' => ['title' => '', 'description' => 'The additional information about the user who sends the message. It can be up to 512 bytes in length.'."\n", 'type' => 'string', 'required' => false, 'example' => 'uid1meta1'], ], [ - 'name' => 'NextPageToken', + 'name' => 'Body', 'in' => 'query', - 'schema' => [ - 'title' => '查询页的起始位置,若为空则默认为首页', - 'description' => 'The starting page number for the query. If you leave this parameter empty, the query starts from the first page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['title' => '', 'description' => 'The message body. It can be up to 15 KB in length.'."\n", 'type' => 'string', 'required' => false, 'example' => 'hello, user'], + ], + [ + 'name' => 'MsgType', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The message type.'."\n", 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '2'], + ], + [ + 'name' => 'MsgTid', + 'in' => 'query', + 'schema' => ['title' => '', 'description' => 'The ID of the message, which is a unique identifier that can be used to delete the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", 'type' => 'string', 'required' => false, 'example' => '169830****'], ], [ 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'HighReliability', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to set the message as a highly reliable message. A highly reliable message ensures that success is returned only after the receiver has received the message and responded. If the receiver does not respond within 3 seconds, failure is returned.'."\n" + ."\n" + .'* true: sets the message as a highly reliable message.'."\n" + .'* false (default): does not set the message as a highly reliable message.'."\n" + ."\n" + .'> This parameter is supported only by the client SDK V1.5.1 and later. When you send a message to a client with an earlier SDK version, the message can be successfully sent without waiting for an acknowledgement (ACK) response.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + ], + [ + 'name' => 'Storage', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to store the message.'."\n" + ."\n" + .'* true: stores the message.'."\n" + .'* false (default): does not store the message.'."\n", 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'A1D75BEA-1329-116F-B29C-76F3F200****', - ], - 'GroupId' => [ - 'description' => 'The ID of the group queried.'."\n", - 'type' => 'string', - 'example' => 'grouptest', - ], - 'NextPageToken' => [ - 'title' => '下一页的起始位置,若没有下一页则为0', - 'description' => 'The starting page number for the next query. A value of 0 indicates that no further pages can be queried.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'Hasmore' => [ - 'title' => '是否有下一页', - 'description' => 'Indicates whether the current page is followed by another page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'UserList' => [ - 'description' => 'Details about the users.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'title' => '查询的用户Id', - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'example' => 'uid1', - ], - 'UserInfo' => [ - 'title' => '用户扩展信息', - 'description' => 'The additional information about the user.'."\n", - 'type' => 'string', - 'example' => 'info1', - ], - ], - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '6CFDE7AB-571A-14EA-B072-989FF753****'], + 'MsgTid' => ['description' => 'The ID of the message, which is a unique identifier that can be used to delete the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", 'type' => 'string', 'example' => '169830****', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], - 420 => [ - [ - 'errorCode' => 'SuperLargeGroup', - 'errorMessage' => '%s.', - ], + 408 => [ + ['errorCode' => 'UserNotAck', 'errorMessage' => '%s.', 'description' => 'Send a highly reliable message to the user, but the user does not respond.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6CFDE7AB-571A-14EA-B072-989FF753****\\",\\n \\"MsgTid\\": \\"169830****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 6CFDE7AB-571A-14EA-B072-989FF753****\\n","errorExample":""}]', + 'title' => 'SendLiveMessageUser', + 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [ + ['createdAt' => '2025-01-23T12:00:01.000Z', 'description' => 'Error codes changed, Request parameters changed, Response parameters changed'], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A1D75BEA-1329-116F-B29C-76F3F200****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"NextPageToken\\": 0,\\n \\"Hasmore\\": false,\\n \\"UserList\\": [\\n {\\n \\"UserId\\": \\"uid1\\",\\n \\"UserInfo\\": \\"info1\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n A1D75BEA-1329-116F-B29C-76F3F200****\\n grouptest\\n 0\\n false\\n \\n uid1\\n info1\\n \\n","errorExample":""}]', - 'title' => 'ListLiveMessageGroupUsers', - 'description' => '* Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - .'* For a super group, which has more than 2,000 users, the user list cannot be queried. In addition, the notifications about users entering or leaving the group are sent at an interval of at least of 5 seconds. These notifications display the accurate number of users in the group for the time being, but do not display the list of all users entering or leaving the group. Once a group is upgraded to a super group, the user list of the group is immediately cleared. The super group cannot be restored to a normal group until all users in the group leave the group (that is, the group is closed). After you reopen the group, it is restored to a normal group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ListLiveMessageGroupMessages' => [ - 'summary' => 'Queries the messages sent in a group.', - 'methods' => [ - 'post', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendLiveMessageUser'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:SendLiveMessageUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + ], + 'SendMessageToGroup' => [ + 'summary' => 'Call SendMessageToGroup to send messages to all members of a message group.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -57459,759 +47352,875 @@ ], 'operationType' => 'read', 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - ], + 'systemTags' => ['operationType' => 'get'], 'parameters' => [ [ 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application to query.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'in' => 'formData', + 'schema' => ['description' => 'Interactive Messages application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ 'name' => 'GroupId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the group to query.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'in' => 'formData', + 'schema' => ['description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'title' => '一次显示的消息数量,最小10,最大50', - 'description' => 'The number of entries per page. Valid values: **10 to 50**.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '50', - 'minimum' => '10', - 'example' => '10', - ], + 'name' => 'OperatorUserId', + 'in' => 'formData', + 'schema' => ['description' => 'Operator user ID.', 'type' => 'string', 'required' => true, 'example' => 'de1**a0', 'title' => ''], ], [ - 'name' => 'SortType', + 'name' => 'Type', + 'in' => 'formData', + 'schema' => ['description' => 'Message type. When the type field value is less than or equal to 10000, it indicates a system message. When the value is greater than 10000, it indicates a custom message.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '12000', 'title' => ''], + ], + [ + 'name' => 'Data', + 'in' => 'formData', + 'schema' => ['description' => 'Message body, JSONString type.', 'type' => 'string', 'required' => true, 'example' => 'test', 'title' => ''], + ], + [ + 'name' => 'SkipAudit', 'in' => 'query', + 'schema' => ['description' => 'Specifies whether the current message content requires Alibaba Cloud Content Moderation. Valid values:'."\n" + ."\n" + .'- **true**: Content Moderation is not required.'."\n" + .'- **false** (default): Content Moderation is required.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'title' => '排序方式,1为正序,2为逆序', - 'description' => 'The sort order based on the time when the messages were sent. Valid values:'."\n" - ."\n" - .'* 1: ascending order'."\n" - .'* 2: descending order'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '2', - 'minimum' => '1', - 'example' => '1', - 'enum' => [ - '1', - '2', + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', + 'type' => 'object', + 'properties' => [ + 'MessageId' => ['title' => '', 'description' => 'Message ID.', 'type' => 'string', 'example' => 'qt***'], + ], + 'title' => '', + 'example' => '', + ], ], + 'example' => '', ], ], + ], + 'title' => 'SendMessageToGroup', + 'description' => '## QPS limits'."\n" + ."\n" + .'The single-user QPS limit for this API is 100 queries per second (QPS). If the limit is exceeded, API calls will be throttled, which may affect your business. You can call the API properly to avoid this issue. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2023-03-14T02:59:22.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2022-12-04T11:00:37.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-09-08T15:22:52.000Z', 'description' => 'OpenAPI offline'], + ], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'NextPageToken', - 'in' => 'query', - 'schema' => [ - 'title' => '查询页的起始位置,若为空则默认为首页', - 'description' => 'The starting page number for the query. If you leave this parameter empty, the query starts from the first page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:SendMessageToGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"MessageId\\": \\"qt***\\"\\n }\\n}","type":"json"}]', + ], + 'SendMessageToGroupUsers' => [ + 'summary' => 'Call SendMessageToGroupUsers to send messages to specified users in a message group.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'MsgType', - 'in' => 'query', - 'schema' => [ - 'title' => '需要查询的消息类型,若为空则默认为全部类型', - 'description' => 'The type of messages that you want to query. If you leave this parameter empty, all types of messages are queried.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', - ], + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'get'], + 'parameters' => [ + [ + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive Messages application', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'BeginTime', - 'in' => 'query', - 'schema' => [ - 'title' => '查询起始时间,若为空则默认为最早时间', - 'description' => 'The beginning of the time range to query. The value is a UNIX timestamp. Unit: seconds. If you leave this parameter empty, the earliest available time is used.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1697783235', - ], + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'Message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - 'name' => 'EndTime', - 'in' => 'query', + 'name' => 'Type', + 'in' => 'formData', + 'schema' => ['description' => 'Message type. When the type field value is less than or equal to 10000, it indicates a system message. When the value is greater than 10000, it indicates a custom message.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '12000', 'title' => ''], + ], + [ + 'name' => 'OperatorUserId', + 'in' => 'formData', + 'schema' => ['description' => 'Operator user ID.', 'type' => 'string', 'required' => true, 'example' => 'de1**a0', 'title' => ''], + ], + [ + 'name' => 'ReceiverIdList', + 'in' => 'formData', + 'style' => 'simple', 'schema' => [ - 'title' => '查询结束时间,若为空则默认为最晚时间', - 'description' => 'The end of the time range to query. The value is a UNIX timestamp. Unit: seconds. If you leave this parameter empty, the latest available time is used.'."\n", - 'type' => 'integer', - 'format' => 'int64', + 'description' => 'User list.', + 'type' => 'array', + 'items' => ['description' => 'ID of the user receiving the message.', 'type' => 'string', 'required' => false, 'example' => 'hj***,3h***', 'title' => ''], 'required' => false, - 'example' => '1698301635', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'DataCenter', + 'name' => 'Data', + 'in' => 'formData', + 'schema' => ['description' => 'Message body in JSONString format.', 'type' => 'string', 'required' => true, 'example' => 'test', 'title' => ''], + ], + [ + 'name' => 'SkipAudit', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'Specifies whether the current message content requires Content Moderation by Alibaba Cloud. Valid values:'."\n" + ."\n" + .'- **true**: Content Moderation is not required.'."\n" + .'- **false** (default): Content Moderation is required.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '1668FDC3-63D7-102F-B5D4-3D2F91D1****', - ], - 'GroupId' => [ - 'description' => 'The ID of the group queried.'."\n", - 'type' => 'string', - 'example' => 'grouptest', - ], - 'NextPageToken' => [ - 'title' => '下一页的起始位置,若没有下一页则为0', - 'description' => 'The starting page number for the next query. A value of 0 indicates that no further pages can be queried.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'Hasmore' => [ - 'title' => '是否有下一页', - 'description' => 'Indicates whether the current page is followed by another page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'MessageList' => [ - 'description' => 'Details about the messages.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Sender' => [ - 'description' => 'The details about the user who sent the message.'."\n", - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'description' => 'The ID of the user who sent the message.'."\n", - 'type' => 'string', - 'example' => 'uid2', - ], - 'UserInfo' => [ - 'description' => 'The additional information about the user who sent the message.'."\n", - 'type' => 'string', - 'example' => 'testusermeta2', - ], - ], - ], - 'Body' => [ - 'description' => 'The message body.'."\n", - 'type' => 'string', - 'example' => 'step2 helo, cc group', - ], - 'Timestamp' => [ - 'description' => 'The time when the message was sent. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1697081134', - ], - 'MsgTid' => [ - 'description' => 'The ID of the message.'."\n", - 'type' => 'string', - 'example' => 'c-1-1-0', - ], - 'MsgType' => [ - 'description' => 'The type of the message.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2', - ], - 'SeqNumber' => [ - 'description' => 'The sequence number of the message.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'TotalMessages' => [ - 'description' => 'The total number of messages.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', + 'type' => 'object', + 'properties' => [ + 'MessageId' => ['title' => '', 'description' => 'Message ID.', 'type' => 'string', 'example' => 'hp***'], ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"MessageId\\": \\"hp***\\"\\n }\\n}","type":"json"}]', + 'title' => 'SendMessageToGroupUsers', + 'description' => '## QPS limits'."\n" + ."\n" + .'The single-user QPS limit for this API is 100 queries per second (QPS). If this limit is exceeded, API calls will be throttled, which may affect your business. You can make API calls at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2023-03-28T07:17:22.000Z', 'description' => 'Response parameters changed'], + ['createdAt' => '2022-12-05T08:42:18.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2022-12-04T11:00:37.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendMessageToGroupUsers'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:SendMessageToGroupUsers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1668FDC3-63D7-102F-B5D4-3D2F91D1****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"NextPageToken\\": 0,\\n \\"Hasmore\\": false,\\n \\"MessageList\\": [\\n {\\n \\"Sender\\": {\\n \\"UserId\\": \\"uid2\\",\\n \\"UserInfo\\": \\"testusermeta2\\"\\n },\\n \\"Body\\": \\"step2 helo, cc group\\",\\n \\"Timestamp\\": 1697081134,\\n \\"MsgTid\\": \\"c-1-1-0\\",\\n \\"MsgType\\": 2,\\n \\"SeqNumber\\": 1,\\n \\"TotalMessages\\": 1\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 1668FDC3-63D7-102F-B5D4-3D2F91D1****\\n grouptest\\n 0\\n false\\n \\n \\n uid2\\n testusermeta2\\n \\n step2 helo, cc group\\n 1697081134\\n c-1-1-0\\n 2\\n 1\\n 1\\n \\n","errorExample":""}]', - 'title' => 'ListLiveMessageGroupMessages', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'UnbanLiveMessageGroup' => [ - 'summary' => 'Unmutes a group.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'SetCasterChannel' => [ + 'summary' => 'Sets a channel for a production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '237380', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The production studio name in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application.'."\n" - ."\n" - .'> Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The channel ID.'."\n" + ."\n" + .'The reference ID for the layout scene. You can set a maximum of one resource for each channel. The total number of channels is determined when you create the production studio. The format is \\`RV01\\` to \\`RV12\\`.', 'type' => 'string', 'required' => true, 'example' => 'RV01', 'title' => ''], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the video source.', 'type' => 'string', 'required' => false, 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', 'title' => ''], + ], + [ + 'name' => 'SeekOffset', + 'in' => 'query', + 'schema' => ['description' => 'This parameter applies only to video files, not live streams. The value must be greater than or equal to 0. It specifies the offset from the first frame at which to start reading the file. Unit: milliseconds (ms).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1000', 'title' => ''], + ], + [ + 'name' => 'PlayStatus', + 'in' => 'query', + 'schema' => ['description' => 'The playback status. This parameter applies only to video files, not live streams. Valid values:'."\n" + ."\n" + .'- **1** (default): Playback.'."\n" + ."\n" + .'- **0**: Pause.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'FaceBeauty', + 'in' => 'query', + 'schema' => ['description' => 'The facial retouching settings. Valid values: 0 (whole), 1 (skin smoothing), 2 (skin whitening), 3 (dark circle removal), and 4 (nasolabial fold removal).', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'DuplicateLocationID', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter LocationID duplicate. Check and try again.'], + ['errorCode' => 'InvalidParameter.PlayStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PlayStatus is invalid, please check and try again.'], + ['errorCode' => 'InvalidChannelId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChannelId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.SeekOffset', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SeekOffset is invalid, please check and try again.'], + ['errorCode' => 'IncorrectChannel.Disable', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The Channel is in a non-settable state, please check and try again.'], + ['errorCode' => 'ResourceOfChannelExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Resource already exists in the channel, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 84AF36BF-0B39-1F8A-A416-FAC7C484****\\n","errorExample":""}]', - 'title' => 'UnbanLiveMessageGroup', - 'description' => '* Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - .'* If a user was muted by calling the AddLiveMessageGroupBand operation, the user remains muted even after you call the UnbanLiveMessageGroup operation.'."\n" + 'title' => 'SetCasterChannel', + 'description' => 'Call the [CreateCaster](~~2848009~~) operation to create a production studio. You can then call this operation to set a channel for the production studio.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'RecoverLiveMessageDeletedGroup' => [ - 'summary' => 'Restores a deleted interactive messaging group.', - 'methods' => [ - 'post', + .'The queries per second (QPS) limit for this operation is 10 for each user. Exceeding this limit triggers throttling, which may affect your business. Call this operation at a reasonable rate to prevent interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetCasterChannel'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetCasterChannel', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'SetCasterConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '227785', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeCode' => '107215', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the group that you want to restore.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to the **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'CasterName', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The name of the production studio.', 'type' => 'string', 'required' => false, 'example' => 'liveCaster****', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain for the streamer.'."\n" + ."\n" + .'Configure the domain name before you start the production studio. If you leave this parameter empty, the domain name configuration of the production studio is cleared.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'TranscodeConfig', + 'in' => 'query', + 'schema' => ['description' => 'The transcoding configuration.'."\n" + ."\n" + .'A JSON string. The fields in the struct must be in UpperCamelCase. If you leave this parameter empty, the transcoding configuration is cleared. If no transcoding template is specified, an error is reported when you start the production studio.', 'type' => 'string', 'required' => false, 'example' => '{"casterTemplate": "lp_ld"}', 'title' => ''], + ], + [ + 'name' => 'RecordConfig', + 'in' => 'query', + 'schema' => ['description' => 'The recording configuration. This parameter is a JSON string. The elements are described as follows:'."\n" + ."\n" + .'- **endpoint**: The API endpoint of the Alibaba Cloud service.'."\n" + ."\n" + .'- **ossBucket**: The name of the OSS bucket.'."\n" + ."\n" + .'- **videoFormat**: The file formats of the videos that can be exported. Example: `[{\\"OssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{StartTime}_{EndTime}\\",\\"Format\\":\\"m3u8\\",\\"CycleDuration\\":21600,\\"SliceOssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{UnixTimestamp}\\"},{\\"OssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{StartTime}_{EndTime}\\",\\"Format\\":\\"flv\\",\\"CycleDuration\\":21600}]`.'."\n" + ."\n" + .'- **interval**: The time interval. Unit: milliseconds (ms).'."\n" + ."\n" + .'> If you leave this parameter empty, the recording feature is disabled and the existing recording configuration is cleared.', 'type' => 'string', 'required' => false, 'example' => '{ "endpoint": "http://oss-cn-********.aliyuncs.com/api", "ossBucket****": "liveBucket****", "VideoFormat":[{\\"OssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{StartTime}_{EndTime}\\",\\"Format\\":\\"m3u8\\",\\"CycleDuration\\":21600,\\"SliceOssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{UnixTimestamp}\\"},{\\"OssObjectPrefix\\":\\"record/{AppName}/{StreamName}/{StartTime}_{EndTime}\\",\\"Format\\":\\"flv\\",\\"CycleDuration\\":21600}] "interval": 5 }', 'title' => ''], + ], + [ + 'name' => 'Delay', + 'in' => 'query', + 'schema' => ['description' => 'The stream delay. Unit: seconds.'."\n" + ."\n" + .'- **0** (default): Disables stream delay.'."\n" + ."\n" + .'- A value greater than **0**: Enables stream delay.'."\n" + ."\n" + .'- **Empty**: Clears the stream delay configuration.'."\n" + ."\n" + .'> The maximum value is 300.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'UrgentMaterialId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the standby video, which is a media asset. If you leave this parameter empty, the standby video configuration is cleared.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671', 'title' => ''], + ], + [ + 'name' => 'UrgentLiveStreamUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL of the standby live stream.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://demo.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'SideOutputUrl', + 'in' => 'query', + 'schema' => ['description' => 'The custom ingest URL for bypass output from the production studio. If you leave this parameter empty, the system uses the automatically generated ingest URL for the output.'."\n" + ."\n" + .'> The SideOutputUrl parameter supports only stream ingest over RTMP.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://****/aliyundoc.com:8000/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', 'title' => ''], + ], + [ + 'name' => 'SideOutputUrlList', + 'in' => 'query', + 'schema' => ['description' => 'The list of ingest URLs for multi-channel stream ingest. The URLs can be ingest URLs of Alibaba Cloud CDN or third-party CDNs. You can add up to 20 RTMP ingest URLs for a production studio.'."\n" + ."\n" + .'> Specify multiple URLs in an array. Example: \\["rtmp\\://domain/app1/stream1","rtmp\\://domain/app2/stream2"].', 'type' => 'string', 'required' => false, 'example' => 'rtmp://domain/app/stream?***', 'title' => ''], + ], + [ + 'name' => 'CallbackUrl', + 'in' => 'query', + 'schema' => ['description' => 'The webhook address. To receive callback notifications, enter a valid address that accepts HTTP requests. If you leave this parameter empty, callback notifications for the production studio are canceled.'."\n" + ."\n" + .'> For more information about production studio callbacks, see [Callback information for production studios](~~213633~~).', 'type' => 'string', 'required' => false, 'example' => 'http://****/aliyundoc.com:8000/caster/4a82a3d1b7f0462ea37348366201****?auth_key=1608953344-0-0-53f0758162964516ac850f2ddc3f****', 'title' => ''], + ], + [ + 'name' => 'ProgramEffect', + 'in' => 'query', + 'schema' => ['description' => 'The flag that indicates whether the carousel is effective.'."\n" + ."\n" + .'- **0**: Not effective.'."\n" + ."\n" + .'- **1**: Effective.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'ProgramName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the carousel. You can configure this parameter when you use the carousel feature.', 'type' => 'string', 'required' => false, 'example' => 'program_name', 'title' => ''], + ], + [ + 'name' => 'ChannelEnable', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable channels.'."\n" + ."\n" + .'- **0** (default): Disables channels.'."\n" + ."\n" + .'- **1**: Enables channels.'."\n" + ."\n" + .'> By default, this feature is disabled. After you enable this feature, you cannot disable it. If channels are disabled, resources are directly referenced by layouts. To enable channels for the first time, the production studio must be in the Stopped state. Existing layouts are discarded. You must first add resources to channels. New layouts directly reference channels. You can use channels to adjust the playback progress and status of video sources. In this mode, if the video source, Preview (PVW), and Program (PGM) areas reference the same resource, their screens remain synchronized.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'SyncGroupsConfig', + 'in' => 'query', + 'schema' => ['description' => 'The configuration for multi-view synchronization, which synchronizes multiple video sources. Multi-view synchronization has two modes:'."\n" + ."\n" + .'- mode: 0 (Streamer mode. Multiple video sources are synchronized based on the specified mode.)'."\n" + ."\n" + .'- mode: 1 (Conference mode. All video sources are synchronized with each other. There is no concept of a streamer video.)'."\n" + ."\n" + .'Streamer mode: The hostResourceId parameter specifies the video source of the streamer.'."\n" + ."\n" + .'Conference mode: The hostResourceId parameter is not used. You only need to provide the resource IDs in the resourceIds parameter.', 'type' => 'string', 'required' => false, 'example' => '"[{\\"mode\\":0,\\"resourceIds\\":[\\"5a6c1c33-8424-46f6-813c-c152220a****\\",\\"4e6521dc-a40a-4077-b6bf-1fb12a76****\\"],\\"hostResourceId\\":\\"3aa2b39a-fd0e-4b8c-be73-b7af31c4****\\"}]"', 'title' => ''], + ], + [ + 'name' => 'UrgentImageId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the standby image, which is a media asset.', 'type' => 'string', 'required' => false, 'example' => 'a089175eb5f4427684fc0715159a****', 'title' => ''], + ], + [ + 'name' => 'UrgentImageUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL of the standby image.', 'type' => 'string', 'required' => false, 'example' => 'http://learn.aliyundoc.com/AppName/image.jpg', 'title' => ''], + ], + [ + 'name' => 'AutoSwitchUrgentOn', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => ['description' => 'Specifies whether to enable automatic switchover to the standby resource.'."\n" + ."\n" + .'- **true**: Enable.'."\n" + ."\n" + .'- **false**: Disable.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'AutoSwitchUrgentConfig', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => ['description' => 'The configuration for automatic switchover to the standby resource. `eofThres`: the period of time after which the system automatically switches to the standby resource if the stream is interrupted. Unit: seconds.', 'type' => 'string', 'required' => false, 'example' => '{"eofThres":3}', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'B95BE680-5A6A-1CAD-8AB1-09DFF5D6****', - ], - 'GroupId' => [ - 'description' => 'The ID of the group that was restored.'."\n", - 'type' => 'string', - 'example' => 'grouptest', - ], + 'CasterId' => ['description' => 'The ID of the production studio. You can use this ID to query ingest URLs, start the studio, add video resources, add layouts, query layouts, add components, and add playlists.', 'type' => 'string', 'example' => 'b4810848-bcf9-4aef-bd4a-e6bba2d9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorTooManyGroups', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'IncorrectCasterStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Caster status is inuse, please check and try again later.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidCaster.ChannelDisableUnsupported', 'errorMessage' => '%s, please check.', 'description' => 'Disabling an enabled Channel is not supported.'], + ['errorCode' => 'IncorrectCasterStatus.EnableChannel', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Caster status does not support EnableChannel settings, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\",\\n \\"GroupId\\": \\"grouptest\\"\\n}","errorExample":""},{"type":"xml","example":"\\n B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\n grouptest\\n","errorExample":""}]', - 'title' => 'RecoverLiveMessageDeletedGroup', - 'description' => '* You can call this operation to restore a deleted interactive messaging group within 30 days after you call the [DeleteLiveMessageGroup](~~2848163~~) to delete the group.'."\n" - .'* After you restore a group, the messages that were stored in the group before it was deleted can still be queried.'."\n" + 'title' => 'SetCasterConfig', + 'summary' => 'Call this operation to configure a production studio in detail, including the name, transcoding configuration, recording configuration, and other parameters of the production studio.', + 'description' => 'You must call the [CreateCaster](~~2848009~~) operation to create a production studio before you call this operation. This operation replaces all existing configurations. If you set a parameter to an empty value, the existing configuration for that parameter is cleared.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'BanLiveMessageGroup' => [ - 'summary' => 'Mutes a group.', - 'methods' => [ - 'post', + .'The queries per second (QPS) limit for a single user is 10 calls per second. API calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-08-21T03:33:21.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2023-11-22T01:24:18.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-03-31T08:26:54.000Z', 'description' => 'Request parameters changed'], ], - 'schemes' => [ - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetCasterConfig'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetCasterConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"CasterId\\": \\"b4810848-bcf9-4aef-bd4a-e6bba2d9****\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'SetCasterSceneConfig' => [ + 'summary' => 'Configures all settings of a scene. This operation clears all previous settings of the scene and applies new settings, including the layout setting, to the scene.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '237378', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'ComponentId', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', + 'description' => 'The list of component IDs. The components in the array are ordered from bottom to top.'."\n" + ."\n" + .'> N specifies the position of the component. For example, ComponentId.1 is the first component ID and ComponentId.2 is the second component ID.', + 'type' => 'array', + 'items' => ['description' => 'The list of component IDs. The components in the array are ordered from bottom to top.'."\n" + ."\n" + .'> N specifies the position of the component. For example, ComponentId.1 is the first component ID and ComponentId.2 is the second component ID.', 'type' => 'string', 'required' => false, 'example' => '[ "a2b8e671-2fe5-4642-a2ec-bf931826****", "a2b8e671-2fe5-4642-a2ec-28374657****"]', 'title' => ''], + 'required' => false, + 'example' => '[ "a2b8e671-2fe5-4642-a2ec-bf931826****", "a2b8e671-2fe5-4642-a2ec-28374657****"]', + 'maxItems' => 10, + 'title' => '', ], ], [ - 'name' => 'ExceptUsers', + 'name' => 'CasterId', 'in' => 'query', - 'style' => 'simple', - 'schema' => [ - 'description' => 'The users whom you do not want to mute when the group is muted.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the user whom you do not want to mute when the group is muted. Separate multiple user IDs with commas (,).'."\n" - ."\n" - .'> You can specify up to 30 users IDs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '["uid3"]', - ], - 'required' => false, - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page in the **ApsaraVideo Live console** to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'SceneId', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application.'."\n" - ."\n" - .'> Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The scene ID.', 'type' => 'string', 'required' => true, 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', 'title' => ''], + ], + [ + 'name' => 'LayoutId', + 'in' => 'query', + 'schema' => ['description' => 'The layout ID. If you query the layout list for the production studio by calling the [DescribeCasterLayouts](~~2848028~~) operation, use the LayoutId value returned in the response.', 'type' => 'string', 'required' => false, 'example' => '0c6da077-f037-49e8-8440-3be13393****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidSceneId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ['errorCode' => 'InvalidCaptionResource', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource referenced by the voice caption component does not exist or is not a live source. Please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'ComponentNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of components exceeds the limit. Please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is idle, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.ConfigError', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene configuration error, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], + ['errorCode' => 'ResourceInChannel.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ], + 412 => [ + ['errorCode' => 'ResourceInChannel.PreConditionFailed', 'errorMessage' => '%s, please try again later.', 'description' => 'Resource pre-verification failed, please try again later.'], + ['errorCode' => 'ResourceInChannel.Invalid', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Resource and channel material address are inconsistent, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 84AF36BF-0B39-1F8A-A416-FAC7C484****\\n","errorExample":""}]', - 'title' => 'BanLiveMessageGroup', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + 'title' => 'SetCasterSceneConfig', + 'description' => 'This operation sets all configurations for a scene. It clears the existing configuration and applies the new layout to the specified scene.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'AddLiveMessageGroupBand' => [ - 'summary' => 'Mutes one or more users.', - 'methods' => [ - 'post', + .'The queries per second (QPS) limit for this API is 10 calls per second per user. API calls that exceed this limit are throttled, which may affect your business. Plan your API calls to avoid service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetCasterSceneConfig'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetCasterSceneConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","type":"json"}]', + ], + 'SetLiveDomainCertificate' => [ + 'summary' => 'Sets whether the certificate feature is enabled for a domain and modifies certificate information.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '235183', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The accelerated domain name to which the certificate belongs. This parameter belongs to the `https` acceleration type.', 'type' => 'string', 'required' => true, 'example' => 'developer.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'CertName', + 'in' => 'query', + 'schema' => ['description' => 'The certificate name.', 'type' => 'string', 'required' => false, 'example' => 'Cert-****', 'title' => ''], + ], + [ + 'name' => 'CertType', 'in' => 'query', 'schema' => [ - 'description' => 'The group ID.'."\n", + 'description' => 'The certificate type. Valid values:'."\n" + ."\n" + .'- **upload**: Upload certificate.'."\n" + .'- **cas**: Certificate Authority Service certificate.'."\n" + .'- **free**: Personal test certificate (free edition).', + 'enumValueTitles' => ['cas' => 'Certificate Authority Service certificate', 'upload' => 'Upload certificate', 'free' => 'Personal test certificate'], 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', + 'required' => false, + 'enum' => ['free', 'cas', 'upload'], + 'example' => 'free', + 'title' => '', ], ], [ - 'name' => 'BannedUsers', + 'name' => 'SSLProtocol', 'in' => 'query', - 'style' => 'simple', - 'schema' => [ - 'description' => 'The users whom you want to mute.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the user whom you want to mute. Separate multiple user IDs with commas (,).'."\n" - ."\n" - .'> You can specify up to 30 users IDs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '["uid1","uid2"]', - ], - 'required' => true, - ], + 'schema' => ['description' => 'Specifies whether to enable the HTTPS certificate. Valid values:'."\n" + .'- **on**: Enable. If this parameter is set to **on**, you must also specify the SSLPub and SSLPri request parameters.'."\n" + .'- **off** (default): Disable.', 'type' => 'string', 'required' => true, 'example' => 'off', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'SSLPub', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application.'."\n" - ."\n" - .'> Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The public key content.'."\n" + ."\n" + .'> This parameter is required only when SSLProtocol is set to on.'."\n", 'type' => 'string', 'required' => false, 'example' => '****', 'title' => ''], + ], + [ + 'name' => 'SSLPri', + 'in' => 'query', + 'schema' => ['description' => 'The private key content.'."\n" + ."\n" + .'> This parameter is required only when SSLProtocol is set to on.'."\n" + ."\n", 'type' => 'string', 'required' => false, 'example' => '****', 'title' => ''], + ], + [ + 'name' => 'ForceSet', + 'in' => 'query', + 'schema' => ['description' => 'Ignores the duplicate certificate name check and overwrites the existing certificate information with the same name. Fixed value: **1**.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidSSLProtocol.ValueNotSupported', 'errorMessage' => 'The specified value of parameter SSLProtocol is not supported.', 'description' => ''], + ['errorCode' => 'SSLPub.MissingParameter', 'errorMessage' => 'An input parameter "SSLPub" that is mandatory for processing the request is not supplied.', 'description' => ''], + ['errorCode' => 'SSLPri.MissingParameter', 'errorMessage' => 'An input parameter "SSLPri" that is mandatory for processing the request is not supplied.', 'description' => ''], + ['errorCode' => 'InvalidSSLPub', 'errorMessage' => 'The SSLPub you provided is malformed!', 'description' => ''], + ['errorCode' => 'InvalidSSLPri', 'errorMessage' => 'The SSLPri you provided is malformed!', 'description' => ''], + ['errorCode' => 'Certificate.MissMatch', 'errorMessage' => 'The SSLPri does not math the specified Certificate!', 'description' => ''], + ['errorCode' => 'InvalidCertificate.TooLong', 'errorMessage' => 'The Certificate you provided is over the max length!', 'description' => ''], + ['errorCode' => 'InvalidCertName.TooLong', 'errorMessage' => 'The Certificate name you provided is over the max length 128!', 'description' => ''], + ['errorCode' => 'IllegalOperationDomain', 'errorMessage' => 'You are not authorized to operate the domain.', 'description' => ''], + ['errorCode' => 'Certificate.NotPermittedOff', 'errorMessage' => 'Turn off certificate will change domain scheduling, please contact customer service', 'description' => ''], + ['errorCode' => 'Certificate.SettedNotEffect', 'errorMessage' => 'Certificate was successfully setted but does\'t take effect for protecting current service, please contact customer service', 'description' => ''], + ['errorCode' => 'Certificate.NotFind', 'errorMessage' => 'Not find the certificate info.', 'description' => ''], + ['errorCode' => 'AuthenticationFailed', 'errorMessage' => 'Authentication failed.', 'description' => ''], + ['errorCode' => 'SetDomainCertificate.ParameterError', 'errorMessage' => 'Parameters have error.', 'description' => ''], + ['errorCode' => 'InvalidSSLPubOrInvalidSSLPri', 'errorMessage' => 'The SSLPri or SSLPub you provided is malformed!', 'description' => ''], + ['errorCode' => 'Certificate.StatusError', 'errorMessage' => 'Certificate is not exist or its status is error.', 'description' => ''], + ['errorCode' => 'DeleteFailed', 'errorMessage' => 'Delete certificate is failed.', 'description' => ''], + ['errorCode' => 'Certificate.Duplicated', 'errorMessage' => 'The certificate name is duplicated.', 'description' => ''], + ['errorCode' => 'Certificate.FormatError', 'errorMessage' => 'The certificate format is error.', 'description' => ''], + ['errorCode' => 'Certificate.KeyNull', 'errorMessage' => 'The private key is not null.', 'description' => ''], + ['errorCode' => 'Key.Malformed', 'errorMessage' => 'The private key format is error.', 'description' => ''], + ['errorCode' => 'CertStorage.failed', 'errorMessage' => 'The certificate storage failed.', 'description' => ''], + ['errorCode' => 'CertificateContent.Duplicated', 'errorMessage' => 'The certificate is already uploaded, please don\'t upload again.', 'description' => ''], + ['errorCode' => 'Certificate.Expired', 'errorMessage' => 'The certificate is expired.', 'description' => ''], + ['errorCode' => 'InvalidDomain.notOnline', 'errorMessage' => 'The domain is not online, please check the domain status and try again later.', 'description' => ''], + ['errorCode' => 'Decode.Error', 'errorMessage' => 'The certificate sslpub or sslpri decode error.', 'description' => ''], + ['errorCode' => 'sslPub.Error', 'errorMessage' => 'The SSLPub encoded failed.', 'description' => ''], + ['errorCode' => 'sslPri.Error', 'errorMessage' => 'The SSLPri encoded failed.', 'description' => ''], + ['errorCode' => 'DomainInSafeMode', 'errorMessage' => 'This domain is in the safe mode. if you want to do this operation, please contact us!', 'description' => ''], + ['errorCode' => 'DomainInProtectedMode', 'errorMessage' => 'This domain is in the protected mode. if you want to do this operation, please contact us!', 'description' => ''], + ['errorCode' => 'FunctionMutex', 'errorMessage' => 'Function is mutex with other function.', 'description' => ''], + ['errorCode' => 'DomainOffline', 'errorMessage' => 'The domain is not online, please check the domain status and try again later.', 'description' => 'The domain is not online, please check the domain status and try again later.'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => 'Illegal domain operate is not permitted.', 'description' => ''], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'CertName.MissingParameter', 'errorMessage' => 'The CertName parameter is required.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 84AF36BF-0B39-1F8A-A416-FAC7C484****\\n","errorExample":""}]', - 'title' => 'AddLiveMessageGroupBand', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + 'title' => 'Set domain certificate', + 'description' => 'First obtain the live streaming domain, then call this API operation to set whether the certificate is enabled for the domain and to modify certificate information.'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'RemoveLiveMessageGroupBand' => [ - 'summary' => 'Unmutes one or more users.', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + .'The single-user QPS limit for this API operation is 30 calls per second. If the limit is exceeded, API calls will be throttled, which may affect your business. Please make calls appropriately.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainCertificate'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainCertificate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + ], + 'SetLiveDomainMultiStreamConfig' => [ + 'summary' => 'Calls SetLiveDomainMultiStreamConfig to enable or disable the dual-stream disaster recovery switch.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -58223,129 +48232,85 @@ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '235211', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeCode' => '250492', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The primary streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'Switch', 'in' => 'query', 'schema' => [ - 'description' => 'The group ID.'."\n", + 'description' => 'The feature switch. Valid values:'."\n" + .'- **on**: enabled'."\n" + .'- **off**: disabled.', + 'enumValueTitles' => ['off' => 'Disabled.', 'on' => 'Enabled.'], 'type' => 'string', 'required' => true, - 'example' => 'grouptest', - ], - ], - [ - 'name' => 'UnbannedUsers', - 'in' => 'query', - 'style' => 'simple', - 'schema' => [ - 'description' => 'The users whom you want to unmute.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the user whom you want to unmute. Separate multiple user IDs with commas (,).'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* You can specify up to 30 users IDs.'."\n" - ."\n" - .'* Set the value to an asterisk (\\*) if you want to unmute all muted users.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '["uid1","uid2"]', - ], - 'required' => true, - ], - ], - [ - 'name' => 'DataCenter', - 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application.'."\n" - ."\n" - .'> Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', + 'enum' => ['on', 'off'], + 'example' => 'on', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b96****'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'CodeGetPushbackDomainError', 'errorMessage' => 'Unable to get the push domain name, please check the domain name mapping configuration.', 'description' => 'Unable to get the push domain name, please check the domain name mapping configuration.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + 'title' => 'Set dual-stream disaster recovery switch', + 'description' => 'Calls this operation to enable the dual-stream disaster recovery feature, which allows stream ingest to the same live stream name.'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [ + ['createdAt' => '2025-04-27T04:00:13.000Z', 'description' => 'Error codes changed'], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 84AF36BF-0B39-1F8A-A416-FAC7C484****\\n","errorExample":""}]', - 'title' => 'RemoveLiveMessageGroupBand', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveMessageGroupMessage' => [ - 'summary' => 'Deletes a message that was sent to an interactive messaging group.', - 'methods' => [ - 'post', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainMultiStreamConfig'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainMultiStreamConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'SetLiveDomainMultiStreamMaster' => [ + 'summary' => 'Manually switches between the active stream and standby stream.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -58354,69 +48319,45 @@ 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeCode' => '250500', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], - ], - [ - 'name' => 'GroupId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The group ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'MessageId', + 'name' => 'AppName', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the message that you want to delete. Set this parameter to the value of MsgTid that you specified when you called the SendLiveMessageGroup operation. The ID must be up to 64 bytes in length and can contain letters and digits.'."\n", + 'description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'required' => true, - 'example' => 'a74a8fbd3cfe4b2daa8517e4e3******', - ], - ], - [ - 'name' => 'DataCenter', - 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', + 'enum' => [], + 'example' => 'testapp', + 'title' => '', ], ], [ - 'name' => 'DeleterId', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the user who deletes the message. The ID must be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '169830****', - ], + 'schema' => ['description' => 'The name of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'teststream', 'title' => ''], ], [ - 'name' => 'DeleterInfo', + 'name' => 'UpstreamSequence', 'in' => 'query', 'schema' => [ - 'description' => 'The additional information about the user who performs the deletion operation. The value can be up to 512 bytes in length.'."\n", + 'description' => 'The unique identifier of the stream ingest. You can obtain this identifier by calling the [QueryLiveDomainMultiStreamList](~~2871872~~) operation.', 'type' => 'string', - 'required' => false, - 'example' => 'testname', + 'required' => true, + 'enum' => [], + 'example' => 'teststream_***', + 'title' => '', ], ], ], @@ -58424,70 +48365,55 @@ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B95BE680-5A6A-1CAD-8AB1-09DFF5D6****', - ], - 'GroupId' => [ - 'description' => 'The group ID.'."\n", - 'type' => 'string', - 'example' => 'grouptest', - ], - 'MessageId' => [ - 'description' => 'The ID of the deleted or non-existent message.'."\n", - 'type' => 'string', - 'example' => 'a74a8fbd3cfe4b2daa8517e4e3******', - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4E*****43-CB92E68F4CD8'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => 'Your account does not open Live service yet', 'description' => 'Your account has not yet activated ApsaraVideo Live.'], + ['errorCode' => 'CodeTaskNotExist', 'errorMessage' => 'Task does not exist.', 'description' => 'The task does not exist.'], + ['errorCode' => 'CodeTaskNotStarted', 'errorMessage' => 'Task not started, cannot operate.', 'description' => 'Task not started, cannot operate.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'SetLiveDomainMultiStreamMaster', + 'changeSet' => [ + ['createdAt' => '2025-04-27T04:00:13.000Z', 'description' => 'Error codes changed'], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\",\\n \\"GroupId\\": \\"grouptest\\",\\n \\"MessageId\\": \\"a74a8fbd3cfe4b2daa8517e4e3******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\n grouptest\\n a74a8fbd3cfe4b2daa8517e4e3******\\n","errorExample":""}]', - 'title' => 'DeleteLiveMessageGroupMessage', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveMessageUserMessage' => [ - 'summary' => 'Deletes a message that is sent to a user.', - 'methods' => [ - 'post', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainMultiStreamMaster'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainMultiStreamMaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4E*****43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'SetLiveDomainMultiStreamOptimalMode' => [ + 'summary' => 'Sets the automatic mode switch for dual-stream disaster recovery.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -58496,2244 +48422,1877 @@ 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeCode' => '250499', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], - ], - [ - 'name' => 'ReceiverId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the user who received the message to delete. The ID can contain only letters and digits and can be up to 64 bytes in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '169830****', - ], + 'schema' => ['description' => 'The primary streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'MessageId', + 'name' => 'AppName', 'in' => 'query', 'schema' => [ - 'description' => 'The ID of the message that you want to delete. Set this parameter to the value of MsgTid that you specified when you called the SendLiveMessageUser operation. The ID can contain only letters and digits and can be up to 64 bytes in length.'."\n", + 'description' => 'The application name.', 'type' => 'string', 'required' => true, - 'example' => '**********', - ], - ], - [ - 'name' => 'DeleterId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the user who performs the deletion operation. The ID can contain only letters and digits and can be up to 64 bytes in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '169830****', + 'enum' => [], + 'example' => 'testapp', + 'title' => '', ], ], [ - 'name' => 'DeleterInfo', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The additional information about the user who performs the deletion operation. The value can be up to 512 bytes in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'username', - ], + 'schema' => ['description' => 'The live stream name.', 'type' => 'string', 'required' => true, 'example' => 'teststream', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'OptimalMode', 'in' => 'query', 'schema' => [ - 'description' => 'The data center where the interactive messaging application is deployed. Set this parameter to the value of DataCenter that you specified when you called the [CreateLiveMessageApp](~~2593195~~) operation. Valid values: cn-shanghai (Shanghai) and ap-southeast-1 (Singapore).'."\n", + 'description' => 'The automatic mode switch. Valid values:'."\n" + .'- **on**: enabled'."\n" + .'- **off**: disabled.', + 'enumValueTitles' => ['off' => 'Disabled.', 'on' => 'Enabled.'], 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', + 'required' => true, + 'enum' => ['on', 'off'], + 'example' => 'on', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '6CFDE7AB-571A-14EA-B072-989FF753****', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'CodeTaskNotExist', 'errorMessage' => 'Task does not exist.', 'description' => 'The task does not exist.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\"\\n}","type":"json"}]', + 'title' => 'Set dual-stream disaster recovery automatic mode switch', + 'changeSet' => [ + ['createdAt' => '2025-04-27T04:00:13.000Z', 'description' => 'Error codes changed'], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6CFDE7AB-571A-14EA-B072-989FF753****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 6CFDE7AB-571A-14EA-B072-989FF753****\\n","errorExample":""}]', - 'title' => 'DeleteLiveMessageUserMessage', - 'description' => '## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'SendLiveMessageGroup' => [ - 'summary' => 'Sends a message to a group.', - 'methods' => [ - 'post', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainMultiStreamOptimalMode'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainMultiStreamOptimalMode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'SetLiveDomainStagingConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '198196', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application in which the message is received.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the group that receives the message.'."\n" - ."\n" - .'> Make sure that the specified group ID exists. Otherwise, a ResourceNotExist error is returned.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - 'minLength' => 1, - ], + 'schema' => ['description' => 'The accelerated domain name.', 'type' => 'string', 'required' => true, 'example' => 'developer.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'SenderId', + 'name' => 'Functions', 'in' => 'query', + 'schema' => ['description' => 'The list of features. Specify ConfigId only when you modify a configuration. For more information, see **Functions format description**.', 'type' => 'string', 'required' => true, 'example' => '[{"functionArgs":[{"argName":"enable","argValue":"on"},{"argName":"pri","argValue":"1"},{"argName":"rule","argValue":"xxx"}],"functionName":"edge_function"}]', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The ID of the user who sends the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'uid1', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'ConfigurationConflicts', 'errorMessage' => 'The staging environment has a configuration in effect. You cannot modify the production environment configuration.', 'description' => ''], + ['errorCode' => 'InvalidDomain.BelongToConfigGroup', 'errorMessage' => 'The domain is bound to a configuration group. Modify the domain in the configuration group.', 'description' => ''], + ['errorCode' => 'InvalidFunctionName.ValueNotSupported', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The input function name is not supported.'], + ['errorCode' => 'InvalidArgName.ValueNotSupported', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The ArgName passed in is invalid.'], + ['errorCode' => 'InvalidArgValue.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The ArgValue passed in is invalid.'], + ['errorCode' => 'InvalidRule.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The Rule passed in is invalid.'], + ], + ], + 'title' => 'SetLiveDomainStagingConfig', + 'summary' => 'Sets or modifies domain configurations in the canary release environment.', + 'description' => '## Usage notes'."\n" + ."\n" + .'Obtain an accelerated domain name. You can then call this operation to set or modify domain name configurations in the staging environment. For more information, see **Functions format description**.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'This operation is limited to 30 queries per second (QPS) per user. API calls that exceed this limit are throttled, which may affect your business. For more information, see [QPS limits](~~343507~~).', + 'requestParamsDescription' => '## Function format description'."\n" + ."\n" + .'- To set a configuration, see the following example: `[{"functionArgs":[{"argName":"enable","argValue":"on"},{"argName":"pri","argValue":"1"},{"argName":"rule","argValue":"xxx"}],"functionName":"edge_function"}]`'."\n" + ."\n" + .'- To modify a configuration, specify the configuration item using the ConfigId parameter, which is of the Long data type. See the following example: `[{"functionArgs":[{"argName":"enable","argValue":"on"},{"argName":"pri","argValue":"1"},{"argName":"rule","argValue":"yyy"}],"ConfigId":123456,"functionName":"edge_function"}]`'."\n" + ."\n" + .'Note: All parameter values are strings.'."\n" + ."\n" + .'| Feature name | Required parameters | Optional parameters |'."\n" + .'| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| edge_function: The Edge Routine. | \\- **rule**: The DSL rule. - **pri**: The priority. - **enable**: Specifies whether the rule is enabled. Valid values: on and off. | \\- **name**: The rule name. - **pos**: The position where the rule is executed. - **brk**: Specifies whether to skip the remaining rules at the current execution position after the current rule is hit. - **option**: The option control. - **grammar**: The grammar control. Valid values: empty, es2, and js. - **jsmode**: The JavaScript domain name whitelist control. Valid values: redirect and bypass. |', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainStagingConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'SenderMetaInfo', - 'in' => 'query', - 'schema' => [ - 'description' => 'The additional information about the user who sends the message. The value can be up to 512 bytes in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'uid1meta1', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainStagingConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","type":"json"}]', + ], + 'SetLiveEdgeTransfer' => [ + 'summary' => 'Calls SetLiveEdgeTransfer to configure live stream relay settings.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Body', - 'in' => 'query', - 'schema' => [ - 'description' => 'The message body. The body can be up to 15 KB in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'hello,group', - ], + 'AK' => [], ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'MsgType', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The message type.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'MsgTid', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the message, which is a unique identifier that can be used to delete the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '169830****', - ], + 'schema' => ['description' => 'The ingest domain name. Live stream relay is configured at the granularity of the ingest DomainName. Each domain can have only one live stream relay configuration.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'StaticsIncrease', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'title' => '该消息对于该类消息数量的统计增长值贡献,默认值为1', - 'description' => 'The contribution of the message to the increase in the number of messages of this type. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The application name to which the live stream belongs. Regular expressions are supported for configuration with exceptions. For more information, see **AppName and StreamName Parameter Configuration Instructions** below. For example: liveApp****[1,2,3] indicates that the three apps liveApp****1, liveApp****2, and liveApp****3 are allowed for stream relay.'."\n" + ."\n" + .'> - This parameter only takes effect for the TargetDomainList in the request parameters.'."\n" + .'> - When configuring the `AppName` parameter value using regular expressions, the ^ or $ characters cannot be used, otherwise stream relay will fail.', 'type' => 'string', 'required' => false, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'Weight', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'title' => '消息权重,权重越高,缓存优先级越高,缓存时间越长,默认值为1', - 'description' => 'The weight of the message. Default value: 1. A greater value indicates a higher priority. For a message of the highest priority, you can set the weight to 1000000.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The stream name. Regular expressions are supported for configuration with exceptions. For more information, see **AppName and StreamName Parameter Configuration Instructions** below. For example: liveStream****[1,2,3] indicates that the three streams liveStream****1, liveStream****2, and liveStream****3 are allowed for stream relay.'."\n" + ."\n" + .'> - This parameter only takes effect for the TargetDomainList in the request parameters.'."\n" + .'> - When configuring the `StreamName` parameter value using regular expressions, the ^ or $ characters cannot be used, otherwise stream relay will fail.', 'type' => 'string', 'required' => false, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'NoStorage', + 'name' => 'TargetDomainList', 'in' => 'query', - 'schema' => [ - 'title' => '是否要存储消息,默认为false表示需要存储。', - 'description' => 'Specifies whether to disable message storage. Valid values: true and false. Default value: false, which specifies that the message is stored for a validity period of 30 days. You can find the message in the response of the ListLiveMessageGroupMessages operation. If you do not want to store the message, set this parameter to true.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => 'The list of target domains specified by the user for stream relay. Multiple domains are separated by commas (,). The request must contain one of the `TargetDomainList` and `HttpDns` parameters, and the two are mutually exclusive.'."\n" + ."\n" + .'> - When `TargetDomainList` is set in the request parameters, the `AppName` and `StreamName` parameters take effect.'."\n" + .'> - When `TargetDomainList` is set in the request parameters, the `HttpDns` parameter cannot be set.', 'type' => 'string', 'required' => false, 'example' => 'learn.aliyundoc.com,guide.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'NoCache', + 'name' => 'HttpDns', 'in' => 'query', - 'schema' => [ - 'title' => '是否要缓存消息,默认为false表示需要缓存。', - 'description' => 'Specifies whether to disable message caching. Valid values: true and false. Default value: false, which specifies that the message is cached to the recent message list of the group.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => 'The HTTPDNS interface for obtaining the stream relay target address. The request must contain one of the `TargetDomainList` and `HttpDns` parameters, and the two are mutually exclusive.'."\n" + ."\n" + .'> If `HttpDns` is set in the request parameters, the `TargetDomainList` parameter cannot be set, and the `AppName` and `StreamName` restrictions do not take effect.'."\n" + ."\n" + .'Live stream relay has requirements for the message structure returned by the HTTPDNS interface. For more information, see **HTTPDNS Instructions** below.', 'type' => 'string', 'required' => false, 'example' => 'http://developer.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'TransferArgs', 'in' => 'query', 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", + 'description' => 'Specifies whether to pass through ingest parameters. Valid values:'."\n" + .'- **yes**: Ingest parameters are passed through.'."\n" + .'- **no** (default): Ingest parameters are not passed through.', + 'enumValueTitles' => ['no' => 'Ingest parameters are not passed through', 'yes' => 'Ingest parameters are passed through'], 'type' => 'string', 'required' => false, - 'example' => 'cn-shanghai', + 'default' => 'no', + 'enum' => ['yes', 'no'], + 'example' => 'yes', + 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'E4C1245F-597B-1BD1-B9BB-9D220E99****', - ], - 'MsgTid' => [ - 'description' => 'The ID of the message, which is a unique identifier that can be used to delete the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'example' => '169830****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorTooManyMsgTypes', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"E4C1245F-597B-1BD1-B9BB-9D220E99****\\",\\n \\"MsgTid\\": \\"169830****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n E4C1245F-597B-1BD1-B9BB-9D220E99****\\n","errorExample":""}]', - 'title' => 'SendLiveMessageGroup', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group. You can send messages to a group only if the group is active, which requires that one or more users have joined the group. Offline messages are not supported. If you fail to send a message, check whether users exist in the group. If you want to send a message when all users are offline, we recommend that you store the message locally and send it after users get online.'."\n" + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","type":"json"}]', + 'title' => 'Configure live stream relay settings', + 'description' => 'The live edge stream relay configuration made by calling SetLiveEdgeTransfer only takes effect for streams that start after the configuration is completed. The following are examples of some typical scenarios:'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'| Scenario | Analysis | Result |'."\n" + .'| -------------- | -------------- | ------ |'."\n" + .'| 1. The user has already started streaming before calling SetLiveEdgeTransfer. | The live edge stream relay configuration does not exist at this point. | The stream is not affected by the SetLiveEdgeTransfer configuration, meaning live edge stream relay will not be initiated. |'."\n" + .'| 2. The user interrupts streaming that was started before calling SetLiveEdgeTransfer, and then resumes streaming. | The live edge stream relay configuration already exists at this point. | The resumed stream will initiate live stream relay according to the SetLiveEdgeTransfer configuration. |'."\n" + .'| 3. The user starts streaming after calling SetLiveEdgeTransfer. | The live edge stream relay configuration already exists at this point. | This stream will initiate live stream relay according to the SetLiveEdgeTransfer configuration. |'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'SendLiveMessageUser' => [ - 'summary' => 'Sends a message to a specified user. The user is identified by ReceiverId.', - 'methods' => [ - 'post', + .'## QPS Limit'."\n" + .'The single-user QPS limit for this API is 100 calls/second. Exceeding the limit will result in API throttling, which may affect your business. Please call this API appropriately.', + 'requestParamsDescription' => '### AppName and StreamName Parameter Configuration Instructions'."\n" + .'Neither AppName nor StreamName supports `^` or `$` matching. If either value contains `^` or `$`, stream relay will fail.'."\n" + .'### HTTPDNS Instructions'."\n" + .'If `HttpDns` is set in the request parameters of SetLiveEdgeTransfer, live stream relay will access the HTTPDNS interface set through `HttpDns` to obtain the stream relay target address.'."\n" + ."\n" + .'Request example:'."\n" + .'http://developer.aliyundoc.com/?host={}&app={}&name={}{<_ali_user_args>}'."\n" + .'Note: When actually requesting the HTTPDNS interface, the following parameters will be replaced with information from the ingest URL:'."\n" + ."\n" + .'- {}: The ingest domain name.'."\n" + .'- {}: The application name to which the live stream belongs.'."\n" + .'- {}: The stream name.'."\n" + .'- {<_ali_user_args>}: The parameters carried by the user\'s ingest stream.'."\n" + ."\n" + .'The requirements for the interface return code and return data for live stream relay are as follows:'."\n" + .'- A return code of 403 indicates access failure, and stream relay is not required.'."\n" + .'- A return code of 200 indicates successful access, and the result is returned in JSON format. The structure and parameter examples are as follows:'."\n" + ."\n" + .'```'."\n" + .'{'."\n" + .' "cdn_types": ['."\n" + .' {'."\n" + .' "name": "cdnA****",'."\n" + .' "upstream_url": "rtmp://developer.aliyundoc.com/live/testedge****"'."\n" + .' },'."\n" + .' {'."\n" + .' "name": "cdnB****",'."\n" + .' "upstream_url": "rtmp://developer.aliyundoc.com/live/testedge****"'."\n" + .' }'."\n" + .' ]'."\n" + .'}'."\n" + .'```'."\n" + .'| Parameter | Description | Example |'."\n" + .'| -------------- | -------------- | ------ |'."\n" + .'| name | The CDN name. It can be customized but must not be duplicated. | cdnA**** |'."\n" + .'| upstream_url | The ingest address to relay to. | rtmp://developer.aliyundoc.com/live/testedge**** |'."\n" + ."\n" + .'> The relay domains are obtained from the returned JSON result. If multiple relay domains are returned, it means the original stream needs to be pushed to multiple destinations.'."\n" + .'- If the returned data structure does not meet the requirements, stream relay will fail.', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveEdgeTransfer'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveEdgeTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'SetLiveLazyPullStreamInfoConfig' => [ + 'summary' => 'Configures triggered stream pulling.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '194332', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application in which the message is sent.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], - ], - [ - 'name' => 'ReceiverId', - 'in' => 'query', - 'schema' => [ - 'title' => '消息接收用户的Id', - 'description' => 'The ID of the user who receives the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n" - ."\n" - .'> Make sure that the user who receives the message is online. You can call the CheckLiveMessageUsersOnline operation to query whether the user is online.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'uid2', - ], - ], - [ - 'name' => 'SenderId', - 'in' => 'query', - 'schema' => [ - 'title' => '消息发送用户的Id', - 'description' => 'The ID of the user who sends the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'uid1', - ], - ], - [ - 'name' => 'SenderInfo', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'title' => '消息发送用户扩展信息', - 'description' => 'The additional information about the user who sends the message. It can be up to 512 bytes in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'uid1meta1', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Body', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'title' => '消息体', - 'description' => 'The message body. It can be up to 15 KB in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'hello, user', - ], + 'schema' => ['description' => 'The streaming domain name.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'MsgType', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'title' => '消息类型', - 'description' => 'The message type.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The name of the application.'."\n" + ."\n" + .'> To trigger origin fetch for all applications, set this parameter to **ali\\_all\\_app**.', 'type' => 'string', 'required' => true, 'example' => 'ali_all_app', 'title' => ''], ], [ - 'name' => 'MsgTid', + 'name' => 'PullDomainName', 'in' => 'query', - 'schema' => [ - 'title' => '消息标识', - 'description' => 'The ID of the message, which is a unique identifier that can be used to delete the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '169830****', - ], + 'schema' => ['description' => 'The origin server that hosts the live stream. To specify multiple origin servers, separate them with semicolons (;).', 'type' => 'string', 'required' => true, 'example' => 'guide.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'PullAppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The source application name.'."\n" + ."\n" + .'> Leave this parameter empty to use the application name from the playback URL of the source stream.', 'type' => 'string', 'required' => false, 'example' => 'livePullApp****', 'title' => ''], ], [ - 'name' => 'HighReliability', + 'name' => 'TranscodeLazy', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to set the message as a highly reliable message. A highly reliable message ensures that success is returned only after the receiver has received the message and responded. If the receiver does not respond within 3 seconds, failure is returned.'."\n" - ."\n" - .'* true: sets the message as a highly reliable message.'."\n" - .'* false (default): does not set the message as a highly reliable message.'."\n" - ."\n" - .'> This parameter is supported only by the client SDK V1.5.1 and later. When you send a message to a client with an earlier SDK version, the message can be successfully sent without waiting for an acknowledgement (ACK) response.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => 'Specifies whether to trigger stream pulling when a request for a transcoded stream is made. Default value: **no**. Valid values:'."\n" + ."\n" + .'- **yes**'."\n" + ."\n" + .'- **no**', 'type' => 'string', 'required' => false, 'example' => 'no', 'title' => ''], ], [ - 'name' => 'Storage', + 'name' => 'PullProtocol', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to store the message.'."\n" - ."\n" - .'* true: stores the message.'."\n" - .'* false (default): does not store the message.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], + 'schema' => ['description' => 'The protocol to use for pulling the stream from the source. Valid values:'."\n" + ."\n" + .'- **rtmp**'."\n" + ."\n" + .'- **httpflv**'."\n" + ."\n" + .'- **hls**', 'type' => 'string', 'required' => true, 'example' => 'rtmp', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '6CFDE7AB-571A-14EA-B072-989FF753****', - ], - 'MsgTid' => [ - 'description' => 'The ID of the message, which is a unique identifier that can be used to delete the message. The ID can be up to 64 bytes in length and can contain letters and digits.'."\n", - 'type' => 'string', - 'example' => '169830****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + 'errorCodes' => [], + 'title' => 'SetLiveLazyPullStreamInfoConfig', + 'description' => 'This API configures triggered stream pulling. When a live stream starts on the origin server, ApsaraVideo Live automatically pulls the stream for live playback.'."\n" + ."\n" + .'> This API does not support the IPv6 protocol.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 1,000 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '| 错误代码 | 描述 | HTTP 状态码 | 语义 |'."\n" + .'| ------------- |------------ | ----- | ----- |'."\n" + .'| InvalidDomain.NotFound | The domain provided does not exist in our records.| 404 |当前账户下未查到域名|'."\n" + .'| IllegalOperation |Illegal domain operate is not permitted. |403 |不支持当前操作,如:非直播类域名|'."\n" + .'|Missing DomainName | DomainName is mandatory for this action. | 400 |缺少参数|'."\n" + .'| InternalError |The request processing has failed due to some unknown error. |500| 后台发生未知错误 |', + 'changeSet' => [ + ['createdAt' => '2022-08-16T09:11:37.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveLazyPullStreamInfoConfig'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 408 => [ - [ - 'errorCode' => 'UserNotAck', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveLazyPullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6CFDE7AB-571A-14EA-B072-989FF753****\\",\\n \\"MsgTid\\": \\"169830****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 6CFDE7AB-571A-14EA-B072-989FF753****\\n","errorExample":""}]', - 'title' => 'SendLiveMessageUser', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","type":"json"}]', ], - 'ListLiveMessageApps' => [ - 'summary' => 'Queries interactive messaging applications.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'SetLiveMpuTaskSei' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '193889', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeCode' => '167350', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'SortType', + 'name' => 'AppId', 'in' => 'query', - 'allowEmptyValue' => false, - 'schema' => [ - 'title' => '排序方式,按创建时间先后,1为顺序,2为逆序', - 'description' => 'The sort order based on the creation time. Valid values:'."\n" - ."\n" - .'* 1: ascending order'."\n" - .'* 2: descending order'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'maximum' => '2', - 'minimum' => '1', - 'example' => '1', - 'enum' => [ - '1', - '2', - ], - ], + 'schema' => ['description' => 'The application ID.'."\n" + ."\n" + .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], ], [ - 'name' => 'NextPageToken', + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'title' => '', - 'description' => 'The starting page number for the query. If you leave this parameter empty or set this parameter to -1, the query starts from the first page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '-1', - ], + 'schema' => ['description' => 'The task ID.'."\n" + ."\n" + .'> The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourTaskId', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'CustomSei', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The custom SEI.'."\n" + ."\n" + .'> The value is a JSON string that can be up to 4,096 characters in length.', 'type' => 'string', 'required' => true, 'example' => '{"key": "value"}', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The returned result.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'B8EB4994-1368-1458-B9F3-5B88D76D734C', - ], - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by a page.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'NextPageToken' => [ - 'description' => 'The starting page number for the next query. This parameter is returned only if the value of HasMore is true.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'AppList' => [ - 'description' => 'The interactive messaging applications.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the interactive messaging application.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppId' => [ - 'description' => 'The ID of the interactive messaging application queried.'."\n", - 'type' => 'string', - 'example' => 'demo', - ], - 'AppKey' => [ - 'description' => 'The AppKey of the interactive messaging application. It is used to authorize operations related to the application ID.'."\n", - 'type' => 'string', - 'example' => '**********************************', - ], - 'AppSign' => [ - 'description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", - 'type' => 'string', - 'example' => '**************************************************************************', - ], - 'Disable' => [ - 'description' => 'Indicates whether the interactive messaging application is disabled.'."\n", - 'type' => 'string', - 'example' => 'false', - ], - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'testApp', - ], - 'CreateTime' => [ - 'description' => 'The time when the application was created. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1698305471', - ], - 'ModifyTime' => [ - 'description' => 'The time when the application was last modified. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1698305471', - ], - 'MsgLifeCycle' => [ - 'description' => 'The retention period of group messages in the application. Valid values:'."\n" - ."\n" - .'* 0 (default): 30 days'."\n" - .'* 1: 90 days'."\n" - .'* 2: 180 days'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'DataCenter' => [ - 'description' => 'The live center.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'title' => 'SetLiveMpuTaskSei', + 'summary' => 'Configures custom supplemental enhancement information (SEI) for co-streaming.', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'You can call this operation to configure custom SEI for a mixed-stream relay task.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'changeSet' => [ + ['createdAt' => '2024-07-04T06:14:35.000Z', 'description' => 'Error codes changed'], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B8EB4994-1368-1458-B9F3-5B88D76D734C\\",\\n \\"HasMore\\": true,\\n \\"NextPageToken\\": 1,\\n \\"AppList\\": [\\n {\\n \\"AppId\\": \\"demo\\",\\n \\"AppKey\\": \\"**********************************\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"Disable\\": \\"false\\",\\n \\"AppName\\": \\"testApp\\",\\n \\"CreateTime\\": 1698305471,\\n \\"ModifyTime\\": 1698305471,\\n \\"MsgLifeCycle\\": 1,\\n \\"DataCenter\\": \\"cn-shanghai\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n B8EB4994-1368-1458-B9F3-5B88D76D734C\\n true\\n 1\\n \\n demo\\n **********************************\\n **************************************************************************\\n false\\n testApp\\n 1698305471\\n 1698305471\\n 1\\n cn-shanghai\\n \\n","errorExample":""}]', - 'title' => 'ListLiveMessageApps', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveMessageApp' => [ - 'summary' => 'Query Interactive Message App', - 'methods' => [ - 'post', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveMpuTaskSei'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveMpuTaskSei', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'SetLiveStreamBlock' => [ + 'summary' => 'Sets stream-level blocking for live streams by calling SetLiveStreamBlock.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', + 'operationType' => 'update', + 'riskType' => 'high', 'chargeType' => 'free', - 'abilityTreeCode' => '193804', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveOLG5VH'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'DomainName', + 'in' => 'query', + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the application to which the live stream belongs. You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'BlockType', 'in' => 'query', 'schema' => [ - 'title' => '待查询的AppID', - 'description' => 'The ID of the interactive messaging application to query.'."\n", + 'description' => 'The blocking mode. Valid values:'."\n" + .'- blacklist: blacklist.'."\n" + .'- whitelist: whitelist.', + 'enumValueTitles' => ['blacklist' => 'Blacklist.', 'whitelist' => 'Whitelist.'], 'type' => 'string', 'required' => true, - 'example' => 'demo', + 'enum' => ['blacklist', 'whitelist'], + 'example' => 'blacklist', + 'title' => '', ], ], [ - 'name' => 'DataCenter', + 'name' => 'LocationList', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The blocked regions, such as CN and AS. Separate multiple regions with commas (,).', 'type' => 'string', 'required' => true, 'example' => 'CN', 'title' => ''], + ], + [ + 'name' => 'ReleaseTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of the blocking period in UTC. If this parameter is not specified, the blocking lasts for 7 days by default.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T19:00:00Z', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The returned result.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '9FB68B5B-ED07-18F0-A3CF-083F4E74****', - ], - 'AppId' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'demo', - ], - 'AppName' => [ - 'description' => 'The name of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'testApp', - ], - 'AppKey' => [ - 'description' => 'The AppKey of the interactive messaging application. It is used to authorize operations related to the application ID.'."\n", - 'type' => 'string', - 'example' => '**********************************', - ], - 'AppSign' => [ - 'description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", - 'type' => 'string', - 'example' => '**************************************************************************', - ], - 'AuditType' => [ - 'description' => 'The content moderation method. Valid values:'."\n" - ."\n" - .'* 0: Content moderation is disabled.'."\n" - .'* 1: Built-in content moderation is used.'."\n" - .'* 2: Custom content moderation is used.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'AuditUrl' => [ - 'description' => 'The URL for content moderation. This parameter is returned when the value of AuditType is 2.'."\n", - 'type' => 'string', - 'example' => 'http://example.aliyundoc.com/exampleaudit', - ], - 'EventCallbackUrl' => [ - 'description' => 'The callback URL for events such as user logon, logoff, joining a group, and leaving a group. An empty value indicates that callbacks are disabled.'."\n", - 'type' => 'string', - 'example' => 'http://example.aliyundoc.com/examplecallback', - ], - 'Disable' => [ - 'description' => 'Indicates whether the interactive messaging application is disabled.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'CreateTime' => [ - 'description' => 'The time when the interactive messaging application was created. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1698305471', - ], - 'ModifyTime' => [ - 'description' => 'The time when the interactive messaging application was modified. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1698305471', - ], - 'MsgLifeCycle' => [ - 'description' => 'The retention period of group messages in the application. Valid values:'."\n" - ."\n" - .'* 0 (default): 30 days'."\n" - .'* 1: 90 days'."\n" - .'* 2: 180 days'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'DataCenter' => [ - 'description' => 'The data center.'."\n", - 'type' => 'string', - 'example' => 'cn-shanghai', - ], + 'Description' => ['description' => 'The result description.'."\n" + .'- Success: ok.'."\n" + .'- Failure: failure details.', 'type' => 'string', 'example' => 'ok', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3be7ade8-d907-483c-b24a-0dad4595beaf', 'title' => ''], + 'Status' => ['description' => 'The task status. Valid values:'."\n" + .'- ok: succeeded.'."\n" + .'- fail: failed.'."\n" + ."\n" + .'> The task is considered failed if any single subtask fails to be created.', 'type' => 'string', 'example' => 'ok', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidReleaseTime.Malformed', 'errorMessage' => 'Specified ReleaseTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"ok\\",\\n \\"RequestId\\": \\"3be7ade8-d907-483c-b24a-0dad4595beaf\\",\\n \\"Status\\": \\"ok\\"\\n}","type":"json"}]', + 'title' => 'Set live stream-level blocking', + 'description' => 'You can configure up to 200 live stream area blocking rules for a domain name. If duplicate rules with the same AppName and StreamName exist in the live stream area blocking rules, the most recently updated rule takes effect.'."\n" + .'### QPS limit'."\n" + .'The single-user QPS limit for this operation is 50 calls per second. If this limit is exceeded, the API invocations are throttled, which may affect your business. Invoke this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveStreamBlock'], ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveStreamBlock', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"9FB68B5B-ED07-18F0-A3CF-083F4E74****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppName\\": \\"testApp\\",\\n \\"AppKey\\": \\"**********************************\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"AuditType\\": 2,\\n \\"AuditUrl\\": \\"http://example.aliyundoc.com/exampleaudit\\",\\n \\"EventCallbackUrl\\": \\"http://example.aliyundoc.com/examplecallback\\",\\n \\"Disable\\": false,\\n \\"CreateTime\\": 1698305471,\\n \\"ModifyTime\\": 1698305471,\\n \\"MsgLifeCycle\\": 1,\\n \\"DataCenter\\": \\"cn-shanghai\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 9FB68B5B-ED07-18F0-A3CF-083F4E74****\\n demo\\n testApp\\n **********************************\\n **************************************************************************\\n 2\\n http://example.aliyundoc.com/exampleaudit\\n http://example.aliyundoc.com/examplecallback\\n false\\n 1698305471\\n 1698305471\\n 1\\n cn-shanghai\\n","errorExample":""}]', - 'title' => 'DescribeLiveMessageApp', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'ModifyLiveMessageAppDisable' => [ - 'summary' => 'Disables or enables an interactive messaging application.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'SetLiveStreamDelayConfig' => [ + 'summary' => 'You can call SetLiveStreamDelayConfig to configure live streaming latency.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ab6b5740****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Disable', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to disable the interactive messaging application.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'HlsDelay', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The HLS playback latency. Unit: seconds.'."\n" + ."\n" + .'> If this parameter is left empty, the latency is set based on the value of HlsLevel.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '4', 'title' => ''], + ], + [ + 'name' => 'HlsLevel', + 'in' => 'query', + 'schema' => ['description' => 'The HLS latency level. This parameter is ignored if HlsDelay is set.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'- **short** (default): 3 seconds.'."\n" + ."\n" + .'- **medium**: 6 seconds.'."\n" + ."\n" + .'- **long**: 15 seconds.'."\n" + ."\n" + .'> If both HlsDelay and HlsLevel are left empty, the default value **short** is used.', 'type' => 'string', 'required' => false, 'example' => 'short', 'title' => ''], + ], + [ + 'name' => 'FlvDelay', + 'in' => 'query', + 'schema' => ['description' => 'The FLV playback latency. Unit: seconds.'."\n" + ."\n" + .'> If this parameter is left empty, the latency is set based on the value of FlvLevel.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '8', 'title' => ''], + ], + [ + 'name' => 'FlvLevel', + 'in' => 'query', + 'schema' => ['description' => 'The FLV latency level. This parameter is ignored if FlvDelay is set.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'- **short** (default): 2 seconds.'."\n" + ."\n" + .'- **medium**: 4 seconds.'."\n" + ."\n" + .'- **long**: more than 4 seconds.'."\n" + ."\n" + .'> If both FlvDelay and FlvLevel are left empty, the default value **short** is used.', 'type' => 'string', 'required' => false, 'example' => 'medium', 'title' => ''], + ], + [ + 'name' => 'RtmpDelay', + 'in' => 'query', + 'schema' => ['description' => 'The RTMP playback latency. Unit: seconds.'."\n" + ."\n" + .'> If this parameter is left empty, the latency is set based on the value of RtmpLevel.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '4', 'title' => ''], + ], + [ + 'name' => 'RtmpLevel', + 'in' => 'query', + 'schema' => ['description' => 'The RTMP latency level. This parameter is ignored if RtmpDelay is set.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'- **short** (default): 2 seconds.'."\n" + ."\n" + .'- **medium**: 4 seconds.'."\n" + ."\n" + .'- **long**: more than 4 seconds.'."\n" + ."\n" + .'> If both RtmpDelay and RtmpLevel are left empty, the default value **short** is used.', 'type' => 'string', 'required' => false, 'example' => 'short', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '6AA1AE11-EA78-1FD4-A966-6BA843073F6D', - ], - 'AppId' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'ab6b5740****', - ], - 'AppSign' => [ - 'description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", - 'type' => 'string', - 'example' => 'H4sIAAAAAAAE/wBwAI//zguHB+lYCilkv7diSkk4GhHQAvMXs5tWyI+I09+uEBiB5sqa28ycJSJFmsd50Mhz8nDrvvqmti+fVaNLC5CMgLvNIy48v1aV9x74LRNFN0+Dxd2Al51xuDNkEIDaEwjqfyxscTXjSr0iQjHu2WgkpQAAAP//AQAA//+yR5XCc****', - ], - 'Disable' => [ - 'description' => 'Indicates whether the interactive messaging application is disabled.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '4C747C97-7ECD-4C61-8A92-67AD806331FF', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + 'errorCodes' => [], + 'title' => 'SetLiveStreamDelayConfig', + 'description' => '- This operation configures the latency for a streaming domain.'."\n" + ."\n" + .'- The server-side cache stores an integer number of Groups of Pictures (GOPs). Therefore, the latency cannot be less than the GOP size. The actual latency is estimated based on the GOP size. For example, if you set RtmpDelay to 4 seconds for an RTMP stream and the GOP size is 2 seconds, the actual latency ranges from 2 seconds (4 - 2) to 6 seconds (4 + 2). If the GOP size is larger than the configured RtmpDelay, for example, GOP = 5 seconds and RtmpDelay = 4 seconds, the latency fluctuates between 0 and 9 seconds.'."\n" + ."\n" + .'- Latency configurations do not take effect for audio-only streams. The default latency is close to 0 seconds.'."\n" + ."\n" + .'- For an HLS configuration, the segment size is calculated as \\`Delay / 3\\` and rounded down to the nearest integer. The minimum segment size is 1 second. The maximum number of segments is 4 if the segment size is 3 seconds or more. Otherwise, the maximum is 6 segments.'."\n" + ."\n" + .'- The actual HLS segment size cannot be smaller than the GOP size.'."\n" + ."\n" + .'- The HLS latency is calculated as: Configured Segment Size × 3.'."\n" + ."\n" + .'- If you do not call this operation, the system uses the default values. The default latency is 2 seconds for RTMP and 4 seconds for FLV. For HLS, the default segment size is 5 seconds, which results in a latency of 15 seconds with a maximum of 6 segments.'."\n" + ."\n" + .'## Queries per second (QPS) limit'."\n" + ."\n" + .'The QPS limit for this operation is 1,000 calls per second per user. If you exceed this limit, API calls are throttled, which may affect your business. Plan your calls accordingly.', + 'extraInfo' => '| HttpCode | 错误码|错误信息| 描述|'."\n" + .'|---------------|--------|'."\n" + .'| 500| Internal|The request processing has failed due to some unknown error.| 后台发生未知错误。|'."\n" + .'| 404| InvalidDomain.NotFound|The domain provided does not exist in our records.| 当前账户下未查到域名。|'."\n" + .'| 403| IllegalOperation|Illegal domain operate is not permitted.| 不支持当前操作,如:非直播类域名。|'."\n" + .'| 400| InvalidNotifyUrl.Malformedl|Specified parameter NotifyUrl is not valid.| 不是一个合法的HTTP地址。|'."\n" + .'| 400| InvalidNotifyUrl.Unsafel| Specified NotifyUrl is not safe.| 非安全的NotifyUrl值。|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '1000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'SetLiveStreamDelayConfig'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveStreamDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6AA1AE11-EA78-1FD4-A966-6BA84307****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppSign\\": \\"********************\\",\\n \\"Disable\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 6AA1AE11-EA78-1FD4-A966-6BA84307****\\n demo\\n ********************\\n true\\n","errorExample":""}]', - 'title' => 'ModifyLiveMessageAppDisable', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4C747C97-7ECD-4C61-8A92-67AD806331FF\\"\\n}","type":"json"}]', ], - 'ModifyLiveMessageAppAudit' => [ - 'summary' => 'Modifies the content moderation settings of an interactive messaging application.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'SetLiveStreamPreloadTasks' => [ + 'summary' => 'Sets live stream prefetch tasks. You can prefetch up to 100 live streams in a batch.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application whose content moderation settings you want to modify.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'AuditType', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'title' => '安全审核方式:0为不进行安全审核,1为内置安全审核, 2为自定义安全审核', - 'description' => 'The content moderation method. Valid values:'."\n" - ."\n" - .'* 0: disables content moderation.'."\n" - .'* 1: uses built-in content moderation.'."\n" - .'* 2: uses custom content moderation.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - 'enum' => [ - '0', - '1', - '2', - ], - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'AuditUrl', + 'name' => 'PlayUrl', 'in' => 'query', - 'schema' => [ - 'title' => '如果是自定义安全审核,则需要提供安全审核的地址', - 'description' => 'The URL for content moderation. This parameter is required if you set AuditType to 2. The URL must start with http:// or https:// and cannot contain a private IP address or a port number.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://example.aliyundoc.com/exampleaudit', - ], + 'schema' => ['description' => 'The live stream URLs. You can specify multiple URLs separated by commas (,). A maximum of 100 URLs can be specified.', 'type' => 'string', 'required' => true, 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'Area', 'in' => 'query', 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", + 'description' => 'The prefetch area. Valid values:'."\n" + .'- domestic: the Chinese mainland.'."\n" + .'- overseas: outside the Chinese mainland, including Hong Kong (China), Macao (China), and Taiwan (China).'."\n" + .'- global: global acceleration.'."\n" + .' '."\n" + .'If you do not specify this parameter, the default prefetch area is the acceleration region configured for your domain name.', + 'enumValueTitles' => ['domestic' => 'The Chinese mainland.', 'global' => 'Global acceleration.', 'overseas' => 'Outside the Chinese mainland, including Hong Kong (China), Macao (China), and Taiwan (China).'], 'type' => 'string', 'required' => false, - 'example' => 'cn-shanghai', + 'enum' => ['domestic', 'overseas', 'global'], + 'example' => 'domestic', + 'title' => '', ], ], + [ + 'name' => 'PreloadedStartTime', + 'in' => 'query', + 'schema' => ['description' => 'The start time of the prefetch task in UTC. Example: 2016-06-29T19:00:00Z. If you do not specify this parameter, the default prefetch duration is 1 hour.', 'type' => 'string', 'required' => false, 'example' => '2016-06-29T19:00:00Z', 'title' => ''], + ], + [ + 'name' => 'PreloadedEndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of the prefetch task in UTC. Example: 2016-06-30T19:00:00Z. The interval between EndTime and StartTime cannot exceed 6 hours.', 'type' => 'string', 'required' => false, 'example' => '2016-06-30T19:00:00Z', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '4C4E8440-3838-1831-9BDE-AFC15803****', - ], - 'AppId' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'demo', - ], - 'AppSign' => [ - 'description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", - 'type' => 'string', - 'example' => '**************************************************************************', - ], - 'AuditType' => [ - 'description' => 'The content moderation method.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'AuditUrl' => [ - 'description' => 'The URL for content moderation. This parameter is returned when the value of AuditType is 2.'."\n", - 'type' => 'string', - 'example' => 'http: //example.aliyundoc.com/exampleaudit', - ], - 'AuditNeedAuthentication' => [ - 'description' => 'Indicates whether authentication is enabled. If custom content moderation is used, the value of this parameter is true by default.'."\n", - 'type' => 'boolean', - 'example' => 'true', + 'FailedURL' => ['description' => 'The number of URLs for which the prefetch task failed.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'PreloadTasksMessages' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PreloadTasksMessage' => [ + 'description' => 'The details of the live stream prefetch task.', + 'type' => 'array', + 'items' => [ + 'description' => 'The details of the live stream prefetch task.', + 'type' => 'object', + 'properties' => [ + 'Description' => ['description' => 'Indicates whether the prefetch task is successful. Valid values:'."\n" + .'- Successfully: successful.'."\n" + .'- InternalError: failed.', 'type' => 'string', 'example' => 'Successfully', 'title' => ''], + 'PlayUrl' => ['description' => 'The live stream URL.', 'type' => 'string', 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****', 'title' => ''], + 'TaskId' => ['description' => 'The task ID.', 'type' => 'string', 'example' => 'yourTaskId', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'title' => '', + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '36E0E523-E0C6-5D95-A465-A8EA2DCBA2A5', 'title' => ''], + 'Status' => ['description' => 'The task status. Valid values:'."\n" + .'- Success: successful.'."\n" + .'- Failed: failed.'."\n" + ."\n" + .'> The status is Failed if any task fails to be created.', 'type' => 'string', 'example' => 'Success', 'title' => ''], + 'SuccessURL' => ['description' => 'The number of URLs for which the prefetch task succeeded.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], + 'TotalURL' => ['description' => 'The total number of URLs in the prefetch task.', 'type' => 'integer', 'format' => 'int32', 'example' => '1', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorInvalidAuditUrl', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not match the specified start time.', 'description' => ''], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'Duration between StartTime and EndTime is too long.', 'description' => ''], + ['errorCode' => 'QuotaExceeded.PreloadTaskslimit', 'errorMessage' => 'Exceed max task count limit', 'description' => ''], + ['errorCode' => 'NoSpecialConfiguration', 'errorMessage' => 'no special configuration for domain name.', 'description' => ''], ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"FailedURL\\": 0,\\n \\"PreloadTasksMessages\\": {\\n \\"PreloadTasksMessage\\": [\\n {\\n \\"Description\\": \\"Successfully\\",\\n \\"PlayUrl\\": \\"rtmp://guide.aliyundoc.com/liveApp****/liveStream****\\",\\n \\"TaskId\\": \\"yourTaskId\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"36E0E523-E0C6-5D95-A465-A8EA2DCBA2A5\\",\\n \\"Status\\": \\"Success\\",\\n \\"SuccessURL\\": 1,\\n \\"TotalURL\\": 1\\n}","type":"json"}]', + 'title' => 'Set live stream prefetch tasks', + 'description' => '- You can call this operation to set live stream prefetch tasks in batches. You can set up to 100 live stream URLs at a time.'."\n" + .'- Live stream prefetch does not support HLS URLs.'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 50 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation as needed.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveStreamPreloadTasks'], ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', + ], + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:SetLiveStreamPreloadTasks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"4C4E8440-3838-1831-9BDE-AFC15803****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"AuditType\\": 2,\\n \\"AuditUrl\\": \\"http: //example.aliyundoc.com/exampleaudit\\",\\n \\"AuditNeedAuthentication\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 4C4E8440-3838-1831-9BDE-AFC15803****\\n demo\\n **************************************************************************\\n 2\\n http: //example.aliyundoc.com/exampleaudit\\n true\\n","errorExample":""}]', - 'title' => 'ModifyLiveMessageAppAudit', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'ModifyLiveMessageAppCallback' => [ - 'summary' => 'Modifies the callback settings of an interactive messaging application.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'SetLiveStreamsNotifyUrlConfig' => [ + 'summary' => 'Sets the stream ingest callback configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeCode' => '107234', + 'abilityTreeNodes' => ['FEATUREliveYUZBM3'], + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application whose callback settings you want to modify.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The ingest domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'EventCallbackUrl', + 'name' => 'SwitchNotifyUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL for events such as user logon, logoff, joining a group, and leaving a group. If you leave this parameter empty, callbacks are disabled. The callback URL must start with http:// or https:// and cannot contain a private IP address or a port number.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://example.aliyundoc.com/examplecallback', - ], + 'schema' => ['description' => 'The callback URL for stream switching information.', 'type' => 'string', 'required' => false, 'example' => 'http://guide.aliyundoc.com/switchnotify', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'NotifyUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL to which live stream information is pushed.', 'type' => 'string', 'required' => false, 'example' => 'http://guide.aliyundoc.com/notify', 'title' => ''], + ], + [ + 'name' => 'ExceptionNotifyUrl', + 'in' => 'query', + 'schema' => ['description' => 'The callback URL for exception events.', 'type' => 'string', 'required' => false, 'example' => 'https://4a7e5f08.r37.cpolar.top/live/Rsssd/call-back/streamStart', 'title' => ''], + ], + [ + 'name' => 'NotifyReqAuth', 'in' => 'query', 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", + 'description' => 'Specifies whether to enable authentication. Valid values:'."\n" + ."\n" + .'- **yes**: Enabled. If you set this parameter to **yes**, you must also set the NotifyAuthKey request parameter.'."\n" + .'- **no**: Disabled.'."\n" + ."\n" + .'> If this parameter is not specified, the default value is **no**.'."\n" + ."\n" + .'For the authentication logic, see **Stream ingest callback authentication description** below.', + 'enumValueTitles' => ['no' => 'Disabled.', 'yes' => 'Enabled.'], 'type' => 'string', 'required' => false, - 'example' => 'cn-shanghai', + 'default' => 'no', + 'enum' => ['yes', 'no'], + 'example' => 'yes', + 'title' => '', ], ], + [ + 'name' => 'NotifyAuthKey', + 'in' => 'query', + 'schema' => ['description' => 'The authentication key.'."\n" + ."\n" + .'> This parameter is required when the NotifyReqAuth request parameter is set to **yes**.'."\n" + ."\n" + .'Value requirements:'."\n" + ."\n" + .'- 16 to 64 characters in length.'."\n" + ."\n" + .'- Supports uppercase letters, lowercase letters, and digits.', 'type' => 'string', 'required' => false, 'example' => '123456', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '1F0FFEAD-B7D5-1D4A-A6B9-8C63ADF6****', - ], - 'AppId' => [ - 'description' => 'The ID of the interactive messaging application.'."\n", - 'type' => 'string', - 'example' => 'demo', - ], - 'AppSign' => [ - 'description' => 'The signature of the interactive messaging application. It is required by the interactive messaging SDK.'."\n", - 'type' => 'string', - 'example' => '**************************************************************************', - ], - 'EventCallbackUrl' => [ - 'description' => 'The callback URL for events such as user logon, logoff, joining a group, and leaving a group. This parameter is not returned if it has an empty value.'."\n", - 'type' => 'string', - 'example' => 'http://example.aliyundoc.com/examplecallback', - ], - 'EventCallbackNeedAuthentication' => [ - 'description' => 'Indicates whether authentication is required for event callbacks. Default value: true.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => ' 40A4F36D-A7CC-473A-88E7-154F92242566', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorInvalidEventCallbackUrl', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'CodeGetMainPlaybackDomainError', 'errorMessage' => 'Failed to obtain the main playback domain name.', 'description' => 'Failed to get primary playback domain name.'], + ['errorCode' => 'CodeNotPushDomain', 'errorMessage' => 'The domain name is not a push domain name.', 'description' => 'The domain name is not a push domain name.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\" 40A4F36D-A7CC-473A-88E7-154F92242566\\"\\n}","type":"json"}]', + 'title' => 'Set stream ingest callback notification URL configuration', + 'description' => '- This operation allows you to configure the callback URL and authentication information for an ingest domain.'."\n" + ."\n" + .'- The real-time stream status callback promptly notifies you of the results of stream ingest or stream disconnection operations. For more information, see [Stream ingest callback format description](~~54787~~).'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 15 calls per second. If this limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## Callback logic description'."\n" + .'The publish callback logic in the live stream ingest status callback:'."\n" + ."\n" + .'For RTMP stream ingest, after ApsaraVideo Live receives the On Publish message, if the ingest client does not actively disconnect within 2 seconds, ApsaraVideo Live sends a successful stream ingest callback.'."\n" + ."\n" + .'Assume that you have an ingest domain A and a streaming domain B. If your domain B uses pull-based live streaming (fixed pull or triggered back-to-origin pull) and requires callbacks, configure the stream ingest callback on domain A. After configuration, the pull callback logic for domain B is the same as described above. By default, if no active disconnection occurs within 2 seconds after the connection is established, the pull is considered successful.'."\n" + .'> We recommend that you not only rely on callback notifications to determine whether stream ingest or pull access is normal, but also use the online stream list to verify that stream ingest is normal before distributing the live streaming URL to your application.'."\n" + ."\n" + .'## Stream ingest callback authentication description'."\n" + .'The stream ingest callback authentication feature is disabled by default. You can enable authentication when configuring the stream ingest callback URL. After the feature is enabled, the authentication logic is as follows:'."\n" + ."\n" + .'1. When ApsaraVideo Live initiates a callback request, it includes the `ALI-LIVE-TIMESTAMP` and `ALI-LIVE-SIGNATURE` fields in the HTTP(S) request header for the callback message receiving server to perform signature authentication. The value of `ALI-LIVE-SIGNATURE` is calculated as follows:'."\n" + .'`ALI-LIVE-SIGNATURE=MD5SUM(MD5CONTENT)`'."\n" + .'`MD5CONTENT=||`'."\n" + ."\n" + .'2. When the callback message receiving server receives the callback message, it concatenates the callback domain name, the ALI-LIVE-TIMESTAMP value, and the authentication key, calculates the MD5 value to obtain an encrypted string, and then compares the calculated encrypted string with the ALI-LIVE-SIGNATURE field value in the HTTP(S) request header initiated by ApsaraVideo Live. If they do not match, the request is invalid.'."\n" + ."\n" + .'## Special error codes'."\n" + .'|Error code |Description |HTTP status code |Meaning |'."\n" + .'|------------|--------|---------|------|'."\n" + .'|InternalError |The request processing has failed due to some unknown error. |500 |An unknown error occurred in the backend. |'."\n" + .'|InvalidDomain.NotFound | The domain provided does not exist in our records. |404 |The domain name is not found under the current account. |'."\n" + .'|IllegalOperation |Illegal domain operate is not permitted. |403 |The current operation is not supported, such as for non-live streaming domain names. |'."\n" + .'|InvalidNotifyUrl.Malformed |Specified parameter NotifyUrl is not valid. |400 |The callback URL is not a valid HTTP address. |'."\n" + .'|InvalidNotifyUrl.Unsafe |Specified NotifyUrl is not safe. |400 |The NotifyUrl value is not safe. |.', + 'changeSet' => [ + ['createdAt' => '2025-05-14T02:41:18.000Z', 'description' => 'Error codes changed, Request parameters changed'], + ['createdAt' => '2025-04-01T06:32:41.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2025-02-20T08:25:18.000Z', 'description' => 'Request parameters changed'], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1F0FFEAD-B7D5-1D4A-A6B9-8C63ADF6****\\",\\n \\"AppId\\": \\"demo\\",\\n \\"AppSign\\": \\"**************************************************************************\\",\\n \\"EventCallbackUrl\\": \\"http://example.aliyundoc.com/examplecallback\\",\\n \\"EventCallbackNeedAuthentication\\": true\\n}","errorExample":""},{"type":"xml","example":"\\n 1F0FFEAD-B7D5-1D4A-A6B9-8C63ADF6****\\n demo\\n **************************************************************************\\n http://example.aliyundoc.com/examplecallback\\n true\\n","errorExample":""}]', - 'title' => 'ModifyLiveMessageAppCallback', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'KickLiveMessageGroupUser' => [ - 'summary' => 'Removes a user from an interactive messaging group.', - 'methods' => [ - 'post', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveStreamsNotifyUrlConfig'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:SetLiveStreamsNotifyUrlConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'SetShowListBackground' => [ + 'summary' => 'Sets the background for a playlist mode production studio.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeCode' => '227260', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application to which the interactive messaging group belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'coims-****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'GroupId', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging group from which you want to remove the user.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'grouptest', - ], + 'allowEmptyValue' => false, + 'schema' => ['description' => 'The production studio ID.'."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, check the CasterId value returned by the CreateCaster operation.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, navigate to **ApsaraVideo Live console** > **Production Studios** > **Cloud Production Studio** to view the production studio name.'."\n" + ."\n" + .'> The production studio name in the production studio list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'KickoffUser', + 'name' => 'ResourceType', 'in' => 'query', 'schema' => [ - 'description' => 'The user that you want to remove.'."\n", + 'description' => 'The material type. Valid values:'."\n" + ."\n" + .'- LIVE: live streaming material. Supports live streaming materials and third-party URLs.'."\n" + ."\n" + .'- VOD: video-on-demand material. Supports video-on-demand materials and third-party URLs.'."\n" + ."\n" + .'- PIC: image material. Supports video-on-demand materials and third-party URLs.'."\n" + ."\n" + .'> Specify one of the three values or leave this parameter empty.', + 'enumValueTitles' => ['VOD' => 'video-on-demand material.', 'PIC' => 'image material.', 'LIVE' => 'live streaming material.'], 'type' => 'string', - 'required' => true, - 'example' => 'uid1', + 'required' => false, + 'enum' => ['VOD', 'PIC', 'LIVE'], + 'example' => 'VOD', + 'title' => '', ], ], [ - 'name' => 'DataCenter', + 'name' => 'MaterialId', 'in' => 'query', - 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The video-on-demand material ID.'."\n" + ."\n" + .'> Specify either this parameter or ResourceUrl.', 'type' => 'string', 'required' => false, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e****', 'title' => ''], + ], + [ + 'name' => 'ResourceUrl', + 'in' => 'query', + 'schema' => ['description' => 'The URL of the external material.', 'type' => 'string', 'required' => false, 'example' => 'http://****/atestObject****.m3u8', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '97168878-5288-10CE-AE56-E2D1627FB5F4', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '987DA143-A39C-5B5D-AF5B-3B07944A0036'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.Status', 'errorMessage' => '%s, please check and try again.', 'description' => 'Status is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.StartTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.EndTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The live service is not enabled. Please check and try again.'], ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => 'The caster does not exist.', 'description' => 'The caster does not exist.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"97168878-5288-10CE-AE56-E2D1627F****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 97168878-5288-10CE-AE56-E2D1627F****\\n","errorExample":""}]', - 'title' => 'KickLiveMessageGroupUser', - 'description' => 'Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"987DA143-A39C-5B5D-AF5B-3B07944A0036\\"\\n}","type":"json"}]', + 'title' => 'Set playlist background', + 'description' => '- Create a playlist mode production studio before calling this operation to add background materials. To create a production studio by using an API operation, see [CreateCaster](~~2848009~~).'."\n" + .'- You can use this operation to create, update, or delete a playlist background. To delete the background, leave the ResourceType, ResourceUrl, and MaterialId parameters empty. '."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'>'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ModifyLiveMessageUserInfo' => [ - 'summary' => 'Modifies the information about one or more users.', - 'methods' => [ - 'post', + .'- When using ApsaraVideo VOD resources, use managed bucket resources first. Resources in your own bucket may expire. If you use resources in your own bucket, check the resource validity period.'."\n" + ."\n" + .'- Use ApsaraVideo Live and ApsaraVideo VOD resources as material input first. Resources from third-party URLs may fail to play. Verify the quality and validity of such resources.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetShowListBackground'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetShowListBackground', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + ], + 'SetSnapshotCallbackAuth' => [ + 'summary' => 'Configures authentication for snapshot callbacks.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '198649', - 'abilityTreeNodes' => [ - 'FEATUREliveSL6Y07', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the interactive messaging application whose user information you want to modify.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'UserId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the user whose information you want to modify.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'uid2', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'UserMetaInfo', + 'name' => 'CallbackReqAuth', 'in' => 'query', - 'schema' => [ - 'description' => 'The additional information about the user after the modification. The value can be up to 512 bytes in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'uid2meta2', - ], + 'schema' => ['description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" + ."\n" + .'- **yes**: enables'."\n" + ."\n" + .'- **no**: disables', 'type' => 'string', 'required' => true, 'example' => 'yes', 'title' => ''], ], [ - 'name' => 'DataCenter', + 'name' => 'CallbackAuthKey', 'in' => 'query', + 'schema' => ['description' => 'The authentication key.', 'type' => 'string', 'required' => true, 'example' => 'yourkey', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2593195~~) operation to create the interactive messaging application. Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD5', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], + ], + ], + 'title' => 'SetSnapshotCallbackAuth', + 'description' => '- Before calling this API, configure a callback URL first. For more information, see [AddLiveAppSnapshotConfig](~~2847897~~).'."\n" + ."\n" + .'- The snapshot service supports adding a signature header to HTTP or HTTPS callback requests. This allows the receiving server to authenticate the signature and prevent unauthorized or invalid requests. For more information, see [Usage notes for callback authentication](~~417349~~).'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetSnapshotCallbackAuth'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetSnapshotCallbackAuth', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD5\\"\\n}","type":"json"}]', + ], + 'StartCaster' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you create the production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], + ], + ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', + 'description' => 'The information about the production studio.', 'type' => 'object', 'properties' => [ - 'FailList' => [ - 'description' => 'The users whose information failed to be modified.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Code' => [ - 'description' => 'The error code.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '440', - ], - 'GroupId' => [ - 'description' => 'The ID of the group to which the user belongs. For failed modification, the information of the user is not updated when you query the users in the group. You can try again after you check the failure reason and fix the issue.'."\n", - 'type' => 'string', - 'example' => 'grouptest2', - ], - 'Reason' => [ - 'description' => 'The reason why the information of the user failed to be modified.'."\n", - 'type' => 'string', - 'example' => 'group not exists or already deleted', - ], - 'Success' => [ - 'description' => 'Indicates whether the group to which the user belongs is modified. In this case, the group is not modified.'."\n", - 'type' => 'boolean', - 'example' => 'false', + 'PgmSceneInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SceneInfo' => [ + 'itemNode' => true, + 'description' => 'The list of PGM scenarios.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'A PGM scenario.', + 'type' => 'object', + 'properties' => [ + 'SceneId' => ['description' => 'The scenario ID.', 'type' => 'string', 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', 'title' => ''], + 'StreamInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StreamInfo' => [ + 'description' => 'The list of bypass output streams.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'A bypass output stream.', + 'type' => 'object', + 'properties' => [ + 'OutputStreamUrl' => ['description' => 'The playback URL.', 'type' => 'string', 'example' => 'rtmp://abclive/caster/example.net', 'title' => ''], + 'TranscodeConfig' => ['description' => 'The transcoding configuration. Valid values:'."\n" + ."\n" + .'- **lsd**: standard definition.'."\n" + ."\n" + .'- **lld**: low definition.'."\n" + ."\n" + .'- **lud**: ultra-high definition.'."\n" + ."\n" + .'- **lhd**: high definition.', 'type' => 'string', 'example' => 'lld', 'title' => ''], + 'VideoFormat' => ['description' => 'The format. Valid values:'."\n" + ."\n" + .'- **flv**.'."\n" + ."\n" + .'- **rtmp**.'."\n" + ."\n" + .'- **m3u8**.', 'type' => 'string', 'example' => 'flv', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + 'example' => '', + ], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'StreamUrl' => ['description' => 'The playback stream URL for the PGM scenario of the production studio. This is not the URL for the bypass output stream.', 'type' => 'string', 'example' => 'rtmp://abclive/caster/example.edu', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3271ACD2-F143-1204-AFDB-9A87C131****', - ], - 'SuccessList' => [ - 'description' => 'The users whose information was modified.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'GroupId' => [ - 'description' => 'The ID of the group to which the user belongs. For successful modification, the information of the user is updated when you query the users in the group.'."\n", - 'type' => 'string', - 'example' => 'grouptest1', - ], - 'Success' => [ - 'description' => 'Indicates whether the group to which the user belongs is modified. In this case, the group is modified.'."\n", - 'type' => 'boolean', - 'example' => 'true', + 'PvwSceneInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SceneInfo' => [ + 'itemNode' => true, + 'description' => 'The list of PVW scenarios.', + 'title' => '', + 'type' => 'array', + 'items' => [ + 'description' => 'A PVW scenario.', + 'type' => 'object', + 'properties' => [ + 'SceneId' => ['description' => 'The scenario ID.', 'type' => 'string', 'example' => 'b5f8c837-ceeb-424f-b30b-68e94e86****', 'title' => ''], + 'StreamUrl' => ['description' => 'The playback stream URL for the PVW scenario of the production studio. This is not the URL for the bypass output stream.', 'type' => 'string', 'example' => 'rtmp://abclive/caster/example.net', 'title' => ''], + ], + 'title' => '', + 'example' => '', ], + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '6EBD1AC4-C34D-4AE1-963E-B688A228BE31', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Caster status is inuse, please check and try again later.'], + ['errorCode' => 'IncorrectSceneStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene is on, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'IncorrectChannel.Disable', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The Channel is in a non-settable state, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus.Cease', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The caster has stopped service due to arrears, please settle and try again.'], + ['errorCode' => 'IncorrectCasterStatus.Expire', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The prepaid instance of the caster has expired, please renew it and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'UserQuotaExceed', 'errorMessage' => 'Quota exceeded: %s.', 'description' => 'Quota exceeded: %s.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide template does not exist. Please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ['errorCode' => 'InvalidResource.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ['errorCode' => 'InvalidTranscode.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Transcoding is not configured, please check and try again.'], + ['errorCode' => 'InvalidDelay.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Delayed playback is not configured, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ], + 'title' => 'StartCaster', + 'summary' => 'Starts a production studio. If the Preview (PVW) and Program (PGM) scenarios do not exist, this operation creates them, and then starts the scenarios and the underlying audio and video processing tasks.', + 'description' => 'Before starting a production studio, call the [CreateCaster](~~2848009~~) operation to create the studio. Then, call this operation to start it. If the Preview (PVW) and Program (PGM) scenarios do not exist, this operation creates them, and then starts the scenarios and their underlying audio and video processing tasks.'."\n" + ."\n" + .'## QPS Limit'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. If you exceed this limit, API calls are throttled. Throttling may affect your business. Call this operation within the limit.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartCaster'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"FailList\\": [\\n {\\n \\"Code\\": 440,\\n \\"GroupId\\": \\"grouptest2\\",\\n \\"Reason\\": \\"group not exists or already deleted\\",\\n \\"Success\\": false\\n }\\n ],\\n \\"RequestId\\": \\"3271ACD2-F143-1204-AFDB-9A87C131****\\",\\n \\"SuccessList\\": [\\n {\\n \\"GroupId\\": \\"grouptest1\\",\\n \\"Success\\": true\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 3271ACD2-F143-1204-AFDB-9A87C131****\\n \\n grouptest1\\n true\\n \\n \\n grouptest2\\n false\\n group not exists or already deleted\\n 440\\n \\n","errorExample":""}]', - 'title' => 'ModifyLiveMessageUserInfo', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"PgmSceneInfos\\": {\\n \\"SceneInfo\\": [\\n {\\n \\"SceneId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e86****\\",\\n \\"StreamInfos\\": {\\n \\"StreamInfo\\": [\\n {\\n \\"OutputStreamUrl\\": \\"rtmp://abclive/caster/example.net\\",\\n \\"TranscodeConfig\\": \\"lld\\",\\n \\"VideoFormat\\": \\"flv\\"\\n }\\n ]\\n },\\n \\"StreamUrl\\": \\"rtmp://abclive/caster/example.edu\\"\\n }\\n ]\\n },\\n \\"PvwSceneInfos\\": {\\n \\"SceneInfo\\": [\\n {\\n \\"SceneId\\": \\"b5f8c837-ceeb-424f-b30b-68e94e86****\\",\\n \\"StreamUrl\\": \\"rtmp://abclive/caster/example.net\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"6EBD1AC4-C34D-4AE1-963E-B688A228BE31\\"\\n}","type":"json"}]', ], - 'StartRtcCloudRecording' => [ - 'summary' => '启动rtc云端录制任务', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'StartCasterScene' => [ + 'summary' => 'Starts a specified Program View (PVW) scene. This operation is used to start preview scenes.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeCode' => '269297', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - 'tenantRelevance' => 'tenant', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '********-7074-****-9ef5-85c19a4*****', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ChannelId', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'room1024', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value returned in the response.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The production studio ID is displayed as its name on the Cloud Production Studio page.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], ], [ - 'name' => 'SubscribeParams', + 'name' => 'SceneId', 'in' => 'query', - 'style' => 'json', + 'schema' => ['description' => 'The ID of the scene.'."\n" + ."\n" + .'This parameter is valid only for PVW scenes.', 'type' => 'string', 'required' => true, 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => '', 'type' => 'object', 'properties' => [ - 'SubscribeUserIdList' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'userA', - ], - 'StreamType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - '2', - ], - ], - 'SourceType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - ], - ], - ], - 'required' => false, - ], - 'required' => true, - 'maxItems' => 17, - 'minItems' => 1, - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], + 'StreamUrl' => ['description' => 'The output stream URL of the current scene. This URL is used for playback in the production studio and is not a bypass output.', 'type' => 'string', 'example' => 'http://live/caster/example.org', 'title' => ''], ], - 'required' => true, + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene is on, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidSceneId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The caster is not open, please check and try again.'], + ], [ - 'name' => 'RecordParams', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'RecordMode' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'StreamType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - '2', - ], - ], - 'MaxFileDuration' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'maximum' => '7200', - 'minimum' => '180', - 'example' => '7200', - 'default' => '7200', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'UserQuotaExceed', 'errorMessage' => 'Quota exceeded: %s.', 'description' => 'Quota exceeded: %s.'], + ], + [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide template does not exist. Please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'StartCasterScene', + 'description' => 'You can call this operation to start a specified Program View (PVW) scene. A PVW scene is a preview scene.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10. If you exceed this limit, API calls are throttled. Throttling can affect your business. We recommend that you call this operation within the specified limit.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartCasterScene'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartCasterScene', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - 'required' => true, ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\",\\n \\"StreamUrl\\": \\"http://live/caster/example.org\\"\\n}","type":"json"}]', + ], + 'StartEdgeTranscodeJob' => [ + 'summary' => 'Starts an edge transcoding task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'StorageParams', + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'StorageType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '1', - 'enum' => [ - '1', - ], - ], - 'FileInfo' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Format' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'HLS', - 'enum' => [ - 'HLS', - 'MP4', - 'MP3', - ], - ], - 'FileNamePattern' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '{AppId}_{ChannelId}_{StartTime}_{UserId}', - ], - 'SliceNamePattern' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '{AppId}_{ChannelId}_{StartTime}_{Sequence}', - ], - 'FilePathPrefix' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], - ], - 'SliceDuration' => [ - 'title' => '指定切片时长,单位为秒,仅HLS格式下有效。取值范围在[10,30]内', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '30', - ], - ], - 'required' => false, - ], - 'required' => false, - ], - 'OSSParams' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'OSSEndpoint' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'oss-cn-shanghai.aliyuncs.com', - ], - 'OSSBucket' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'mytest-bucket', - ], - ], - 'required' => false, - ], - 'VodParams' => [ - 'type' => 'object', - 'properties' => [ - 'StorageLocation' => [ - 'type' => 'string', - 'required' => false, - ], - 'VodTranscodeGroupId' => [ - 'type' => 'string', - 'required' => false, - ], - 'AutoCompose' => [ - 'type' => 'integer', - 'format' => 'int32', - 'default' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'ComposeVodTranscodeGroupId' => [ - 'type' => 'string', - ], - ], - ], - ], - 'required' => true, - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'MixTranscodeParams', + 'name' => 'ClusterId', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'FrameFillType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - ], - ], - 'AudioBitrate' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'maximum' => '500', - 'minimum' => '8', - 'example' => '300', - ], - 'AudioChannels' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '2', - 'enum' => [ - '1', - '2', - ], - ], - 'AudioSampleRate' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '32000', - 'enum' => [ - '8000', - '16000', - '32000', - '44100', - '48000', - ], - ], - 'VideoCodec' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'H.264', - 'default' => 'H.264', - 'enum' => [ - 'H.264', - 'H.265', - ], - ], - 'VideoBitrate' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '10000', - 'minimum' => '1', - 'example' => '5000', - ], - 'VideoFramerate' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '60', - 'minimum' => '1', - 'example' => '30', - ], - 'VideoGop' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '60', - 'minimum' => '1', - 'example' => '30', - ], - 'VideoHeight' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '1920', - 'minimum' => '0', - 'example' => '480', - 'default' => '0', - ], - 'VideoWidth' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '1920', - 'minimum' => '0', - 'example' => '640', - 'default' => '0', - ], - ], - 'required' => false, - ], + 'schema' => ['description' => 'The ID of the data center.', 'type' => 'string', 'required' => true, 'example' => '******3b-4d18-395c-8106-ff21a6******', 'title' => ''], ], [ - 'name' => 'MixLayoutParams', + 'name' => 'JobId', 'in' => 'query', - 'style' => 'json', + 'schema' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'required' => true, 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => '', 'type' => 'object', 'properties' => [ - 'MixBackground' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'RenderMode' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'Url' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxxx.com/photos/my-test-picture.png', - 'maxLength' => 2048, - ], - ], - 'required' => false, - ], - 'UserPanes' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'userA', - ], - 'SourceType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'Height' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0.5', - 'default' => '0', - ], - 'Width' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0.5', - 'default' => '0', - ], - 'X' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0', - 'default' => '0', - ], - 'Y' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0', - 'default' => '0', - ], - 'ZOrder' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - ], - 'SubBackground' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'RenderMode' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'Url' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxxx.com/photos/my-test-pane-picture.png', - 'maxLength' => 2048, - ], - ], - 'required' => false, - ], - ], - 'required' => false, - ], - 'required' => false, - ], + 'JobId' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], ], - 'required' => false, - ], - ], - [ - 'name' => 'NotifyUrl', - 'in' => 'query', - 'schema' => [ 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'http://xxxx/test/mycallback', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'UserTaskExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'User tasks have reached the upper limit, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'UserQuotaExceed', 'errorMessage' => 'Quota exceeded: %s.', 'description' => 'Quota exceeded: %s.'], + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], + ], [ - 'name' => 'NotifyAuthKey', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - ], + ['errorCode' => 'JobNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Task does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'StartEdgeTranscodeJob', + 'description' => '- This operation is used to start an edge transcoding job.'."\n" + ."\n" + .'- Before you call this operation, make sure that you have the required permissions to access the edge transcoding service and that the specified transcoding job is not running.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 6,000 calls per minute for each user. API calls that exceed this limit are throttled, which may affect your business. We recommend that you call this operation as needed.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartEdgeTranscodeJob'], ], + ], + 'ramActions' => [ [ - 'name' => 'NotifyFileUploadedFormat', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'title' => '指定在录制文件上传后,需要触发回调的格式', - 'type' => 'array', - 'items' => [ - 'title' => '需要回调的具体文件格式', - 'type' => 'string', - 'example' => 'MP4', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:StartEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], - 'maxItems' => 100, ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'StartLiveDomain' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'MaxIdleTime', + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '107241', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ + [ + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'integer', - 'format' => 'int64', - 'maximum' => '86400', - 'minimum' => '10', - ], + 'schema' => ['description' => 'The ingest domain or streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => '', - 'type' => 'string', - 'example' => '******58-5876-****-83CA-B56278******', - ], - 'TaskId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '0AEDAF20-4DDF-4165-8750-47FF9C1929C9', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter.NotifyUrl', - 'errorMessage' => '%s, please check the notifyUrl.', - ], - [ - 'errorCode' => 'InvalidParameter.StorageParams.FileInfo', - 'errorMessage' => '%s, please check the fileInfo of storageParams.', - ], - [ - 'errorCode' => 'InvalidParameter.StorageParams.OSSParams', - 'errorMessage' => '%s, please check the ossParams of storageParams.', - ], - [ - 'errorCode' => 'NotFound.OSSBucket', - 'errorMessage' => '%s, please check the ossBucket of storageParams.', - ], - [ - 'errorCode' => 'InvalidParameter.SubscribeParams.SubscribeUserIdList', - 'errorMessage' => '%s, please check the subscribeUserIdList of subscribeParams.', - ], - [ - 'errorCode' => 'InvalidParameter.MixLayoutParams.UserPanes', - 'errorMessage' => '%s, please check the userPanes of mixLayoutParams.', - ], - [ - 'errorCode' => 'InvalidParameter.MixTranscodeParams', - 'errorMessage' => '%s, please check the transcodeParams.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'RecordCheckNotAvailable', 'errorMessage' => 'Please try again later.', 'description' => ''], + ['errorCode' => 'IcpBlack', 'errorMessage' => 'The domain is on the ICP blacklist.', 'description' => ''], + ['errorCode' => 'IspBlack', 'errorMessage' => 'The domain is on the ISP blacklist.', 'description' => ''], + ['errorCode' => 'DomainNotRecordedAliyun', 'errorMessage' => 'The domain not access Ali Cloud for the record please access.', 'description' => ''], ], - 403 => [ - [ - 'errorCode' => 'InvalidParameter.UserId', - 'errorMessage' => '%s, please check the UserId.', - ], - ], - [ - [ - 'errorCode' => 'InvalidParameter.ChannelId', - 'errorMessage' => '%s, please check the channelId.', - ], - [ - 'errorCode' => 'InvalidParameter.AppId', - 'errorMessage' => '%s, please check the appId.', - ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'StartLiveDomain', + 'summary' => 'Starts a disabled live streaming domain. This operation changes the DomainStatus to online.', + 'description' => 'This API operation fails if your account has an overdue payment or if the domain name is in an invalid state.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartLiveDomain'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidParameter.StorageParams.VodParams', - 'errorMessage' => '%s, please check the vodParams of storageParams.', - ], - [ - 'errorCode' => 'InvalidParameter.NotifyAuthKey', - 'errorMessage' => '%s, please check the notifyAuthKey.', - ], - [ - 'errorCode' => 'InvalidParameter.MaxIdleTime', - 'errorMessage' => '%s, please check the maxIdleTime.', - ], - [ - 'errorCode' => 'InvalidParameter.RecordParams', - 'errorMessage' => '%s, please check the recordParams.', - ], - [ - 'errorCode' => 'InvalidParameter.StorageParams.StorageType', - 'errorMessage' => '%s, please check the storageType of storageParams.', - ], - [ - 'errorCode' => 'InvalidParameter.NotifyFileUploadedFormat', - 'errorMessage' => '%s, please check the notifyFileUploadedFormat.', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartLiveDomain', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******58-5876-****-83CA-B56278******\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\"\\n}","type":"json"}]', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0AEDAF20-4DDF-4165-8750-47FF9C1929C9\\"\\n}","type":"json"}]', ], - 'UpdateRtcCloudRecording' => [ - 'summary' => '更新rtc云端录制任务', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], + 'StartLiveMPUTask' => [ + 'summary' => 'Creates a stream mixing and transcoding task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -60742,1110 +50301,1383 @@ 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'paid', - 'abilityTreeCode' => '269333', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - 'tenantRelevance' => 'tenant', + 'abilityTreeCode' => '178410', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ + [ + 'name' => 'AppId', + 'in' => 'query', + 'schema' => ['description' => 'The application ID. Only one ID is supported. It can contain uppercase letters, lowercase letters, digits, underscores (\\_), and hyphens (-). The maximum length is 64 characters.', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], + ], + [ + 'name' => 'ChannelId', + 'in' => 'query', + 'schema' => ['description' => 'The channel ID. Only one ID is supported. It can contain uppercase letters, lowercase letters, digits, underscores (\\_), and hyphens (-). The maximum length is 64 characters.', 'type' => 'string', 'required' => true, 'example' => 'yourChannelId', 'title' => ''], + ], [ 'name' => 'TaskId', 'in' => 'query', + 'schema' => ['description' => 'The task ID. Only one ID is supported. It can contain uppercase letters, lowercase letters, digits, underscores (\\_), and hyphens (-). The maximum length is 55 characters. This ID is the unique identifier for the bypass ingest task.'."\n" + .'If a task with the same ID still exists and has not been cleared when you start a new task, \\`InvalidParam\\` is returned.', 'type' => 'string', 'required' => true, 'example' => 'yourTaskId', 'title' => ''], + ], + [ + 'name' => 'MixMode', + 'in' => 'query', + 'schema' => ['description' => 'The stream mixing mode. Valid values:'."\n" + ."\n" + .'- **0**: Single-stream ingest. The original single stream is ingested without stream mixing or transcoding. You do not need to configure stream mixing and transcoding parameters.'."\n" + ."\n" + .'- **1** (default): Stream mixing and transcoding.', 'type' => 'string', 'required' => true, 'example' => '0', 'title' => ''], + ], + [ + 'name' => 'StreamURL', + 'in' => 'query', + 'schema' => ['description' => 'The live ingest URL. Only the RTMP protocol is supported. Only one URL is supported. The maximum length is 2048 characters. For information about how to generate the URL, see [Ingest URLs and playback URLs](~~199339~~).'."\n" + ."\n" + .'> - For domain names with hotlink protection enabled, the ingest URL must include an access token.'."\n" + ."\n" + .'- Do not use the same StreamURL in different tasks at the same time.'."\n" + ."\n" + .'- Do not use the same StreamURL within 10 seconds after a task stops.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://example.com/live/stream', 'title' => ''], + ], + [ + 'name' => 'MultiStreamURL', + 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '******73-8501-****-8ac1-72295a******'."\n", + 'description' => 'The parameters for ingesting to multiple URLs. You can specify multiple live ingest URLs.'."\n" + ."\n" + .'> When you set the ingest URL for a task, you must configure either the StreamURL parameter or the MultiStreamURL parameter, but not both.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'URL' => ['description' => 'The live ingest URL. Only the RTMP protocol is supported. The maximum length is 2048 characters. For information about how to generate the URL, see [Ingest URLs and playback URLs](~~199339~~).', 'type' => 'string', 'required' => false, 'example' => 'rtmp://example.com/live/stream****', 'title' => ''], + 'IsAliCdn' => ['description' => 'Specifies whether to ingest the stream to Alibaba Cloud CDN.'."\n" + ."\n" + .'- false: Ingest to a non-Alibaba Cloud CDN.'."\n" + ."\n" + .'- true: Ingest to Alibaba Cloud CDN.'."\n" + ."\n" + .'> The default value is false.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + ], + 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'SubscribeParams', + 'name' => 'Region', + 'in' => 'query', + 'schema' => ['description' => 'The region where the stream mixing service is located. Valid values:'."\n" + ."\n" + .'- **CN-Shanghai(default)**: Shanghai.'."\n" + ."\n" + .'- **AP-Singapore(default)**: Singapore.'."\n" + ."\n" + .'- **EMAA-Saudi**: Saudi Arabia.', 'type' => 'string', 'required' => false, 'example' => 'CN-Shanghai', 'title' => ''], + ], + [ + 'name' => 'MaxIdleTime', + 'in' => 'query', + 'schema' => ['description' => 'The idle timeout period. Unit: seconds. The value must be in the range of \\[10, 86400].'."\n" + ."\n" + .'> If you set this parameter, the task is automatically stopped when it has been idle for a period longer than MaxIdleTime. If you do not set this parameter, the task is stopped immediately after the channel is closed.', 'type' => 'string', 'required' => false, 'example' => '10', 'title' => ''], + ], + [ + 'name' => 'SingleSubParams', 'in' => 'query', 'style' => 'json', 'schema' => [ - 'description' => '', + 'description' => 'The parameters for single-stream ingest. This parameter is required when MixMode is set to 0. Do not set this parameter for stream mixing and transcoding.', 'type' => 'object', 'properties' => [ - 'SubscribeUserIdList' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'userA', - ], - 'StreamType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - '2', - ], - ], - 'SourceType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - ], - ], - ], - 'required' => false, - ], - 'required' => true, - 'maxItems' => 17, - 'minItems' => 1, - ], + 'SourceType' => ['description' => 'The type of video input stream in single-stream ingest mode. This parameter is valid only for video streams (StreamType=2). Valid values:'."\n" + ."\n" + .'- **camera** (default): Camera stream.'."\n" + ."\n" + .'- **shareScreen**: Screen sharing stream.', 'type' => 'string', 'required' => false, 'example' => 'camera', 'title' => ''], + 'StreamType' => ['description' => 'The type of stream to ingest in single-stream ingest mode. Valid values:'."\n" + ."\n" + .'- **0** (default): Ingest the original stream.'."\n" + ."\n" + .'- **1**: Ingest only the audio stream.'."\n" + ."\n" + .'- **2**: Ingest only the video stream.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'UserId' => ['description' => 'The ID of the user whose stream is ingested. Only one stream can be ingested at a time.', 'type' => 'string', 'required' => true, 'example' => 'yourSubUserId', 'title' => ''], ], - 'required' => true, + 'required' => false, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'MixLayoutParams', + 'name' => 'TranscodeParams', 'in' => 'query', 'style' => 'json', 'schema' => [ - 'description' => '', + 'description' => 'The parameters for stream mixing and transcoding. This parameter is required when MixMode is set to 1. Do not set this parameter for single-stream ingest.', 'type' => 'object', 'properties' => [ - 'MixBackground' => [ - 'description' => '', + 'Background' => [ + 'description' => 'The global background image for the mixed stream.', 'type' => 'object', 'properties' => [ - 'RenderMode' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', + 'RenderMode' => ['description' => 'The display mode of the output video. Valid values:'."\n" + ."\n" + .'- **0**: Scale and display a black background.'."\n" + ."\n" + .'- **1** (default): Clip.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], + 'URL' => ['description' => 'The URL of the global background image. The maximum length is 2048 characters.', 'type' => 'string', 'required' => false, 'example' => 'yourImageUrl', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'EncodeParams' => [ + 'description' => 'The encoding parameters for the output stream.', + 'type' => 'object', + 'properties' => [ + 'AudioOnly' => ['description' => 'Specifies whether the stream is audio-only. Valid values:'."\n" + ."\n" + .'- **true**: Audio-only. You only need to set audio-related parameters.'."\n" + ."\n" + .'- **false** (default): Not audio-only. All parameters except VideoCodec and EnhancedParam must be specified.', 'type' => 'string', 'required' => false, 'example' => 'false', 'title' => ''], + 'AudioBitrate' => ['description' => 'The audio bitrate. Unit: kbps. The value must be in the range of \\[8, 500].', 'type' => 'string', 'required' => false, 'example' => '128', 'title' => ''], + 'AudioChannels' => ['description' => 'The number of audio channels. Valid values: 1, 2.', 'type' => 'string', 'required' => false, 'example' => '2', 'title' => ''], + 'AudioSampleRate' => ['description' => 'The audio sampling rate. Unit: Hz. Valid values: 8000, 16000, 32000, 44100, 48000.', 'type' => 'string', 'required' => false, 'example' => '44100', 'title' => ''], + 'VideoCodec' => ['description' => 'The video encoding format. Valid values:'."\n" + ."\n" + .'- H.264 (default).'."\n" + ."\n" + .'- H.265.', 'type' => 'string', 'required' => false, 'example' => 'H.264', 'title' => ''], + 'VideoBitrate' => ['description' => 'The video bitrate. Unit: kbps. The value must be in the range of \\[1, 10000].', 'type' => 'string', 'required' => false, 'example' => '3500', 'title' => ''], + 'VideoFramerate' => ['description' => 'The video frame rate. Unit: fps. The value must be in the range of \\[1, 60].', 'type' => 'string', 'required' => false, 'example' => '25', 'title' => ''], + 'VideoGop' => ['description' => 'The video GOP size. The value must be in the range of \\[1, 60].', 'type' => 'string', 'required' => false, 'example' => '20', 'title' => ''], + 'VideoHeight' => ['description' => 'The video height. Unit: pixels. The value must be in the range of \\[0, 1920].', 'type' => 'string', 'required' => false, 'example' => '1000', 'title' => ''], + 'VideoWidth' => ['description' => 'The video width. Unit: pixels. The value must be in the range of \\[0, 1920].', 'type' => 'string', 'required' => false, 'example' => '1920', 'title' => ''], + 'EnhancedParam' => ['description' => 'The enhanced encoding parameters. This is a JSON string. The supported optional configurations include \\`profile\\` and \\`preset\\`.'."\n" + ."\n" + .'- \\`profile\\`: The encoding profile. If the video encoding format is H.264, valid values for \\`profile\\` include "baseline", "main", and "high". If the video encoding format is H.265, the valid value for \\`profile\\` is "main".'."\n" + ."\n" + .'- \\`preset\\`: Balances encoding speed and quality. Valid values for \\`preset\\` include "ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow", and "placebo". Each value represents a strategy for balancing encoding speed and output video quality, from "ultrafast" (fastest encoding speed) to "placebo" (highest quality, slowest encoding speed).'."\n" + ."\n" + .'> For example, "superfast" is mainly used for real-time communication. If you are not an expert in encoders, do not set this option.', 'type' => 'string', 'required' => false, 'example' => '{"profile": "high", "preset": "veryfast"}', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'Layout' => [ + 'description' => 'The video layout information.'."\n" + ."\n" + .'> For video transcoding, you must specify the video layout information, including coordinates (X, Y), pane dimensions (Width, Height), and stacking order (ZOrder). For audio-only transcoding, do not specify video layout information.', + 'type' => 'object', + 'properties' => [ + 'UserPanes' => [ + 'description' => 'The information about user panes in the mixed stream.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about user panes in the mixed stream.', + 'type' => 'object', + 'properties' => [ + 'UserInfo' => [ + 'description' => 'The information about the user corresponding to this pane. If you do not set this parameter, the system automatically fills it based on the order in which streamers join the channel.'."\n" + ."\n" + .'> - If you specify user information, that user must already be configured in the \\`TranscodeParams.UserInfos\\` parameter.'."\n" + ."\n" + .'- This parameter is valid only for original streams and video streams.', + 'type' => 'object', + 'properties' => [ + 'SourceType' => ['description' => 'The type of video input stream in stream mixing and transcoding mode. This parameter is valid only for video streams (StreamType=2). Valid values:'."\n" + ."\n" + .'- **camera** (default): Camera stream.'."\n" + ."\n" + .'- **shareScreen**: Screen sharing stream.', 'type' => 'string', 'required' => false, 'example' => 'camera', 'title' => ''], + 'ChannelId' => ['description' => 'The ID of the channel where the user is located. You do not need to set this parameter for users in the same channel. For cross-channel stream mixing, set this parameter.', 'type' => 'string', 'required' => false, 'example' => 'yourChannelId', 'title' => ''], + 'UserId' => ['description' => 'The user ID.', 'type' => 'string', 'required' => false, 'example' => 'yourSubUserId', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'Height' => ['description' => 'The height of the pane, as a normalized percentage.', 'type' => 'string', 'required' => false, 'example' => '0.2632', 'title' => ''], + 'Width' => ['description' => 'The width of the pane, as a normalized percentage.', 'type' => 'string', 'required' => false, 'example' => '0.3564', 'title' => ''], + 'X' => ['description' => 'The X-coordinate, as a normalized percentage.', 'type' => 'string', 'required' => false, 'example' => '0.2456', 'title' => ''], + 'Y' => ['description' => 'The Y-coordinate, as a normalized percentage.', 'type' => 'string', 'required' => false, 'example' => '0.3789', 'title' => ''], + 'ZOrder' => ['description' => 'The stacking order. 0 is the bottom layer. Layer 1 is on top of layer 0, and so on.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'BackgroundImageUrl' => ['description' => 'The URL of the background image for the video pane. The maximum length is 2048 characters. When a user turns off their camera or has not joined the channel, this image is displayed in their layout position.', 'type' => 'string', 'required' => false, 'example' => 'yourImageUrl', 'title' => ''], + 'RenderMode' => ['description' => 'The display mode of the output video pane. Valid values:'."\n" + ."\n" + .'- **0**: Scale and display a black background.'."\n" + ."\n" + .'- **1** (default): Clip.', 'type' => 'string', 'default' => '1', 'required' => false, 'example' => '1', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', ], - ], - 'Url' => [ - 'description' => '', - 'type' => 'string', 'required' => false, - 'example' => 'https://xxxx.com/photos/my-test-picture.png'."\n", - 'maxLength' => 2048, + 'title' => '', + 'example' => '', ], ], 'required' => false, + 'title' => '', + 'example' => '', ], - 'UserPanes' => [ - 'description' => '', + 'UserInfos' => [ + 'description' => 'The information about the users to subscribe to for stream mixing. If you do not specify users, all users are included in the mixed stream.', 'type' => 'array', 'items' => [ - 'description' => '', + 'description' => 'The user information for stream mixing.', 'type' => 'object', 'properties' => [ - 'UserId' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'userA', - ], - 'SourceType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'Height' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0.5', - 'default' => '0', - ], - 'Width' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0.5', - 'default' => '0', - ], - 'X' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0', - 'default' => '0', - ], - 'Y' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '0', - 'default' => '0', - ], - 'ZOrder' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - ], - 'SubBackground' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'RenderMode' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [ - '0', - '1', - ], - ], - 'Url' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxxx.com/photos/my-test-pane-picture.png'."\n", - 'maxLength' => 2048, - ], - ], - 'required' => false, - ], + 'SourceType' => ['description' => 'The type of video input stream to subscribe to for stream mixing. This parameter is valid only for video streams (StreamType=2). Valid values:'."\n" + ."\n" + .'- **camera** (default): Camera stream.'."\n" + ."\n" + .'- **shareScreen**: Screen sharing stream.', 'type' => 'string', 'required' => false, 'example' => 'camera', 'title' => ''], + 'StreamType' => ['description' => 'The type of stream to subscribe to for stream mixing. Valid values:'."\n" + ."\n" + .'- **0** (default): Ingest the original stream.'."\n" + ."\n" + .'- **1**: Ingest only the audio stream.'."\n" + ."\n" + .'- **2**: Ingest only the video stream.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'ChannelId' => ['description' => 'The ID of the channel where the subscribed user is located. You do not need to set this parameter for users in the same channel. For cross-channel stream mixing, set this parameter.', 'type' => 'string', 'required' => false, 'example' => 'yourChannelId', 'title' => ''], + 'UserId' => ['description' => 'The ID of the user to subscribe to for stream mixing.', 'type' => 'string', 'required' => true, 'example' => 'yourSubUserId', 'title' => ''], ], 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + ], + [ + 'name' => 'SeiParams', + 'in' => 'query', + 'style' => 'json', + 'schema' => [ + 'description' => 'The SEI configuration parameters.', + 'type' => 'object', + 'properties' => [ + 'LayoutVolume' => [ + 'description' => 'The layout and volume SEI. The content of this parameter can be empty, which means the default layout and volume SEI is carried.', + 'type' => 'object', + 'properties' => [ + 'FollowIdr' => ['description' => 'Specifies whether to ensure that SEI is carried when sending an IDR keyframe. Valid values:'."\n" + ."\n" + .'- **0**: Does not ensure SEI is carried.'."\n" + ."\n" + .'- **1**: Ensures SEI is carried.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'Interval' => ['description' => 'The SEI sending interval. Unit: milliseconds. The value must be in the range of \\[1000, 5000].', 'type' => 'string', 'required' => false, 'example' => '1000', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'PassThrough' => [ + 'description' => 'The pass-through SEI.', + 'type' => 'object', + 'properties' => [ + 'FollowIdr' => ['description' => 'Specifies whether to ensure that SEI is carried when sending an IDR keyframe. Valid values:'."\n" + ."\n" + .'- **0**: Does not ensure SEI is carried.'."\n" + ."\n" + .'- **1**: Ensures SEI is carried.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'Interval' => ['description' => 'The SEI sending interval. Unit: milliseconds. The value must be in the range of \\[1000, 5000].', 'type' => 'string', 'required' => false, 'example' => '1000', 'title' => ''], + 'PayloadContent' => ['description' => 'The payload content of the pass-through SEI.', 'type' => 'string', 'required' => false, 'example' => 'yourPayloadContent', 'title' => ''], + 'PayloadContentKey' => ['description' => 'The key corresponding to the payload content of the pass-through SEI. If not set, the default key is \\`udd\\`.', 'type' => 'string', 'required' => false, 'example' => 'yourPayloadContentKey', 'title' => ''], ], 'required' => false, + 'title' => '', + 'example' => '', ], + 'PayloadType' => ['description' => 'The custom payload\\_type of the SEI message. The value must be in the range of 100-254. If not set, the default payload\\_type is 5.', 'type' => 'string', 'required' => false, 'example' => '100', 'title' => ''], ], 'required' => false, + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response', + 'description' => 'The request ID.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => '', - 'type' => 'string', - 'example' => '******58-5876-****-83CA-B56278******'."\n", - ], - 'TaskId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******'."\n", - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '0F72851F-5DC1-1979-9B2C-450040316C3E', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'NotFound.Task', - 'errorMessage' => '%s, please check the TaskId.', - ], - [ - 'errorCode' => 'InvalidParameter.TaskId', - 'errorMessage' => '%s, please check the TaskId.', - ], - [ - 'errorCode' => 'InvalidParameter.SubscribeParams.SubscribeUserIdList', - 'errorMessage' => '%s, please check the subscribeUserIdList of subscribeParams.', - ], - [ - 'errorCode' => 'InvalidParameter.MixLayoutParams.UserPanes', - 'errorMessage' => '%s, please check the userPanes of mixLayoutParams.', - ], - [ - 'errorCode' => 'InvalidParameter.MixTranscodeParams', - 'errorMessage' => '%s, please check the transcodeParams.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'InvalidParameter.UserId', - 'errorMessage' => '%s, please check the UserId.', - ], + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******58-5876-****-83CA-B56278******\\\\n\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\\\n\\"\\n}","type":"json"}]', - ], - 'StopRtcCloudRecording' => [ - 'summary' => 'Stops a real-time communication (RTC) cloud-based recording task.', - 'methods' => [ - 'post', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0F72851F-5DC1-1979-9B2C-450040316C3E\\"\\n}","type":"json"}]', + 'title' => 'StartLiveMPUTask', + 'description' => 'By default, each application ID supports a maximum of 200 single-stream ingest tasks and 40 stream mixing and transcoding tasks. To increase the quota, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket).'."\n" + ."\n" + .'### Stream mixing task lifecycle'."\n" + ."\n" + .'**Start**'."\n" + ."\n" + .'- When a streamer starts streaming for the first time, you can call StartLiveMPUTask to start a bypass task.'."\n" + ."\n" + .' - If no users are in the channel, a "channel does not exist" error is returned.'."\n" + ."\n" + .' - The bypass stream is output only when a user starts stream ingest. If the user in a single-stream task does not ingest a stream, the bypass stream cannot be played.'."\n" + ."\n" + .' - For a stream mixing task, at least one user must be ingesting a stream for the bypass stream to be playable. The layout area for users who are not ingesting streams shows a black screen.'."\n" + ."\n" + .'- You can record the bypass task status, task type, and task parameters on your business server.'."\n" + ."\n" + .' - Task status: Started, Stopped.'."\n" + ."\n" + .' - Task type: Single-stream, Stream mixing.'."\n" + ."\n" + .' - Task parameters: The latest input parameters. For example, after a successful call to UpdateLiveMPUTask, record the latest task parameters.'."\n" + ."\n" + .'- In co-streaming or PK scenarios, if a task has been updated to a stream mixing task and the streamer unexpectedly leaves and then rejoins the channel, your business server can call StartLiveMPUTask to restart the stream mixing task based on the saved task type and parameters.'."\n" + ."\n" + .' - If the system has not automatically cleared the task before you start it, the task starts successfully.'."\n" + ."\n" + .' - If the system has not yet cleared the task, a **Task already exists** error code is returned.'."\n" + ."\n" + .'**End**'."\n" + ."\n" + .'- When a streamer leaves the channel, call [StopLiveMPUTask](~~2362742~~) to stop the bypass task.'."\n" + ."\n" + .'- If all users in the task leave the channel and StopLiveMPUTask is not called, the system automatically stops the bypass task after 2 minutes.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user for this API is 500 calls/second. If you exceed this limit, API calls are throttled. This may affect your business. We recommend that you call this API reasonably.', + 'requestParamsDescription' => '### Layout and volume SEI'."\n" + ."\n" + .'| Parameter | Description |'."\n" + .'| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| canvas | Canvas information. Parameters:
\\- w: Canvas width in pixels.
\\- h: Canvas height in pixels.
\\- bgnd: Canvas background color, as a hexadecimal integer in RGB format. |'."\n" + .'| stream | Video stream information. Parameters:
\\- uid: User ID of the streamer.
\\- paneid: Pane ID of the region, in the range of [0, 8].
\\- zorder: Stacking order of the region, in the range of [0, 99].
\\- x: X-coordinate of the region on the canvas, as a normalized percentage.
\\- y: Y-coordinate of the region on the canvas, as a normalized percentage.
\\- w: Width of the region, as a normalized percentage.
\\- h: Height of the region, as a normalized percentage.
\\- type: Type of video stream in the region. 0: Camera. 1: Screen sharing.
\\- status: Status of the video stream in the region. 0: Not yet pulled. 1: Pulled.
\\- muted: Mute status of the streamer. 0: Not muted. 1: Muted. In a PK scenario, if streamer A mutes streamer B, the `muted` field for streamer B shows the muted status.
\\- vol: Volume of the streamer in decibels, in the range of [0, 255].
\\- vad: Voice activity detection. The value is in the range of [0, 150]. 150 indicates that voice is detected. A value other than 150 indicates the trail-off time from voice to silence. |'."\n" + .'| ts | The operating system timestamp when this information was generated, in milliseconds. |'."\n" + .'| ver | The SEI format version, such as 1.0.0.20220915. |'."\n" + .'| udd | A custom scenario-based event sent through the `PassThrough` parameter. The content is specified by the `PayloadContent` parameter. |'."\n" + ."\n" + .'> When a user pulls an ingested stream, the streaming media data contains SEI information. You can use this feature to pass custom information. SEI information can be retrieved from the video frame data during video stream decoding. For the specific format, see the \\`PassThrough\\` parameter.'."\n" + ."\n" + .'**Example for a co-streaming scenario:**'."\n" + ."\n" + .'If there is only one streamer, the \\`stream\\` collection in the SEI information that the viewer receives contains information for only one member. If the streamer is in a co-streaming or PK session, the \\`stream\\` collection contains information for multiple members.'."\n" + .'For example, when streamer \\`streamer111\\` is streaming alone, the SEI frame format that the viewer receives is as follows:
`{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":-1,"zorder":0,"x":0,"y":0,"w":0,"h":0,"type":0,"status":1,"muted":0,"vol":0,"vad":0}],"ver":"1.0.0.20220915","ts":1697696105170}`'."\n" + .'When streamer \\`streamer111\\` is co-streaming with viewer \\`viewer222\\`, the SEI frame format that the viewer receives is as follows:
`{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":0,"zorder":1,"x":0,"y":0.25,"w":0.5,"h":0.5,"type":0,"status":1,"muted":0,"vol":1,"vad":119},{"uid":"viewer222","paneid":1,"zorder":1,"x":0.5018382,"y":0.25,"w":0.5,"h":0.5,"type":0,"status":1,"muted":0,"vol":60,"vad":123}],"ver":"1.0.0.20220915","ts":1697696106230}`'."\n" + .'By checking the number of elements in the \\`stream\\` array, you can determine whether the live layout has changed. If the \\`stream\\` array has one element, a single streamer is ingesting a stream. If the \\`stream\\` array has more than one element, the streamer is in a co-streaming or PK session. The layout information for each member indicates their specific position in the mixed stream layout.

'."\n" + ."\n" + .'### Pass-through SEI'."\n" + ."\n" + .'- To use custom SEI, you can call the StartLiveMPUTask command to start a stream mixing and ingest task and specify \\`PayloadContent\\` in the \\`PassThrough\\` parameter. You can also call the UpdateLiveMPUTask command to update the task and specify \\`PayloadContent\\` in the \\`PassThrough\\` parameter.'."\n" + ."\n" + .'- Custom SEI can be sent periodically. You can set the period using the \\`Interval\\` parameter in \\`PassThrough\\`. The unit is milliseconds.'."\n" + ."\n" + .'- Custom SEI can also be sent with keyframes. You can set this using the \\`FollowIdr\\` parameter in \\`PassThrough\\`.'."\n" + ."\n" + .' - You can send SEI both periodically and with keyframes. For example, \\`Interval:1000\\` and \\`FollowIdr: 1\\` means that custom SEI is sent every 1000 ms and also with every keyframe.'."\n" + ."\n" + .' - If you do not set \\`Interval\\` or \\`FollowIdr\\`, the custom SEI is sent only once when the API is called.'."\n" + ."\n" + .'For example, when streamer \\`streamer111\\` is streaming alone, you can call the UpdateLiveMPUTask command to send periodic SEI. In the \\`PassThrough\\` parameter, set \\`Interval\\` to 1000, \\`FollowIdr\\` to 0, and \\`PayloadContent\\` to "hello world". A custom SEI message is then sent every 1000 ms. The SEI frame format that the viewer receives is as follows:
`{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":-1,"zorder":0,"x":0,"y":0,"w":0,"h":0,"type":0,"status":1,"muted":0,"vol":0,"vad":0}],"ver":"1.0.0.20220915","ts":1697696109876,"udd":"hello world"}`
'."\n" + ."\n" + .'### Cross-channel multi-user stream mixing'."\n" + ."\n" + .'To mix streams from multiple streamers across multiple channels and ingest the mixed stream to the live streaming service, you must provide the UserID and ChannelID of the streamer who initiates the cross-channel call, along with the UserIDs of the other participants, as input parameters when you create the stream mixing task. See the following example:'."\n" + .'In a live PK scenario, streamer \\`userA\\` in channel \\`channelA\\` initiates a cross-channel PK with streamer \\`userB\\` in channel \\`channelB\\` using a client API. The mixed stream of both streamers is output to the viewers in channel \\`channelA\\`. In this case, the channel and user parameters for creating the stream mixing task are specified as follows:'."\n" + ."\n" + .'- ChannelID: Specify \\`channelA\\`.'."\n" + ."\n" + .'- UserInfos->UserId: Specify \\`userA\\` and \\`userB\\` respectively.'."\n" + ."\n" + .'> Before you can create a cross-channel multi-user stream mixing task, a cross-channel call must be initiated through a client software development kit (SDK). If users in different channels are not in a call, you cannot create a cross-channel stream mixing task. For more information about how to initiate a cross-channel call, see [Cross-channel subscription](~~2642837~~).', + 'changeSet' => [ + ['createdAt' => '2024-11-14T09:21:05.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-10-30T08:35:05.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-08-13T08:23:10.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-08-06T07:59:24.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-07-04T07:02:35.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-06-12T05:51:31.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-03-06T17:46:44.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-03-01T07:39:35.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-12-26T06:01:15.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartLiveMPUTask'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:StartLiveMPUTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'StartLiveStreamMonitor' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '269331', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - 'tenantRelevance' => 'tenant', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveSM955S'], ], 'parameters' => [ [ - 'name' => 'TaskId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '******73-8501-****-8ac1-72295a******'."\n", - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'MonitorId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the monitoring session.'."\n" + ."\n" + .'> Obtain the MonitorId value from the response of the [CreateLiveStreamMonitor](~~2848129~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => '', - 'type' => 'string', - 'example' => '******58-5876-****-83CA-B56278******', - ], - 'TaskId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'NotFound.Task', - 'errorMessage' => '%s, please check the TaskId.', - ], - [ - 'errorCode' => 'InvalidParameter.TaskId', - 'errorMessage' => '%s, please check the TaskId.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidMonitorId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter MonitorId is invalid, please check and try again.'], + ['errorCode' => 'StreamMonitorAlreadyStarted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The monitoring room has been opened, please check and try again.'], + ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'InvalidParameter.UserId', - 'errorMessage' => '%s, please check the UserId.', - ], + ['errorCode' => 'UserQuotaExceed', 'errorMessage' => 'Quota exceeded: %s.', 'description' => 'Quota exceeded: %s.'], + ], + [ + ['errorCode' => 'StreamMonitorNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The monitoring room does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******58-5876-****-83CA-B56278******\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\"\\n}","type":"json"}]', - 'title' => 'StopRtcCloudRecording', - ], - 'DescribeRtcCloudRecordingFiles' => [ - 'summary' => 'Queries the information about a real-time communication (RTC) cloud-based recording task.', - 'methods' => [ - 'post', + 'title' => 'StartLiveStreamMonitor', + 'summary' => 'Starts live monitoring.', + 'description' => 'You can call the [CreateLiveStreamMonitor](~~2848129~~) operation to create a monitoring session. Then, you can use the **MonitorId** value from the response to start the session.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 10 calls per second for each user. Calls that exceed this limit are throttled. Throttling may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartLiveStreamMonitor'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartLiveStreamMonitor', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","type":"json"}]', + ], + 'StartPlaylist' => [ + 'summary' => 'Starts a playlist.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '269336', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - 'tenantRelevance' => 'tenant', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'TaskId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '******73-8501-****-8ac1-72295a******'."\n", - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'ProgramId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the playlist. If you add items to the playlist by calling the [AddPlaylistItems](~~2848078~~) operation, use the value of the ProgramId parameter that is returned.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + [ + 'name' => 'ResumeMode', + 'in' => 'query', + 'schema' => ['description' => 'The restart mode. Valid values:'."\n" + ."\n" + .'- **Restart**: Starts from the beginning.'."\n" + ."\n" + .'- **Continue**: Resumes playback from where it was stopped. The **StartItemId** parameter is required only when you set the **ResumeMode** parameter to **Custom**.'."\n" + ."\n" + .'- **Custom**: Custom start point.', 'type' => 'string', 'required' => false, 'example' => 'Custom', 'title' => ''], + ], + [ + 'name' => 'StartItemId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the item to play first. When the carousel starts, this item is played.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'This parameter is required only when you set **ResumeMode** to **Custom**.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => false, 'example' => 'asdfasdfasdf****', 'title' => ''], + ], + [ + 'name' => 'Offset', + 'in' => 'query', + 'schema' => ['description' => 'The start offset for the video file. This parameter is valid only for video files. Unit: milliseconds.'."\n" + ."\n" + .'A value greater than 0 specifies the start time relative to the first frame.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10000', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => '', - 'type' => 'string', - 'example' => '******58-5876-****-83CA-B56278******'."\n", - ], - 'TaskInfo' => [ - 'description' => '', + 'ProgramId' => ['description' => 'The ID of the playlist. You can use this ID as a request parameter to stop the playlist.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], + 'StreamInfo' => [ + 'description' => 'The information about the stream.', 'type' => 'object', 'properties' => [ - 'TaskId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******'."\n", - ], - 'Status' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'RUNNING', - ], - 'RecordFileList' => [ - 'description' => '', + 'AppName' => ['description' => 'The application name.', 'type' => 'string', 'example' => 'liveApp****', 'title' => ''], + 'DomainName' => ['description' => 'The streaming domain.', 'type' => 'string', 'example' => 'example.com', 'title' => ''], + 'StreamName' => ['description' => 'The stream name.', 'type' => 'string', 'example' => 'liveStream****', 'title' => ''], + 'Streams' => [ 'type' => 'object', + 'itemNode' => true, 'properties' => [ - 'Mp3FileList' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.mp3', - ], - ], - 'Mp4FileList' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.mp4', - ], - ], - 'HlsFileList' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.m3u8', - ], - ], - 'VodMediaList' => [ + 'Stream' => [ + 'description' => 'The list of stream information.', 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ - 'Stream' => [ - 'type' => 'string', - ], - 'MediaIds' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], - ], - 'MergedIds' => [ - 'type' => 'array', - 'items' => [ - 'type' => 'string', - ], - ], + 'PullFlvUrl' => ['description' => 'The FLV streaming URL.', 'type' => 'string', 'example' => 'http://aliyundoc.com/caster/liveStream****.flv?auth_key=1612772224-0-0-3632be7cd9907169e8b09e91099c****', 'title' => ''], + 'PullM3U8Url' => ['description' => 'The RTMP streaming URL.', 'type' => 'string', 'example' => 'rtmp:///aliyundoc.com/caster/liveStream****?auth_key=1612772224-0-0-4404ca59c0246226d49d01f734b1****', 'title' => ''], + 'PullRtmpUrl' => ['description' => 'The M3U8 streaming URL.', 'type' => 'string', 'example' => 'http://aliyundoc.com/caster/liveStream****.m3u8?auth_key=1612772224-0-0-919a023a127156fe82e3562c3b3b****', 'title' => ''], + 'Quality' => ['description' => 'The video quality. Valid value: **original**: original quality.', 'type' => 'string', 'example' => 'original', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + 'title' => '', + 'example' => '', ], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'NotFound.Task', - 'errorMessage' => '%s, please check the TaskId.', - ], - [ - 'errorCode' => 'InvalidParameter.TaskId', - 'errorMessage' => '%s, please check the TaskId.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.Inuse', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene is on, please check and try again.'], + ['errorCode' => 'InvalidProgramId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ProgramId is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidNormType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The norm type is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Offset', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter Offset is invalid. Check and try again.'], + ['errorCode' => 'InvalidParameter.StartItemId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter StartItemId is invalid, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'InvalidParameter.UserId', - 'errorMessage' => '%s, please check the UserId.', - ], + ['errorCode' => 'UserQuotaExceed', 'errorMessage' => 'Quota exceeded: %s.', 'description' => 'Quota exceeded: %s.'], + ], + [ + ['errorCode' => 'PlayListNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'PlayList does not exist, please check and try again.'], + ['errorCode' => 'PlayListItemNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'PlayListItem does not exist, please check and try again.'], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide template does not exist. Please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus.EnableChannel', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Caster status does not support EnableChannel settings, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******58-5876-****-83CA-B56278******\\\\n\\",\\n \\"TaskInfo\\": {\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\\\n\\",\\n \\"Status\\": \\"RUNNING\\",\\n \\"RecordFileList\\": {\\n \\"Mp3FileList\\": [\\n \\"******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.mp3\\"\\n ],\\n \\"Mp4FileList\\": [\\n \\"******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.mp4\\"\\n ],\\n \\"HlsFileList\\": [\\n \\"******73-8501-****-8ac1-72295a******/myappid_testroom_userA_2025-05-06-14:37:22.m3u8\\"\\n ],\\n \\"VodMediaList\\": [\\n {\\n \\"Stream\\": \\"Single::UserA::AV::C\\",\\n \\"MediaIds\\": [\\n \\"****bbd9f59c71ee80065017f0f8****\\"\\n ],\\n \\"MergedIds\\": [\\n \\"****d2f9f59c71ee8006501790g7****\\"\\n ]\\n }\\n ]\\n }\\n }\\n}","type":"json"}]', - 'title' => 'DescribeRtcCloudRecordingFiles', - ], - 'DescribeChannelParticipants' => [ - 'summary' => 'Queries online users in a channel.', - 'methods' => [ - 'post', + 'title' => 'StartPlaylist', + 'description' => 'Call the [AddPlaylistItems](~~2848078~~) operation to add items to a playlist. Then, call this operation to start the playlist.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'This operation has a queries per second (QPS) limit of 10 for each user. If you exceed this limit, your API calls are throttled, which may affect your business. Call this operation within the specified limit.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartPlaylist'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartPlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\",\\n \\"StreamInfo\\": {\\n \\"AppName\\": \\"liveApp****\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"Streams\\": {\\n \\"Stream\\": [\\n {\\n \\"PullFlvUrl\\": \\"http://aliyundoc.com/caster/liveStream****.flv?auth_key=1612772224-0-0-3632be7cd9907169e8b09e91099c****\\",\\n \\"PullM3U8Url\\": \\"rtmp:///aliyundoc.com/caster/liveStream****?auth_key=1612772224-0-0-4404ca59c0246226d49d01f734b1****\\",\\n \\"PullRtmpUrl\\": \\"http://aliyundoc.com/caster/liveStream****.m3u8?auth_key=1612772224-0-0-919a023a127156fe82e3562c3b3b****\\",\\n \\"Quality\\": \\"original\\"\\n }\\n ]\\n }\\n }\\n}","type":"json"}]', + ], + 'StartRtcCloudRecording' => [ + 'summary' => 'Starts an RTC cloud recording task.', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', - 'abilityTreeCode' => '169451', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '269297', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application. You can specify only one application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'aec****', - ], + 'schema' => ['description' => 'The ID of the app to which the channel to be recorded belongs. The app must belong to the primary account of the current API caller.', 'type' => 'string', 'required' => true, 'example' => '********-7074-****-9ef5-85c19a4*****', 'title' => ''], ], [ 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the channel. You can specify only one channel ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testId', - ], - ], - [ - 'name' => 'PageNum', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of the page to return. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The ID of the channel to be recorded. Ensure that users are present in the channel when this operation is called. Otherwise, the recording task fails to be created.', 'type' => 'string', 'required' => true, 'example' => 'room1024', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'SubscribeParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The number of entries to return on each page. Default value: 10.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '10', + 'description' => 'The subscription parameters.', + 'type' => 'object', + 'properties' => [ + 'SubscribeUserIdList' => [ + 'description' => 'The list of subscribed UserId information. In single-stream recording mode, each UserId is recorded separately. In stream mixing recording mode, the audio and video of all UserIds are mixed into one set of audio and video.'."\n" + .'> - The array cannot be empty and supports a maximum of 17 elements.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information of a subscribed UserId.', + 'type' => 'object', + 'properties' => [ + 'UserId' => ['description' => 'The subscribed UserId.', 'type' => 'string', 'required' => true, 'example' => 'userA', 'title' => ''], + 'StreamType' => [ + 'description' => 'The media type of the subscribed UserId. Valid values:'."\n" + ."\n" + .'- 0: original stream, which includes both audio and video. (Default)'."\n" + ."\n" + .'- 1: audio-only stream.'."\n" + ."\n" + .'- 2: video-only stream (valid only in stream mixing recording mode).', + 'enumValueTitles' => ['original stream, which includes both audio and video.', 'audio-only stream.', 'video-only stream.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1', '2'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'SourceType' => [ + 'description' => 'The video input stream type of the UserId. This parameter is valid only when subscribing to a non-audio-only stream (StreamType!=1). Valid values:'."\n" + ."\n" + .'- 0: camera. (Default)'."\n" + ."\n" + .'- 1: screen sharing.', + 'enumValueTitles' => ['camera.', 'screen sharing.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => true, + 'maxItems' => 17, + 'minItems' => 1, + 'title' => '', + 'example' => '', + ], + ], + 'required' => true, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'Order', + 'name' => 'RecordParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The sort order. Valid values:'."\n" - ."\n" - .'* **asc**: ascending order.'."\n" - .'* **desc**: descending order. This is the default value.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'asc', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'The recording parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '6159ba01-6687-4fb2-a831-f0cd8d188648', - ], - 'Times' => [ - 'description' => 'The time elapsed until the result was returned. Unit: seconds. The value is a UNIX timestamp.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1557909133', - ], - 'TotalNum' => [ - 'description' => 'The number of entries returned.'."\n", + 'RecordMode' => [ + 'description' => 'The recording mode. Valid values:'."\n" + ."\n" + .'- 0: single-stream recording mode. A separate recording file is generated for each subscribed UserId.'."\n" + ."\n" + .'- 1: stream mixing recording mode. The streams of all subscribed UserIds are mixed and transcoded, and only one set of recording files is generated.', + 'enumValueTitles' => ['single-stream recording mode, where a separate recording file is generated for each subscribed UserId.', 'stream mixing recording mode, where the streams of all subscribed UserIds are mixed and transcoded, and only one set of recording files is generated.'], 'type' => 'integer', 'format' => 'int32', - 'example' => '3', + 'required' => true, + 'enum' => ['0', '1'], + 'example' => '0', + 'title' => '', ], - 'TotalPage' => [ - 'title' => 'TotalCount本次请求条件下的数据总量,此参数为可选参数,默认可不返回', - 'description' => 'The page number of the returned page.'."\n", + 'StreamType' => [ + 'description' => 'The media type of the recording output stream. Valid values:'."\n" + ."\n" + .'- 0: original stream, which includes both audio and video. (Default)'."\n" + ."\n" + .'- 1: audio-only stream.'."\n" + ."\n" + .'- 2: video-only stream.', + 'enumValueTitles' => ['original stream, which includes both audio and video.', 'audio-only stream.', 'video-only stream.'], 'type' => 'integer', 'format' => 'int32', - 'example' => '1', - ], - 'UserList' => [ - 'description' => 'The list of user IDs.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The IDs of the users in the channel. Multiple user IDs are separated by commas (,).', - 'type' => 'string', - 'example' => '27f9****,bb87****,df82****', - ], + 'default' => '0', + 'enum' => ['0', '1', '2'], + 'required' => false, + 'example' => '0', + 'title' => '', ], + 'MaxFileDuration' => ['description' => 'The maximum duration of a recording file, in seconds. Recording files that exceed this duration are split. The value must be within the range of [180, 7200], which is a maximum of 2 hours. If not specified, the default value is 2 hours.', 'type' => 'integer', 'format' => 'int64', 'maximum' => '7200', 'minimum' => '180', 'default' => '7200', 'required' => false, 'example' => '7200', 'title' => ''], ], - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6159ba01-6687-4fb2-a831-f0cd8d1******\\",\\n \\"Times\\": 1557909133,\\n \\"TotalNum\\": 3,\\n \\"TotalPage\\": 1,\\n \\"UserList\\": [\\n \\"27f9****,bb87****,df82****\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 6159ba01-6687-4fb2-a831-f0cd8d188648\\n 1557909133\\n 3\\n 1\\n \\n 27f9****\\n bb87****\\n df82****\\n \\n","errorExample":""}]', - 'title' => 'DescribeChannelParticipants', - 'description' => 'You can call this operation to query online users in a channel. The returned result does not include details about the users.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeChannelUsers' => [ - 'summary' => 'Queries the details of online users in a channel.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - ], - 'parameters' => [ - [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID. You can specify only one application ID in a request.'."\n", - 'type' => 'string', 'required' => true, - 'example' => 'aec****', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ChannelId', + 'name' => 'StorageParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The channel ID. You can specify only one channel ID in a request.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testId', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'The storage parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'AD86847D-1F36-18C8-A995-5EEA340B3202', - ], - 'Timestamp' => [ - 'description' => 'The UTC timestamp when the response is returned.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1691027655', - ], - 'IsChannelExists' => [ - 'description' => 'Indicates whether the channel exists. Valid values:'."\n" - ."\n" - .'* **true**'."\n" - .'* **false**'."\n" + 'StorageType' => [ + 'description' => 'The storage method. Valid values:'."\n" ."\n" - .'> After all users leave the channel, the system requires a few seconds to clear the cache. If you call the operation during this period, the value of this parameter is true, and the value of InteractiveUserNumber and LiveUserNumber is 0.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'InteractiveUserNumber' => [ - 'description' => 'The number of co-streamers.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'LiveUserNumber' => [ - 'description' => 'The number of viewers.'."\n", + .'- 0: VOD'."\n" + .'- 1: OSS', + 'enumValueTitles' => ['VOD', 'OSS'], 'type' => 'integer', 'format' => 'int32', + 'required' => true, + 'enum' => ['0', '1'], 'example' => '1', + 'title' => '', ], - 'InteractiveUserList' => [ - 'description' => 'The list of streamers/co-streamers.'."\n", + 'FileInfo' => [ + 'description' => 'The file storage information, used to specify the format, storage location, and naming of recording files. This parameter is valid only when StorageType is set to OSS.'."\n" + ."\n" + .'> A recording file is generated for each element in the array based on the corresponding configuration. If no format is specified, the HLS format is used by default.', 'type' => 'array', 'items' => [ - 'description' => 'Interactive user list.', - 'type' => 'string', - 'example' => 'aaa', + 'description' => 'The storage configuration for different file formats.', + 'type' => 'object', + 'properties' => [ + 'Format' => [ + 'description' => 'The file storage format. Valid values:'."\n" + ."\n" + .'- HLS'."\n" + .'- MP4'."\n" + .'- MP3', + 'enumValueTitles' => ['MP4' => 'MP4 format.', 'MP3' => 'MP3 format.', 'HLS' => 'HLS format.'], + 'type' => 'string', + 'required' => true, + 'enum' => ['HLS', 'MP4', 'MP3'], + 'example' => 'HLS', + 'title' => '', + ], + 'FileNamePattern' => ['description' => 'The file naming format. You can combine the following variables in any order:'."\n" + ."\n" + .'- AppId'."\n" + .'- ChannelId'."\n" + .'- UserId (required in single-stream mode; invalid in stream mixing mode, where it is retained as the {UserId} string if selected)'."\n" + .'- RecordMode'."\n" + .' - When the value is 0, it corresponds to Single'."\n" + .' - When the value is 1, it corresponds to Mix'."\n" + ."\n" + .'- SourceType'."\n" + .' - In single-stream mode, when the stream type is video-only, this parameter takes effect. SourceType can be configured as:'."\n" + .' - When the value is 0, it corresponds to C (Camera) for camera video stream.'."\n" + .' - When the value is 1, it corresponds to S (Screen) for screen sharing video stream.'."\n" + .' - In single-stream mode, when the stream type is audio-only, SourceType is automatically configured as A (Audio) to indicate that the recording content is an audio-only stream.'."\n" + .' - In single-stream mode, when the stream type is original stream, this parameter takes effect. SourceType can be configured as:'."\n" + .' - When the value is 0, it corresponds to OC (Original Camera) for camera original stream.'."\n" + .' - When the value is 1, it corresponds to OS (Original Screen) for screen sharing original stream.'."\n" + .' - In other scenarios, the SourceType configuration is invalid. If you manually configure SourceType, the system retains the {SourceType} placeholder string.'."\n" + ."\n" + .'- StreamType (uses the StreamType parameter under RecordParams)'."\n" + .' - When the value is 0, it corresponds to AV (Audio Video) for audio and video streams.'."\n" + .' - When the value is 1, it corresponds to A (Audio) for audio stream.'."\n" + .' - When the value is 2, it corresponds to V (Video) for video stream.'."\n" + ."\n" + .'- StartTime: the time when recording starts, in UTC+8 time zone, in a format similar to 2025-03-25-11:27:28. (Required when not using the default value)'."\n" + ."\n" + .'Default values:'."\n" + .'- Single-stream recording mode'."\n" + .' - {AppId}\\_{ChannelId}\\_{UserId}\\_{StartTime}'."\n" + .' - If different StreamType or SourceType values are subscribed for the same UserId, the default value is {AppId}\\_{ChannelId}\\_{UserId}\\_{SourceType}\\_{StartTime}'."\n" + .'- Stream mixing recording mode'."\n" + .' - {AppId}\\_{ChannelId}\\_{StartTime}'."\n" + ."\n" + .'> - The string can only consist of the variables listed above. Variable names must be enclosed in {}. Variables are separated by a single underscore (_). Each variable can appear at most once in the string.'."\n" + .'> - After naming as xxx, the file is saved in a format similar to TaskId/xxx.m3u8, where TaskId is the task ID generated when the cloud recording task is started and is automatically added to the storage path.', 'type' => 'string', 'required' => false, 'example' => '{AppId}_{ChannelId}_{StartTime}_{UserId}', 'title' => ''], + 'SliceNamePattern' => ['description' => 'The segment naming format. This parameter is valid only in HLS format. Similar to FileNamePattern, but with an additional variable Sequence:'."\n" + ."\n" + .'- AppId'."\n" + .'- ChannelId'."\n" + .'- UserId (required in single-stream mode; invalid in stream mixing mode, where it is retained as the {UserId} string if selected)'."\n" + .'- RecordMode'."\n" + .' - When the value is 0, it corresponds to Single'."\n" + .' - When the value is 1, it corresponds to Mix'."\n" + ."\n" + .'- SourceType'."\n" + .' - In single-stream mode, when the stream type is video-only, this parameter takes effect. SourceType can be configured as:'."\n" + .' - When the value is 0, it corresponds to C (Camera) for camera video stream.'."\n" + .' - When the value is 1, it corresponds to S (Screen) for screen sharing stream.'."\n" + .' - In single-stream mode, when the stream type is audio-only, SourceType is automatically configured as A (Audio) to indicate that the recording content is an audio-only stream.'."\n" + .' - In single-stream mode, when the stream type is original stream, this parameter takes effect. SourceType can be configured as:'."\n" + .' - When the value is 0, it corresponds to OC (Original Camera) for camera original stream.'."\n" + .' - When the value is 1, it corresponds to OS (Original Screen) for screen sharing original stream.'."\n" + .' - In other scenarios, the SourceType configuration is invalid. If you manually configure this parameter, the system retains the `{SourceType}` placeholder string.'."\n" + ."\n" + .'- StreamType (uses the StreamType parameter under RecordParams)'."\n" + .' - When the value is 0, it corresponds to AV (Audio Video) for audio and video streams.'."\n" + .' - When the value is 1, it corresponds to A (Audio) for audio stream.'."\n" + .' - When the value is 2, it corresponds to V (Video) for video stream.'."\n" + .'- StartTime: the time when recording starts, in UTC+8 time zone, in a format similar to 2025-03-25-11:27:28. (Required when not using the default value).'."\n" + ."\n" + .'- Sequence: in HLS format, the ts file name contains Sequence. This variable is invalid for other formats. (Required when not using the default value).'."\n" + ."\n" + .'Default values:'."\n" + .'- Single-stream recording mode'."\n" + .' - {AppId}\\_{ChannelId}\\_{UserId}\\_{StartTime}\\_{Sequence}'."\n" + .' - If different StreamType or SourceType values are subscribed for the same UserId, the default value is {AppId}\\_{ChannelId}\\_{UserId}\\_{SourceType}\\_{StartTime}\\_{Sequence}'."\n" + .'- Stream mixing recording mode'."\n" + .' - {AppId}\\_{ChannelId}\\_{StartTime}\\_{Sequence}'."\n" + ."\n" + .'> - The string can only consist of the variables listed above. Variable names must be enclosed in {}. Variables are separated by a single underscore (_). Each variable can appear at most once in the string.'."\n" + .'> - After naming as xxx, the segment file is saved in a format similar to TaskId/xxx.ts, where TaskId is the task ID generated when the cloud recording task is started and is automatically added to the storage path.', 'type' => 'string', 'required' => false, 'example' => '{AppId}_{ChannelId}_{StartTime}_{Sequence}', 'title' => ''], + 'FilePathPrefix' => [ + 'description' => 'The file storage path. Each element in the array corresponds to a directory level. For example, if the parameter value is ["dir1","dir2"], the xxx.m3u8 file is saved as dir1/dir2/TaskId/xxx.m3u8. If this parameter is empty, the file is saved directly as TaskId/xxx.m3u8.'."\n" + .'- The TaskId of the task is automatically appended to the end of the path to prevent recording files from different tasks from being mixed together.'."\n" + .'- If FilePathPrefix is set, each element in the array can only contain letters (a-zA-Z), digits (0-9), hyphens (-), and underscores (_), and cannot be an empty string.'."\n" + .'- The total length of all directory levels concatenated together cannot exceed 128 characters (including the connecting \'/\' characters, but excluding the automatically appended TaskId). For example, if the parameter value is ["dir1","dir2"], the concatenated path is "dir1/dir2/", meaning the total character count of all elements in the array plus the array length (corresponding to the "/" after each directory level) cannot exceed 128.'."\n" + .'- The array can contain a maximum of 5 elements, meaning you can customize up to 5 directory levels.', + 'type' => 'array', + 'items' => ['description' => 'The name of each directory level.', 'type' => 'string', 'required' => false, 'example' => 'dir1', 'title' => ''], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'SliceDuration' => ['title' => '', 'description' => 'The segment length in seconds. This parameter is valid only in HLS format. The value must be within the range of [10, 30]. (Default value: 30)'."\n" + ."\n" + .'If you do not have special requirements, use the default value.', 'type' => 'integer', 'format' => 'int64', 'example' => '30', 'required' => false], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'OSSParams' => [ + 'description' => 'The OSS storage configuration. This parameter is required when the storage method is OSS and is invalid when the storage method is VOD.', + 'type' => 'object', + 'properties' => [ + 'OSSEndpoint' => ['description' => 'The endpoint of the OSS storage. The corresponding region ID must be consistent with the selected endpoint.', 'type' => 'string', 'required' => true, 'example' => 'oss-cn-shanghai.aliyuncs.com', 'title' => ''], + 'OSSBucket' => ['description' => 'The bucket name of the OSS storage. The bucket must belong to the primary account of the current API caller.', 'type' => 'string', 'required' => true, 'example' => 'mytest-bucket', 'title' => ''], ], + 'required' => false, + 'title' => '', + 'example' => '', ], - 'LiveUserList' => [ - 'description' => 'The list of viewers.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Viewer list, up to 1000 people returned.', - 'type' => 'string', - 'example' => 'bbb', + 'VodParams' => [ + 'description' => 'The VOD storage configuration. This parameter is required when the storage method is VOD and is invalid when the storage method is OSS.'."\n" + ."\n\n" + .'> '."\n" + .'> - The US (Virginia) region does not currently support recording to VOD.', + 'type' => 'object', + 'properties' => [ + 'StorageLocation' => ['description' => 'The storage address included in the video-on-demand console > Media Asset Management Configuration > Storage Management. Recording files are first saved to this location and then uploaded to VOD.'."\n" + ."\n" + .'> '."\n" + .'> - Ensure that the region of this storage address is consistent with the selected endpoint.', 'type' => 'string', 'required' => false, 'example' => 'mytest.oss-cn-shenzhen.aliyuncs.com', 'title' => ''], + 'VodTranscodeGroupId' => ['description' => 'The ID of the video-on-demand transcoding template group.'."\n" + ."\n" + .'> '."\n" + .'> - Ensure that the area of this transcoding template group ID is consistent with the selected service registration endpoint.', 'type' => 'string', 'required' => false, 'example' => '****8a914d3989e9825eb90530b2****', 'title' => ''], + 'AutoCompose' => [ + 'description' => 'Specifies whether to enable automatic merging. Valid values:'."\n" + .'- 0: Disabled. (Default)'."\n" + .'- 1: Enabled. When enabled, the ComposeVodTranscodeGroupId parameter must be set.', + 'enumValueTitles' => ['automatic merging disabled.', 'automatic merging enabled. When enabled, the ComposeVodTranscodeGroupId parameter must be set.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'ComposeVodTranscodeGroupId' => ['description' => 'The ID of the VOD transcoding template group used to transcode the automatically composed new video in the video-on-demand service.'."\n" + ."\n" + .'> - This parameter is required only when AutoCompose (whether to enable automatic merging) is set to 1.'."\n" + .'> - If only one media resource file exists when recording ends, automatic merging is not triggered even if it is enabled.'."\n" + .'> - For common issues about automatic composition and transcoding, see [Live-to-VOD FAQ](~~99726~~).'."\n" + .'> - For VOD transcoding billing details, see [Media transcoding billing](~~188308~~).', 'type' => 'string', 'required' => false, 'example' => '****4c34112cfe68248f2f77759c****', 'title' => ''], ], + 'required' => false, + 'title' => '', + 'example' => '', ], ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => '400', - 'errorMessage' => 'InvalidInput', - ], - ], - [ - [ - 'errorCode' => '401', - 'errorMessage' => 'InvalidAuth', - ], - ], - 404 => [ - [ - 'errorCode' => '404', - 'errorMessage' => 'AppOrChannelNotExists', - ], - ], - 500 => [ - [ - 'errorCode' => '500', - 'errorMessage' => 'SystemError, Please Check App And Channel Exists, RETRY', - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"AD86847D-1F36-18C8-A995-5EEA34******\\",\\n \\"Timestamp\\": 1691027655,\\n \\"IsChannelExists\\": true,\\n \\"InteractiveUserNumber\\": 1,\\n \\"LiveUserNumber\\": 1,\\n \\"InteractiveUserList\\": [\\n \\"aaa\\"\\n ],\\n \\"LiveUserList\\": [\\n \\"bbb\\"\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n AD86847D-1F36-18C8-A995-5EEA340B3202\\n 1691027655\\n true\\n 1\\n 1\\n aaa\\n bbb\\n","errorExample":""}]', - 'title' => 'DescribeChannelUsers', - 'description' => 'You can call this operation to query information about online users in a channel, such as the total number of users during live streaming.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'RemoveTerminals' => [ - 'summary' => 'Removes users from a channel.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '178423', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - ], - 'parameters' => [ - [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application. You can specify only one application ID in each request.'."\n", - 'type' => 'string', 'required' => true, - 'example' => 'aec****', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ChannelId', + 'name' => 'MixTranscodeParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The ID of the channel. You can specify only one channel ID in each request.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testId', + 'description' => 'The transcoding parameters. This parameter is not required in single-stream recording mode and is required in stream mixing recording mode.', + 'type' => 'object', + 'properties' => [ + 'FrameFillType' => [ + 'description' => 'The frame fill type when a stream is interrupted. Valid values:'."\n" + .'- 0: Fill with the last frame. (Default)', + 'enumValueTitles' => ['fill with the last frame.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'AudioBitrate' => ['description' => 'The audio bitrate in kbps. The value must be within the range of [8, 500]. Required in stream mixing mode.', 'type' => 'integer', 'format' => 'int64', 'required' => true, 'maximum' => '500', 'minimum' => '8', 'example' => '300', 'title' => ''], + 'AudioChannels' => [ + 'description' => 'The number of audio channels. Valid values:'."\n" + .'- 1: mono.'."\n" + .'- 2: stereo.'."\n" + ."\n" + .'Required in stream mixing mode.', + 'enumValueTitles' => [1 => 'mono.', 'stereo.'], + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'enum' => ['1', '2'], + 'example' => '2', + 'title' => '', + ], + 'AudioSampleRate' => [ + 'description' => 'The audio sample rate in Hz. Valid values:'."\n" + .'- 8000'."\n" + .'- 16000'."\n" + .'- 32000'."\n" + .'- 44100'."\n" + .'- 48000'."\n" + ."\n" + .'Required in stream mixing mode.', + 'enumValueTitles' => [8000 => '8000HZ', 16000 => '16000HZ', 32000 => '32000HZ', 44100 => '44100HZ', 48000 => '48000HZ'], + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'enum' => ['8000', '16000', '32000', '44100', '48000'], + 'example' => '32000', + 'title' => '', + ], + 'VideoCodec' => [ + 'description' => 'The video encoding format. Valid values:'."\n" + .'- H.264 (Default)'."\n" + .'- H.265', + 'enumValueTitles' => ['H.264' => 'H.264 encoding.', 'H.265' => 'H.265 encoding.'], + 'type' => 'string', + 'default' => 'H.264', + 'enum' => ['H.264', 'H.265'], + 'required' => false, + 'example' => 'H.264', + 'title' => '', + ], + 'VideoBitrate' => ['description' => 'The video bitrate in kbps. The value must be within the range of [1, 10000]. Required in stream mixing mode when the recording output is expected to contain video. Invalid in other cases.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '10000', 'minimum' => '1', 'required' => false, 'example' => '5000', 'title' => ''], + 'VideoFramerate' => ['description' => 'The video frame rate in fps. The value must be within the range of [1, 60]. Required in stream mixing mode when the recording output is expected to contain video. Invalid in other cases.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '60', 'minimum' => '1', 'required' => false, 'example' => '30', 'title' => ''], + 'VideoGop' => ['description' => 'The video GOP. One I-frame exists for every VideoGop frames. The value must be within the range of [1, 60]. Required in stream mixing mode when the recording output is expected to contain video. Invalid in other cases.', 'type' => 'integer', 'format' => 'int32', 'maximum' => '60', 'minimum' => '1', 'required' => false, 'example' => '30', 'title' => ''], + 'VideoHeight' => ['description' => 'The video height in pixels. The value must be within the range of [0, 1920]. (Default value: 0)', 'type' => 'integer', 'format' => 'int32', 'maximum' => '1920', 'minimum' => '0', 'default' => '0', 'required' => false, 'example' => '480', 'title' => ''], + 'VideoWidth' => ['description' => 'The video width in pixels. The value must be within the range of [0, 1920]. (Default value: 0)', 'type' => 'integer', 'format' => 'int32', 'maximum' => '1920', 'minimum' => '0', 'default' => '0', 'required' => false, 'example' => '640', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'TerminalIds', + 'name' => 'MixLayoutParams', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The IDs of the users that you want to remove.', - 'type' => 'array', - 'items' => [ - 'description' => 'The IDs of the users that you want to remove. Valid values of N: **1 to 30**. Format:'."\n" - ."\n" - .'```'."\n" - ."\n" - .'TerminalIds.1=****'."\n" - .'TerminalIds.2=****'."\n" - .'......'."\n" - .' '."\n" - .'```', - 'type' => 'string', - 'required' => false, - 'example' => '1811****', - ], - 'required' => true, - 'maxItems' => 30, - ], - ], - ], - 'responses' => [ - 200 => [ + 'style' => 'json', 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', + 'description' => 'The layout parameters. This parameter is not required in single-stream recording mode. In stream mixing recording mode, this parameter is required when the recording output is expected to contain video.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4AF8', + 'MixBackground' => [ + 'description' => 'The global background image for stream mixing.', + 'type' => 'object', + 'properties' => [ + 'RenderMode' => [ + 'description' => 'The display mode for the output. Valid values:'."\n" + .'- 0: Crop. (Default)'."\n" + .'- 1: Scale and display with black borders.', + 'enumValueTitles' => ['crop.', 'scale and display with black borders.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'Url' => ['description' => 'The URL of the background image. The maximum length is 2048 characters.', 'type' => 'string', 'maxLength' => 2048, 'required' => false, 'example' => 'https://xxxx.com/photos/my-test-picture.png', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', ], - 'Terminals' => [ - 'description' => 'The information about the users.'."\n", + 'UserPanes' => [ + 'description' => 'The window layout information for subscribed users. Only UserIds with layout information configured are placed in the video. Required in stream mixing mode when recording non-audio-only files.', 'type' => 'array', 'items' => [ - 'description' => '', + 'description' => 'The window configuration in the video.', 'type' => 'object', 'properties' => [ - 'Code' => [ - 'description' => 'The returned status code. A value of 0 indicates that the request is successful. If the request fails, an error message is returned.'."\n", + 'UserId' => ['description' => 'The UserId corresponding to this window.'."\n" + .'- If UserId is not set, subscribed users are filled into windows in the order they join the channel.'."\n" + .'- The combination of UserId and SourceType set here must be included in SubscribeUserIdList.'."\n" + .'- Audio-only streams cannot be added to the layout.', 'type' => 'string', 'required' => false, 'example' => 'userA', 'title' => ''], + 'SourceType' => [ + 'description' => 'The video input stream type of the UserId. Setting SourceType is invalid when UserId is not specified. Valid values:'."\n" + .'- 0: camera. (Default)'."\n" + .'- 1: screen sharing.'."\n" + ."\n" + .'The combination of UserId and SourceType set here must be included in SubscribeUserIdList.', + 'enumValueTitles' => ['camera.', 'screen sharing.'], 'type' => 'integer', 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, 'example' => '0', + 'title' => '', ], - 'Message' => [ - 'description' => 'The result of removing the specified users from the channel. Valid values:'."\n" - ."\n" - .'* Success'."\n" - .'* Failed'."\n", - 'type' => 'string', - 'example' => 'Success', - ], - 'Id' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'example' => '1811****', + 'Height' => ['description' => 'The pane height as a normalized percentage. The value must be within the range of [0, 1]. (Default value: 0)', 'type' => 'string', 'default' => '0', 'required' => false, 'example' => '0.5', 'title' => ''], + 'Width' => ['description' => 'The pane width as a normalized percentage. The value must be within the range of [0, 1]. (Default value: 0)', 'type' => 'string', 'default' => '0', 'required' => false, 'example' => '0.5', 'title' => ''], + 'X' => ['description' => 'The X coordinate as a normalized percentage. The value must be within the range of [0, 1]. (Default value: 0)', 'type' => 'string', 'default' => '0', 'required' => false, 'example' => '0', 'title' => ''], + 'Y' => ['description' => 'The Y coordinate as a normalized percentage. The value must be within the range of [0, 1]. (Default value: 0)', 'type' => 'string', 'default' => '0', 'required' => false, 'example' => '0', 'title' => ''], + 'ZOrder' => ['description' => 'The stacking order. 0 is the bottom layer, layer 1 is above layer 0, and so on. (Default value: 0)', 'type' => 'integer', 'format' => 'int32', 'default' => '0', 'required' => false, 'example' => '0', 'title' => ''], + 'SubBackground' => [ + 'description' => 'The sub-pane background image. When a user turns off the camera, has not started streaming after joining, or leaves the channel midway, the corresponding image is displayed at the layout position.', + 'type' => 'object', + 'properties' => [ + 'RenderMode' => [ + 'description' => 'The display mode for the sub-pane output. Valid values:'."\n" + .'- 0: Crop. (Default)'."\n" + .'- 1: Scale and display with black borders.', + 'enumValueTitles' => ['crop.', 'scale and display with black borders.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'Url' => ['description' => 'The URL of the background image. The maximum length is 2048 characters.', 'type' => 'string', 'maxLength' => 2048, 'required' => false, 'example' => 'https://xxxx.com/photos/my-test-pane-picture.png', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', ], ], + 'required' => false, + 'title' => '', + 'example' => '', ], + 'required' => false, + 'title' => '', + 'example' => '', ], ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], - ], - [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], - ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4AF8\\",\\n \\"Terminals\\": [\\n {\\n \\"Code\\": 0,\\n \\"Message\\": \\"Success\\",\\n \\"Id\\": \\"1811****\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4AF8\\n \\n 0\\n Success\\n 1811****\\n \\n","errorExample":""}]', - 'title' => 'RemoveTerminals', - 'description' => 'You can call this operation to remove one or more users from a channel.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'CreateRTCWhipStreamAddress' => [ - 'summary' => '创建房间whip协议推流地址', - 'path' => '', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - ], - 'parameters' => [ - [ - 'name' => 'ClientToken', - 'in' => 'query', - 'allowEmptyValue' => false, - 'schema' => [ - 'title' => '幂等参数', - 'description' => '', - 'type' => 'string', 'required' => false, - 'example' => '58E73333-xxxx-xxxx-xxxx', - ], - ], - [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'title' => '应用AppID', - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '6a0**6dcc-xxxx-xxxx-xxxx-e**e3exxxxxx ', - 'maxLength' => 64, - 'minLength' => 1, - 'pattern' => '^[0-9a-zA-Z_-]+$', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ChannelId', + 'name' => 'NotifyUrl', 'in' => 'query', - 'schema' => [ - 'title' => '频道号', - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => ' ch00000****001', - 'maxLength' => 64, - 'minLength' => 1, - 'pattern' => '^[0-9a-zA-Z_-]+$', - ], + 'schema' => ['description' => 'The URL for receiving callback messages. Task status messages are pushed to this URL via POST in JSON format. The maximum length is 2048 characters.'."\n" + ."\n" + .'For callback message details, see [documentation](https://www.alibabacloud.com/help/en/live/on-cloud-recording-callback-message).', 'type' => 'string', 'required' => false, 'example' => 'http://xxxx/test/mycallback', 'title' => ''], ], [ - 'name' => 'UserId', + 'name' => 'NotifyAuthKey', 'in' => 'query', - 'schema' => [ - 'title' => '用户ID,不要与其他进频道的用户重合。', - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'zb0000****0001', - 'maxLength' => 64, - 'minLength' => 1, - 'pattern' => '^[0-9a-zA-Z_-]+$', - ], + 'schema' => ['description' => 'The authentication key for callback messages. If not specified, no authentication is performed. If specified, the length must be within [16, 64] characters and consist of only uppercase and lowercase letters and digits.'."\n" + .'- If NotifyUrl is not specified, NotifyAuthKey is also invalid.'."\n" + .'- When a valid NotifyAuthKey is set, authentication content is included in the callback message.', 'type' => 'string', 'required' => false, 'example' => 'mytestkeymytestkey', 'title' => ''], ], [ - 'name' => 'DisplayName', + 'name' => 'NotifyFileUploadedFormat', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'title' => '在频道内显示的名称', - 'description' => '', - 'type' => 'string', - 'required' => true, + 'title' => '', + 'description' => 'The specified formats for which a callback message is sent when the recording file generation event (RecordFileUploaded) is triggered.', + 'type' => 'array', + 'items' => ['title' => '', 'description' => 'The specific file formats for which callbacks are received. Valid values (case-insensitive):'."\n" + ."\n" + .'- SLICE'."\n" + .'- HLS'."\n" + .'- MP4'."\n" + .'- MP3'."\n" + ."\n" + .'VOD storage mode is not currently supported.'."\n" + .'For OSS storage mode, the selected formats must be included in the file formats specified in StorageParams.FileInfo.', 'type' => 'string', 'example' => 'MP4', 'required' => false], + 'required' => false, + 'maxItems' => 100, 'example' => '', - 'maxLength' => 40, - 'minLength' => 1, ], ], [ - 'name' => 'ExpireTime', + 'name' => 'MaxIdleTime', 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '43200', - 'default' => '43200', - ], + 'schema' => ['description' => 'The idle timeout period. When the task remains idle for longer than MaxIdleTime, the task is automatically stopped. Unit: seconds. The value must be within the range of [10, 14400], which is a maximum of 4 hours. (Default value: 300 seconds)'."\n" + .'- In stream mixing recording mode, the task is considered idle when all subscribed user streams stop streaming.'."\n" + .'- In single-stream recording mode, subscribed streams are independent of each other. When any stream stops streaming, it is considered idle. After MaxIdleTime is reached, recording for that stream is stopped. When all subscribed streams have been idle beyond the timeout, the entire cloud recording task is stopped.', 'type' => 'integer', 'format' => 'int64', 'maximum' => '86400', 'minimum' => '10', 'required' => false, 'example' => '600', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response', + 'title' => '', + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => '', - 'type' => 'string', - 'example' => '58E7**D4-xxxx-xxxx-xxxx-6B5**6Cxxxxx', - ], - 'WhipAddress' => [ - 'title' => 'whip协议推流服务地址', - 'description' => '', - 'type' => 'string', - 'example' => 'https://xxxxxx.media-sh.xxxxx.com/xxxxxxxxxxxx/3723a3xxxxxxxxx223c606b***5f7a2bc7c56ea5cdd0xxxxe?auth_key=17495xxxxx-xxxx-0-f013003067c78c4053f9cd0xxxxxxx&qqzr=H4sIAAAAAAAC_6pWSlayUkrOMxxxxxxrPyCxQ0lFKQTCLlKyUjM2Nj**NDQ1TEy2Mjc3xxxxxxxxxxqRYAAAD__xxxxx__xxxxxxxx', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '******58-5876-****-83CA-B56278******'], + 'TaskId' => ['description' => 'The task ID.', 'type' => 'string', 'example' => '******73-8501-****-8ac1-72295a******', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter.NotifyUrl', 'errorMessage' => '%s, please check the notifyUrl.', 'description' => 'The parameter NotifyUrl format is invalid, please check.'], + ['errorCode' => 'InvalidParameter.StorageParams.FileInfo', 'errorMessage' => '%s, please check the fileInfo of storageParams.', 'description' => 'The parameter FileInfo has invalid fields, please check.'], + ['errorCode' => 'InvalidParameter.StorageParams.OSSParams', 'errorMessage' => '%s, please check the ossParams of storageParams.', 'description' => 'The parameter OSSParams has invalid fields, please check.'], + ['errorCode' => 'NotFound.OSSBucket', 'errorMessage' => '%s, please check the ossBucket of storageParams.', 'description' => 'The parameter OSSBucket does not exist.'], + ['errorCode' => 'InvalidParameter.SubscribeParams.SubscribeUserIdList', 'errorMessage' => '%s, please check the subscribeUserIdList of subscribeParams.', 'description' => 'The parameter SubscribeUserIdList is invalid, please check.'], + ['errorCode' => 'InvalidParameter.MixLayoutParams.UserPanes', 'errorMessage' => '%s, please check the userPanes of mixLayoutParams.', 'description' => 'The parameter UserPanes has invalid fields, please check.'], + ['errorCode' => 'InvalidParameter.MixTranscodeParams', 'errorMessage' => '%s, please check the transcodeParams.', 'description' => 'The parameter MixTranscodeParams has invalid fields, please check.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter.UserId', 'errorMessage' => '%s, please check the UserId.', 'description' => 'UserId is invalid, please check.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter.ChannelId', 'errorMessage' => '%s, please check the channelId.', 'description' => ''], + ['errorCode' => 'InvalidParameter.AppId', 'errorMessage' => '%s, please check the appId.', 'description' => 'The parameter AppId is invalid. Check it.'], ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + [ + ['errorCode' => 'InvalidParameter.StorageParams.VodParams', 'errorMessage' => '%s, please check the vodParams of storageParams.', 'description' => ''], + ['errorCode' => 'InvalidParameter.NotifyAuthKey', 'errorMessage' => '%s, please check the notifyAuthKey.', 'description' => ''], + ['errorCode' => 'InvalidParameter.MaxIdleTime', 'errorMessage' => '%s, please check the maxIdleTime.', 'description' => ''], + ['errorCode' => 'InvalidParameter.RecordParams', 'errorMessage' => '%s, please check the recordParams.', 'description' => ''], + ['errorCode' => 'InvalidParameter.StorageParams.StorageType', 'errorMessage' => '%s, please check the storageType of storageParams.', 'description' => 'The parameter StorageType is invalid, please check.'], + ['errorCode' => 'InvalidParameter.NotifyFileUploadedFormat', 'errorMessage' => '%s, please check the notifyFileUploadedFormat.', 'description' => 'The parameter NotifyFileUploadedFormat is invalid, please check.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"58E7**D4-xxxx-xxxx-xxxx-6B5**6Cxxxxx\\",\\n \\"WhipAddress\\": \\"https://xxxxxx.media-sh.xxxxx.com/xxxxxxxxxxxx/3723a3xxxxxxxxx223c606b***5f7a2bc7c56ea5cdd0xxxxe?auth_key=17495xxxxx-xxxx-0-f013003067c78c4053f9cd0xxxxxxx&qqzr=H4sIAAAAAAAC_6pWSlayUkrOMxxxxxxrPyCxQ0lFKQTCLlKyUjM2Nj**NDQ1TEy2Mjc3xxxxxxxxxxqRYAAAD__xxxxx__xxxxxxxx\\"\\n}","type":"json"}]', - ], - 'CreateRoomRealTimeStreamAddress' => [ - 'summary' => 'Generates a Real-Time Messaging Protocol (RTMP) ingest URL for a channel.', - 'methods' => [ - 'get', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******58-5876-****-83CA-B56278******\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\"\\n}","type":"json"}]', + 'title' => 'Start an RTC cloud recording task', + 'description' => 'Cloud recording is a paid feature. For billing details, see [Cloud recording fees](~~2976391~~).'."\n" + .'## Endpoint'."\n" + .'The following endpoints are active for this operation:'."\n" + ."\n" + .' |Region |Region ID | Public endpoint |'."\n" + .' | --- | --- | --- |'."\n" + .' | Shanghai | cn-shanghai | live.aliyuncs.com |'."\n" + .' | Singapore | ap-southeast-1 | live.ap-southeast-1.aliyuncs.com |'."\n" + .' | US (Virginia) | us-east-1 | live.us-east-1.aliyuncs.com |'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 50 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Invoke this operation as needed.', + 'requestParamsDescription' => '- For single-stream recording mode:'."\n" + .' - You can subscribe to both the camera and screen sharing streams of the same UserId simultaneously, but the FileNamePattern and SliceNamePattern parameters must include the SourceType variable (to avoid recording files overwriting each other).'."\n" + .' - Subscribing to only the video-only stream of a UserId is not currently supported. In single-stream mode, UserInfo.StreamType cannot be set to 2.'."\n" + ."\n" + .'- In single-stream recording mode:'."\n" + .' - If RecordParams.StreamType is audio-only (value 1), SubscribeParams cannot contain a video-only subscription (SubscribeParams value 2).'."\n" + .' - If RecordParams.StreamType is video-only (value 2), SubscribeParams cannot contain an audio-only subscription (SubscribeParams value 1).'."\n" + ."\n" + .'- In stream mixing recording mode:'."\n" + .' - If RecordParams.StreamType is audio-only (value 1), SubscribeParams cannot have all UserIds subscribing to video-only streams (all SubscribeParams values set to 2).'."\n" + .' - If RecordParams.StreamType is video-only (value 2), SubscribeParams cannot have all UserIds subscribing to audio-only streams (all SubscribeParams values set to 1).'."\n" + ."\n" + .'- During recording, if the channel is closed midway, users must rejoin and resume streaming within the idle timeout period. Otherwise, the task is automatically stopped.', + 'extraInfo' => '- The relationship between the actual stream published by a UserId and the subscribed stream must match the scenarios marked with "✅" in the following table:'."\n" + ."\n" + .' | |Subscribe to audio stream | Subscribe to video stream | Subscribe to audio and video stream |'."\n" + .' | --- |--- | --- | --- |'."\n" + .' | Publish audio stream | ✅ | ❌ | ❌ |'."\n" + .' | Publish video stream | ❌ | ✅ | ✅ |'."\n" + .' | Publish audio and video stream | ✅ | ✅ | ✅ |'."\n" + ."\n" + .'- Otherwise, the recorded files may not match expectations, or no files may be generated temporarily.'."\n" + ."\n" + .'- In single-stream recording mode, if the resolution of a UserId\'s source stream changes during streaming and MP4 recording is required, compatibility issues may occur. Specifically, when a player that does not support dynamic resolution switching opens the MP4 file, the video may freeze from the point where the resolution changed.'."\n" + ."\n" + .'- When recording to VOD, receiving the STOPPED callback only indicates that the file has started uploading to VOD, not that the upload is complete. This differs from recording to OSS.'."\n" + ."\n" + .'- When recording to VOD with automatic merging enabled, at least two media resource files must exist when recording ends for automatic merging to occur. If only one recording file exists when recording ends, no merged file is generated.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartRtcCloudRecording'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:StartRtcCloudRecording', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'translator' => 'machine', + ], + 'StartRtcCloudTranscode' => [ + 'summary' => 'Creates a cloud transcoding job.', + 'path' => '', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -61857,889 +51689,525 @@ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '198619', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the ARTC application. You can specify only one application ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The ID of the application to which the channel belongs. The ID can contain uppercase letters, lowercase letters, digits, underscores (\\_), and hyphens (-). The maximum length is 64 characters.', 'type' => 'string', 'required' => true, 'example' => '********-7074-****-9ef5-85c19a4*****', 'title' => ''], ], [ 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'title' => '往哪个频道中推', - 'description' => 'The ID of the channel. You can specify only one ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourChannelId', - ], + 'schema' => ['description' => 'The ID of the channel to which the user to be transcoded belongs. The ID can contain uppercase letters, lowercase letters, digits, underscores (\\_), and hyphens (-). The maximum length is 64 characters.', 'type' => 'string', 'required' => true, 'example' => 'myChannel', 'title' => ''], ], [ - 'name' => 'UserId', + 'name' => 'InputParam', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'title' => 'rtmp在房间中的userid,请不要与房间中的其他用户重复', - 'description' => 'The ID of the user who ingests the stream over RTMP. The user ID must be different from IDs of other users in the channel. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', + 'type' => 'object', + 'properties' => [ + 'SingleSubUserParam' => [ + 'type' => 'object', + 'properties' => [ + 'UserId' => ['description' => 'The ID of the user whose stream you want to subscribe to.', 'type' => 'string', 'required' => true, 'example' => 'userA', 'title' => ''], + 'StreamType' => ['description' => 'The media type of the subscribed stream. Valid values:'."\n" + ."\n" + .'- 0 (default): The original stream, which includes both the audio and video streams.'."\n" + ."\n" + .'- 1: The audio-only stream. (This value is not supported. The setting is invalid.)'."\n" + ."\n" + .'- 2: The video-only stream. (This value is not supported. The setting is invalid.)', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '0', 'title' => ''], + 'SourceType' => ['description' => 'The type of the video input stream. This parameter is valid only if the subscribed media type includes a video stream. Valid values:'."\n" + ."\n" + .'- 0 (default): The camera stream.'."\n" + ."\n" + .'- 1: The screen sharing stream. (This value is not supported. The setting is invalid.)', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '0', 'title' => ''], + ], + 'required' => true, + 'description' => 'The input parameters for a single-stream subscription.', + 'title' => '', + 'example' => '', + ], + ], 'required' => true, - 'example' => 'rtmp-uuid', - 'maxLength' => 64, - 'minLength' => 1, + 'description' => 'The parameters for the input stream subscription.', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'DisplayName', + 'name' => 'OutputParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'title' => 'rtmp在频道中的显示名称,长度1~40,必填', - 'description' => 'The name of the RTMP stream. The name can be up to 40 characters in length.'."\n", - 'type' => 'string', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ChannelId' => ['description' => 'The ID of the channel to which the transcoded stream is pushed. The ID can contain uppercase letters, lowercase letters, digits, underscores (\\_), and hyphens (-). The maximum length is 64 characters. (Pushing streams to a different channel is not supported. This setting is invalid.)', 'type' => 'string', 'required' => true, 'example' => 'myChannel', 'title' => ''], + 'UserId' => ['description' => 'The user ID for the transcoded stream in the destination channel. This ID must be unique within the channel.', 'type' => 'string', 'required' => true, 'example' => 'userA_360p', 'title' => ''], + 'UserToken' => ['description' => 'The token required to push the transcoded stream to the channel. For more information, see [Token-based authentication](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/token-based-authentication).', 'type' => 'string', 'required' => true, 'example' => 'eyJhcHBpZCI********', 'title' => ''], + 'TranscodeTemplate' => ['description' => 'The name of the transcoding template. Valid values:'."\n" + ."\n" + .'- alimcopy'."\n" + ."\n" + .'- lld'."\n" + ."\n" + .'- lsd'."\n" + ."\n" + .'- lhd'."\n" + ."\n" + .'- lud', 'type' => 'string', 'required' => true, 'example' => 'lhd', 'title' => ''], + ], + 'description' => 'The parameters for a transcoded output stream.', + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => true, - 'example' => 'rtmp-dname', - 'maxLength' => 40, - 'minLength' => 1, + 'description' => 'The parameters for the transcoded output.', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'ExpireTime', + 'name' => 'MaxIdleTime', 'in' => 'query', - 'schema' => [ - 'title' => '地址有效时长,单位秒,默认10个小时', - 'description' => 'The validity period of the RTMP URL. Unit: seconds. The default value is 36,000 seconds, which is 10 hours.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '43200', - 'default' => '43200', - ], + 'schema' => ['description' => 'The idle timeout period in seconds. If a task cannot subscribe to the specified streamer\'s stream and remains idle for longer than this period, the task automatically stops. The value must be an integer from 10 to 14,400. The default value is 300.', 'type' => 'integer', 'format' => 'int64', 'required' => false, 'example' => '600', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'F8DB7E25-6A35-161A-AA41-B7A658AF****', - ], - 'RtmpAddress' => [ - 'description' => 'The RTMP ingest URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://rtcpush****.rtmp.alivecdn.com/rtcdev****/H4sIAAAA****_6pWSlayUipJLS5R0lEqRTBTEMwiJSul1CRTMxNjsyQTM****-PUZCMz8yTDZLNkAwMDA6M0I0ulWgA****__wEAAP__a_e7YkkAAAA?auth_key=1700492701-6e33-0-c6d7e3a93dc2dbe3af42f6259ccd****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '******3B-0E1A-586A-AC29-742247******'], + 'TaskId' => ['description' => 'The ID of the cloud transcoding job.', 'type' => 'string', 'example' => '******73-8501-****-8ac1-72295a******', 'title' => ''], ], + 'title' => '', + 'description' => 'The response.', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter%s', 'errorMessage' => '%s.', 'description' => ''], + ['errorCode' => 'MissingParameter%s', 'errorMessage' => '%s.', 'description' => ''], + ['errorCode' => 'TooManyRequests', 'errorMessage' => '%s.', 'description' => ''], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s.', 'description' => ''], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'NotFound%s', 'errorMessage' => '%s.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F8DB7E25-6A35-161A-AA41-B7A658AF****\\",\\n \\"RtmpAddress\\": \\"rtmp://rtcpush****.rtmp.alivecdn.com/rtcdev****/H4sIAAAA****_6pWSlayUipJLS5R0lEqRTBTEMwiJSul1CRTMxNjsyQTM****-PUZCMz8yTDZLNkAwMDA6M0I0ulWgA****__wEAAP__a_e7YkkAAAA?auth_key=1700492701-6e33-0-c6d7e3a93dc2dbe3af42f6259ccd****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n F8DB7E25-6A35-161A-AA41-B7A658AF0635\\n rtmp://rtcpush****.rtmp.alivecdn.com/rtcdev****/H4sIAAAA****_6pWSlayUipJLS5R0lEqRTBTEMwiJSul1CRTMxNjsyQTM****-PUZCMz8yTDZLNkAwMDA6M0I0ulWgA****__wEAAP__a_e7YkkAAAA?auth_key=1700492701-6e33-0-c6d7e3a93dc2dbe3af42f6259ccd****\\n","errorExample":""}]', - 'title' => 'CreateRoomRealTimeStreamAddress', - 'description' => '### [](#)Usage notes'."\n" - ."\n" - .'To use the interactive streaming feature, you must use ApsaraVideo Real-time Communication (ARTC) SDK to join a channel and ingest streams over Real-Time Communication (RTC). In specific scenarios, you can ingest streams over Real-Time Messaging Protocol (RTMP) by using tools such as Open Broadcaster Software (OBS). Then, ApsaraVideo Live automatically converts the RTMP streams to RTC streams and distributes the RTC streams to viewers. You can call this operation to generate an ingest URL in the RTMP format. After you ingest RTMP streams, ApsaraVideo Live automatically converts the streams to RTC streams. Do not call this operation if you require only regular live streaming. To quickly ingest RTMP streams and start live streaming, see [Get started with ApsaraVideo Live](~~198676~~).'."\n" - ."\n" - .'## [](#)Procedure'."\n" - ."\n" - .'1. Call this operation to generate an ingest URL in the RTMP format.'."\n" - .'2. Ingest a stream by using the ingest URL. Other users in the channel can watch the stream.'."\n" - .'3. Stop ingesting the stream. Other users in the channel see that the user who ingested the stream leaves the channel.'."\n" - ."\n" - .'> '."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'StartRtcCloudTranscode', + 'description' => '## Endpoints'."\n" ."\n" - .'* You can repeat Steps 2 and 3 within the validity period of the ingest URL.'."\n" + .'The following endpoints are available for this operation.'."\n" ."\n" - .'* We recommend that you call the [DescribeChannelParticipants](~~610801~~) operation to query online users in the channel at regular intervals. This way, you can check whether the user who ingests the stream is still in the channel. If the user who ingests the stream is not in the channel, the stream may be interrupted. In this case, we recommend that you stop ingesting the stream and perform Step 2.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DeleteChannel' => [ - 'summary' => 'Deletes a channel.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'http', - 'https', + .'| Region | Region ID | Public endpoint |'."\n" + .'| --------- | -------------- | -------------------------------- |'."\n" + .'| Singapore | ap-southeast-1 | live.ap-southeast-1.aliyuncs.com |', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], + 'ramActions' => [], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\"\\n}","type":"json"}]', + ], + 'StopCaster' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', - 'abilityTreeCode' => '169448', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID. You can specify only one application ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'eo85****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ChannelId', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The channel ID. You can specify only one channel ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testid', - ], + 'schema' => ['description' => 'The ID of the production studio. Make sure that the specified CasterId is correct.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, obtain the ID from the CasterId parameter in the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, go to **ApsaraVideo Live console** > **Production Studio** > **Cloud Production Studio** to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => '400', - 'errorMessage' => 'InvalidInput', - ], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], ], [ - [ - 'errorCode' => '401', - 'errorMessage' => 'InvalidAuth', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], 404 => [ - [ - 'errorCode' => '404', - 'errorMessage' => 'AppOrChannelNotExists', - ], - ], - 500 => [ - [ - 'errorCode' => '500', - 'errorMessage' => 'ServerError, Check App And Channel Exists,Retry', - ], + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\n","errorExample":""}]', - 'title' => 'DeleteChannel', - 'description' => '## [](#qps-)QPS limit'."\n" + 'title' => 'StopCaster', + 'summary' => 'Stops a production studio. This stops the PVW (preview scene) and PGM (program output scene) scenes.', + 'description' => 'You must first call the [CreateCaster](~~2848009~~) operation to create a production studio. You can then call this operation to stop the production studio, which stops the Preview (PVW) and Program (PGM) scenes.'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ListRTCLiveRooms' => [ - 'summary' => '获取在线频道列表', - 'path' => '', - 'methods' => [ - 'post', + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. API calls that exceed this limit are throttled. This may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopCaster'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'StopCasterScene' => [ + 'summary' => 'Stops a specified preview (PVW) scene.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - 'autoTest' => false, - 'notSupportAutoTestReason' => '需要前置客户端入会等操作', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'title' => '应用AppID', - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'a494caec-***-695ef345db77', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'title' => '分页大小,取值【10,100】,默认50', - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '10', - 'example' => '50', - 'default' => '50', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you created the production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value that is returned in the response.'."\n" + ."\n" + .'- If you created the production studio in the ApsaraVideo Live console, go to the **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the production studio ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], ], [ - 'name' => 'PageNo', + 'name' => 'SceneId', 'in' => 'query', - 'schema' => [ - 'title' => '当前分页,从1开始', - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'minimum' => '1', - 'example' => '1', - 'default' => '1', - ], + 'schema' => ['description' => 'The ID of the scene.'."\n" + ."\n" + .'This operation is available only for preview (PVW) scenes. For more information about scene types, see [Query production studio scenes](~~2848102~~).', 'type' => 'string', 'required' => true, 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'Id of the request', - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', - ], - 'Total' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'Rooms' => [ - 'title' => '活跃房间列表', - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'room1', - ], - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidSceneId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is idle, please check and try again.'], ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + [ + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'StopCasterScene', + 'description' => 'Call this operation to stop a specified preview (PVW) scene.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'This operation is limited to 10 queries per second (QPS) per user. Exceeding this limit results in API call throttling, which may affect your business. We recommend that you call this operation at a reasonable frequency.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopCasterScene'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopCasterScene', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\",\\n \\"Total\\": 2,\\n \\"Rooms\\": [\\n \\"room1\\"\\n ]\\n}","type":"json"}]', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","type":"json"}]', ], - 'StartLiveMPUTask' => [ - 'summary' => 'Creates a mixed-stream relay task.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'StopEdgeTranscodeJob' => [ + 'summary' => 'Stops an edge transcoding task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', - 'chargeType' => 'paid', - 'abilityTreeCode' => '178410', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID. You can specify only one application ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ChannelId', + 'name' => 'ClusterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The channel ID. You can specify only one channel ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourChannelId', - ], + 'schema' => ['description' => 'The ID of the data center.', 'type' => 'string', 'required' => true, 'example' => '******3b-4d18-395c-8106-ff21a6******', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'JobId', 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID. You can specify only one task ID. The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). The ID must be unique.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourTaskId', - ], + 'schema' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'required' => true, 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], ], - [ - 'name' => 'MixMode', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The stream mixing mode. Valid values:'."\n" - ."\n" - .'* **0**: the single-stream relay mode. In this mode, the service only relays the original single stream, but does not transcode mixed streams. You do not need to set parameters for mixed-stream transcoding.'."\n" - .'* **1** (default): the mixed-stream relay mode.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '0', + 'type' => 'object', + 'properties' => [ + 'JobId' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], + ], [ - 'name' => 'StreamURL', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest URL. You can specify only one ingest URL in the Real-Time Messaging Protocol (RTMP) format. The URL can be up to 2,048 characters in length. For information about the generation rules of ingest URLs, see [Ingest and streaming URLs](~~199339~~).'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If the ingest URL is under a domain name for which hotlink protection is enabled, you must include an access token in the URL.'."\n" - .'* You cannot use the same ingest URL in different tasks.'."\n" - .'* You cannot use the same ingest URL within 10 seconds after a task is stopped.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://example.com/live/stream', - ], + ['errorCode' => 'JobNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Task does not exist, please check and try again.'], + ], + ], + 'title' => 'StopEdgeTranscodeJob', + 'description' => '- This operation stops an edge transcoding job.'."\n" + ."\n" + .'- To call this operation, you must have permissions to access the edge transcoding service, and the transcoding job must be in the running state.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 6,000 calls per minute for each account. Calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopEdgeTranscodeJob'], ], + ], + 'ramActions' => [ [ - 'name' => 'MultiStreamURL', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The multiple ingest URLs to relay. This parameter allows you to specify multiple ingest URLs.'."\n" - ."\n" - .'> The StreamURL and MultiStreamURL parameters are mutually exclusive. You must specify one of the two parameters.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'URL' => [ - 'description' => 'The ingest URL. Only the RTMP format is supported. The URL can be up to 2,048 characters in length. For information about the generation rules of ingest URLs, see [Ingest and streaming URLs](~~199339~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://example.com/live/stream****', - ], - 'IsAliCdn' => [ - 'description' => 'Specifies whether to perform stream relay by using Alibaba Cloud CDN. Valid values:'."\n" - ."\n" - .'* false: performs stream relay by using a CDN service that is not Alibaba Cloud CDN.'."\n" - .'* true: performs stream relay by using Alibaba Cloud CDN.'."\n" - ."\n" - .'> The default value of this parameter is false.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - ], - 'required' => false, - 'description' => '', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:StopEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], - 'required' => false, ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'StopLiveDomain' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Region', - 'in' => 'query', - 'schema' => [ - 'description' => 'The region in which the streams are mixed. Valid values:'."\n" - ."\n" - .'* **CN-Shanghai**'."\n" - .'* **AP-Singapore** (default)'."\n" - .'* **EMAA-Saudi**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'CN-Shanghai', - ], + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '107251', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'MaxIdleTime', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The timeout period of an idle connection. Unit: seconds. Valid values: \\[10,86400].'."\n" - ."\n" - .'> If the task is idle for a period of time longer than the duration specified by the MaxIdleTime parameter, the task is automatically stopped. If the parameter is not specified, the task is stopped after the channel is closed.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '10', - ], + 'schema' => ['description' => 'The ingest domain or streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], - [ - 'name' => 'SingleSubParams', - 'in' => 'query', - 'style' => 'json', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The single-stream relay parameters. These parameters are required if you set MixMode to 0. Leave these parameters empty in the mixed-stream relay mode.'."\n", 'type' => 'object', 'properties' => [ - 'SourceType' => [ - 'description' => 'The type of the video source. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* **camera** (default)'."\n" - .'* **shareScreen**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'camera', - ], - 'StreamType' => [ - 'description' => 'The type of the stream that you want to relay. Valid values:'."\n" - ."\n" - .'* **0** (default): original stream'."\n" - .'* **1**: only the audio track'."\n" - .'* **2**: only the video track'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'UserId' => [ - 'description' => 'The user ID. In the single-stream relay mode, you can relay only one stream in a request.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourSubUserId', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '324AEFFF-308C-4DA7-8CD3-01B277B98F28', 'title' => ''], ], - 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'StopLiveDomain', + 'summary' => 'Disables a live streaming domain. This operation changes the DomainStatus to offline.', + 'description' => 'After a live streaming domain is disabled, its information is retained. The system automatically performs an origin fetch for requests to the domain.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-09-29T06:29:45.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopLiveDomain'], + ], + ], + 'ramActions' => [ [ - 'name' => 'TranscodeParams', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The mixed-stream relay parameters. These parameters are required if you set MixMode to 1. Leave these parameters empty if you use the single-stream relay mode.'."\n", - 'type' => 'object', - 'properties' => [ - 'Background' => [ - 'description' => 'The global background image.'."\n", - 'type' => 'object', - 'properties' => [ - 'RenderMode' => [ - 'description' => 'The display mode of the global background image. Valid values:'."\n" - ."\n" - .'* **0**: scales the background image proportionally to fit the view, with black bars displayed.'."\n" - .'* **1** (default): crops the background image to fit the view.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], - 'URL' => [ - 'description' => 'The URL of the global background image. The URL can be up to 2,048 characters in length.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourImageUrl', - ], - ], - 'required' => false, - ], - 'EncodeParams' => [ - 'description' => 'The encoding parameters for the output stream.'."\n", - 'type' => 'object', - 'properties' => [ - 'AudioOnly' => [ - 'description' => 'Specifies whether the output stream is an audio-only stream. Valid values:'."\n" - ."\n" - .'* **true**: The output stream is an audio-only stream. If you set this parameter to true, you need to configure only audio-related parameters under EncodeParams.'."\n" - .'* **false** (default): The output stream is not an audio-only stream. If you set this parameter to false, you need to configure all parameters under EncodeParams, except the VideoCodec and EnhancedParam parameters.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'false', - ], - 'AudioBitrate' => [ - 'description' => 'The bitrate of the audio. Valid values: \\[8,500]. Unit: Kbit/s.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '128', - ], - 'AudioChannels' => [ - 'description' => 'The number of sound channels. Valid values: 1 and 2.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2', - ], - 'AudioSampleRate' => [ - 'description' => 'The audio sampling rate. Valid values: 8000, 16000, 32000, 44100, and 48000. Unit: Hz.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '44100', - ], - 'VideoCodec' => [ - 'description' => 'The video codec. Valid values:'."\n" - ."\n" - .'* H.264 (default)'."\n" - .'* H.265'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'H.264', - ], - 'VideoBitrate' => [ - 'description' => 'The bitrate of the video. Valid values: \\[1,10000]. Unit: Kbit/s.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '3500', - ], - 'VideoFramerate' => [ - 'description' => 'The frame rate of the video. Valid values: \\[1,60]. Unit: frames per second (FPS).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '25', - ], - 'VideoGop' => [ - 'description' => 'The group of pictures (GOP) size of the video. Valid values: \\[1,60].'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '20', - ], - 'VideoHeight' => [ - 'description' => 'The height of the video. Valid values: \\[0,1920]. Unit: pixels.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1000', - ], - 'VideoWidth' => [ - 'description' => 'The width of the video. Valid values: \\[0,1920]. Unit: pixels.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1920', - ], - 'EnhancedParam' => [ - 'description' => 'The parameter used for encoding enhancement, which is a JSON string. The parameter includes the optional profile and preset fields.'."\n" - ."\n" - .'* profile: the encoding level. If the video codec is H.264, the valid values of this field are baseline, main, and high. If the video codec is H.265, the valid value of this field is main.'."\n" - .'* preset: adjusts the trade-off between encoding speed and video quality. The valid values of this field are ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, and placebo. Each value specifies a level of trade-off between encoding speed and video quality. For example, the ultrafast preset has the fastest encoding speed but the lowest video quality, while the placebo preset sacrifices the encoding speed for the best video quality.'."\n" - ."\n" - .'> A value of superfast for the preset field is suitable for real-time communication scenarios. We recommend that you not set the field if you are not a professional encoding engineer.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"profile": "high", "preset": "veryfast"}', - ], - ], - 'required' => false, - ], - 'Layout' => [ - 'description' => 'The video layout information.'."\n" - ."\n" - .'> If video transcoding is required, you must specify the video layout information, including the x-coordinate and y-coordinate, the width and height, and the layer. For audio-only transcoding, leave the video layout information empty.'."\n", - 'type' => 'object', - 'properties' => [ - 'UserPanes' => [ - 'description' => 'The information about the panes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the pane.'."\n", - 'type' => 'object', - 'properties' => [ - 'UserInfo' => [ - 'description' => 'The information about the user whose stream is played in the pane. If you leave this parameter empty, the system automatically sets this parameter based on the order in which streamers join the channel.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If you specify the information about a user by using this parameter, the information about the user must also be specified by using the TranscodeParams.UserInfos parameter.'."\n" - ."\n" - .'* This parameter is valid only when you set StreamType to 0 or 2.'."\n", - 'type' => 'object', - 'properties' => [ - 'SourceType' => [ - 'description' => 'The type of the video source. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* **camera** (default)'."\n" - .'* **shareScreen**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'camera', - ], - 'ChannelId' => [ - 'description' => 'The ID of the channel where the user is. If the user is in the same channel, you can leave this parameter empty. We recommend that you specify this parameter when you perform stream mixing across channels.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourChannelId', - ], - 'UserId' => [ - 'description' => 'The user ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourSubUserId', - ], - ], - 'required' => false, - ], - 'Height' => [ - 'description' => 'The height of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0.2632', - ], - 'Width' => [ - 'description' => 'The width of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0.3564', - ], - 'X' => [ - 'description' => 'The x-coordinate of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0.2456', - ], - 'Y' => [ - 'description' => 'The y-coordinate of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0.3789', - ], - 'ZOrder' => [ - 'description' => 'The layer in which the pane resides. A value of 0 indicates the bottom layer. Each increment of the value by 1 indicates the next upper layer.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'BackgroundImageUrl' => [ - 'description' => 'The URL of the background image of the pane. The URL can be up to 2,048 characters in length. This image is displayed if the user turns off the camera or is not present in the channel.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourImageUrl', - ], - 'RenderMode' => [ - 'description' => 'The display mode of the pane. Valid values:'."\n" - ."\n" - .'* **0**: scales the video proportionally to fit the view, with black bars displayed.'."\n" - .'* **1 (default)**: crops the video to fit the view.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], - ], - 'required' => false, - ], - 'required' => false, - ], - ], - 'required' => false, - ], - 'UserInfos' => [ - 'description' => 'The information about the users whose streams are subscribed to. If you leave this parameter empty, streams from all users are mixed.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the user.'."\n", - 'type' => 'object', - 'properties' => [ - 'SourceType' => [ - 'description' => 'The type of the video source that is subscribed to. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* **camera** (default)'."\n" - .'* **shareScreen**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'camera', - ], - 'StreamType' => [ - 'description' => 'The type of the relayed stream that is subscribed to. Valid values:'."\n" - ."\n" - .'* **0** (default): original stream'."\n" - .'* **1**: only the audio track'."\n" - .'* **2**: only the video track'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'ChannelId' => [ - 'description' => 'The ID of the channel where the subscribed user is. If the user is in the same channel, you can leave this parameter empty. We recommend that you specify this parameter when you perform stream mixing across channels.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourChannelId', - ], - 'UserId' => [ - 'description' => 'The ID of the subscribed user.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourSubUserId', - ], - ], - 'required' => false, - ], - 'required' => false, - ], + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopLiveDomain', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], - 'required' => false, ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"324AEFFF-308C-4DA7-8CD3-01B277B98F28\\"\\n}","type":"json"}]', + ], + 'StopLiveMPUTask' => [ + 'summary' => 'Stops a mixed-stream relay task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'SeiParams', + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '178700', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + ], + 'parameters' => [ + [ + 'name' => 'AppId', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The supplemental enhancement information (SEI) parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'LayoutVolume' => [ - 'description' => 'The layout and volume SEI. If you leave this parameter empty, the default layout and volume SEI is used.'."\n", - 'type' => 'object', - 'properties' => [ - 'FollowIdr' => [ - 'description' => 'Specifies whether to include the SEI in an Instantaneous Decoder Refresh (IDR) frame. Valid values:'."\n" - ."\n" - .'* **0**: does not include the SEI.'."\n" - .'* **1**: includes the SEI.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'Interval' => [ - 'description' => 'The interval at which the SEI is sent. Valid values: \\[1000,5000]. Unit: milliseconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1000', - ], - ], - 'required' => false, - ], - 'PassThrough' => [ - 'description' => 'Specifies whether to pass through the SEI.'."\n", - 'type' => 'object', - 'properties' => [ - 'FollowIdr' => [ - 'description' => 'Specifies whether to include the SEI in an IDR frame. Valid values:'."\n" - ."\n" - .'* **0**: does not include the SEI.'."\n" - .'* **1**: includes the SEI.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'Interval' => [ - 'description' => 'The interval at which the SEI is sent. Valid values: \\[1000,5000]. Unit: milliseconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1000', - ], - 'PayloadContent' => [ - 'description' => 'The payload content of the SEI.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourPayloadContent', - ], - 'PayloadContentKey' => [ - 'description' => 'The key of the payload content of the SEI. If you do not specify this parameter, the default value udd is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourPayloadContentKey', - ], - ], - 'required' => false, - ], - 'PayloadType' => [ - 'description' => 'The custom payload_type of the SEI. Valid values: 100 to 254. If you do not specify this parameter, the default value 5 is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '100', - ], - ], - 'required' => false, - ], + 'schema' => ['description' => 'The application ID. You can specify only one application ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], + ], + [ + 'name' => 'TaskId', + 'in' => 'query', + 'schema' => ['description' => 'The task ID. You can specify only one task ID. The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). The ID must be unique.', 'type' => 'string', 'required' => true, 'example' => 'yourTaskId', 'title' => ''], ], ], 'responses' => [ @@ -62748,128 +52216,62 @@ 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '0F72851F-5DC1-1979-9B2C-450040316C3E', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '0F72851F-5DC1-1979-9B2C-450040316C3E', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0F72851F-5DC1-1979-9B2C-450040316C3E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0F72851F-5DC1-1979-9B2C-450040316C3E\\n","errorExample":""}]', - 'title' => 'StartLiveMPUTask', - 'description' => 'By default, you can create up to 200 single-stream relay tasks and up to 40 mixed-stream relay tasks for an application. To increase the quota, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket).'."\n" - ."\n" - .'### [](#)Lifecycle of a stream relay task'."\n" - ."\n" - .'**Start**'."\n" - ."\n" - .'* Call the StartLiveMPUTask operation to create a task.'."\n" - ."\n" - .' * If no user joins the channel, an error indicating that the channel does not exist is returned.'."\n" - .' * Stream relay is not performed if no stream is ingested. In this case, no relayed stream is available for playback.'."\n" - .' * If the task is in the mixed-stream relay mode, make sure that at least one user is ingesting a stream, which can be relayed for playback. A black screen is displayed in the pane of a user who is not ingesting a stream.'."\n" - ."\n" - .'* We recommend that you record the task status, task mode, and task parameters on your business server.'."\n" - ."\n" - .' * Task status: started or stopped.'."\n" - .' * Task mode: single-stream relay or mixed-stream relay.'."\n" - .' * Task parameters: the latest input parameters. For example, after your call of the UpdateLiveMPUTask operation is successful, record the task parameters, which are the latest.'."\n" - ."\n" - .'* In co-streaming or battle scenarios, the task is in the mixed-stream relay mode. If the streamer leaves the channel due to exceptions and re-joins the channel, you can directly call the StartLiveMPUTask operation on your business server to start stream relay based on the recorded task parameters.'."\n" - ."\n" - .' * If the task has not been automatically cleared by the system, the task is directly started.'."\n" - .' * If the task has not been automatically cleared by the system, a message indicating that **the task already exists** is returned.'."\n" - ."\n" - .'**End**'."\n" + 'title' => 'StopLiveMPUTask', + 'description' => '- Make sure that a mixed-stream relay task is started before you call this operation. You can call the [StartLiveMPUTask](~~2848199~~) operation to start a mixed-stream relay task.'."\n" ."\n" - .'* After the streamer leaves the channel, you need to call the [StopLiveMPUTask](~~2362742~~) operation to stop the task.'."\n" - .'* If all users specified in the task have left the channel, but you do not call the StopLiveMPUTask operation, the system stops the task in 2 minutes.'."\n" + .'- If a mixed-stream relay task becomes abnormal, the task is automatically stopped 2 minutes after the last person leaves the channel. In this case, you do not need to call the StopLiveMPUTask operation. If you need to resume a mixed-stream relay task that is stopped, call the [StartLiveMPUTask](~~2848199~~) operation again.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 500 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '### Layout and volume SEI'."\n" - ."\n" - .'|Parameter|Description|'."\n" - .'|---|---|'."\n" - .'|canvas|The information about the canvas. The following fields are included:\\- w: the width of the canvas. Unit: pixels.\\- h: the height of the canvas. Unit: pixels.\\- bgnd: the background color of the canvas, which is an RGB value in the format of a hexadecimal integer.|'."\n" - .'|stream|The information about the video stream. The following fields are included:\\- uid: the user ID of the streamer.\\- paneid: the sequence number of the pane on the canvas. Valid values: \\[0,8\\].\\- zorder: the layer of the pane. Valid values: \\[0,99\\].\\- x: the x-coordinate of the pane on the canvas. The value is normalized.\\- y: the y-coordinate of the pane on the canvas. The value is normalized.\\- w: the width of the pane. The value is normalized.\\- h: the height of the pane. The value is normalized.\\- type: the source of the video stream in the pane. Valid values: 0 (camera) and 1 (screen sharing).\\- status: the status of the video stream in the pane. Valid values: 0 (not pulled) and 1 (pulled).\\- muted: the mute status of the streamer. Valid values: 0 (not muted) and 1 (muted). For example, when two streamers (Streamer A and Streamer B) have a battle, if Streamer A mutes Streamer B, the muted field displayed for Streamer B is 1.\\- vol: the volume of the streamer. Valid values: \\[0,255\\]. Unit: dB.\\- vad: detects human voice. Valid values: \\[0,150\\]. 150 indicates that human voice is detected and a value other than 150 indicates the period of time during which the volume of human voice decreases to 0.|'."\n" - .'|ts|The operating system timestamp when the SEI is generated. Unit: milliseconds.|'."\n" - .'|ver|The version of the SEI. For example, the current version is 1.0.0.20220915.|'."\n" - .'|udd|The custom scenario-based event that is sent by using the PassThrough parameter. The content of the event is specified by the PayloadContent parameter.|'."\n" - ."\n" - .'**Note** The streaming data of the relayed stream contains SEI, which can be used to convey custom information. The SEI can be extracted from the video frame data during decoding. For information about the SEI format, see the description about the PassThrough parameter in the Request parameters section.'."\n" - ."\n" - .'**The following example shows a co-streaming scenario:**'."\n" - ."\n" - .'If a single streamer is streaming, the SEI message that viewers receive contains information about only one participant. If co-streaming or a battle occurs, the SEI message that viewers receive contains information about multiple participants. For example, when the streamer whose user ID is 111 is streaming, an SEI frame in the following format is sent to the viewer side: '."\n" - .'`{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"111","paneid":-1,"zorder":0,"x":0,"y":0,"w":0,"h":0,"type":0,"status":1,"muted":0,"vol":0,"vad":0}],"ver":"1.0.0.20220915","ts":1697696105170}` When the streamer whose user ID is 111 is co-streaming with a co-streamer whose user ID is 222, an SEI frame in the following format is sent to the viewer side: '."\n" - .'`{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"111","paneid":0,"zorder":1,"x":0,"y":0.25,"w":0.5,"h":0.5,"type":0,"status":1,"muted":0,"vol":1,"vad":119},{"uid":"222","paneid":1,"zorder":1,"x":0.5018382,"y":0.25,"w":0.5,"h":0.5,"type":0,"status":1,"muted":0,"vol":60,"vad":123}],"ver":"1.0.0.20220915","ts":1697696106230}` Viewers can determine whether a streaming layout changes based on the number of stream arrays. If only one stream array exists, a single streamer is streaming. If more than one stream array exists, co-streaming or a battle is in progress. The layout information of the participants can indicate the position of each participant in the mixed stream.'."\n" - ."\n" - .'### SEI pass-through'."\n" - ."\n" - .'* To configure custom SEI, call the StartLiveMPUTask operation to start a mixed-stream relay task and specify the PayloadContent parameter under the PassThrough parameter, or call the UpdateLiveMPUTask operation to update a mixed-stream relay task and specify the PayloadContent parameter under the PassThrough parameter.'."\n" - .'* Custom SEI can be sent periodically. You can use the Interval parameter under the PassThrough parameter to specify the interval in milliseconds.'."\n" - .'* Custom SEI can also be sent with keyframes by specifying the FollowIdr parameter under the PassThrough parameter.'."\n" - .' * You can configure settings to periodically send the custom SEI and send the custom SEI with keyframes at the same time. For example, you can set the Interval parameter to 1000 and the FollowIdr parameter to 1 to send the custom SEI every 1,000 milliseconds and include the custom SEI in keyframes.'."\n" - .' * If you do not specify the Interval parameter and the FollowIdr parameter, the custom SEI is sent only once when you call the operation.'."\n" - ."\n" - .'For example, the streamer whose user ID is 111 ingests a stream and calls the UpdateLiveMPUTask operation to specify periodic SEI. In the operation, the Interval parameter is set to 1000, the FollowIdr parameter is set to 0, and the PayloadContent parameter is set to "hello world". In this case, the custom SEI is sent every 1,000 milliseconds. The SEI frame received on the viewer side is in the following format: '."\n" - .'`{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"111","paneid":-1,"zorder":0,"x":0,"y":0,"w":0,"h":0,"type":0,"status":1,"muted":0,"vol":0,"vad":0}],"ver":"1.0.0.20220915","ts":1697696109876,"udd":"hello world"}`'."\n" - ."\n" - .'### Mixed-stream relay across channels'."\n" - ."\n" - .'If you want to mix streams from multiple streamers across multiple channels and relay the mixed stream to ApsaraVideo Live, you must specify the user ID and channel ID of the streamer who initiates the cross-channel call and the user IDs of other streamers as input parameters to create a mixed-stream relay task. Example: In a battle scenario, Streamer A in Channel A initiates a cross-channel battle with Streamer B in Channel B by using the client interface and relays the mixed stream to viewers in Channel A. In this example, the following parameters are specified:'."\n" - ."\n" - .'* ChannelID: channelA'."\n" - .'* UserId under UserInfos: userA and userB'."\n" - ."\n" - .'**Note** To create a cross-channel mixed-stream relay task, make sure that a cross-channel call has been initiated by using the SDK on the client side. If users in different channels are not making a call with each other, you cannot create a cross-channel mixed-stream relay task. For more information about how to initiate a cross-channel call, see [Cross-channel subscription](~~2642837~~).', - ], - 'UpdateLiveMPUTask' => [ - 'summary' => 'Updates a mixed-stream relay task.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 500 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'changeSet' => [ + ['createdAt' => '2024-07-04T07:02:34.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopLiveMPUTask'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:StopLiveMPUTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0F72851F-5DC1-1979-9B2C-450040316C3E\\"\\n}","type":"json"}]', + ], + 'StopLivePullToPush' => [ + 'summary' => 'Stops a stream pulling task.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -62881,538 +52283,432 @@ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '178411', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeCode' => '257294', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID. You can specify only one application ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'default' => 'cn-shanghai', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ChannelId', + 'name' => 'Region', 'in' => 'query', 'schema' => [ - 'description' => 'The channel ID. You can specify only one channel ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", + 'description' => 'The live center to query. Valid values:'."\n" + .'- ap-southeast-1 (Singapore)'."\n" + .'- ap-southeast-5 (Indonesia)'."\n" + .'- cn-beijing (Beijing)'."\n" + .'- cn-shanghai (Shanghai).', + 'enumValueTitles' => ['cn-shenzhen' => 'Shenzhen.', 'cn-qingdao' => 'Qingdao.', 'preregion' => 'Pre-release.', 'cn-beijing' => 'Beijing.', 'cn-shanghai' => 'Shanghai.', 'ap-southeast-1' => 'Singapore.', 'eu-central-1' => 'Germany (Frankfurt).', 'ap-northeast-1' => 'Japan (Tokyo).', 'ap-southeast-5' => 'Indonesia.', 'me-central-1' => 'Saudi Arabia (Riyadh).'], 'type' => 'string', 'required' => true, - 'example' => 'yourChannelId', + 'enum' => ['ap-northeast-1', 'ap-southeast-1', 'ap-southeast-5', 'eu-central-1', 'me-central-1', 'cn-beijing', 'cn-shanghai', 'cn-shenzhen', 'cn-qingdao', 'preregion'], + 'example' => 'preregion', + 'title' => '', ], ], [ 'name' => 'TaskId', 'in' => 'query', 'schema' => [ - 'description' => 'The task ID. You can specify only one task ID. The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). The ID must be unique.'."\n", + 'description' => 'The task ID.', 'type' => 'string', 'required' => true, - 'example' => 'yourTaskId', + 'enum' => [], + 'example' => '3bb44350-0c34-49c7-8c5e-cba5e6c0****', + 'title' => '', ], ], - [ - 'name' => 'MixMode', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The stream mixing mode. Valid values:'."\n" - ."\n" - .'* **0**: the single-stream relay mode. In this mode, the service only relays the original single stream, but does not transcode mixed streams. You do not need to set parameters for mixed-stream transcoding.'."\n" - .'* **1** (default): the mixed-stream relay mode.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'a05e6b15-15af-405b-a4a2-0152245d****'], + 'TaskId' => ['description' => 'The node ID returned when you create task.', 'type' => 'string', 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', 'title' => ''], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'LiveServiceNotFound', 'errorMessage' => 'Your account does not open Live service yet', 'description' => 'Your account has not yet activated ApsaraVideo Live.'], + ['errorCode' => 'CodeInvalidAliUid', 'errorMessage' => 'This aliuid does not have a live domain name.', 'description' => 'This aluid does not have a live domain name.'], + ['errorCode' => 'InvalidParam.CodeIllegalDuration', 'errorMessage' => '%s.', 'description' => 'The value of start time should be less than the value of end time .'], + ['errorCode' => 'CodeTaskNotExist', 'errorMessage' => 'Task does not exist.', 'description' => 'The task does not exist.'], + ['errorCode' => 'CodeTaskHasStopped', 'errorMessage' => 'The task has been stopped.', 'description' => 'The task has been stopped.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"a05e6b15-15af-405b-a4a2-0152245d****\\",\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\"\\n}","type":"json"}]', + 'title' => 'Stop a stream pulling task', + 'description' => '- Call this operation to stop a stream pulling task.'."\n" + .'- You can forcibly stop a running task (including tasks in the abnormal retry state). This operation does not take effect on tasks that are not running.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [ + ['createdAt' => '2025-04-27T08:03:58.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopLivePullToPush'], + ], + ], + 'ramActions' => [ [ - 'name' => 'StreamURL', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest URL. You can specify only one ingest URL in the Real-Time Messaging Protocol (RTMP) format. The URL can be up to 2,048 characters in length. For information about the generation rules of ingest URLs, see [Ingest and streaming URLs](~~199339~~).'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If the ingest URL is under a domain name for which hotlink protection is enabled, you must include an access token in the URL.'."\n" - .'* You cannot use the same ingest URL in different tasks.'."\n" - .'* You cannot use the same ingest URL within 10 seconds after a task is stopped.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://example.com/live/stream', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + ], + 'StopLiveStreamMonitor' => [ + 'summary' => 'Stops a monitoring session.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'MultiStreamURL', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The multiple ingest URLs to relay. This parameter allows you to specify multiple ingest URLs.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'URL' => [ - 'description' => 'The ingest URL. Only the RTMP format is supported. The URL can be up to 2,048 characters in length. For information about the generation rules of ingest URLs, see [Ingest and streaming URLs](~~199339~~).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://example.com/live/stream****', - ], - 'IsAliCdn' => [ - 'description' => 'Specifies whether to perform stream relay by using Alibaba Cloud CDN. Valid values:'."\n" - ."\n" - .'* false: performs stream relay by using a CDN service that is not Alibaba Cloud CDN.'."\n" - .'* true: performs stream relay by using Alibaba Cloud CDN.'."\n" - ."\n" - .'> The default value of this parameter is false.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', - ], - ], - 'required' => false, - 'description' => '', - ], - 'required' => false, - ], + 'AK' => [], ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveSM955S'], + ], + 'parameters' => [ [ - 'name' => 'SingleSubParams', + 'name' => 'RegionId', 'in' => 'query', - 'style' => 'json', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'MonitorId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the monitoring session.'."\n" + ."\n" + .'> Check the response of the [CreateLiveStreamMonitor](~~2848129~~) operation to obtain the **MonitorId**.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The single-stream relay parameters. These parameters are required if you set MixMode to 0.'."\n", 'type' => 'object', 'properties' => [ - 'SourceType' => [ - 'description' => 'The type of the video source. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* **camera** (default)'."\n" - .'* **shareScreen**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'camera', - ], - 'StreamType' => [ - 'description' => 'The type of the stream that you want to relay. Valid values:'."\n" - ."\n" - .'* **0** (default): original stream'."\n" - .'* **1**: only the audio track'."\n" - .'* **2**: only the video track'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'UserId' => [ - 'description' => 'The user ID. In the single-stream relay mode, you can relay only one stream in a request.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourSubUserId', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', 'title' => ''], ], - 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidMonitorId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter MonitorId is invalid, please check and try again.'], + ['errorCode' => 'StreamMonitorAlreadyStop', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The monitoring room has been stopped, please check and try again.'], + ], [ - 'name' => 'TranscodeParams', + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'UserQuotaExceed', 'errorMessage' => 'Quota exceeded: %s.', 'description' => 'Quota exceeded: %s.'], + ], + [ + ['errorCode' => 'StreamMonitorNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The monitoring room does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'StopLiveStreamMonitor', + 'description' => 'You can obtain a **MonitorId** by calling the [CreateLiveStreamMonitor](~~2848129~~) operation. After a monitoring session starts, call this operation to stop the session.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'This operation is limited to 10 queries per second (QPS) per user. Calls that exceed this limit are throttled, which may affect your business. Plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopLiveStreamMonitor'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopLiveStreamMonitor', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","type":"json"}]', + ], + 'StopPlaylist' => [ + 'summary' => 'Stops playing an episode list.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'style' => 'json', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'ProgramId', + 'in' => 'query', + 'schema' => ['description' => 'The playlist ID. If you add items to a playlist by calling the [AddPlaylistItems](~~2848078~~) operation, check the value of the ProgramId parameter that is returned.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The mixed-stream relay parameters. These parameters are required if you set MixMode to 1.'."\n", 'type' => 'object', 'properties' => [ - 'Background' => [ - 'description' => 'The global background image.'."\n", - 'type' => 'object', - 'properties' => [ - 'RenderMode' => [ - 'description' => 'The display mode of the global background image.'."\n" - ."\n" - .'* **0**: scales the background image proportionally to fit the view, with black bars displayed.'."\n" - .'* **1** (default): crops the background image to fit the view.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], - 'URL' => [ - 'description' => 'The URL of the global background image.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourImageUrl', - ], - ], - 'required' => false, - ], - 'EncodeParams' => [ - 'description' => 'The encoding parameters for the output stream.'."\n", - 'type' => 'object', - 'properties' => [ - 'AudioOnly' => [ - 'description' => 'Specifies whether the output stream is an audio-only stream. Valid values:'."\n" - ."\n" - .'* **true**: The output stream is an audio-only stream. If you set this parameter to true, you need to configure only audio-related parameters under EncodeParams.'."\n" - .'* **false** (default): The output stream is not an audio-only stream. If you set this parameter to false, you need to configure all parameters under EncodeParams, except the VideoCodec and EnhancedParam parameters.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'false', - ], - 'AudioBitrate' => [ - 'description' => 'The bitrate of the audio. Valid values: \\[8,500]. Unit: Kbit/s.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '128', - ], - 'AudioChannels' => [ - 'description' => 'The number of sound channels. Valid values: 1 and 2.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2', - ], - 'AudioSampleRate' => [ - 'description' => 'The audio sampling rate. Valid values: 8000, 16000, 32000, 44100, and 48000. Unit: Hz.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '44100', - ], - 'VideoCodec' => [ - 'description' => 'The video codec. Valid values:'."\n" - ."\n" - .'* H.264 (default)'."\n" - .'* H.265'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'H.264', - ], - 'VideoBitrate' => [ - 'description' => 'The bitrate of the video. Valid values: \\[1,10000]. Unit: Kbit/s.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '3500', - ], - 'VideoFramerate' => [ - 'description' => 'The frame rate of the video. Valid values: \\[1,60]. Unit: frames per second (FPS).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '25', - ], - 'VideoGop' => [ - 'description' => 'The group of pictures (GOP) size of the video. Valid values: \\[1,60].'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '20', - ], - 'VideoHeight' => [ - 'description' => 'The height of the video. Valid values: \\[0,1920]. Unit: pixels.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1000', - ], - 'VideoWidth' => [ - 'description' => 'The width of the video. Valid values: \\[0,1920]. Unit: pixels.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1920', - ], - 'EnhancedParam' => [ - 'description' => 'The parameter used for encoding enhancement, which is a JSON string. The parameter includes the optional profile and preset fields.'."\n" - ."\n" - .'* profile: the encoding level. If the video codec is H.264, the valid values of this field are baseline, main, and high. If the video codec is H.265, the valid value of this field is main.'."\n" - .'* preset: adjusts the trade-off between encoding speed and video quality. The valid values of this field are ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, and placebo. Each value specifies a level of trade-off between encoding speed and video quality. For example, the ultrafast preset has the fastest encoding speed but the lowest video quality, while the placebo preset sacrifices the encoding speed for the best video quality.'."\n" - ."\n" - .'> A value of superfast for the preset field is suitable for real-time communication scenarios. We recommend that you not set the field if you are not a professional encoding engineer.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '{"profile": "high", "preset": "veryfast"}', - ], - ], - 'required' => false, - ], - 'Layout' => [ - 'description' => 'The video layout information.'."\n" - ."\n" - .'> If video transcoding is required, you must specify the video layout information, including the x-coordinate and y-coordinate, the width and height, and the layer. For audio-only transcoding, leave the video layout information empty.'."\n", - 'type' => 'object', - 'properties' => [ - 'UserPanes' => [ - 'description' => 'The information about the panes.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the pane.'."\n", - 'type' => 'object', - 'properties' => [ - 'UserInfo' => [ - 'description' => 'The information about the user whose stream is played in the pane. If you leave this parameter empty, the system automatically sets this parameter based on the order in which streamers join the channel.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If you specify the information about a user by using this parameter, the information about the user must also be specified by using the TranscodeParams.UserInfos parameter.'."\n" - ."\n" - .'* This parameter is valid only when you set StreamType to 0 or 2.'."\n", - 'type' => 'object', - 'properties' => [ - 'SourceType' => [ - 'description' => 'The type of the video source. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* **camera** (default)'."\n" - .'* **shareScreen**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'camera', - ], - 'ChannelId' => [ - 'description' => 'The ID of the channel where the user is. If the user is in the same channel, you can leave this parameter empty. We recommend that you specify this parameter when you perform stream mixing across channels.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourChannelId', - ], - 'UserId' => [ - 'description' => 'The user ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourSubUserId', - ], - ], - 'required' => false, - ], - 'Height' => [ - 'description' => 'The height of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0.2632', - ], - 'Width' => [ - 'description' => 'The width of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0.3564', - ], - 'X' => [ - 'description' => 'The x-coordinate of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0.2456', - ], - 'Y' => [ - 'description' => 'The y-coordinate of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0.3789', - ], - 'ZOrder' => [ - 'description' => 'The layer in which the pane resides. A value of 0 indicates the bottom layer. Each increment of the value by 1 indicates the next upper layer.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'BackgroundImageUrl' => [ - 'description' => 'The URL of the background image of the pane. This image is displayed if the user turns off the camera or is not present in the channel.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourImageUrl', - ], - 'RenderMode' => [ - 'description' => 'The display mode of the pane. Valid values:'."\n" - ."\n" - .'* **0**: scales the video proportionally to fit the view, with black bars displayed.'."\n" - .'* **1 (default)**: crops the video to fit the view.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], - ], - 'required' => false, - ], - 'required' => false, - ], - ], - 'required' => false, - ], - 'UserInfos' => [ - 'description' => 'The information about the users whose streams are subscribed to. If you leave this parameter empty, streams from all users are mixed.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the user.'."\n", - 'type' => 'object', - 'properties' => [ - 'SourceType' => [ - 'description' => 'The type of the video source that is subscribed to. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* **camera** (default)'."\n" - .'* **shareScreen**'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'camera', - ], - 'StreamType' => [ - 'description' => 'The type of the relayed stream that is subscribed to. Valid values:'."\n" - ."\n" - .'* **0** (default): original stream'."\n" - .'* **1**: only the audio track'."\n" - .'* **2**: only the video track'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'ChannelId' => [ - 'description' => 'The ID of the channel where the subscribed user is. If the user is in the same channel, you can leave this parameter empty. We recommend that you specify this parameter when you perform stream mixing across channels.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourChannelId', - ], - 'UserId' => [ - 'description' => 'The ID of the subscribed user.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourSubUserId', - ], - ], - 'required' => false, - ], - 'required' => false, - ], + 'ProgramId' => ['description' => 'The playlist ID.', 'type' => 'string', 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b96****', 'title' => ''], ], - 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidProgramId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ProgramId is invalid, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'PlayListNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'PlayList does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'StopPlaylist', + 'description' => 'First, call the [AddPlaylistItems](~~2848078~~) operation to add items to a playlist. You can then call this operation to stop the playlist.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation based on your business needs.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopPlaylist'], + ], + ], + 'ramActions' => [ [ - 'name' => 'SeiParams', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopPlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"ProgramId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\",\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'StopRtcAsrTask' => [ + 'summary' => 'Stops a live subtitle task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '219794', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'style' => 'json', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'TaskId', + 'in' => 'query', + 'schema' => ['description' => 'The task ID.', 'type' => 'string', 'required' => true, 'example' => 'asr-d794cc89-a63e-4d08-8b44-242a6597****', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The supplemental enhancement information (SEI) parameters.'."\n", 'type' => 'object', 'properties' => [ - 'LayoutVolume' => [ - 'description' => 'The layout and volume SEI. If you leave this parameter empty, the default layout and volume SEI is used.'."\n", - 'type' => 'object', - 'properties' => [ - 'FollowIdr' => [ - 'description' => 'Specifies whether to include the SEI in an Instantaneous Decoder Refresh (IDR) frame. Valid values:'."\n" - ."\n" - .'* **0**: does not include the SEI.'."\n" - .'* **1**: includes the SEI.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'Interval' => [ - 'description' => 'The interval at which the SEI is sent. Valid values: \\[1000,5000]. Unit: milliseconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1000', - ], - ], - 'required' => false, - ], - 'PassThrough' => [ - 'description' => 'Specifies whether to pass through the SEI.'."\n", - 'type' => 'object', - 'properties' => [ - 'FollowIdr' => [ - 'description' => 'Specifies whether to include the SEI in an IDR frame. Valid values:'."\n" - ."\n" - .'* **0**: does not include the SEI.'."\n" - .'* **1**: includes the SEI.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0', - ], - 'Interval' => [ - 'description' => 'The interval at which the SEI is sent. Valid values: \\[1000,5000]. Unit: milliseconds.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1000', - ], - 'PayloadContent' => [ - 'description' => 'The payload content of the SEI.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourPayloadContent', - ], - 'PayloadContentKey' => [ - 'description' => 'The key of the payload content of the SEI. If you do not specify this parameter, the default value udd is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourPayloadContentKey', - ], - ], - 'required' => false, - ], + 'Description' => ['description' => 'The result of the call. The value is \\`success\\` if the call is successful. Otherwise, an error message is returned.', 'type' => 'string', 'example' => 'success', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '3D208CC1-27C9-51E9-82B8-A6682D466421', 'title' => ''], + 'RetCode' => ['description' => 'The status code. A value of \\`2000\\` indicates that the call was successful. Other values indicate that the call failed.', 'type' => 'integer', 'format' => 'int64', 'example' => '2000', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], + ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'StopRtcAsrTask', + 'description' => 'This operation is limited to 20 queries per second (QPS) for each account. If you exceed the limit, API calls are throttled, which may affect your business. We recommend that you call this operation at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopRtcAsrTask'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopRtcAsrTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], - 'required' => false, ], ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"success\\",\\n \\"RequestId\\": \\"3D208CC1-27C9-51E9-82B8-A6682D466421\\",\\n \\"RetCode\\": 2000\\n}","type":"json"}]', + ], + 'StopRtcCloudRecording' => [ + 'summary' => 'Stops an RTC cloud recording task.', + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '269331', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'TaskId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the task that is returned when you start an RTC cloud recording.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => '******73-8501-****-8ac1-72295a******'."\n"], + ], + ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => '', + 'title' => '', + 'description' => 'The response parameters.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '0F72851F-5DC1-1979-9B2C-450040316C3E', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '******58-5876-****-83CA-B56278******'], + 'TaskId' => ['description' => 'The task ID.', 'type' => 'string', 'title' => '', 'example' => '******73-8501-****-8ac1-72295a******'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'NotFound.Task', 'errorMessage' => '%s, please check the TaskId.', 'description' => 'The parameter TaskId does not exist.'], + ['errorCode' => 'InvalidParameter.TaskId', 'errorMessage' => '%s, please check the TaskId.', 'description' => 'The specified task must be in the running or recovering state.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', - ], + ['errorCode' => 'InvalidParameter.UserId', 'errorMessage' => '%s, please check the UserId.', 'description' => 'UserId is invalid, please check.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0F72851F-5DC1-1979-9B2C-450040316C3E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0F72851F-5DC1-1979-9B2C-450040316C3E\\n","errorExample":""}]', - 'title' => 'UpdateLiveMPUTask', - 'description' => 'Make sure that a mixed-stream relay task is created before you call this operation. You can call the [StartLiveMPUTask](~~2848199~~) operation to create a mixed-stream relay task.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'title' => 'StopRtcCloudRecording', + 'description' => '## QPS limit'."\n" ."\n" - .'You can call this operation up to 500 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'StopLiveMPUTask' => [ - 'summary' => 'Stops a mixed-stream relay task.', - 'methods' => [ - 'post', - 'get', + .'The queries per second (QPS) limit for a single user is 50 calls per second. If the number of calls exceeds the limit, throttling is triggered, which may affect your business. We recommend that you call this operation at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopRtcCloudRecording'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:StopRtcCloudRecording', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******58-5876-****-83CA-B56278******\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\"\\n}","type":"json"}]', + ], + 'StopRtcCloudTranscode' => [ + 'path' => '', + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -63421,169 +52717,136 @@ 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '178700', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + 'tenantRelevance' => 'tenant', ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID. You can specify only one application ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (_), and hyphens (-).', - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The application ID. The ID can be up to 64 characters long and can contain uppercase letters, lowercase letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => '********-7074-****-9ef5-85c19a4*****', 'title' => ''], ], [ 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID. You can specify only one task ID. The ID can be up to 55 characters in length and can contain letters, digits, underscores (_), and hyphens (-). The ID must be unique.', - 'type' => 'string', - 'required' => true, - 'example' => 'yourTaskId', - ], + 'schema' => ['description' => 'The ID of the cloud transcoding job. The ID can be up to 64 characters long and can contain uppercase letters, lowercase letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => '******73-8501-****-8ac1-72295a******', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '0F72851F-5DC1-1979-9B2C-450040316C3E', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'title' => '', 'example' => '******3B-0E1A-586A-AC29-742247******'], ], + 'title' => '', + 'description' => 'The response.', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameter%s', 'errorMessage' => '%s.', 'description' => ''], + ['errorCode' => 'MissingParameter%s', 'errorMessage' => '%s.', 'description' => ''], + ['errorCode' => 'TooManyRequests', 'errorMessage' => '%s.', 'description' => ''], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s.', 'description' => ''], + ], + [ + ['errorCode' => 'NotFound%s', 'errorMessage' => '%s.', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0F72851F-5DC1-1979-9B2C-450040316C3E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 0F72851F-5DC1-1979-9B2C-450040316C3E\\n","errorExample":""}]', - 'title' => 'StopLiveMPUTask', - 'description' => '* Make sure that a mixed-stream relay task is started before you call this operation. You can call the [StartLiveMPUTask](~~2848199~~) operation to start a mixed-stream relay task.'."\n" - .'* If a mixed-stream relay task becomes abnormal, the task is automatically stopped 2 minutes after the last person leaves the channel. In this case, you do not need to call the StopLiveMPUTask operation. If you need to resume a mixed-stream relay task that is stopped, call the [StartLiveMPUTask](~~2848199~~) operation again.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 500 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'ListRtcMPUTaskDetail' => [ - 'summary' => 'Queries the parameters of mixed-stream relay tasks.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'StopRtcCloudTranscode', + 'summary' => 'Stops a cloud transcoding job.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], + 'ramActions' => [], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'TagLiveResources' => [ + 'summary' => 'Adds labels to ApsaraVideo Live resources by calling TagLiveResources.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '226001', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeCode' => '107259', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application.'."\n" - ."\n" - .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'ResourceId', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The task ID.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n" - ."\n" - .'* If you specify TaskId, the parameters of the specified tasks are returned.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourTaskId', + 'description' => 'The resource ID. Set this parameter to a live streaming domain name.'."\n" + .'Valid values of N: **1 to 50**.', + 'type' => 'array', + 'items' => ['description' => 'The resource ID.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], + 'required' => true, + 'example' => 'example.com', + 'maxItems' => 51, + 'title' => '', ], ], [ - 'name' => 'PageSize', + 'name' => 'Tag', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The number of entries per page. Valid values: 1 to 100.'."\n" - ."\n" - .'> If you do not specify TaskId, you must specify PageSize and PageNo. Then, the parameters of all stream relay tasks for the specified application are returned in pages.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '10', + 'description' => 'The list of labels.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => ['description' => 'The label key. Valid values of N: **1 to 20**.', 'type' => 'string', 'required' => true, 'example' => 'env', 'title' => ''], + 'Value' => ['description' => 'The label value. Valid values of N: **1 to 20**.', 'type' => 'string', 'required' => false, 'example' => 'product', 'title' => ''], + ], + 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'required' => true, + 'maxItems' => 21, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'PageNo', + 'name' => 'ResourceType', 'in' => 'query', 'schema' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '20', + 'description' => 'The resource type. Set this parameter to **DOMAIN**.', + 'enumValueTitles' => ['DOMAIN' => 'domain name resource.', 'domain' => 'domain name resource.'], + 'type' => 'string', + 'required' => true, + 'enum' => ['DOMAIN', 'domain'], + 'example' => 'DOMAIN', + 'title' => '', ], ], ], @@ -63592,560 +52855,195 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'MPUTasks' => [ - 'description' => 'The parameters that you configured when you called the StartLiveMPUTask operation to create the tasks.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'AppId' => [ - 'description' => 'The ID of the application.'."\n", - 'type' => 'string', - 'example' => 'yourAppId', - ], - 'ChannelId' => [ - 'description' => 'The ID of the channel.'."\n", - 'type' => 'string', - 'example' => 'yourChannelId', - ], - 'TaskId' => [ - 'description' => 'The ID of the stream relay task.'."\n", - 'type' => 'string', - 'example' => 'yourTaskId', - ], - 'MixMode' => [ - 'description' => 'The stream mixing mode. Valid values:'."\n" - ."\n" - .'* 0: relays the original single stream without mixing streams. If the value of this parameter is 0, the TranscodeParams parameter is empty.'."\n" - .'* 1 (default): mixes multiple streams into a single stream and relays the mixed stream.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'StreamURL' => [ - 'description' => 'The ingest URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://example.com/live/stream****', - ], - 'MultiStreamURL' => [ - 'description' => 'The multiple ingest URLs relayed.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'URL' => [ - 'description' => 'The ingest URL.'."\n", - 'type' => 'string', - 'example' => 'rtmp://example.com/live/stream****', - ], - 'IsAliCdn' => [ - 'description' => 'Indicates whether stream relay is performed by using Alibaba Cloud CDN. Valid values:'."\n" - ."\n" - .'* false: Stream relay is performed by using a CDN service that is not Alibaba Cloud CDN.'."\n" - .'* true: Stream relay is performed by using Alibaba Cloud CDN.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - ], - 'description' => '', - ], - ], - 'Region' => [ - 'description' => 'The region in which the streams are mixed. Valid values:'."\n" - ."\n" - .'* **CN-shanghai**'."\n" - .'* **AP-Singapore (default)**'."\n" - .'* **EMAA-Saudi**'."\n", - 'type' => 'string', - 'example' => 'CN-Shanghai', - ], - 'MaxIdleTime' => [ - 'description' => 'The timeout period of an idle connection. Unit: seconds.'."\n" - ."\n" - .'> If the task is idle for a period of time longer than the duration specified by the MaxIdleTime parameter, the task is automatically stopped. If the parameter is not specified, the task is stopped after the channel is closed.'."\n", - 'type' => 'string', - 'example' => '10', - ], - 'SingleSubParams' => [ - 'description' => 'The parameters of the single-stream relay task.'."\n", - 'type' => 'object', - 'properties' => [ - 'SourceType' => [ - 'description' => 'The source of the video. This parameter is valid only if you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* camera (default): captures the video by using a camera.'."\n" - .'* shareScreen: captures the content displayed on a screen.'."\n", - 'type' => 'string', - 'example' => 'camera', - ], - 'StreamType' => [ - 'description' => 'The type of the stream that is relayed. Valid values:'."\n" - ."\n" - .'* 0 (default): the original stream.'."\n" - .'* 1: the audio-only stream.'."\n" - .'* 2: the video-only stream.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'UserId' => [ - 'description' => 'The ID of the user whose stream is relayed. In single-stream relay mode, you can relay only one stream in a request.'."\n", - 'type' => 'string', - 'example' => 'yourSubUserId', - ], - ], - ], - 'TranscodeParams' => [ - 'description' => 'The mixed-stream relay parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'Background' => [ - 'description' => 'The global background image.'."\n", - 'type' => 'object', - 'properties' => [ - 'RenderMode' => [ - 'description' => 'The display mode. Valid values:'."\n" - ."\n" - .'* 0: proportionally scales the video or background image to fit the pane. Black bars are added to fill the extra space.'."\n" - .'* 1 (default): crops the video or background image to fit the pane.'."\n", - 'type' => 'string', - 'example' => '1', - ], - 'URL' => [ - 'description' => 'The URL of the global background image.'."\n", - 'type' => 'string', - 'example' => 'yourImageUrl', - ], - ], - ], - 'EncodeParams' => [ - 'description' => 'The encoding parameters of the output stream.'."\n", - 'type' => 'object', - 'properties' => [ - 'AudioOnly' => [ - 'description' => 'Indicates whether the output stream is an audio-only stream. Valid values:'."\n" - ."\n" - .'* true'."\n" - .'* false (default)'."\n", - 'type' => 'string', - 'example' => 'false', - ], - 'AudioBitrate' => [ - 'description' => 'The bitrate of the audio. Unit: Kbit/s.'."\n", - 'type' => 'string', - 'example' => '128', - ], - 'AudioChannels' => [ - 'description' => 'The number of audio channels. Valid values: 1 and 2.'."\n", - 'type' => 'string', - 'example' => '2', - ], - 'AudioSampleRate' => [ - 'description' => 'The audio sampling rate. Unit: Hz.'."\n", - 'type' => 'string', - 'example' => '44100', - ], - 'VideoCodec' => [ - 'description' => 'The video encoding format. Default value: H.264.'."\n", - 'type' => 'string', - 'example' => 'H.264', - ], - 'VideoBitrate' => [ - 'description' => 'The bitrate of the video. Unit: Kbit/s.'."\n", - 'type' => 'string', - 'example' => '3500', - ], - 'VideoFramerate' => [ - 'description' => 'The frame rate of the video. Unit: frames per second (FPS).'."\n", - 'type' => 'string', - 'example' => '25', - ], - 'VideoGop' => [ - 'description' => 'The group of pictures (GOP) size of the video.'."\n", - 'type' => 'string', - 'example' => '20', - ], - 'VideoHeight' => [ - 'description' => 'The height of the video. Unit: pixels.'."\n", - 'type' => 'string', - 'example' => '1000', - ], - 'VideoWidth' => [ - 'description' => 'The width of the video. Unit: pixels.'."\n", - 'type' => 'string', - 'example' => '1920', - ], - 'EnhancedParam' => [ - 'description' => 'The parameter for advanced video encoding. The value is a JSON string. Optional fields:'."\n" - ."\n" - .'* profile: the encoding level. If the video encoding format is set to H.264, the valid values of this field are baseline, main, and high.'."\n" - .'* preset: adjusts the trade-off between encoding speed and video quality. Valid values: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, and placebo. Each value specifies a level of trade-off between encoding speed and video quality. For example, the ultrafast preset has the fastest encoding speed but the lowest video quality, while the placebo preset sacrifices the encoding speed for the best video quality.'."\n", - 'type' => 'string', - 'example' => '{"profile": "high", "preset": "veryfast"}', - ], - ], - ], - 'Layout' => [ - 'description' => 'The video layout information.'."\n" - ."\n" - .'> The video layout information includes the x-coordinate, y-coordinate, width, height, and layer of the pane. For audio-only transcoding, no video layout information is returned.'."\n", - 'type' => 'object', - 'properties' => [ - 'UserPanes' => [ - 'description' => 'The information about the panes.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'UserInfo' => [ - 'description' => 'The information about the user whose stream is played in the pane.'."\n", - 'type' => 'object', - 'properties' => [ - 'SourceType' => [ - 'description' => 'The source of the video. This parameter is valid only if you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* camera (default): captures the video by using a camera.'."\n" - .'* shareScreen: captures the content displayed on a screen.'."\n", - 'type' => 'string', - 'example' => 'camera', - ], - 'ChannelId' => [ - 'description' => 'The ID of the channel where the user is.'."\n", - 'type' => 'string', - 'example' => 'yourChannelId', - ], - 'UserId' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'example' => 'yourSubUserId', - ], - ], - ], - 'Height' => [ - 'description' => 'The height of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'example' => '0.2632', - ], - 'Width' => [ - 'description' => 'The width of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'example' => '0.3564', - ], - 'X' => [ - 'description' => 'The x-coordinate of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'example' => '0.2456', - ], - 'Y' => [ - 'description' => 'The y-coordinate of the pane. The value is normalized.'."\n", - 'type' => 'string', - 'example' => '0.3789', - ], - 'ZOrder' => [ - 'description' => 'The layer of the pane. A value of 0 indicates that the pane is placed at the bottom layer. A larger value indicates a higher layer.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'BackgroundImageUrl' => [ - 'description' => 'The URL of the background image of the pane. This image is displayed if the user turns off the camera or is not present in the channel.'."\n", - 'type' => 'string', - 'example' => 'yourImageUrl', - ], - 'RenderMode' => [ - 'description' => 'The display mode. Valid values:'."\n" - ."\n" - .'* 0: proportionally scales the video or background image to fit the pane. Black bars are added to fill the extra space.'."\n" - .'* 1 (default): crops the video or background image to fit the pane.'."\n", - 'type' => 'string', - 'example' => '1', - ], - ], - 'description' => '', - ], - ], - ], - ], - 'UserInfos' => [ - 'description' => 'The information about the user whose stream is mixed. If an empty value is returned, streams from all users are mixed.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ChannelId' => [ - 'description' => 'The ID of the channel where the user is.'."\n", - 'type' => 'string', - 'example' => 'yourChannelId', - ], - 'UserId' => [ - 'description' => 'The ID of the user.'."\n", - 'type' => 'string', - 'example' => 'yourSubUserId', - ], - 'SourceType' => [ - 'description' => 'The source of the video. This parameter is valid only if you set StreamType to 2. Valid values:'."\n" - ."\n" - .'* camera (default): captures the video by using a camera.'."\n" - .'* shareScreen: captures the content displayed on a screen.'."\n", - 'type' => 'string', - 'example' => 'camera', - ], - 'StreamType' => [ - 'description' => 'The type of the stream that is relayed. Valid values:'."\n" - ."\n" - .'* 0 (default): the original stream.'."\n" - .'* 1: the audio-only stream.'."\n" - .'* 2: the video-only stream.'."\n", - 'type' => 'string', - 'example' => '0', - ], - ], - 'description' => '', - ], - ], - ], - ], - 'SeiParams' => [ - 'description' => 'The supplemental enhancement information (SEI) parameters.'."\n", - 'type' => 'object', - 'properties' => [ - 'LayoutVolume' => [ - 'description' => 'The layout and volume SEI. If the return value is an empty string, the default layout and volume SEI is used.'."\n", - 'type' => 'object', - 'properties' => [ - 'FollowIdr' => [ - 'description' => 'Indicates whether to add SEI messages to Instantaneous Decoder Refresh (IDR) frames. Valid values:'."\n" - ."\n" - .'* 0: does not add SEI messages.'."\n" - .'* 1: adds SEI messages.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'Interval' => [ - 'description' => 'The interval at which the SEI messages are added. Unit: milliseconds.'."\n", - 'type' => 'string', - 'example' => '1000', - ], - ], - ], - 'PassThrough' => [ - 'description' => 'The custom SEI.'."\n", - 'type' => 'object', - 'properties' => [ - 'FollowIdr' => [ - 'description' => 'Indicates whether to add SEI messages to Instantaneous Decoder Refresh (IDR) frames. Valid values:'."\n" - ."\n" - .'* 0: does not add SEI messages.'."\n" - .'* 1: adds SEI messages.'."\n", - 'type' => 'string', - 'example' => '0', - ], - 'Interval' => [ - 'description' => 'The interval at which the SEI messages are added. Unit: milliseconds.'."\n", - 'type' => 'string', - 'example' => '1000', - ], - 'PayloadContent' => [ - 'description' => 'The payload content of the custom SEI.'."\n", - 'type' => 'string', - 'example' => 'yourPayloadContent', - ], - 'PayloadContentKey' => [ - 'description' => 'The key of the payload content. Default value: udd.'."\n", - 'type' => 'string', - 'example' => 'yourPayloadContentKey', - ], - ], - ], - 'PayloadType' => [ - 'description' => 'The custom payload type. Valid values: 100 to 254. Default value: 5.'."\n", - 'type' => 'string', - 'example' => '100', - ], - ], - ], - ], - 'description' => '', - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '34AB41F1-04A5-496F-8C8D-634BDBE6A9FB', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + 401 => [ + ['errorCode' => 'InvalidResourceType', 'errorMessage' => 'The resourceType is invalid.', 'description' => 'The specified resourceType parameter is invalid.'], + ['errorCode' => 'QuotaExceed.TagsPerResource', 'errorMessage' => 'The maximum number of tags for each resource is exceeded.', 'description' => 'The number of tags for the resource exceeds the upper limit.'], + ['errorCode' => 'InvalidTagKey', 'errorMessage' => 'The tag key is invalid, %s.', 'description' => 'Invalid tag key.'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Duplicate.TagKey', 'errorMessage' => 'The tags should not contain duplicate keys.', 'description' => 'The tag should not contain duplicate keys.'], + ['errorCode' => 'InvalidResourcesCount', 'errorMessage' => 'The count of resources is invalid, %s.', 'description' => 'The input resource array. The total number of resources cannot exceed the maximum value and must be greater than 0.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"34AB41F1-04A5-496F-8C8D-634BDBE6A9FB\\"\\n}","type":"json"}]', + 'title' => 'Add labels to live resources', + 'description' => ' The maximum number of times that each user can call this operation per second is 100.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '### Special error codes'."\n" + .'|Error code |Description |HTTP status code |Meaning |'."\n" + .'|------------|--------|---------|------|'."\n" + .'|InvalidRegionId.Malformed |The specified RegionId is invalid. |400 |The RegionId is invalid.|'."\n" + .'|Resource.NotExist |Resources doesn\'t exist. |400 |The resource does not exist.|'."\n" + .'|TagKeyIsInvalid |The specified TagKey is invalid. |400 |The TagKey format is invalid.|'."\n" + .'|TooManyTags |Too many tags. |400 |The number of labels exceeds the limit.|'."\n" + .'|TagValueIsInvalid |The specified TagValue is invalid. |400 |The TagValue format is invalid.|'."\n" + .'|TagKeyRepeated |The specified TagKey is duplicated. |400 |The TagKey contains duplicate values.|'."\n" + .'|TagIsInvalid |The number of Tag exceeds 20. |400 |The number of labels cannot exceed 20.|'."\n" + .'|ResourceIdIsInvalid |The number of ResourceId exceeds 50. |400 |The number of resource IDs cannot exceed 50.|'."\n" + .'|SystemTagIsInvalid |The number of System Tag exceeds 50. |400 |The total number of system labels cannot exceed 50.|'."\n" + .'|CustomTagIsInvalid |The number of Custom Tag exceeds 20. |400 |The total number of custom labels cannot exceed 20.|.', + 'changeSet' => [ + ['createdAt' => '2023-12-14T02:40:09.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'TagLiveResources'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:TagLiveResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"MPUTasks\\": [\\n {\\n \\"AppId\\": \\"yourAppId\\",\\n \\"ChannelId\\": \\"yourChannelId\\",\\n \\"TaskId\\": \\"yourTaskId\\",\\n \\"MixMode\\": \\"0\\",\\n \\"StreamURL\\": \\"rtmp://example.com/live/stream****\\",\\n \\"MultiStreamURL\\": [\\n {\\n \\"URL\\": \\"rtmp://example.com/live/stream****\\",\\n \\"IsAliCdn\\": false\\n }\\n ],\\n \\"Region\\": \\"CN-Shanghai\\",\\n \\"MaxIdleTime\\": \\"10\\",\\n \\"SingleSubParams\\": {\\n \\"SourceType\\": \\"camera\\",\\n \\"StreamType\\": \\"0\\",\\n \\"UserId\\": \\"yourSubUserId\\"\\n },\\n \\"TranscodeParams\\": {\\n \\"Background\\": {\\n \\"RenderMode\\": \\"1\\",\\n \\"URL\\": \\"yourImageUrl\\"\\n },\\n \\"EncodeParams\\": {\\n \\"AudioOnly\\": \\"false\\",\\n \\"AudioBitrate\\": \\"128\\",\\n \\"AudioChannels\\": \\"2\\",\\n \\"AudioSampleRate\\": \\"44100\\",\\n \\"VideoCodec\\": \\"H.264\\",\\n \\"VideoBitrate\\": \\"3500\\",\\n \\"VideoFramerate\\": \\"25\\",\\n \\"VideoGop\\": \\"20\\",\\n \\"VideoHeight\\": \\"1000\\",\\n \\"VideoWidth\\": \\"1920\\",\\n \\"EnhancedParam\\": \\"{\\\\\\"profile\\\\\\": \\\\\\"high\\\\\\", \\\\\\"preset\\\\\\": \\\\\\"veryfast\\\\\\"}\\"\\n },\\n \\"Layout\\": {\\n \\"UserPanes\\": [\\n {\\n \\"UserInfo\\": {\\n \\"SourceType\\": \\"camera\\",\\n \\"ChannelId\\": \\"yourChannelId\\",\\n \\"UserId\\": \\"yourSubUserId\\"\\n },\\n \\"Height\\": \\"0.2632\\",\\n \\"Width\\": \\"0.3564\\",\\n \\"X\\": \\"0.2456\\",\\n \\"Y\\": \\"0.3789\\",\\n \\"ZOrder\\": \\"0\\",\\n \\"BackgroundImageUrl\\": \\"yourImageUrl\\",\\n \\"RenderMode\\": \\"1\\"\\n }\\n ]\\n },\\n \\"UserInfos\\": [\\n {\\n \\"ChannelId\\": \\"yourChannelId\\",\\n \\"UserId\\": \\"yourSubUserId\\",\\n \\"SourceType\\": \\"camera\\",\\n \\"StreamType\\": \\"0\\"\\n }\\n ]\\n },\\n \\"SeiParams\\": {\\n \\"LayoutVolume\\": {\\n \\"FollowIdr\\": \\"0\\",\\n \\"Interval\\": \\"1000\\"\\n },\\n \\"PassThrough\\": {\\n \\"FollowIdr\\": \\"0\\",\\n \\"Interval\\": \\"1000\\",\\n \\"PayloadContent\\": \\"yourPayloadContent\\",\\n \\"PayloadContentKey\\": \\"yourPayloadContentKey\\"\\n },\\n \\"PayloadType\\": \\"100\\"\\n }\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n \\n yourAppId\\n yourChannelId\\n yourTaskId\\n 0\\n rtmp://example.com/live/stream****\\n \\n rtmp://example.com/live/stream****\\n \\n CN-Shanghai\\n \\n camera\\n 0\\n yourSubUserId\\n \\n \\n \\n 1\\n yourImageUrl\\n \\n \\n false\\n 128\\n 2\\n 44100\\n H.264\\n 3500\\n 25\\n 20\\n 1000\\n 1920\\n {\\"profile\\": \\"high\\", \\"preset\\": \\"veryfast\\"}\\n \\n \\n \\n \\n camera\\n yourChannelId\\n yourSubUserId\\n \\n 0.2632\\n 0.3564\\n 0.2456\\n 0.3789\\n 0\\n yourImageUrl\\n 1\\n \\n \\n \\n yourChannelId\\n yourSubUserId\\n camera\\n 0\\n \\n \\n \\n \\n 0\\n 1000\\n \\n \\n 0\\n 1000\\n yourPayloadContent\\n yourPayloadContentKey\\n \\n 100\\n \\n \\n","errorExample":""}]', - 'title' => 'ListRtcMPUTaskDetail', - 'description' => '* You can call the ListRtcMPUTaskDetail operation to query the parameters of mixed-stream relay tasks that were created by calling the StartLiveMPUTask operation.'."\n" - .'* By default, the query results are sorted in reverse chronological order based on the task update time.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'SetLiveMpuTaskSei' => [ - 'summary' => 'Configures custom supplemental enhancement information (SEI) for co-streaming.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UnTagLiveResources' => [ + 'summary' => 'Calls UnTagLiveResources to delete tags from ApsaraVideo Live resources.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '167350', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeCode' => '107264', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'ResourceId', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The application ID.'."\n" - ."\n" - .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', + 'description' => 'The resource ID. The live streaming domain name. Valid values of N: 1 to 50.', + 'type' => 'array', + 'items' => ['description' => 'The resource ID.', 'type' => 'string', 'required' => false, 'example' => 'example.com', 'title' => ''], 'required' => true, - 'example' => 'VKL3***', + 'example' => 'example.com', + 'maxItems' => 51, + 'title' => '', ], ], [ - 'name' => 'TaskId', + 'name' => 'TagKey', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The task ID.'."\n" - ."\n" - .'> The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AL-4bce036dd90277c50705b0599wgfffc7', + 'description' => 'The tag key. Valid values of N: **1 to 20**.', + 'type' => 'array', + 'items' => ['description' => 'The tag key.', 'type' => 'string', 'required' => false, 'example' => 'testKey', 'title' => ''], + 'required' => false, + 'example' => 'env', + 'maxItems' => 21, + 'title' => '', ], ], [ - 'name' => 'CustomSei', + 'name' => 'ResourceType', 'in' => 'query', 'schema' => [ - 'description' => 'The custom SEI.'."\n" - ."\n" - .'> The value is a JSON string that can be up to 4,096 characters in length.'."\n", + 'description' => 'The resource type. Enumeration type.', + 'enumValueTitles' => ['DOMAIN' => 'domain resource.', 'domain' => 'domain resource.', 'Domain' => 'domain resource.'], 'type' => 'string', 'required' => true, - 'example' => '{"name":"myroom"}', + 'enum' => ['DOMAIN', 'domain', 'Domain'], + 'example' => 'DOMAIN', + 'title' => '', ], ], + [ + 'name' => 'All', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to delete all tags. Valid values:'."\n" + ."\n" + .'- **true**: Yes.'."\n" + .'- **false**: No.'."\n" + ."\n" + .'Default value: **false**.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '97C68796-EB7F-4D41-9D5B-12B909D76508', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + 401 => [ + ['errorCode' => 'InvalidResourceType', 'errorMessage' => 'The resourceType is invalid.', 'description' => 'The specified resourceType parameter is invalid.'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'Duplicate.TagKey', 'errorMessage' => 'The tags should not contain duplicate keys.', 'description' => 'The tag should not contain duplicate keys.'], + ['errorCode' => 'InvalidResourcesCount', 'errorMessage' => 'The count of resources is invalid, %s.', 'description' => 'The input resource array. The total number of resources cannot exceed the maximum value and must be greater than 0.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"97C68796-EB7F-4D41-9D5B-12B909D76508\\"\\n}","type":"json"}]', + 'title' => 'Delete apsaraVideo live resource tags', + 'description' => 'The maximum call frequency for a single user is 100 calls per second.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '### Special error codes'."\n" + .'|Error code |Description |HTTP status code |Meaning |'."\n" + .'|------------|--------|---------|------|'."\n" + .'|TagIsInvalid |The number of Tag exceeds 20. |400 |The number of tags cannot exceed 20.|'."\n" + .'|ResourceIdIsInvalid |The number of ResourceId exceeds 50. |400 |The number of resource IDs cannot exceed 50.|.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnTagLiveResources'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UnTagLiveResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'SetLiveMpuTaskSei', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'You can call this operation to configure custom SEI for a mixed-stream relay task.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'CreateEventSub' => [ - 'summary' => 'Creates a callback to subscribe to channel or user events.', - 'methods' => [ - 'post', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UnbanLiveMessageGroup' => [ + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -64154,1191 +53052,860 @@ 'operationType' => 'write', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeCode' => '237380', + 'abilityTreeNodes' => ['FEATUREliveSL6Y07'], ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '9qb1****', - ], - ], - [ - 'name' => 'ChannelId', - 'in' => 'query', - 'schema' => [ - 'title' => '要监听的频道,不填表示全部,每个appid 只允许1个全频道订阅', - 'description' => 'The channel ID. You can call the [ListEventSub](~~2628135~~) operation to query the channel ID.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter is required if you specify the Users.N parameter.'."\n" - ."\n" - .'* If you set this parameter to \\* or do not specify this parameter, all channels are subscribed to.'."\n" - ."\n" - .'* Each application ID allows only one all-channel subscription.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '123333', - ], - ], - [ - 'name' => 'Users', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'title' => '只监听哪些用户,不填表示全部;与ChannelId过滤同时使用才生效', - 'description' => 'The user whose events you want to subscribe to. If you leave this parameter empty, the events of all users in the channel are subscribed to, including the events of the streamer and viewers. Specify this parameter in the following format:'."\n" - ."\n" - .' Users.1=****'."\n" - .' Users.2=****'."\n" - .' ......'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The user ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'user1', - ], - 'required' => false, - 'maxItems' => 30, - ], + 'schema' => ['description' => 'The application ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'demo', 'title' => ''], ], [ - 'name' => 'Events', + 'name' => 'GroupId', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'title' => 'ChannelEvent, UserEvent', - 'description' => 'Subscribe to events.', - 'type' => 'array', - 'items' => [ - 'description' => 'The type of the event. Valid values:'."\n" - ."\n" - .'* ChannelEvent: channel events.'."\n" - .'* UserEvent: user events in the channel.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ChannelEvent', - ], - 'required' => true, - 'maxItems' => 5, - ], + 'schema' => ['description' => 'The group ID.'."\n", 'type' => 'string', 'required' => true, 'example' => 'grouptest', 'title' => ''], ], [ - 'name' => 'CallbackUrl', + 'name' => 'DataCenter', 'in' => 'query', - 'schema' => [ - 'title' => '回调地址', - 'description' => 'The callback URL. For more information about the content of the messages that are sent to the callback URL, see the Callback section in this topic.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://****.com/callback', - ], + 'schema' => ['description' => 'The data center. It must be the same as the data center that was specified when you called the [CreateLiveMessageApp](~~2848162~~) operation to create the interactive messaging application.'."\n" + ."\n" + .'> Valid values: cn-shanghai and ap-southeast-1 (Singapore).'."\n", 'type' => 'string', 'required' => false, 'example' => 'cn-shanghai', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '760bad53276431c499e30dc36f6b****', - ], - 'SubscribeId' => [ - 'description' => 'The subscription ID.'."\n", - 'type' => 'string', - 'example' => 'ad53276431c****', - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.'."\n", 'type' => 'string', 'example' => '84AF36BF-0B39-1F8A-A416-FAC7C484****'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'QuotaLimitError', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorInvalidCallBackUrl', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"760bad53276431c499e30dc36f6b****\\",\\n \\"SubscribeId\\": \\"ad53276431c****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 760bad53276431c499e30dc36f6b26be\\n ad53276431c****\\n","errorExample":""}]', - 'title' => 'CreateEventSub', - 'description' => 'You can call this operation to create a callback to subscribe to channel or user events. When you create a callback, you can configure parameters such as the callback URL and event type.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'UnbanLiveMessageGroup', + 'summary' => 'Unmutes a group.', + 'description' => '* Before you call this operation, make sure that you have called the [CreateLiveMessageGroup](~~2848163~~) operation to create an interactive messaging group.'."\n" + .'* If a user was muted by calling the AddLiveMessageGroupBand operation, the user remains muted even after you call the UnbanLiveMessageGroup operation.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## CallBack'."\n" - ."\n" - .'Callback messages are sent to the callback URL that is specified by the CallbackUrl parameter. The following sample code provides an example:'."\n" - ."\n" - .'```'."\n" - .'Request:'."\n" - ."\n" - .'POST /callbackURL'."\n" - ."\n" - .'Body'."\n" - .'application/json'."\n" - ."\n" - .'{'."\n" - .' "MsgId": "Message ID",'."\n" - .' "MsgTimestamp": 12312324, // The UNIX timestamp when the message was sent.'."\n" - .' "SubscribeID": "Subscription ID",'."\n" - .' "AppId":"", // The ID of the application in which the message was generated.'."\n" - .' "ChannelID":"", // The ID of the channel in which the message was generated.'."\n" - .' "Contents": ['."\n" - .' {'."\n" - .' "Event": "UserEvent",// The type of the event that is subscribed to. In this case, the type is user event.'."\n" - .' "UserEvent": {'."\n" - .' "UserId": "80331631628*****", // The user ID.'."\n" - .' "EventTag": "Publish", // The event. Valid values: Join, Leave, Publish, Unpublish, and Roleupdate.'."\n" - .' "SessionId": "0dr15rrnhkz0jnvz6o8sxo0*****", // The ID of the session in which the event was generated.'."\n" - .' "Timestamp": 1609854786, // The UNIX timestamp when the event occurred.'."\n" - .' "Reason": 1, // The reason for joining or leaving the channel. This parameter is available only if the event is a Join event.'."\n" - .' "Role": 1, // The role of the user. The roles include streamer and viewer.'."\n" - .' "CurrentMedias":"1,2,3"// The types of the streams that were ingested by the user.'."\n" - .' }'."\n" - .' },'."\n" - .' {'."\n" - .' "Event": "ChannelEvent",// The type of the event that is subscribed to. In this case, the type is channel event.'."\n" - .' "ChannelEvent": {'."\n" - .' "ChannelId": "88888****",'."\n" - .' "EventTag": "Open", // The event. Valid values: Open and Close.'."\n" - .' "Timestamp": 1609854530 // The UNIX timestamp when the event occurred.'."\n" - .' }'."\n" - .' }'."\n" - .' ]'."\n" - .'}'."\n" - ."\n" - .'Response '."\n" - .'HTTP STATUS 200'."\n" - .'```'."\n" - ."\n" - .'## Parameters of a user event'."\n" - ."\n" - .'|Parameter|Type|Required|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|UserId|string|Yes|The user ID.|'."\n" - .'|SessionId|string|Yes|The session ID.|'."\n" - .'|EventTag|string|Yes|The event. Valid values:Join: The user joined the channel.Leave: The user left the channel.PublishVideo: The user ingested a video stream.PublishAudio: The user ingested an audio stream.PublishScreen: The user ingested a stream for screen sharing.UnpublishVideo: The user stopped ingesting a video stream.UnpublishAudio: The user stopped ingesting an audio stream.UnpublishScreen: The user stopped ingesting a stream for screen sharing.Roleupdate: The role of the user was changed.|'."\n" - .'|Timestamp|number|Yes|The timestamp when the event occurred.|'."\n" - .'|Reason|integer|Yes|The reason for joining or leaving the channel. This parameter is available only if the event is a Join event. Valid values:1: The user joined or left the channel as needed.2: The user reconnected to join the channel again when the user was already in the channel.3: The user performed stream relay across channels.4: The user left the channel due to a timeout.5: The user started a new session and was forced to go offline in the current session.6: The user was kicked out of the channel.7: The channel was closed.|'."\n" - .'|Role|integer|Yes|The role of the user. Valid values:1: streamer2: viewer|'."\n" - .'|CurrentMedias|integer|Yes|The type of the stream. Valid values:1: audio2: video3: screen sharing|'."\n" - ."\n" - .'## Parameters of a channel event'."\n" - ."\n" - .'|Parameter|Type|Required|Description|'."\n" - .'|---|---|---|---|'."\n" - .'|EventTag|string|Yes|The event. Valid values:Open: The channel was opened.Close: The channel was closed.|'."\n" - .'|Timestamp|number|Yes|The timestamp when the event occurred.|'."\n" - ."\n" - .'## Callback authentication'."\n" - ."\n" - .'By default, callback authentication is enabled. The following authentication logic applies:'."\n" - ."\n" - .'* When ApsaraVideo Live initiates a callback request, it includes the Ali-Rtc-Timestamp and Ali-Rtc-Signature headers in the HTTP or HTTPS request so that the callback message receiving server can authenticate the signature. The value of Ali-Rtc-Timestamp is calculated based on the following formula: Ali-Rtc-Signature=MD5SUM(MD5CONTENT). In the formula, MD5CONTENT is a string in the following format: Callback domain name|Ali-Rtc-Timestamp value|Authentication key. The callback domain name is the domain name in the callback URL. The authentication key is the AppKey of the application.'."\n" - .'* After receiving a callback message, the callback message receiving server concatenates the callback domain name, value of the Ali-Rtc-Timestamp header, and authentication key in the preceding format. The server calculates the MD5 value of the string to obtain an encrypted string. Then, the server compares the encrypted string with the value of the Ali-Rtc-Signature header in the HTTP or HTTPS request initiated by Real-Time Communication (RTC). If the two values are different, the request is invalid.'."\n" - ."\n" - .'## Callback retry'."\n" - ."\n" - .'After Alibaba Cloud initiates a callback request, the callback is considered successful only if the HTTP status code 200 is returned by your business server. If a callback fails, ApsaraVideo Live resends the callback request 7 times at intervals of 1 second, 2 seconds, 5 seconds, 10 seconds, 60 seconds, 120 seconds, and 300 seconds. A callback record is generated each time a callback request is resent.'."\n" - ."\n" - .'## Exception handling'."\n" - ."\n" - .'A keep-alive mechanism is implemented between clients that have joined a channel or started stream ingest and the Alibaba Cloud server. If the server does not receive heartbeat information from a client for 90 seconds, the server considers that the client timed out and the user left the channel and then fires callbacks. Heartbeats fail to be detected if a network disconnection occurs or the application accidentally exits.', - ], - 'ListEventSub' => [ - 'summary' => 'Queries the events generated in channels to which you subscribe.', - 'methods' => [ - 'get', + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbanLiveMessageGroup'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UnbanLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"84AF36BF-0B39-1F8A-A416-FAC7C484****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 84AF36BF-0B39-1F8A-A416-FAC7C484****\\n","errorExample":""}]', + ], + 'UpdateCasterResourceGroup' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '198164', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeCode' => '233607', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '9qb1****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'NewResourceGroupId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the destination resource group.', 'type' => 'string', 'required' => true, 'example' => 'rg-aekz7***34cn5ty', 'title' => ''], + ], + [ + 'name' => 'CasterId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the production studio.', 'type' => 'string', 'required' => true, 'example' => 'a41300c9-23d3-470e-b9bd-****663e0700', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", + 'title' => '', + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08', - ], - 'Subscribers' => [ - 'description' => 'The events.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the event.'."\n", - 'type' => 'object', - 'properties' => [ - 'SubId' => [ - 'title' => '订阅ID', - 'description' => 'The ID of the event.'."\n", - 'type' => 'string', - 'example' => '09be0d2254cb5a89f4cbd86403ec****', - ], - 'ChannelId' => [ - 'description' => 'The ID of the channel to which you subscribe.'."\n", - 'type' => 'string', - 'example' => 'testmodify', - ], - 'Events' => [ - 'title' => 'ChannelEvent表示频道事件,包括频道开启与关闭;'."\n" - .'UserEvent表示用户事件,包括用户入离会等', - 'description' => 'The type of the event. Valid values:'."\n" - ."\n" - .'* ChannelEvent: channel event. For example, the channel is opened or closed.'."\n" - .'* UserEvent: user event. For example, a user joins or leaves the channel.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Subscribe to events.', - 'type' => 'string', - 'example' => 'ChannelEvent', - ], - ], - 'CallbackUrl' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://****.com/callback', - ], - 'CreateTime' => [ - 'title' => '创建时间', - 'description' => 'The time when the subscription was created. The time is displayed in UTC+8. Format: yyyy-MM-dd hh:mm:ss.'."\n", - 'type' => 'string', - 'example' => '2023-08-18 10:14:49', - ], - 'ModifyTime' => [ - 'title' => '修改时间', - 'description' => 'The time when the subscription was modified. The time is displayed in UTC+8. Format: yyyy-MM-dd hh:mm:ss.'."\n", - 'type' => 'string', - 'example' => '2023-08-18 10:14:49', - ], - 'Users' => [ - 'title' => '只回调指定userid的事件;不建议与role同用;'."\n" - .'指定此参数必须同时指定ChannelId', - 'description' => 'The user whose events are returned. We recommend that you use either this parameter or Roles.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Callback only for events of this user, not recommended to be used with Roles.', - 'type' => 'string', - 'example' => 'testUser', - ], - ], - 'Roles' => [ - 'title' => '1只回调主播事件,2只回调观众事件;'."\n" - .'无值、0、其他值表示回调所有用户事件', - 'description' => 'The role of the user whose events are returned. Valid values:'."\n" - ."\n" - .'* 1: streamer'."\n" - .'* 2: viewer'."\n" - ."\n" - .'An empty value or a value other than 1 and 2 indicates that events of all users in the channel are returned.'."\n" - ."\n" - .'> This parameter is deprecated. When you create a subscription, this parameter is no longer supported.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'deprecated' => true, - 'example' => '1', - ], - ], - ], - ], + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '0D776BD1-****-59D0-9A1B-272832D999F6'], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter.PurchaseTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PurchaseTime is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.ExpireTime', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ExpireTime is invalid, please check and try again.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidChargeType.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidChargeType.PostSupport', 'errorMessage' => '%s, please check and try again later.', 'description' => 'ChargeType only supports post-paid, please check and try again.'], + ['errorCode' => 'InvalidCasterTemplate.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterTemplate is invalid, please check and try again.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidParameter.ChargeType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['errorCode' => 'InvalidPeriod.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid time interval, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidClientToken.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['errorCode' => 'IncorrectCasterStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Guide station status error, please check and try again.'], + ], + [ + ['errorCode' => 'CasterNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of casters exceeds the limit. Please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'PermissionDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Access denied, please check and try again.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParameter.NormType', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter NormType is invalid, please check and try again.'], + ['errorCode' => 'InvalidConfiguration.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ], + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'UpdateCasterResourceGroup', + 'summary' => 'Updates the resource group of a production studio.', + 'description' => '## Usage notes'."\n" + ."\n" + .'When you call this operation, your account must have permissions on both the source and destination resource groups.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. If you exceed the limit, your API calls are throttled. This may affect your business. Make sure that you call this operation within the limit. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateCasterResourceGroup'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'ramActions' => [ + [ + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:UpdateCasterResourceGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08\\",\\n \\"Subscribers\\": [\\n {\\n \\"SubId\\": \\"09be0d2254cb5a89f4cbd86403ec****\\",\\n \\"ChannelId\\": \\"testmodify\\",\\n \\"Events\\": [\\n \\"ChannelEvent\\"\\n ],\\n \\"CallbackUrl\\": \\"http://****.com/callback\\",\\n \\"CreateTime\\": \\"2023-08-18 10:14:49\\",\\n \\"ModifyTime\\": \\"2023-08-18 10:14:49\\",\\n \\"Users\\": [\\n \\"testUser\\"\\n ],\\n \\"Roles\\": 1\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08\\n \\n 09be0d2254cb5a89f4cbd86403ec****\\n testmodify\\n ChannelEvent\\n http://****.com/callback\\n 2023-08-18 10:14:49\\n 2023-08-18 10:14:49\\n testUser\\n 1\\n \\n","errorExample":""}]', - 'title' => 'ListEventSub', - 'description' => 'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0D776BD1-****-59D0-9A1B-272832D999F6\\"\\n}","type":"json"}]', ], - 'ListEventSubEvent' => [ - 'summary' => 'Queries callback records.', - 'methods' => [ - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateCasterSceneAudio' => [ + 'summary' => 'Modifies the audio configurations of a scene. This operation also lets you add an audio configuration or apply an existing audio configuration to a new scene.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'list', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '9qb1****', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'SubscribeId', + 'name' => 'AudioLayer', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The subscription ID. You can obtain the ID from the response to the [CreateEventSub](~~2848209~~) operation.'."\n", - 'type' => 'string', + 'description' => 'The audio configurations.', + 'type' => 'array', + 'items' => [ + 'description' => 'The audio configuration.', + 'type' => 'object', + 'properties' => [ + 'Filter' => ['description' => 'Specifies whether to enable the features provided by the 3A audio algorithm. This parameter consists of the following fields:'."\n" + ."\n" + .'- **enableAgc**: (Optional) Specifies whether to enable the automatic gain control (AGC) feature of the 3A algorithm. Valid values: **0** (disabled, default) and **1** (enabled).'."\n" + ."\n" + .'- **enableAns**: (Optional) Specifies whether to enable the intelligent noise reduction feature of the 3A algorithm. Valid values: **0** (disabled, default) and **1** (enabled).'."\n" + ."\n" + .'- **ansMode**: (Optional) The mode of the intelligent noise reduction feature. This field is active only when **enableAns** is set to **1**. Valid values: **0** (speech noise reduction, default) and **1** (music noise reduction).'."\n" + ."\n" + .'> For better noise reduction, set ansMode to 1.'."\n" + ."\n" + .'- **enableBeautify**: (Optional) Specifies whether to enable voice beautification. Valid values: **0** (disabled, default) and **1** (enabled).'."\n" + ."\n" + .'- **voiceBeautifyMode**: (Optional) The voice beautification mode. This field is active only when **enableBeautify** is set to **1**. Valid values: **0** (magnetic male voice, default) and **1** (fresh female voice).', 'type' => 'string', 'required' => false, 'example' => '{ "enableAgc":0, "enableAns":1 }', 'title' => ''], + 'FixedDelayDuration' => ['description' => 'The fixed latency of the audio layer. This parameter is used to synchronize the audio with captions.'."\n" + ."\n" + .'Unit: milliseconds. Valid values: 0 to **5000**. Default value: **0**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], + 'ValidChannel' => ['description' => 'The sound channels that are used for volume input. Valid values:'."\n" + ."\n" + .'- **leftChannel**: the left sound channel.'."\n" + ."\n" + .'- **rightChannel**: the right sound channel.'."\n" + ."\n" + .'- **all** (default): both sound channels.', 'type' => 'string', 'required' => false, 'example' => 'all', 'title' => ''], + 'VolumeRate' => ['description' => 'The volume multiplier for the audio stream. Valid values: 0 to **10.0**. Default value: **1.0**.'."\n" + ."\n" + .'- **1.0**: The original volume is used.'."\n" + ."\n" + .'- A value less than **1** decreases the volume.'."\n" + ."\n" + .'- A value greater than **1** increases the volume.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '1', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], 'required' => false, - 'example' => 'ad53276431c****', + 'maxItems' => 12, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'StartTime', + 'name' => 'MixList', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The beginning of the time range to query. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'maximum' => '2234313863', - 'minimum' => '0', - 'example' => '1698195600', + 'description' => 'The list of associated location IDs. The order of the location IDs must be the same as the order of the audio layers.', + 'type' => 'array', + 'items' => ['description' => 'The location ID of the resource.'."\n" + ."\n" + .'The order of location IDs must be consistent with the order of the audio layers. If a channel is enabled, use the location ID of the channel. Otherwise, use the location ID of the video source.', 'type' => 'string', 'required' => false, 'example' => 'RV01', 'title' => ''], + 'required' => false, + 'example' => 'RV01', + 'maxItems' => 12, + 'title' => '', ], ], [ - 'name' => 'EndTime', + 'name' => 'CasterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The value is a UNIX timestamp. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'maximum' => '2234313863', - 'minimum' => '0', - 'example' => '1698201013', - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, you can obtain the ID from the CasterId parameter in the response.'."\n" + ."\n" + .'- If you create a production studio in the LIVE console, go to the **LIVE Console** > **Production Studio** > **Cloud Production Studio** page to view the ID.'."\n" + ."\n" + .'> The name of the production studio in the list on the Cloud Production Studio page is the ID of the production studio.', 'type' => 'string', 'required' => true, 'example' => 'LIVEPRODUCER_POST-cn-0pp1czt****', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'SceneId', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of callback records to return on each page. Valid values: 1 to 100.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'maximum' => '100', - 'minimum' => '10', - 'example' => '10', - ], + 'schema' => ['description' => 'The ID of the scene. If you query the list of scenes in a production studio by calling the [DescribeCasterScenes](~~2848039~~) operation, you can obtain the ID from the ComponentId parameter in the response.', 'type' => 'string', 'required' => true, 'example' => 'a2b8e671-2fe5-4642-a2ec-bf93880e1****', 'title' => ''], ], [ - 'name' => 'PageNo', + 'name' => 'FollowEnable', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'maximum' => '9999999999', - 'minimum' => '1', - 'example' => '20', - ], + 'schema' => ['description' => 'Specifies whether to enable the AFV mode. If you leave this parameter empty, the last configuration is retained. Valid values:'."\n" + ."\n" + .'- **0**: audio mixing mode.'."\n" + ."\n" + .'- **1**: audio-follows-video mode.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CC8CB656-A7BA-1811-9D6B-4CC187E988BD', - ], - 'Count' => [ - 'description' => 'The total number of callback records returned on the current page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by a page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'Logs' => [ - 'description' => 'The callback records.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'AppId' => [ - 'description' => 'The application ID.'."\n", - 'type' => 'string', - 'example' => '9qb1****', - ], - 'SubId' => [ - 'description' => 'The subscription ID.'."\n", - 'type' => 'string', - 'example' => 'ad53276431c****', - ], - 'MessageId' => [ - 'description' => 'The ID of the callback record.'."\n", - 'type' => 'string', - 'example' => '875d5266cbabb1834cc84a105cf6****', - ], - 'Data' => [ - 'description' => 'The details about the callback.'."\n", - 'type' => 'string', - 'example' => '{\\"MsgId\\":\\"875d5266cbabb1834cc84a105cf68454\\",\\"MsgTimestamp\\":1697545591,\\"SubscribeId\\":\\"09be0d2254cb5a89f4cbd86403ec5343\\",\\"AppId\\":\\"xxx\\",\\"ChannelId\\":\\"9099\\",\\"Contents\\":[{\\"Event\\":\\"UserEvent\\",\\"UserEvent\\":{\\"UserId\\":\\"linux_test\\",\\"EventTag\\":\\"Leave\\",\\"SessionId\\":\\"je7y2sBZJZQ0VBJZrh4LnBkxvGH2WyVs\\",\\"Timestamp\\":1697545591,\\"ChannelProfile\\":\\"interactive_live\\",\\"US\\":5068748604047364,\\"Reason\\":1,\\"Role\\":1,\\"TerminalType\\":6,\\"UserType\\":2}}]}', - ], - 'Cost' => [ - 'description' => 'The callback duration. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '22', - ], - 'Time' => [ - 'description' => 'The time when the callback was generated.'."\n", - 'type' => 'string', - 'example' => '2023-10-17 20:26:31.988', - ], - 'Url' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://****.com/callback', - ], - 'Code' => [ - 'description' => 'The HTTP status code. A value of 200 indicates that the callback was successful.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '200', - ], - ], - ], - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'InvalidAudioLayersAndMixListSize.Mismatch', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The size of the AudioLayers does not match the size of the MixList, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.ConfigError', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene configuration error, please check and try again.'], + ['errorCode' => 'InvalidMixList.ExceedNorm', 'errorMessage' => '%s, please check and try again later.', 'description' => 'MixList size exceeds specification, please check and try again.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ['errorCode' => 'ResourceInChannel.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ], + 412 => [ + ['errorCode' => 'ResourceInChannel.PreConditionFailed', 'errorMessage' => '%s, please try again later.', 'description' => 'Resource pre-verification failed, please try again later.'], + ['errorCode' => 'ResourceInChannel.Invalid', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Resource and channel material address are inconsistent, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CC8CB656-A7BA-1811-9D6B-4CC187E988BD\\",\\n \\"Count\\": 1,\\n \\"HasMore\\": false,\\n \\"Logs\\": [\\n {\\n \\"AppId\\": \\"9qb1****\\",\\n \\"SubId\\": \\"ad53276431c****\\",\\n \\"MessageId\\": \\"875d5266cbabb1834cc84a105cf6****\\",\\n \\"Data\\": \\"{\\\\\\\\\\\\\\"MsgId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"875d5266cbabb1834cc84a105cf68454\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"MsgTimestamp\\\\\\\\\\\\\\":1697545591,\\\\\\\\\\\\\\"SubscribeId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"09be0d2254cb5a89f4cbd86403ec5343\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"AppId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"xxx\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"ChannelId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"9099\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"Contents\\\\\\\\\\\\\\":[{\\\\\\\\\\\\\\"Event\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"UserEvent\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"UserEvent\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"UserId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"linux_test\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"EventTag\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"Leave\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"SessionId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"je7y2sBZJZQ0VBJZrh4LnBkxvGH2WyVs\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"Timestamp\\\\\\\\\\\\\\":1697545591,\\\\\\\\\\\\\\"ChannelProfile\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"interactive_live\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"US\\\\\\\\\\\\\\":5068748604047364,\\\\\\\\\\\\\\"Reason\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"Role\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"TerminalType\\\\\\\\\\\\\\":6,\\\\\\\\\\\\\\"UserType\\\\\\\\\\\\\\":2}}]}\\",\\n \\"Cost\\": 22,\\n \\"Time\\": \\"2023-10-17 20:26:31.988\\",\\n \\"Url\\": \\"http://****.com/callback\\",\\n \\"Code\\": 200\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n CC8CB656-A7BA-1811-9D6B-4CC187E988BD\\n 1\\n false\\n \\n 9qb1****\\n ad53276431c****\\n 875d5266cbabb1834cc84a105cf6****\\n {\\\\\\"MsgId\\\\\\":\\\\\\"875d5266cbabb1834cc84a105cf68454\\\\\\",\\\\\\"MsgTimestamp\\\\\\":1697545591,\\\\\\"SubscribeId\\\\\\":\\\\\\"09be0d2254cb5a89f4cbd86403ec5343\\\\\\",\\\\\\"AppId\\\\\\":\\\\\\"xxx\\\\\\",\\\\\\"ChannelId\\\\\\":\\\\\\"9099\\\\\\",\\\\\\"Contents\\\\\\":[{\\\\\\"Event\\\\\\":\\\\\\"UserEvent\\\\\\",\\\\\\"UserEvent\\\\\\":{\\\\\\"UserId\\\\\\":\\\\\\"linux_test\\\\\\",\\\\\\"EventTag\\\\\\":\\\\\\"Leave\\\\\\",\\\\\\"SessionId\\\\\\":\\\\\\"je7y2sBZJZQ0VBJZrh4LnBkxvGH2WyVs\\\\\\",\\\\\\"Timestamp\\\\\\":1697545591,\\\\\\"ChannelProfile\\\\\\":\\\\\\"interactive_live\\\\\\",\\\\\\"US\\\\\\":5068748604047364,\\\\\\"Reason\\\\\\":1,\\\\\\"Role\\\\\\":1,\\\\\\"TerminalType\\\\\\":6,\\\\\\"UserType\\\\\\":2}}]}\\n 22\\n \\n http://****.com/callback\\n 200\\n \\n","errorExample":""}]', - 'title' => 'ListEventSubEvent', - 'description' => '* The maximum time range to query is seven days.'."\n" - .'* The minimum time granularity to query is 1 minute.'."\n" - .'* You can query data in the last seven days.'."\n" + 'title' => 'UpdateCasterSceneAudio', + 'description' => 'First, call the [CreateCaster](~~2848009~~) operation to create a production studio. Then, you can call this operation to update the audio configuration of a scene. This operation supports the audio mixing mode and the audio-follows-video (AFV) mode.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'UpdateEventSub' => [ - 'summary' => 'Updates a callback that is used to subscribe to channel or user events.', - 'methods' => [ - 'post', + .'You can make up to 10 queries per second (QPS) per Alibaba Cloud account. API calls that exceed this limit are throttled, which may affect your business. We recommend that you adhere to this limit.', + 'requestParamsDescription' => 'In the request parameters, N indicates the sequence number. For example:'."\n" + ."\n" + .'- AudioLayer.N.VolumeRate specifies the volume multiplier for the Nth element.'."\n" + ."\n" + .'- AudioLayer.1.VolumeRate specifies the volume multiplier for the first element.'."\n" + ."\n" + .'- AudioLayer.2.VolumeRate specifies the volume multiplier for the second element.', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2023-03-06T07:31:05.000Z', 'description' => 'Request parameters changed'], ], - 'schemes' => [ - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateCasterSceneAudio'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateCasterSceneAudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'UpdateCasterSceneConfig' => [ + 'summary' => 'Modifies a scene, including the layout, without invalidating the previous configurations. This operation is more efficient than the SetCasterSceneConfig operation.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application ID.', - 'type' => 'string', - 'required' => true, - 'example' => '9qb1****', - ], - ], - [ - 'name' => 'SubscribeId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'title' => '订阅ID', - 'description' => 'The subscription ID. You can obtain the ID from the response to the [CreateEventSub](~~2848209~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ad53276431c****', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ChannelId', + 'name' => 'ComponentId', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The channel ID. You can call the [ListEventSub](~~2848210~~) operation to query the channel ID.'."\n" - ."\n" - .'> '."\n" + 'description' => 'A list of component IDs. The components in the array are layered from bottom to top.'."\n" ."\n" - .'* This parameter is required if you specify the Users.N parameter.'."\n" - ."\n" - .'* If you set this parameter to \\* or do not specify this parameter, all channels are subscribed to.'."\n" + .'> N indicates the sequence number. For example, ComponentId.1 is the ID of the first component and ComponentId.2 is the ID of the second component.', + 'type' => 'array', + 'items' => ['description' => 'A list of component IDs. The components in the array are layered from bottom to top.'."\n" ."\n" - .'* You can create up to 20 subscriptions for each application ID.'."\n", - 'type' => 'string', + .'> N indicates the sequence number. For example, ComponentId.1 is the ID of the first component and ComponentId.2 is the ID of the second component.', 'type' => 'string', 'required' => false, 'example' => '["98778372-c30f-4442-85ba-2e3e4e3d****"]', 'title' => ''], 'required' => false, - 'example' => '123333', + 'example' => '["98778372-c30f-4442-85ba-2e3e4e3d****"]', + 'maxItems' => 10, + 'title' => '', ], ], [ - 'name' => 'Users', + 'name' => 'CasterId', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'title' => '只监听指定用户的事件,必须同时指定ChannelId才有效。', - 'description' => 'The user whose events you want to subscribe to.', - 'type' => 'array', - 'items' => [ - 'description' => 'The user whose events you want to subscribe to. If you do not specify this parameter, the events of all users in the channel are subscribed to, including the events of the streamer and viewers.', - 'type' => 'string', - 'required' => false, - 'example' => 'user1', - ], - 'required' => false, - 'maxItems' => 30, - ], + 'schema' => ['description' => 'The ID of the production studio.'."\n" + ."\n" + .'- If you create a production studio by calling the [CreateCaster](~~2848009~~) operation, use the CasterId value from the response.'."\n" + ."\n" + .'- If you create a production studio in the ApsaraVideo Live console, find the ID on the **Cloud Production Studio** page. Navigate to this page by choosing **Production Studio** > **Cloud Production Studio** in the ApsaraVideo Live console.'."\n" + ."\n" + .'> The name of the production studio in the list is its ID.', 'type' => 'string', 'required' => true, 'example' => '80787064-1c94-4dc1-85ce-9409960a****', 'title' => ''], ], [ - 'name' => 'Events', + 'name' => 'SceneId', 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'title' => 'ChannelEvent, UserEvent', - 'description' => 'The type of the events to which you want to subscribe.', - 'type' => 'array', - 'items' => [ - 'description' => 'The type of the events to which you want to subscribe. Valid values:'."\n" - .'- ChannelEvent: channel events '."\n" - .'- UserEvent: user events in the channel', - 'type' => 'string', - 'required' => true, - 'example' => 'ChannelEvent', - ], - 'required' => true, - 'maxItems' => 5, - ], + 'schema' => ['description' => 'The ID of the scene.', 'type' => 'string', 'required' => true, 'example' => '242b4e2c-c30f-4442-85ba-2e3e4e3d****', 'title' => ''], ], [ - 'name' => 'CallbackUrl', + 'name' => 'LayoutId', 'in' => 'query', - 'schema' => [ - 'title' => '回调地址,因为安全需求,回调地址必须是域名,用标准端号,回调地址不允许包含端口号。示例: http(s)://xxxx.com/xxxx', - 'description' => 'The callback URL. For more information about the callback content, see CreateEventSub.', - 'type' => 'string', - 'required' => true, - 'example' => 'http://****.com/callback', - ], + 'schema' => ['description' => 'The ID of the layout. If you query the layout list for the production studio by calling the [DescribeCasterLayouts](~~2848028~~) operation, use the LayoutId value from the response.', 'type' => 'string', 'required' => true, 'example' => 'eeab74fb-379d-4599-a93d-86d16a05****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A52FA7', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'QuotaLimitError', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'ErrorInvalidCallBackUrl', - 'errorMessage' => '%s.', - ], - ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidCasterId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'IncorrectSceneStatus.ConfigError', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene configuration error, please check and try again.'], + ['errorCode' => 'ComponentNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of components exceeds the limit. Please check and try again.'], + ['errorCode' => 'SceneNumberExceed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The number of Scenes exceeds the limit. Please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus.Waiting', 'errorMessage' => '%s, please try again later.', 'description' => 'Scene is waiting, please try again later.'], + ['errorCode' => 'IncorrectSceneStatus.Idle', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is idle, please check and try again.'], + ['errorCode' => 'InvalidCaptionResource', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource referenced by the voice caption component does not exist or is not a live source. Please check and try again.'], + ['errorCode' => 'IncorrectSceneStatus', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene status is not supported, please check and try again.'], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'InvalidCaster.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The guide station does not exist, please check and try again.'], + ['errorCode' => 'InvalidScene.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Scene does not exist, please check and try again.'], + ['errorCode' => 'InvalidLayout.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'LayoutId does not exist, please check and try again.'], + ['errorCode' => 'InvalidComponent.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The component to be operated does not exist. Please check and try again.'], + ['errorCode' => 'InvalidVideo.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The video resource does not exist. Please check and try again.'], + ['errorCode' => 'ResourceInChannel.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The resource does not exist. Please check and try again.'], + ], + 412 => [ + ['errorCode' => 'ResourceInChannel.PreConditionFailed', 'errorMessage' => '%s, please try again later.', 'description' => 'Resource pre-verification failed, please try again later.'], + ['errorCode' => 'ResourceInChannel.Invalid', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Resource and channel material address are inconsistent, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08\\"\\n}","errorExample":""},{"type":"xml","example":"\\n AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08\\n","errorExample":""}]', - 'title' => 'UpdateEventSub', - 'description' => '* Before you call this operation, make sure that you have called the [CreateEventSub](~~2848209~~) operation to create a callback that is used to subscribe to channel or user events.'."\n" - .'* An existing channel that you specify in this operation still uses its original callback configuration. The updated configuration can apply to the channel only if you restart the channel after it is closed for longer than 20 minutes.'."\n" - .'* If you only want to update specific parameters, you must also specify the other required parameters with their original values.'."\n" + 'title' => 'UpdateCasterSceneConfig', + 'description' => 'You can call this operation to incrementally modify the configuration of a scene, including its layout. This operation preserves existing settings and is more efficient than a full update.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteEventSub' => [ - 'summary' => 'Deletes a callback that is used to subscribe to channel or user events.', - 'methods' => [ - 'post', + .'The queries per second (QPS) limit for this operation is 10 calls per second per user. Calls that exceed this limit are throttled, which may affect your business. We recommend that you plan your calls accordingly.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateCasterSceneConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateCasterSceneConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A52FA7\\"\\n}","type":"json"}]', + ], + 'UpdateCustomLiveStreamTranscode' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '206837', + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '9qb1****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'SubscribeId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The subscription ID. You can obtain the ID from the response to the [CreateEventSub](~~2848209~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'ad53276431c****', - ], + 'schema' => ['description' => 'The streaming domain. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '760bad53276431c499e30dc36f6b26be', - ], - ], - ], + [ + 'name' => 'App', + 'in' => 'query', + 'schema' => ['description' => 'The AppName of the live stream. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InputInvalid', - 'errorMessage' => '%s.', - ], + [ + 'name' => 'Template', + 'in' => 'query', + 'schema' => ['description' => 'The custom name of the transcoding template. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'LiveCusTranscode****', 'title' => ''], ], - 403 => [ - [ - 'errorCode' => 'NoAuth', - 'errorMessage' => '%s.', - ], + [ + 'name' => 'TemplateType', + 'in' => 'query', + 'schema' => ['description' => 'The type of the custom transcoding template. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'h264', 'title' => ''], ], [ - [ - 'errorCode' => 'ResourceNotExist', - 'errorMessage' => '%s.', - ], + 'name' => 'Height', + 'in' => 'query', + 'schema' => ['description' => 'Output video height in pixels. Requirements:'."\n" + ."\n" + .'- **Height ≥ 100**'."\n" + ."\n" + .'- **max(Height, Width) ≤ 2560**'."\n" + ."\n" + .'- **min(Height, Width) ≤ 1440**'."\n" + ."\n" + .'> For h265-nbhd templates, it cannot exceed 720.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '720', 'title' => ''], ], - 500 => [ - [ - 'errorCode' => 'ServerError', - 'errorMessage' => '%s.', - ], + [ + 'name' => 'Width', + 'in' => 'query', + 'schema' => ['description' => 'Output video width in pixels.'."\n" + ."\n" + .'Requirements:'."\n" + ."\n" + .'- **Width ≥ 100**'."\n" + ."\n" + .'- **max(Height, Width) ≤ 2560**'."\n" + ."\n" + .'- **min(Height, Width) ≤ 1440**'."\n" + ."\n" + .'> For h265-nbhd templates, it cannot exceed 1280.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '576', 'title' => ''], ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"760bad53276431c499e30dc36f6b26be\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 760bad53276431c499e30dc36f6b26be\\n","errorExample":""}]', - 'title' => 'DeleteEventSub', - 'description' => 'Before you call this operation, make sure that you have called the [CreateEventSubscribe](~~2848209~~) operation to create a callback that is used to subscribe to channel or user events.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'CreateRtcMPUEventSub' => [ - 'summary' => 'Creates a subscription to mixed-stream relay events.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'FPS', + 'in' => 'query', + 'schema' => ['description' => 'The frame rate of the output video. Unit: frames per second (FPS). Valid values: 1 to **60**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''], ], - ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'create', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '219222', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', + [ + 'name' => 'VideoBitrate', + 'in' => 'query', + 'schema' => ['description' => 'The output video bitrate. Unit: kbps. Valid values: 1 to **6000**.'."\n" + ."\n" + .'> The system tries to transcode the video at the specified bitrate. However, the actual bitrate may not be the same as the specified value, especially when the specified value is too high or too low.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '720', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'AudioBitrate', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application.'."\n" - ."\n" - .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores, and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The output audio bitrate. Unit: kbps. Valid values: 1 to **1000**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '512', 'title' => ''], ], [ - 'name' => 'ChannelIds', + 'name' => 'Gop', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the channel to which you want to send mixed-stream relay event callbacks. Separate multiple channel IDs with commas (,).'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If you leave this parameter empty, you are subscribed to mixed-stream relay events of all channels in the application.'."\n" - ."\n" - .'* You cannot specify duplicate channel IDs. You can specify up to 20 channel IDs in each call.'."\n" - ."\n" - .'* The ID can be up to 64 characters in length and contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourChannelIds', - ], + 'schema' => ['description' => 'The Group of Pictures (GOP) size. The unit can be frame or second. Valid values:'."\n" + ."\n" + .'- By frames: 1 to 3000.'."\n" + ."\n" + .'- By seconds: 1s to 20s.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], ], [ - 'name' => 'CallbackUrl', + 'name' => 'Profile', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL.'."\n" - ."\n" - .'> The callback URL can be up to 2,083 characters in length. You can use headers such as HTTP and HTTPS in callback URLs. The URL can contain letters, digits, and the following special characters: - \\_ ? % = # . / +'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://****.com/callback', - ], + 'schema' => ['description' => 'The video codec profile. A larger value indicates better video quality and higher resource consumption for encoding and decoding. Valid values:'."\n" + ."\n" + .'- **1**: baseline (for mobile devices).'."\n" + ."\n" + .'- **2**: main (for SD devices).'."\n" + ."\n" + .'- **3**: high (for HD devices).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'AudioProfile', + 'in' => 'query', + 'schema' => ['description' => 'The audio profile. Valid values:'."\n" + ."\n" + .'- aac\\_low'."\n" + ."\n" + .'- aac\\_he'."\n" + ."\n" + .'- aac\\_he\\_v2'."\n" + ."\n" + .'- aac\\_ld', 'type' => 'string', 'required' => false, 'example' => 'aac_low', 'title' => ''], + ], + [ + 'name' => 'AudioCodec', + 'in' => 'query', + 'schema' => ['description' => 'The audio codec. Valid values:'."\n" + ."\n" + .'- aac'."\n" + ."\n" + .'- mp3', 'type' => 'string', 'required' => false, 'example' => 'aac', 'title' => ''], + ], + [ + 'name' => 'AudioRate', + 'in' => 'query', + 'schema' => ['description' => 'The audio sample rate. Valid values: 22050, 32000, 44100, 48000, and 96000. Unit: Hz.'."\n" + ."\n" + .'> If you set **AudioProfile** to **aac\\_ld**, the sample rate cannot exceed 44100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '96000', 'title' => ''], + ], + [ + 'name' => 'AudioChannelNum', + 'in' => 'query', + 'schema' => ['description' => 'The number of audio channels. Valid values:'."\n" + ."\n" + .'- 1: mono.'."\n" + ."\n" + .'- 2: stereo.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'Lazy', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable on-demand transcoding. Valid values:'."\n" + ."\n" + .'- **yes**: Transcoding only starts when the first viewer requests this transcoded stream.'."\n" + ."\n" + .'- **no**: Transcoding starts immediately after the stream is published.', 'type' => 'string', 'required' => false, 'example' => 'yes', 'title' => ''], + ], + [ + 'name' => 'EncryptParameters', + 'in' => 'query', + 'schema' => ['description' => 'The encryption settings, formatted as a JSON string.'."\n" + ."\n" + .'- **EncryptType**: The encryption type. Set the value to aliyun.'."\n" + ."\n" + .'- **KmsKeyID**: The ID of the customer master key (CMK) in Key Management Service (KMS).'."\n" + ."\n" + .'- **KmsKeyExpireInterval**: The key rotation period. Unit: seconds. Valid values: **60 to 3600.**'."\n" + ."\n" + .'> When you use Digital Rights Management (DRM) encryption, you cannot modify KmsKeyID.', 'type' => 'string', 'required' => false, 'example' => '{"EncryptType": "aliyun", "KmsKeyID":"afce5722-81d2-43c3-9930-7601da11****","KmsKeyExpireInterval":"3600"}', 'title' => ''], + ], + [ + 'name' => 'ResWithSource', + 'in' => 'query', + 'schema' => ['description' => 'The adaptive resolution settings. If specified, it overrides the Height and Width parameters. Fieds:'."\n" + ."\n" + .'- **Type (string):** Required. Valid values:'."\n" + ."\n" + .' - **short**: sets the shorter edge of the video to the specified value and scales the other edge to maintain the original aspect ratio.'."\n" + ."\n" + .' - **long**: sets the longer edge of the video to the specified value and scales the other edge to maintain the original aspect ratio.'."\n" + ."\n" + .' - **screen**: Matches the output to a standard resolution, automatically flipping the dimensions based on the source\'s orientation.'."\n" + ."\n" + .'- **Value (string):** Required. Valid values:'."\n" + ."\n" + .' - For short: 360, 480, 540, 720, and 1080.'."\n" + ."\n" + .' - For long: 640, 848, 960, 1280, and 1920.'."\n" + ."\n" + .' - For screen: 640×360, 848×480, 960×540, 1280×720, and 1920×1080.', 'type' => 'string', 'required' => false, 'example' => '{"Type":"short","Value":"1080"}', 'title' => ''], + ], + [ + 'name' => 'FpsWithSource', + 'in' => 'query', + 'schema' => ['description' => 'Adapts the output frame rate based on the source\'s frame rate, while keeping it within a specified range. If specified, it overrides the FPS parameter. Fields:'."\n" + ."\n" + .'- **UpLimit (integer):** Required. The upper limit of the frame rate. This must be an integer from 1 to 60 and greater than the lower limit.'."\n" + ."\n" + .'- **LowerLimit (integer):** Required. The lower limit of the frame rate. This must be an integer from 1 to 60 and less than the upper limit.', 'type' => 'string', 'required' => false, 'example' => '{"UpLimit":60,"LowerLimit":1}', 'title' => ''], + ], + [ + 'name' => 'BitrateWithSource', + 'in' => 'query', + 'schema' => ['description' => 'The adaptive bitrate settings. If specified, it overrides the VideoBitrate parameter. Fields:'."\n" + ."\n" + .'- **UpLimit (integer):** Required. The upper limit of the bitrate. This must be an integer from 128 to 10000 and greater than the lower limit.'."\n" + ."\n" + .'- **LowerLimit (integer):** Required. The lower limit of the bitrate. This must be an integer from 128 to 10000 and less than the upper limit.'."\n" + ."\n" + .'- **Factor (float):** Required: The factor by which the source bitrate is multiplied to calculate the output bitrate. Valid values: 0.1 to 1. The value can be accurate to one decimal place. A value of 1 indicates that the output bitrate is the same as the source bitrate.', 'type' => 'string', 'required' => false, 'example' => '{"UpLimit":2500,"LowerLimit":800,"Factor":1}', 'title' => ''], + ], + [ + 'name' => 'ExtWithSource', + 'in' => 'query', + 'schema' => ['description' => 'Other adaptive settings that align the transcoded stream with the source stream. Fields:'."\n" + ."\n" + .'- **KeyFrameOpen**: Specifies whether to align keyframes with the source stream. Valid values: yes and no.'."\n" + ."\n" + .'- **Copyts (string)**: Specifies whether to align the presentation timestamp (PTS) with the source stream. Valid values: yes and no.'."\n" + ."\n" + .'- **SeiMode**: The pass-through mode for Supplemental Enhancement Information (SEI). Valid values: 0 (disabled), 1 (pass through partial parameters), and 2 (pass through all).', 'type' => 'string', 'required' => false, 'example' => '{"KeyFrameOpen":"yes","Copyts":"yes","SeiMode":1}', 'title' => ''], + ], + [ + 'name' => 'DeInterlaced', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to automatically detect and remove interlacing during transcoding. Deinterlacing converts interlaced video into progressive video.'."\n" + ."\n" + .'- true: enables deinterlacing.'."\n" + ."\n" + .'- false: keeps the source format. This is the default value.', 'type' => 'boolean', 'required' => false, 'title' => '', 'example' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => 'The request ID.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'SubId' => [ - 'description' => 'The ID of the subscription.'."\n", - 'type' => 'string', - 'example' => 'Sub-******9799B2C4500******', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'TemplateLimit', 'errorMessage' => '%s Please check and try again later.', 'description' => 'The number of templates reached the upper limit.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"SubId\\": \\"Sub-******9799B2C4500******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n Sub-******9799B2C4500******\\n","errorExample":""}]', - 'title' => 'CreateRtcMPUEventSub', - 'description' => 'You can call this operation to create a subscription to mixed-stream relay events. You can configure parameters such as the callback URL, application to which you want to subscribe, and channel information when you create a subscription.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## Sample callback'."\n" - ."\n" - .'Callbacks are sent to your application server as **HTTP or HTTPS POST** requests. The request is encoded in **UTF-8** and the request body is a **JSON** struct. The callback request is successful if the **HTTP status code 200** is returned. Sample code:'."\n" - ."\n" - .'**Note** We recommend that you check both the callback information and the active stream status provided by your CDN vendor to determine whether the mixed-stream relay task is normal.'."\n" - ."\n" - .'```'."\n" - .'{'."\n" - .' "EventType": 1,'."\n" - .' "MsgId": "42bba8b5-94ab-468c-9dae-9b501dd****",'."\n" - .' "AppId": "rtcdev",'."\n" - .' "SubId": "Sub-9799B2C45009799B2*****",'."\n" - .' "TaskId": "mpucallbacktest",'."\n" - .' "CallbackTs": 1712656430476,'."\n" - .' "Payload": {'."\n" - .' "DstUrl": "rtmp://domain/app/stream?auth",'."\n" - .' "EventTs": 1712656430384,'."\n" - .' "EventCode": 1,'."\n" - .' "ErrorCode": 0,'."\n" - .' "ErrorMessage": ""'."\n" - .' }'."\n" - .'}'."\n" - .'```'."\n" - ."\n" - .'### Callback information'."\n" - ."\n" - .'The following table describes the fields that are included in the callback header.'."\n" - ."\n" - .'|Field|Description|'."\n" - .'|---|---|'."\n" - .'|Content-Type|The data type. Set the value to application/json.|'."\n" - .'|Ali-Rtc-Timestamp|The timestamp.|'."\n" - .'|Ali-Rtc-Signature|The signature value.|'."\n" - ."\n" - .'The following table describes the fields that are included in the callback message.'."\n" - ."\n" - .'|Field|Type|Description|Example|'."\n" - .'|---|---|---|---|'."\n" - .'|EventType|Integer|The type of the callback event. 1 is returned for mixed-stream relay event callbacks.|1|'."\n" - .'|MsgId|String|The unique ID of the callback.|\\*\\*\\*\\*\\*973C-4529-A334\\*\\*\\*\\*\\*|'."\n" - .'|AppId|String|The ID of the application.|yourAppId|'."\n" - .'|SubId|String|The ID of the subscription.|Sub-\\*\\*\\*\\*\\*\\*9799B2C4500\\*\\*\\*\\*\\*\\*|'."\n" - .'|TaskId|String|The ID of the stream relay task.|yourTaskId|'."\n" - .'|CallbackTs|Integer|The time when the callback request was initiated. The value must be a timestamp in milliseconds.|1712656430476|'."\n" - .'|Payload|JSON Object|The information about the callback event.|\\-|'."\n" - ."\n" - .'* The following table describes the fields in Payload.'."\n" - ."\n" - .'|Field|Type|Description|Example|'."\n" - .'|---|---|---|---|'."\n" - .'|DstUrl|String|The destination URL.|rtmp://domain/app/stream?auth|'."\n" - .'|EventTs|Integer|The time when the callback event occurred. The value must be a timestamp in milliseconds.|1712656430384|'."\n" - .'|EventCode|Integer|The callback event code.|1|'."\n" - .'|ErrorCode|Integer|The error code.|10001|'."\n" - .'|ErrorMessage|String|The error message.|rtmp server init failed|'."\n" - ."\n" - .'## Callback event codes'."\n" - ."\n" - .'|Field|Value|Description|Callback interval|'."\n" - .'|---|---|---|---|'."\n" - .'|MPU\\_STATE\\_PREPARING|0|The stream relay task is created.|Only one callback is fired.|'."\n" - .'|MPU\\_STATE\\_ESTABLISHING|1|The stream relay task is being connected.|Every 5 seconds|'."\n" - .'|MPU\\_STATE\\_RUNNING|2|The stream relay task is in progress.|Only one callback is fired.|'."\n" - .'|MPU\\_STATE\\_RECOVERING|3|The stream relay task is interrupted and being recovered.|Every 5 seconds|'."\n" - .'|MPU\\_STATE\\_TERMINATED|4|The stream relay task ends. You can differentiate whether the task is completed, failed to start, or unexpectedly exited based on ErrorCode and ErrorMessage.|Only one callback is fired.|'."\n" - ."\n" - .'The following flowchart describes the lifecycle of a callback event:![](https://img.alicdn.com/imgextra/i2/O1CN01iLaeA81U5w9M3xI5x_!!6000000002467-2-tps-2116-624.png) **Note:**'."\n" - ."\n" - .'1. Callback information may be sent to your business server out of order. You can sort events by using EventTs in Payload. This allows you to ignore callbacks of expired events and helps you obtain the latest callback information.'."\n" - .'2. If you create a mixed-stream relay task by calling the [StartLiveMPUTask (new)](~~2848199~~) operation, the task automatically stops when all users in the room leave for a specific period of time. The MPU\\_STATE\\_TERMINATED callback is fired when the task stops.'."\n" - .'3. Callback configurations affect only incremental tasks. The following rules apply:'."\n" - ."\n" - .'a. No callback is fired for tasks that are created before the callback configurations are set.'."\n" - ."\n" - .'b. Callbacks are fired for tasks that are created after the callback configurations are set.'."\n" - ."\n" - .'c. Callbacks are fired for tasks that are created before the callback configurations are deleted.'."\n" - ."\n" - .'d. No callback is fired for tasks that are created before after the callback configurations are deleted.'."\n" - ."\n" - .'### Callback error codes'."\n" + 'title' => 'UpdateCustomLiveStreamTranscode', + 'summary' => 'Updates a custom transcoding configuration.', + 'description' => 'This operation supports the following types of custom transcoding templates:'."\n" ."\n" - .'When a stream relay task ends, you can check the cause based on ErrorCode and ErrorMessage.'."\n" + .'- h264: H.264 standard transcoding.'."\n" ."\n" - .'|Error code|Error message|Description|'."\n" - .'|---|---|---|'."\n" - .'|0||The task is completed.|'."\n" - .'|10001|rtmp server init failed|The connection failed to be established.|'."\n" - .'|10002|rtmp server internal error|An internal error occurred and the task failed.|'."\n" - .'|10003|task idle timeout|The task was idle for too long and timed out.|'."\n" + .'- h264-nbhd: H.264 Narrowband HD™ transcoding.'."\n" ."\n" - .'## Callback authentication'."\n" + .'- h265: H.265 standard transcoding.'."\n" ."\n" - .'By default, callback authentication is enabled. The following authentication logic applies:'."\n" + .'- h265-nbhd: H.265 Narrowband HD™ transcoding.'."\n" ."\n" - .'* When ApsaraVideo Live initiates a callback request, it includes the Ali-Rtc-Timestamp and Ali-Rtc-Signature headers in the HTTP or HTTPS request so that the callback message receiving server can authenticate the signature. The value of the Ali-Rtc-Signature header is calculated by using the following formula: Ali-Rtc-Signature = MD5SUM(MD5CONTENT). In the formula, MD5CONTENT is a string in the following format: Callback domain name|Ali-Rtc-Timestamp value|Authentication key. The callback domain name is the domain name in the callback URL. The authentication key is the AppKey of the application.'."\n" - .'* After receiving a callback message, the callback message receiving server concatenates the callback domain name, value of the Ali-Rtc-Timestamp header, and authentication key in the preceding format. The server calculates the MD5 value of the string to obtain an encrypted string. Then, the server compares the encrypted string with the value of the Ali-Rtc-Signature header in the HTTP or HTTPS request initiated by Real-Time Communication (RTC). If the two values are different, the request is invalid.'."\n" + .'- audio: an audio-only transcoding.'."\n" ."\n" - .'## Callback retry'."\n" + .'## QPS limit'."\n" ."\n" - .'After Alibaba Cloud initiates a callback request, the callback is considered successful only if the HTTP status code 200 is returned by your business server. If a callback fails, ApsaraVideo Live resends the callback request 7 times at intervals of 1 second, 2 seconds, 5 seconds, 10 seconds, 60 seconds, 120 seconds, and 300 seconds. A callback record is generated each time a callback request is resent.', - ], - 'UpdateRtcMPUEventSub' => [ - 'summary' => 'Updates a subscription to mixed-stream relay events.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 6,000 times per second per account.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateCustomLiveStreamTranscode'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateCustomLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'UpdateEdgeTranscodeJob' => [ + 'summary' => 'Updates an edge transcoding job.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '219223', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application.'."\n" - ."\n" - .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ChannelIds', + 'name' => 'ClusterId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the channel to which you want to send mixed-stream relay event callbacks. Separate multiple channel IDs with commas (,).'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If you leave this parameter empty, you are subscribed to all mixed-stream relay events submitted in the application.'."\n" - ."\n" - .'* You cannot specify duplicate channel IDs. You can specify up to 20 channel IDs in each call.'."\n" - .'* The ID can be up to 64 characters in length and contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yourChannelIds', - ], + 'schema' => ['description' => 'The data center ID.', 'type' => 'string', 'required' => true, 'example' => '******3b-4d18-395c-8106-ff21a6******', 'title' => ''], ], [ - 'name' => 'CallbackUrl', + 'name' => 'JobId', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL.'."\n" - ."\n" - .'> You can use headers such as HTTP and HTTPS in callback URLs. The URL can be up to 2,083 characters and contain letters, digits, and the following special characters: - \\_ ? % = # . / +'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://****.com/callback', - ], + 'schema' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'required' => true, 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => ['description' => 'The job name.', 'type' => 'string', 'required' => false, 'example' => 'task1', 'title' => ''], + ], + [ + 'name' => 'TemplateId', + 'in' => 'query', + 'schema' => ['description' => 'The template ID.', 'type' => 'string', 'required' => false, 'example' => '****96e8864746a0b6f3****', 'title' => ''], + ], + [ + 'name' => 'StreamInput', + 'in' => 'query', + 'schema' => ['description' => 'The input stream URL.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://mydomain/app/stream1', 'title' => ''], + ], + [ + 'name' => 'StreamOutput', + 'in' => 'query', + 'schema' => ['description' => 'The output stream URL.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://testdomain/app/stream2', 'title' => ''], ], ], 'responses' => [ @@ -65346,63 +53913,61 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], + 'JobId' => ['description' => 'The ID of the edge transcoding job.', 'type' => 'string', 'example' => '****20b48fb04483915d4f2cd8ac****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], + ['errorCode' => 'OperationDenied', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation rejected, please check and try again.'], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', - ], + [ + ['errorCode' => 'TemplateNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The template does not exist. Please check and try again.'], + ['errorCode' => 'JobNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Task does not exist, please check and try again.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'UpdateRtcMPUEventSub', - 'description' => '* You can call this operation to update a subscription to mixed-stream relay events. You can modify parameters such as the callback URL and channel IDs.'."\n" - .'* Before you call this operation, make sure that you have called the CreateRtcMPUEventSub operation to create the subscription.'."\n" + 'title' => 'UpdateEdgeTranscodeJob', + 'description' => '- This operation updates an edge transcoding job.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'- To call this operation, you must have permissions to access the edge transcoding service. The transcoding job must not have been started.'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteRtcMPUEventSub' => [ - 'summary' => 'Deletes a subscription to mixed-stream relay events.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for this operation is 6,000 calls per minute per user. If you exceed this limit, API calls are throttled. This may impact your business. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateEdgeTranscodeJob'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"JobId\\": \\"****20b48fb04483915d4f2cd8ac****\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'UpdateEventSub' => [ + 'methods' => ['post'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], @@ -65411,613 +53976,293 @@ 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '219225', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application.'."\n" - ."\n" - .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The application ID.', 'type' => 'string', 'required' => true, 'example' => '9qb1****', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - ], - 'description' => '', - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n","errorExample":""}]', - 'title' => 'DeleteRtcMPUEventSub', - 'description' => '* You can call this operation to delete a subscription to mixed-stream relay events.'."\n" - .'* Before you call this operation, make sure that you have called the CreateRtcMPUEventSub operation to create the subscription.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeRtcMPUEventSub' => [ - 'summary' => 'Queries information about a subscription to mixed-stream relay events.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '219226', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], - ], - 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'SubscribeId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of your application.'."\n" - ."\n" - .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores, and hyphens (-).', - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], - ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'SubInfo' => [ - 'description' => 'The information about the subscription.', - 'type' => 'object', - 'properties' => [ - 'SubId' => [ - 'description' => 'The ID of the subscription.', - 'type' => 'string', - 'example' => 'Sub-******9799B2C4500******', - ], - 'AppId' => [ - 'description' => 'The application ID. You can specify only one application ID.'."\n", - 'type' => 'string', - 'example' => 'yourAppId', - ], - 'ChannelIds' => [ - 'description' => 'The ID of the channel to which mixed-stream relay event callbacks are sent. Multiple channel IDs are separated by commas (,). If this parameter is not returned, mixed-stream relay event callbacks are sent to all channels.', - 'type' => 'string', - 'example' => 'yourCh1,yourCh2', - ], - 'CreateTime' => [ - 'description' => 'The time when the event callback was fired. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ss format. The time is displayed in UTC.', - 'type' => 'string', - 'example' => '2024-04-09 18:00:00Z', - ], - 'CallbackUrl' => [ - 'description' => 'The callback URL.', - 'type' => 'string', - 'example' => 'http://testcallback***.com/callback', - ], - ], - ], - ], - ], - ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', - ], - ], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"SubInfo\\": {\\n \\"SubId\\": \\"Sub-******9799B2C4500******\\",\\n \\"AppId\\": \\"yourAppId\\",\\n \\"ChannelIds\\": \\"yourCh1,yourCh2\\",\\n \\"CreateTime\\": \\"2024-04-09 18:00:00Z\\",\\n \\"CallbackUrl\\": \\"http://testcallback***.com/callback\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n \\n Sub-******9799B2C4500******\\n yourAppId\\n yourCh1,yourCh2\\n 2024-04-09 18:00:00Z\\n http://testcallback***.com/callback\\n \\n","errorExample":""}]', - 'title' => 'DescribeRtcMPUEventSub', - 'description' => '### Usage notes'."\n" - .'- You can call this operation to query information about a subscription to mixed-stream relay events. '."\n" - .'- Before you call this operation, make sure that you have called the CreateRtcMPUEventSub operation to create the subscription. '."\n" - .'### QPS limit'."\n" - .'- You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).', - ], - 'ListRtcMPUEventSubRecord' => [ - 'summary' => 'Queries the callback records of a subscription to mixed-stream relay events.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'list', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '225589', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', + 'schema' => ['description' => 'The subscription ID. You can obtain the ID from the response to the [CreateEventSub](~~2848209~~) operation.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'ad53276431c****'], ], - ], - 'parameters' => [ [ - 'name' => 'AppId', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application.'."\n" - ."\n" - .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'yourAppId', - ], + 'schema' => ['description' => 'The channel ID. You can call the [ListEventSub](~~2848210~~) operation to query the channel ID.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- This parameter is required if you specify the Users.N parameter.'."\n" + ."\n" + .'- If you set this parameter to \\* or do not specify this parameter, all channels are subscribed to.'."\n" + ."\n" + .'- You can create up to 20 subscriptions for each application ID.', 'type' => 'string', 'required' => false, 'example' => '123333', 'title' => ''], ], [ - 'name' => 'SubId', + 'name' => 'Users', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The ID of the subscription.'."\n", - 'type' => 'string', + 'title' => '', + 'description' => 'The user whose events you want to subscribe to.', + 'type' => 'array', + 'items' => ['description' => 'The user whose events you want to subscribe to. If you do not specify this parameter, the events of all users in the channel are subscribed to, including the events of the streamer and viewers.', 'type' => 'string', 'required' => false, 'example' => 'user1', 'title' => ''], 'required' => false, - 'example' => 'yourSubId', - ], - ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '1970-01-01T00:00:00Z', - ], - ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '1970-01-01T00:00:00Z', + 'maxItems' => 30, + 'example' => '', ], ], [ - 'name' => 'PageSize', + 'name' => 'Events', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The number of entries per page. Valid values: 1 to 100.'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'title' => 'ChannelEvent, UserEvent', + 'description' => 'The type of the events to which you want to subscribe.', + 'type' => 'array', + 'items' => ['description' => 'The type of the events to which you want to subscribe. Valid values:'."\n" + ."\n" + .'- ChannelEvent: channel events'."\n" + ."\n" + .'- UserEvent: user events in the channel', 'type' => 'string', 'required' => true, 'example' => 'ChannelEvent', 'title' => ''], 'required' => true, - 'example' => '10', + 'maxItems' => 5, + 'example' => '', ], ], [ - 'name' => 'PageNo', + 'name' => 'CallbackUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '20', - ], + 'schema' => ['description' => 'The callback URL. For more information about the callback content, see CreateEventSub.', 'type' => 'string', 'required' => true, 'title' => '', 'example' => 'http://****.com/callback'], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'title' => 'Schema of Response', + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'Count' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1', - ], - 'HasMore' => [ - 'description' => 'Indicates whether the current page is followed by a page.'."\n", - 'type' => 'boolean', - 'example' => 'false', - ], - 'Logs' => [ - 'description' => 'The callback records.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The callback record.'."\n", - 'type' => 'object', - 'properties' => [ - 'AppId' => [ - 'description' => 'The ID of the application.'."\n", - 'type' => 'string', - 'example' => 'yourAppId', - ], - 'SubId' => [ - 'description' => 'The ID of the subscription.'."\n", - 'type' => 'string', - 'example' => 'Sub-******9799B2C4500******', - ], - 'MsgId' => [ - 'description' => 'The ID of the callback record.'."\n", - 'type' => 'string', - 'example' => '42bba8b5-********-9b501dd6cb6e', - ], - 'Data' => [ - 'description' => 'For more information about the callback, see [CreateRtcMPUEventSub](~~2804583~~).'."\n", - 'type' => 'string', - 'example' => '{\\"EventType\\":1,\\"MsgId\\":\\"42bba8b5-94ab-468c-9dae-9b501dd6c***\\",\\"AppId\\":\\"rtcdev\\",\\"SubId\\":\\"Sub-9799B2C45009799B2C4***\\",\\"TaskId\\":\\"mpucallbacktest\\",\\"CallbackTs\\":1712656430***,\\"Payload\\":{\\"DstUrl\\":\\"rtmp://domain/app/stream?auth\\",\\"EventTs\\":1712656430***,\\"EventCode\\":1,\\"ErrorCode\\":0,\\"ErrorMessage\\":\\"\\"}}', - ], - 'Time' => [ - 'description' => 'The time when the callback was invoked. The time follows the ISO 8601 standard in the YYYY-MM-DDThh:mm:ss format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '1970-01-01T00:00:00Z', - ], - 'Cost' => [ - 'description' => 'The callback duration. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '22', - ], - 'CallbackUrl' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'example' => 'http://testcallback***.com/callback', - ], - 'HTTPCode' => [ - 'description' => 'The HTTP status code. 200 indicates that the callback is successful.'."\n", - 'type' => 'string', - 'example' => '200', - ], - ], - ], - ], + 'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => 'AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08'], ], - 'description' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidAppId', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParam', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InputInvalid', 'errorMessage' => '%s.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'QuotaLimitError', 'errorMessage' => '%s.', 'description' => 'For each AppId, a maximum of 20 subscriptions are allowed at the same time, and only one full channel subscription is allowed.'], + ['errorCode' => 'ErrorInvalidCallBackUrl', 'errorMessage' => '%s.', 'description' => 'The CallBackURL is invalid, please check and try again.'], ], 403 => [ - [ - 'errorCode' => 'OperationDenied', - 'errorMessage' => 'Your account has not enabled the Live service', - ], - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'NoAuth', 'errorMessage' => '%s.', 'description' => 'No permission'], + ], + [ + ['errorCode' => 'ResourceNotExist', 'errorMessage' => '%s.', 'description' => 'The requested resource does not exist, please check and try again'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'InternalError', - ], + ['errorCode' => 'ServerError', 'errorMessage' => '%s.', 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"Count\\": 1,\\n \\"HasMore\\": false,\\n \\"Logs\\": [\\n {\\n \\"AppId\\": \\"yourAppId\\",\\n \\"SubId\\": \\"Sub-******9799B2C4500******\\",\\n \\"MsgId\\": \\"42bba8b5-********-9b501dd6cb6e\\",\\n \\"Data\\": \\"{\\\\\\\\\\\\\\"EventType\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"MsgId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"42bba8b5-94ab-468c-9dae-9b501dd6c***\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"AppId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"rtcdev\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"SubId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"Sub-9799B2C45009799B2C4***\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"TaskId\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"mpucallbacktest\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"CallbackTs\\\\\\\\\\\\\\":1712656430***,\\\\\\\\\\\\\\"Payload\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"DstUrl\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"rtmp://domain/app/stream?auth\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"EventTs\\\\\\\\\\\\\\":1712656430***,\\\\\\\\\\\\\\"EventCode\\\\\\\\\\\\\\":1,\\\\\\\\\\\\\\"ErrorCode\\\\\\\\\\\\\\":0,\\\\\\\\\\\\\\"ErrorMessage\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"\\\\\\\\\\\\\\"}}\\",\\n \\"Time\\": \\"1970-01-01T00:00:00Z\\",\\n \\"Cost\\": 22,\\n \\"CallbackUrl\\": \\"http://testcallback***.com/callback\\",\\n \\"HTTPCode\\": \\"200\\"\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n ******3B-0E1A-586A-AC29-742247******\\n 1\\n false\\n \\n yourAppId\\n Sub-******9799B2C4500******\\n 42bba8b5-********-9b501dd6cb6e\\n {\\\\\\"EventType\\\\\\":1,\\\\\\"MsgId\\\\\\":\\\\\\"42bba8b5-94ab-468c-9dae-9b501dd6c***\\\\\\",\\\\\\"AppId\\\\\\":\\\\\\"rtcdev\\\\\\",\\\\\\"SubId\\\\\\":\\\\\\"Sub-9799B2C45009799B2C4***\\\\\\",\\\\\\"TaskId\\\\\\":\\\\\\"mpucallbacktest\\\\\\",\\\\\\"CallbackTs\\\\\\":1712656430***,\\\\\\"Payload\\\\\\":{\\\\\\"DstUrl\\\\\\":\\\\\\"rtmp://domain/app/stream?auth\\\\\\",\\\\\\"EventTs\\\\\\":1712656430***,\\\\\\"EventCode\\\\\\":1,\\\\\\"ErrorCode\\\\\\":0,\\\\\\"ErrorMessage\\\\\\":\\\\\\"\\\\\\"}}\\n \\n 22\\n http://testcallback***.com/callback\\n 200\\n \\n","errorExample":""}]', - 'title' => 'ListRtcMPUEventSubRecord', - 'description' => 'You can call this operation to query the callback records of a subscription to mixed-stream relay events in the last seven days.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'title' => 'UpdateEventSub', + 'summary' => 'Updates a callback that is used to subscribe to channel or user events.', + 'description' => '- Before you call this operation, make sure that you have called the [CreateEventSub](~~2848209~~) operation to create a callback that is used to subscribe to channel or user events.'."\n" + ."\n" + .'- An existing channel that you specify in this operation still uses its original callback configuration. The updated configuration can apply to the channel only if you restart the channel after it is closed for longer than 20 minutes.'."\n" + ."\n" + .'- If you only want to update specific parameters, you must also specify the other required parameters with their original values.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveInteractionMetricData' => [ - 'summary' => 'Queries the metric data of ApsaraVideo Real-time Communication (ARTC).', - 'methods' => [ - 'get', - 'post', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateEventSub'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:UpdateEventSub', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"AE050E24-BE9B-1E79-BB30-7EA0BBAE7F08\\"\\n}","type":"json"}]', + ], + 'UpdateLiveAIProduceRules' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'deprecated' => false, + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'none', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '193672', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', - ], + 'abilityTreeCode' => '218935', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ - 'name' => 'MetricType', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The metric. Valid values:'."\n" - ."\n" - .'* JoinChannelSucRate: the success rate of joining a channel within 5 seconds.'."\n" - .'* VideoStuckRate: the video stuttering rate.'."\n" - .'* AudioStuckRate: the audio stuttering rate.'."\n" - .'* FirstFrameCost: the time to first frame.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'FirstFrameCost', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'BeginTs', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. The value is a UNIX timestamp. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '1698195600000', - ], + 'schema' => ['description' => 'The primary playback domain name.', 'type' => 'string', 'required' => true, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'EndTs', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The value is a UNIX timestamp. Unit: milliseconds.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => true, - 'example' => '1698201013000', - ], + 'schema' => ['description' => 'The name of the live streaming application.', 'type' => 'string', 'required' => true, 'example' => 'AppName', 'title' => ''], ], [ - 'name' => 'Os', + 'name' => 'Suffix', 'in' => 'query', - 'schema' => [ - 'description' => 'The operating system. Valid values: iOS and Android.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'Android', - ], + 'schema' => ['description' => 'The suffix to match.', 'type' => 'string', 'required' => false, 'example' => 'test01', 'title' => ''], ], [ - 'name' => 'TerminalType', + 'name' => 'SubtitleName', 'in' => 'query', - 'schema' => [ - 'description' => 'The terminal type. Valid values: web and mobile.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'mobile', - ], + 'schema' => ['description' => 'The name of the caption template.', 'type' => 'string', 'required' => false, 'example' => 'sub01', 'title' => ''], ], [ - 'name' => 'AppId', + 'name' => 'StudioName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the application.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'e4d7f08a-01fe-41b5-a091-fe41060a****', - ], + 'schema' => ['description' => 'The name of the virtual background template.', 'type' => 'string', 'required' => false, 'example' => 'sub02', 'title' => ''], ], [ - 'name' => 'ChannelId', + 'name' => 'IsLazy', 'in' => 'query', - 'schema' => [ - 'title' => '管道ID'."\n" - .'频道标识', - 'type' => 'string', - ], + 'schema' => ['description' => 'Specifies whether the caption is triggered by stream pulling. Valid values:'."\n" + ."\n" + .'- true: The caption is enabled when stream pulling starts. If no stream pulling occurs within 5 minutes, the caption is disabled. The caption is enabled again the next time stream pulling starts.'."\n" + ."\n" + .'- false: The caption is enabled as long as stream ingest is active, regardless of whether stream pulling is active.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + [ + 'name' => 'RulesId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the caption rule.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d -8f29-4bec2eb9****', 'title' => ''], + ], + [ + 'name' => 'LiveTemplate', + 'in' => 'query', + 'schema' => ['description' => 'The specifications of the output caption. Valid values:'."\n" + ."\n" + .'- Landscape low definition (360p, 640 × 360): `lp_ld`'."\n" + ."\n" + .'- Portrait low definition (360p, 360 × 640): `lp_ld_v`'."\n" + ."\n" + .'- Landscape standard definition (480p, 854 × 480): `lp_sd`'."\n" + ."\n" + .'- Portrait standard definition (480p, 480 × 854): `lp_sd_v`'."\n" + ."\n" + .'- Landscape high definition (720p, 1280 × 720): `lp_hd`'."\n" + ."\n" + .'- Portrait high definition (720p, 720 × 1280): `lp_hd_v`'."\n" + ."\n" + .'- Landscape ultra-high definition (1080p, 1920 × 1080): `lp_ud`'."\n" + ."\n" + .'- Portrait ultra-high definition (1080p, 1080 × 1920): `lp_ud_v`', 'type' => 'string', 'required' => false, 'example' => 'lp_ld', 'title' => ''], + ], + [ + 'name' => 'SubtitleId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the caption template.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => ['description' => 'The description of the caption rule. The description can be up to 128 characters long and can contain Chinese characters, letters, digits, and special characters.', 'type' => 'string', 'required' => false, 'example' => 'live AI subtitle template', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', 'type' => 'object', 'properties' => [ - 'Nodes' => [ - 'description' => 'The node data.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Timestamp' => [ - 'description' => 'The time when the metric was queried. The value is a UNIX timestamp. Unit: milliseconds.'."\n", - 'type' => 'string', - 'example' => '1548670257000', - ], - 'Value' => [ - 'description' => 'The value of the metric.'."\n", - 'type' => 'string', - 'example' => '66.670000', - ], - ], - ], - ], - 'RequestId' => [ - 'title' => 'Id', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'A01C98C5-25AE-124A-83FE-514DF5C5BE36', - ], - 'SummaryData' => [ - 'description' => 'The summary data.'."\n", - 'type' => 'string', - 'example' => '2000', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', - ], - ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', - ], - ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', - ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', - ], - ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', - ], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Nodes\\": [\\n {\\n \\"Timestamp\\": \\"1548670257000\\",\\n \\"Value\\": \\"66.670000\\"\\n }\\n ],\\n \\"RequestId\\": \\"A01C98C5-25AE-124A-83FE-514DF5C5BE36\\",\\n \\"SummaryData\\": \\"2000\\"\\n}","errorExample":""},{"type":"xml","example":"\\n A01C98C5-25AE-124A-83FE-514DF5C5BE36\\n 2000\\n \\n 1548670257000\\n 66.670000\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveInteractionMetricData', - 'description' => '* You can query data in the last 30 days. The time range for a query cannot exceed 24 hours.'."\n" - .'* The time granularity for a query is 5 minutes.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'eventInfo' => [ + 'enable' => false, + 'eventNames' => [], + ], + 'title' => 'UpdateLiveAIProduceRules', + 'summary' => 'Updates a caption rule.', + 'description' => 'This operation updates the parameters for a specified caption rule.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'>'."\n" ."\n" - .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'CreateRtcAsrTask' => [ - 'summary' => 'Creates a live subtitle task to transcribe an audio stream to text in real time.', - 'methods' => [ - 'post', - 'get', + .'The real-time caption feature is in invitational preview. Each user can add a maximum of 300 caption templates.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for this API operation is 60 per user. If you exceed this limit, API calls are throttled. This may affect your business. Plan your API calls accordingly.', + 'changeSet' => [ + ['createdAt' => '2024-10-14T03:46:55.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-07-04T02:57:18.000Z', 'description' => 'Request parameters changed'], ], - 'schemes' => [ - 'http', - 'https', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAIProduceRules'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAIProduceRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', + ], + 'UpdateLiveAISubtitle' => [ + 'summary' => 'Updates a subtitle template by calling UpdateLiveAISubtitle.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -66025,182 +54270,134 @@ ], 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '219527', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '218740', + 'abilityTreeNodes' => ['FEATUREliveY7SMJ1'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Mode', + 'name' => 'SubtitleName', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the stream. Valid values: live and rtc. The value live specifies a regular live stream, such as a Real-Time Messaging Protocol (RTMP) stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'live', - 'enum' => [ - 'rtc', - 'live', - ], - ], + 'schema' => ['description' => 'The name of the subtitle template. The name can contain only digits, letters, and hyphens (-). The name cannot start with a hyphen.', 'type' => 'string', 'required' => false, 'example' => 'live AI subtitle template', 'title' => ''], ], [ - 'name' => 'SDKAppID', + 'name' => 'SrcLanguage', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the ApsaraVideo Real-time Communication (ARTC) application.'."\n" - ."\n" - .'> This parameter is required and takes effect only if you set the Mode parameter to rtc.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'appId', - ], + 'schema' => ['description' => 'The source language. Valid values:'."\n" + .'- en-US: English'."\n" + .'- zh-CN: Chinese'."\n" + .'- ru-RU: Russian.', 'type' => 'string', 'required' => false, 'example' => 'zh-CN', 'title' => ''], ], [ - 'name' => 'ChannelID', + 'name' => 'DstLanguage', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the channel.'."\n" - ."\n" - .'> This parameter is required and takes effect only if you set the Mode parameter to rtc.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'channelId', - ], + 'schema' => ['description' => 'The target language for translation. Valid values:'."\n" + .'- en-US: English'."\n" + .'- zh-CN: Chinese'."\n" + .'- es-ES: Spanish'."\n" + .'- ru-RU: Russian.', 'type' => 'string', 'required' => false, 'example' => 'zh-CN', 'title' => ''], ], [ - 'name' => 'RtcUserId', + 'name' => 'FontColor', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the user who ingests the stream.'."\n" - ."\n" - .'> This parameter is required and takes effect only if you set the Mode parameter to rtc. You can specify only one user ID.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'user1', - ], + 'schema' => ['description' => 'The font color. The value is in RGBA format.', 'type' => 'string', 'required' => false, 'example' => '0xFFFFFF', 'title' => ''], ], [ - 'name' => 'StreamURL', + 'name' => 'FontName', + 'in' => 'query', + 'schema' => ['description' => 'The font. Valid values:'."\n" + .'- KaiTi: KaiTi (default)'."\n" + .'- AlibabaPuHuiTi-Regular: Alibaba PuHuiTi Regular'."\n" + .'- AlibabaPuHuiTi-Bold: Alibaba PuHuiTi Bold'."\n" + .'- AlibabaPuHuiTi-Light: Alibaba PuHuiTi Light'."\n" + .'- NotoSansHans-Regular: Noto Sans Hans Regular'."\n" + .'- NotoSansHans-Bold: Noto Sans Hans Bold'."\n" + .'- NotoSansHans-Light: Noto Sans Hans Light.', 'type' => 'string', 'required' => false, 'example' => 'KaiTi', 'title' => ''], + ], + [ + 'name' => 'BgColor', + 'in' => 'query', + 'schema' => ['description' => 'The background color of the subtitle. The value is in RGBA format.', 'type' => 'string', 'required' => false, 'example' => '0xFF0000', 'title' => ''], + ], + [ + 'name' => 'PositionNormalized', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The URL of the live stream.'."\n" - ."\n" - .'> This parameter is required and takes effect only if you set the Mode parameter to live.'."\n", - 'type' => 'string', + 'description' => 'The position of the subtitle, specified as x and y coordinates with the bottom-left corner of the screen as the origin.', + 'type' => 'array', + 'items' => ['description' => 'The coordinate value of the subtitle position.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.32', 'title' => ''], 'required' => false, - 'example' => 'rtmp://xxx', + 'example' => '[0.32,0.27]', + 'title' => '', ], ], [ - 'name' => 'Language', + 'name' => 'ShowSourceLan', 'in' => 'query', - 'schema' => [ - 'description' => 'The source language of the audio. Valid values:'."\n" - ."\n" - .'* ja: Japanese'."\n" - .'* yue: Cantonese'."\n" - .'* fspk: mixed Mandarin and English'."\n" - .'* en: English'."\n" - .'* cn: Mandarin'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn', - ], + 'schema' => ['description' => 'Specifies whether to display the source language. Default value: false.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], [ - 'name' => 'CallbackURL', + 'name' => 'MaxLines', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://xxx.com', - ], + 'schema' => ['description' => 'The number of lines to display.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], ], [ - 'name' => 'AuthKey', + 'name' => 'WordPerLine', 'in' => 'query', - 'schema' => [ - 'description' => 'The AuthKey that is used to generate the MD5 signature in callbacks.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'abcd', - ], + 'schema' => ['description' => 'The number of characters per line. Valid values: integers in the range of [1, 500].', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], ], [ - 'name' => 'TranslateEnabled', + 'name' => 'FontSizeNormalized', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable the translation feature.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The font size. Valid values: [0, 1].', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.037', 'title' => ''], ], [ - 'name' => 'TargetLanguages', + 'name' => 'BorderWidthNormalized', 'in' => 'query', - 'schema' => [ - 'description' => 'The language into which the subtitles are translated. Valid values:'."\n" - ."\n" - .'* cn: Chinese'."\n" - .'* en: English'."\n" - .'* ja: Japanese'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'en', - ], + 'schema' => ['description' => 'The font weight. Valid values: [0, 1].', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.05', 'title' => ''], ], [ - 'name' => 'AutoTerminateEnabled', + 'name' => 'BgWidthNormalized', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to automatically stop the task when the latency exceeds the specified limit. Default value: false.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The background size of the subtitle. Valid values: [0, 1].', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '0.09', 'title' => ''], ], [ - 'name' => 'AutoTerminateDelay', + 'name' => 'SubtitleId', 'in' => 'query', - 'schema' => [ - 'description' => 'The maximum latency at which the task is automatically stopped. Unit: seconds. Valid values: 1 to 10.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '5', - ], + 'schema' => ['description' => 'The ID of the subtitle template.', 'type' => 'string', 'required' => true, 'example' => '597991f3-6ef9-4100-9238-82951de1****', 'title' => ''], ], [ - 'name' => 'ReportInterval', + 'name' => 'Description', 'in' => 'query', - 'schema' => [ - 'description' => 'The interval at which callbacks are returned. Unit: milliseconds. Valid values: -1 and 0 to 500.'."\n" - ."\n" - .'* \\-1: accepts callbacks only for whole sentences, but not for incomplete sentences.'."\n" - .'* 0 or an empty value: returns callbacks in real time.'."\n" - .'* A value that is greater than 0 and less than or equal to 500: returns callbacks at the specified interval.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '5', - ], + 'schema' => ['description' => 'The custom description of the subtitle. The description can contain Chinese characters, letters, digits, and special characters, and cannot exceed 128 characters in length.', 'type' => 'string', 'required' => false, 'example' => 'live AI subtitle template', 'title' => ''], + ], + [ + 'name' => 'Width', + 'in' => 'query', + 'schema' => ['description' => 'The width of the preview screen. Unit: px.', 'type' => 'string', 'required' => false, 'example' => '1280', 'title' => ''], + ], + [ + 'name' => 'Height', + 'in' => 'query', + 'schema' => ['description' => 'The height of the preview screen. Unit: px.'."\n" + ."\n" + .'The width × height of the preview screen supports only the following specifications:'."\n" + .'- Landscape low definition 360P: 640×360'."\n" + .'- Portrait low definition 360P: 360×640'."\n" + .'- Landscape standard definition 480P: 854×480'."\n" + .'- Portrait standard definition 480P: 480×854'."\n" + .'- Landscape high definition 720P: 1280×720'."\n" + .'- Portrait high definition 720P: 720×1280'."\n" + .'- Landscape ultra-high definition 1080P: 1920×1080'."\n" + .'- Portrait ultra-high definition 1080P: 1080×1920.', 'type' => 'string', 'required' => false, 'example' => '720', 'title' => ''], ], ], 'responses' => [ @@ -66208,99 +54405,228 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Description' => [ - 'description' => 'The result of the request. If success is returned, the request is successful. If an error message is returned, the request failed.'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '7FF5417D-06E9-5A2C-9A70-581F6149E6C1', - ], - 'RetCode' => [ - 'description' => 'The returned HTTP status code. HTTP status code 2000 indicates that the request is successful. If another HTTP status code is returned, the request failed.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2000', - ], - 'TaskId' => [ - 'description' => 'The ID of the task.'."\n", - 'type' => 'string', - 'example' => 'asr-a6ac15e0-9118-4b4c-9e64-306163a0****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'String 5c6a2a0df228-4a64- af62-20e91b96****', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Description\\": \\"success\\",\\n \\"RequestId\\": \\"7FF5417D-06E9-5A2C-9A70-581F6149E6C1\\",\\n \\"RetCode\\": 2000,\\n \\"TaskId\\": \\"asr-a6ac15e0-9118-4b4c-9e64-306163a0****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n success\\n 7FF5417D-06E9-5A2C-9A70-581F6149E6C1\\n 2000\\n asr-a6ac15e0-9118-4b4c-9e64-306163a0****\\n","errorExample":""}]', - 'title' => 'CreateRtcAsrTask', - 'description' => 'You can call this operation to create a live subtitle task that transcribes audio in a live stream to text in real time.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"String\\\\t5c6a2a0df228-4a64- af62-20e91b96****\\"\\n}","type":"json"}]', + 'title' => 'Update a subtitle template', + 'description' => '## Operation description'."\n" ."\n" - .'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => '## [](#)Sample callback'."\n" + .'This operation updates the parameters of a specified subtitle template.'."\n" ."\n" - .'Callback content is returned from the specified callback URL. For more information, see [Interaction and implementation](~~2609586~~). Example:'."\n" + .'>The real-time subtitle feature is currently in invitational preview. Each user can add up to 300 subtitle templates.'."\n" + .'>'."\n" ."\n" - .' {'."\n" - .' "task_id": "asr-cf8c70d7-3b8d-496c-98f8-4785******",'."\n" - .' "sdk_app_id": "",'."\n" - .' "channel_id": "",'."\n" - .' "rtc_user_id": "",'."\n" - .' "callback_time_stamp": 1723433155645,'."\n" - .' "language": "cn",'."\n" - .' "content": "{\\"header\\":{\\"nls_task_id\\":\\"af95c5cc332549f689f3153bc9******\\",\\"task_key\\":\\"tl_2977564_17234*****\\",\\"namespace\\":\\"SpeechTranscriber\\",\\"name\\":\\"TranscriptionResultChanged\\",\\"task_id\\":\\"413937911b874146b5796******\\",\\"message_id\\":\\"abfc9e9994e748a38499e1******\\",\\"status_text\\":\\"Success.\\",\\"status\\":20000000},\\"payload\\":{\\"result\\":\\"It\'s an honor to be here with all of you\\",\\"confidence\\":0.0,\\"words\\":[{\\"startTime\\":0,\\"text\\":\\"It\'s an honor\\",\\"endTime\\":510},{\\"startTime\\":510,\\"text\\":\\"to be here\\",\\"endTime\\":1020},{\\"startTime\\":1020,\\"text\\":\\"with\\",\\"endTime\\":1530},{\\"startTime\\":1530,\\"text\\":\\"all of you\\",\\"endTime\\":2040}],\\"index\\":0,\\"time\\":2040,\\"fixed_result\\":\\"\\",\\"unfixed_result\\":\\"\\",\\"status\\":0}}"'."\n" - .' }'."\n", - ], - 'QueryRtcAsrTasks' => [ - 'summary' => 'Queries the status of a speech-to-text or translation task.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 60 calls per second. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation appropriately. For more information, see [QPS limit](~~343507~~).', + 'changeSet' => [ + ['createdAt' => '2024-12-04T05:54:29.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAISubtitle'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAISubtitle', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'UpdateLiveAppRecordConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '219787', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeNodes' => ['FEATUREliveL04ZVK'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the task that you want to query. If you do not specify this parameter, all running tasks under your UID are queried.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'asr-a6ac15e0-9118-4b4c-9e64-306163a0****', - ], + 'schema' => ['description' => 'The AppName of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'OssEndpoint', + 'in' => 'query', + 'schema' => ['description' => 'The endpoint for OSS storage. You must create an OSS bucket before using this feature. See [Configure OSS](~~84932~~).', 'type' => 'string', 'required' => true, 'example' => 'learn.developer.aliyundoc.com', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The name of the live stream.', 'type' => 'string', 'required' => false, 'example' => 'teststream', 'title' => ''], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => ['description' => 'The recording start time. Format: *yyyy-MM-dd*T*HH:mm:ss*Z (UTC time).'."\n" + ."\n" + .'> This parameter is only effective for stream-level recordings (i.e., when `StreamName` is specified). The time must be within 7 days of the actual stream start time.', 'type' => 'string', 'required' => false, 'example' => '2018-04-10T09:57:21Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The recording end time. Format: *yyyy-MM-dd*T*HH:mm:ss*Z (UTC time).'."\n" + ."\n" + .'> This parameter is only effective for stream-level recordings. The interval between EndTime and StartTime cannot exceed 7 days.', 'type' => 'string', 'required' => false, 'example' => '2018-04-16T09:57:21Z', 'title' => ''], + ], + [ + 'name' => 'OnDemand', + 'in' => 'query', + 'schema' => ['description' => 'Specifies the recording mode. Valid values:'."\n" + ."\n" + .'- **0**: disables on-demand recording.'."\n" + ."\n" + .'- **1**: On-demand recording via HTTP callback.'."\n" + ."\n" + .'- **2**: On-demand recording by parsing parameters in the ingest URL.'."\n" + ."\n" + .'- **7**: Manual recording. You can call the [RealTimeRecordCommand](~~2847882~~) API to manually start or stop recording.'."\n" + ."\n" + .'> If you set OnDemand to **1**, you need to call the [AddLiveRecordNotifyConfig](~~2847891~~) API to configure the OnDemandUrl parameter. Otherwise, ApsaraVideo Live does not perform on-demand recording.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + ], + [ + 'name' => 'DelayTime', + 'in' => 'query', + 'schema' => ['description' => 'The window in seconds for merging fragmented recording after an interruption. If a stream disconnects and reconnects within this window, the recording will continue in the same file. Valid values: 15 to 21600.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '180', 'title' => ''], + ], + [ + 'name' => 'RecordFormat', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The recording details.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CycleDuration' => ['description' => 'The duration of a single recording cycle in seconds. If not specified, the default value is 6 hours'."\n" + ."\n" + .'> If a live stream is interrupted during a recording cycle but resumes normal streaming within the merge window, recording will continue in the same file. A recording file is generated only when a live stream is interrupted for longer than the merge window.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], + 'Format' => ['description' => 'The recording format. Valid values:'."\n" + ."\n" + .'>'."\n" + ."\n" + .'If you choose m3u8 or cmaf, you must also set SliceOssObjectPrefix and SliceDuration. At least one of RecordFormat or TranscodeRecordFormat must be specified.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- m3u8'."\n" + ."\n" + .'- flv'."\n" + ."\n" + .'- mp4'."\n" + ."\n" + .'- cmaf', 'type' => 'string', 'required' => false, 'example' => 'm3u8', 'title' => ''], + 'SliceDuration' => ['description' => 'The duration of a single segment. Unit: seconds'."\n" + ."\n" + .'> This parameter takes effect only if you set the RecordFormat.N.Format parameter to m3u8 or cmaf.'."\n" + ."\n" + .'If you do not specify this parameter, the default value 30 seconds is used. Valid values: 5 to 30.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''], + ], + 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 3, + 'title' => '', + 'example' => '', + ], + ], + [ + 'name' => 'TranscodeRecordFormat', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The transcoded stream recording configuration.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CycleDuration' => ['description' => 'The transcoded stream recording cycle. Unit: seconds. If you do not specify this parameter, the default value 6 hours is used.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '21600', 'title' => ''], + 'Format' => ['description' => 'The format of the transcoded stream recording. Valid values:'."\n" + ."\n" + .'> If you choose m3u8 or cmaf, you must specify the TranscodeRecordFormat.N.SliceOssObjectPrefix and TranscodeRecordFormat.N.SliceDuration parameters.'."\n" + ."\n" + .'- m3u8'."\n" + ."\n" + .'- flv'."\n" + ."\n" + .'- mp4'."\n" + ."\n" + .'- cmaf', 'type' => 'string', 'required' => false, 'example' => 'm3u8', 'title' => ''], + 'SliceDuration' => ['description' => 'The duration of a single segment for transcoded stream recording. Unit: seconds.'."\n" + ."\n" + .'> This parameter takes effect only if you set the TranscodeRecordFormat.N.Format parameter to m3u8 or cmaf.'."\n" + ."\n" + .'If you do not specify this parameter, the default value 30 seconds is used. Valid values: 5 to 30.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''], + ], + 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'maxItems' => 3, + 'title' => '', + 'example' => '', + ], + ], + [ + 'name' => 'TranscodeTemplates', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The transcoding template group details.', + 'type' => 'array', + 'items' => ['description' => '- The [transcoding template](~~45039~~). You can configure up to 10 transcoding templates at a time.'."\n" + ."\n" + .'- If you specify the TranscodeRecordFormat.N.xxx parameters, configure at least one transcoding template.'."\n" + ."\n" + .'- To record multiple or all transcoded streams, you can set TranscodeTemplates.1 to \\*\\*\\*\\*\\* (five asterisks).'."\n" + ."\n" + .'> TranscodeTemplates is not allowed to pass in `raw`, which is a reserved identifier.
The .N in TranscodeTemplates.N represents an incremental index for specifying multiple templates. For example: TranscodeTemplates.1=sd, TranscodeTemplates.2=hd.', 'type' => 'string', 'required' => false, 'example' => 'sd', 'title' => ''], + 'required' => false, + 'maxItems' => 10, + 'title' => '', + 'example' => '', + ], ], ], 'responses' => [ @@ -66308,101 +54634,137 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Description' => [ - 'description' => 'The result of the request. If success is returned, the request was successful. If an error message is returned, the request failed.'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'D8ADAB55-1BB8-5C01-8434-C45D353BB1FD', - ], - 'RetCode' => [ - 'description' => 'The HTTP status code. HTTP status code 2000 indicates that the request was successful. Other HTTP status codes indicate that the request failed.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2000', - ], - 'Tasks' => [ - 'description' => 'The results returned for the tasks.'."\n", - 'type' => 'object', - 'additionalProperties' => [ - 'type' => 'any', - 'example' => '"asr-a7bdde0a-0939-4288-973e-170082aa****": { "createdAt": "2024-05-14T11:52:02+08:00", "updatedAt": "2024-05-14T11:52:03+08:00", "mode": "live", "taskId": "asr-a7bdde0a-0939-4288-973e-170082aa****", "language": "cn", "callbackUrl": "default", "autoTerminateDelay": "10", "streamUrl": "http://pull-lveditor.alivecdn.com/caster/9c6c26281a6f4da29af7d3ec84d2****.flv?auth_key=1715745062-0-0-fbc68f2ccebb4d46b5ab6d4801ed****", "status": 1, "reportInterval": "0", "aliUid": "1119309225474343", "tag": "" }', - 'description' => 'The result returned for the task.'."\n", - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidOssBucket.Malformed', 'errorMessage' => 'Specified parameter OssBucket is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.NotFound', 'errorMessage' => 'The parameter OssBucket does not exist.', 'description' => ''], + ['errorCode' => 'InvalidFormat.Malformed', 'errorMessage' => 'Specified parameter Format is not valid.', 'description' => 'Invalid value of Format. Check whether the Format parameter that you specified is correct.'], + ['errorCode' => 'InvalidCycleDuration.Malformed', 'errorMessage' => 'Specified CycleDuration Format is not valid.', 'description' => 'Invalid format of CycleDuration. Check whether the format of the CycleDuration parameter is correct.'], + ['errorCode' => 'InvalidSliceDuration.Malformed', 'errorMessage' => 'Specified SliceDuration Format is not valid.', 'description' => ''], + ['errorCode' => 'InvalidTemplateLength.Malformed', 'errorMessage' => 'Specified record template length is not valid.', 'description' => ''], + ['errorCode' => 'InvalidTemplate.ForbidRaw', 'errorMessage' => 'Template named raw is Forbidden.', 'description' => ''], + ['errorCode' => 'MissingTemplate', 'errorMessage' => 'Template is mandatory for this action.', 'description' => ''], + ['errorCode' => 'MissingOssObjectPrefix', 'errorMessage' => 'OssObjectPrefix is mandatory for this action.', 'description' => ''], + ['errorCode' => 'MissingSliceOssObjectPrefix', 'errorMessage' => 'SliceOssObjectPrefix is mandatory for this action.', 'description' => ''], + ['errorCode' => 'InvalidOssObjectPrefix.Malformed', 'errorMessage' => 'Specified parameter OssObjectPrefix is not valid.', 'description' => ''], + ['errorCode' => 'InvalidSliceOssObjectPrefix.Malformed', 'errorMessage' => 'Specified parameter SliceOssObjectPrefix is not valid.', 'description' => ''], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'InvalidFormat.IllegalOperation', 'errorMessage' => 'Specified parameter Format can not be multiple.', 'description' => ''], + ['errorCode' => 'InvalidDelayTime', 'errorMessage' => 'Specified Delaytime is invalid.', 'description' => ''], + ['errorCode' => 'Live2Vod.ConfigAlreadyExists', 'errorMessage' => 'Had live2vod record config already.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified EndTime does not math the specified StartTime or current time.', 'description' => ''], + ['errorCode' => 'InvalidStartTime.Mismatch', 'errorMessage' => 'Specified StartTime does not math the current time.', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => 'Ram Permission is forbidden.', 'description' => ''], + ['errorCode' => 'InvalidOssEndpoint.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid OssEndpoint, please check and try again.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + ], + 'title' => 'UpdateLiveAppRecordConfig', + 'summary' => 'Updates a live stream recording configuration that saves the output to Object Storage Service (OSS).', + 'description' => '## QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAppRecordConfig'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAppRecordConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Description\\": \\"success\\",\\n \\"RequestId\\": \\"D8ADAB55-1BB8-5C01-8434-C45D353BB1FD\\",\\n \\"RetCode\\": 2000,\\n \\"Tasks\\": {\\n \\"key\\": \\"\\\\\\"asr-a7bdde0a-0939-4288-973e-170082aa****\\\\\\": { \\\\\\"createdAt\\\\\\": \\\\\\"2024-05-14T11:52:02+08:00\\\\\\", \\\\\\"updatedAt\\\\\\": \\\\\\"2024-05-14T11:52:03+08:00\\\\\\", \\\\\\"mode\\\\\\": \\\\\\"live\\\\\\", \\\\\\"taskId\\\\\\": \\\\\\"asr-a7bdde0a-0939-4288-973e-170082aa****\\\\\\", \\\\\\"language\\\\\\": \\\\\\"cn\\\\\\", \\\\\\"callbackUrl\\\\\\": \\\\\\"default\\\\\\", \\\\\\"autoTerminateDelay\\\\\\": \\\\\\"10\\\\\\", \\\\\\"streamUrl\\\\\\": \\\\\\"http://pull-lveditor.alivecdn.com/caster/9c6c26281a6f4da29af7d3ec84d2****.flv?auth_key=1715745062-0-0-fbc68f2ccebb4d46b5ab6d4801ed****\\\\\\", \\\\\\"status\\\\\\": 1, \\\\\\"reportInterval\\\\\\": \\\\\\"0\\\\\\", \\\\\\"aliUid\\\\\\": \\\\\\"1119309225474343\\\\\\", \\\\\\"tag\\\\\\": \\\\\\"\\\\\\" }\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n success\\n D8ADAB55-1BB8-5C01-8434-C45D353BB1FD\\n 2000\\n \\n \\"asr-a7bdde0a-0939-4288-973e-170082aa****\\": { \\"createdAt\\": \\"2024-05-14T11:52:02+08:00\\", \\"updatedAt\\": \\"2024-05-14T11:52:03+08:00\\", \\"mode\\": \\"live\\", \\"taskId\\": \\"asr-a7bdde0a-0939-4288-973e-170082aa****\\", \\"language\\": \\"cn\\", \\"callbackUrl\\": \\"default\\", \\"autoTerminateDelay\\": \\"10\\", \\"streamUrl\\": \\"http://pull-lveditor.alivecdn.com/caster/9c6c26281a6f4da29af7d3ec84d2****.flv?auth_key=1715745062-0-0-fbc68f2ccebb4d46b5ab6d4801ed****\\", \\"status\\": 1, \\"reportInterval\\": \\"0\\", \\"aliUid\\": \\"1119309225474343\\", \\"tag\\": \\"\\" }\\n \\n","errorExample":""}]', - 'title' => 'QueryRtcAsrTasks', - 'description' => 'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', ], - 'StopRtcAsrTask' => [ - 'summary' => 'Stops a live subtitle task.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UpdateLiveAppSnapshotConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', + 'operationType' => 'write', 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '219794', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the task.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'asr-d794cc89-a63e-4d08-8b44-242a6597****', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'TimeInterval', + 'in' => 'query', + 'schema' => ['description' => 'The interval at which snapshots are captured. Valid values: **5 to 3600**. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '3600', 'minimum' => '5', 'example' => '5', 'title' => ''], + ], + [ + 'name' => 'OssEndpoint', + 'in' => 'query', + 'schema' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'required' => false, 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + ], + [ + 'name' => 'OssBucket', + 'in' => 'query', + 'schema' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'required' => false, 'example' => 'liveBucket****', 'title' => ''], + ], + [ + 'name' => 'OverwriteOssObject', + 'in' => 'query', + 'schema' => ['description' => 'The naming format of snapshots that are stored in the overwrite mode, which means that a new snapshot overwrites the previous snapshot.'."\n" + ."\n" + .'- The name must be less than 256 bytes in length.'."\n" + ."\n" + .'- Only JPG images are supported.'."\n" + ."\n" + .'- The name can contain variables such as {AppName} and {StreamName}.'."\n" + ."\n" + .'- A value of hyphen (-) indicates that this parameter is deleted.', 'type' => 'string', 'required' => false, 'example' => '{liveApp****}/{liveStream****}.jpg', 'title' => ''], + ], + [ + 'name' => 'SequenceOssObject', + 'in' => 'query', + 'schema' => ['description' => 'The naming format of snapshots that are stored in sequence, which means that a new snapshot does not overwrite the previous snapshot. You can call the [DescribeLiveStreamSnapshotInfo](~~2847902~~) operation to query the snapshots that were captured within a specific time period.'."\n" + ."\n" + .'- The name must be less than 256 bytes in length.'."\n" + ."\n" + .'- Only JPG images are supported.'."\n" + ."\n" + .'- The name can contain variables such as {AppName}, {StreamName}, {UnixTimestamp}, and {Sequence}. The name must contain at least one of the {UnixTimestamp} and {Sequence} variables.'."\n" + ."\n" + .'- A value of hyphen (-) indicates that this parameter is deleted.', 'type' => 'string', 'required' => false, 'example' => 'snapshot/{liveApp****}/{liveStream****}/{UnixTimestamp****}.jpg', 'title' => ''], + ], + [ + 'name' => 'Callback', + 'in' => 'query', + 'schema' => ['description' => 'The callback URL that is used to receive notifications about snapshot capture.', 'type' => 'string', 'required' => false, 'example' => 'https://learn.aliyundoc.com', 'title' => ''], ], ], 'responses' => [ @@ -66410,92 +54772,111 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Description' => [ - 'description' => 'The result of the request. If success is returned, the request is successful. If an error message is returned, the request failed.'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '3D208CC1-27C9-51E9-82B8-A6682D466421', - ], - 'RetCode' => [ - 'description' => 'The returned HTTP status code. HTTP status code 2000 indicates that the request is successful. If another HTTP status code is returned, the request failed.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2000', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidOverwriteOssObjectOrSequenceOssObject.Malformed', 'errorMessage' => 'Specified paramters OverwriteOssObject or SequenceOssObject should have one.', 'description' => 'You can specify only one of the OverwriteOssObject and SequenceOssObject parameters.'], + ['errorCode' => 'InvalidOssEndpoint.Malformed', 'errorMessage' => 'Specified parameter OssEndpoint is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.Malformed', 'errorMessage' => 'Specified parameter OssBucket is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.NotFound', 'errorMessage' => 'The parameter OssBucket does not exist.', 'description' => ''], + ['errorCode' => 'InvalidOverwriteOssObject.Malformed', 'errorMessage' => 'Specified parameter OverwriteOssObject is not valid.', 'description' => ''], + ['errorCode' => 'InvalidSequenceOssObject.Malformed', 'errorMessage' => 'Specified parameter SequenceOssObject is not valid.', 'description' => 'Invalid value of SequenceOssObject. Check whether the SequenceOssObject parameter that you specified is correct.'], + ['errorCode' => 'InvalidConfig.NotFound', 'errorMessage' => 'The speicified config does not exist.', 'description' => ''], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + ], + 'title' => 'UpdateLiveAppSnapshotConfig', + 'summary' => 'Modifies a snapshot configuration of a streaming domain. The captured snapshots are stored in Object Storage Service (OSS). The modification takes effect after you restart stream ingest.', + 'description' => 'You can call this operation to modify a snapshot configuration of a streaming domain. The captured snapshots are stored in OSS. The modification takes effect after you restart stream ingest.'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAppSnapshotConfig'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAppSnapshotConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Description\\": \\"success\\",\\n \\"RequestId\\": \\"3D208CC1-27C9-51E9-82B8-A6682D466421\\",\\n \\"RetCode\\": 2000\\n}","errorExample":""},{"type":"xml","example":"\\n success\\n 3D208CC1-27C9-51E9-82B8-A6682D466421\\n 2000\\n","errorExample":""}]', - 'title' => 'StopRtcAsrTask', - 'description' => 'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', ], - 'DeleteRtcAsrTask' => [ - 'summary' => 'Deletes a live subtitle task.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UpdateLiveAudioAuditConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '219798', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID. You can obtain the ID from the response to the [CreateRtcAsrTask](~~2848217~~) operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'asr-51c72******', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'AppName', + 'in' => 'query', + 'schema' => ['description' => 'The AppName of the live stream. The template takes effect only when this name matches the AppName in the ingest URL. The name is case-sensitive.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'StreamName', + 'in' => 'query', + 'schema' => ['description' => 'The stream name. The template takes effect only when this name matches the StreamName in the ingest URL. The name is case-sensitive.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], + ], + [ + 'name' => 'OssBucket', + 'in' => 'query', + 'schema' => ['description' => 'The name of the Object Storage Service (OSS) bucket.', 'type' => 'string', 'required' => false, 'example' => 'liveBucket****', 'title' => ''], + ], + [ + 'name' => 'OssEndpoint', + 'in' => 'query', + 'schema' => ['description' => 'The endpoint of the OSS bucket.', 'type' => 'string', 'required' => false, 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], + ], + [ + 'name' => 'OssObject', + 'in' => 'query', + 'schema' => ['description' => 'The name of the recording file stored in OSS.', 'type' => 'string', 'required' => false, 'example' => 'liveObject****', 'title' => ''], + ], + [ + 'name' => 'BizType', + 'in' => 'query', + 'schema' => ['description' => 'The business type. This parameter is used to select a model. The default value is the domain name.', 'type' => 'string', 'required' => false, 'example' => ' example.edu', 'title' => ''], ], ], 'responses' => [ @@ -66503,58 +54884,62 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'Description' => [ - 'description' => 'The result of the request. If success is returned, the request is successful. If an error message is returned, the request failed.'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '85F94125-B695-1FB8-A7E7-3BE7CE07EF31', - ], - 'RetCode' => [ - 'description' => 'The returned HTTP status code. HTTP status code 2000 indicates that the request is successful. If another HTTP status code is returned, the request failed.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '2000', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'ConfigNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'ConfigExisted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Description\\": \\"success\\",\\n \\"RequestId\\": \\"85F94125-B695-1FB8-A7E7-3BE7CE******\\",\\n \\"RetCode\\": 2000\\n}","errorExample":""},{"type":"xml","example":"\\n success\\n 85F94125-B695-1FB8-A7E7-3BE7CE07EF31\\n 2000\\n","errorExample":""}]', - 'title' => 'DeleteRtcAsrTask', - 'description' => 'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveAIProduceRules' => [ - 'summary' => 'Deletes a subtitle rule.', - 'methods' => [ - 'post', - 'get', + 'title' => 'UpdateLiveAudioAuditConfig', + 'summary' => 'Updates the audio moderation configuration.', + 'description' => '- Before you call this operation, obtain the streaming domain.'."\n" + ."\n" + .'- Automated review is supported only in some live centers. For supported regions, see [Service regions](~~193730~~).'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAudioAuditConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAudioAuditConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","type":"json"}]', + ], + 'UpdateLiveAudioAuditNotifyConfig' => [ + 'summary' => 'Updates the callback configuration for automated audio review.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -66562,67 +54947,41 @@ ], 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '219079', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'RulesId', - 'in' => 'query', - 'allowEmptyValue' => false, - 'schema' => [ - 'description' => 'The ID of the subtitle rule.'."\n", - 'type' => 'string', - 'required' => false, - 'docRequired' => true, - 'example' => '445409ec-7eaa-461d -8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'SuffixName', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The suffix of the subtitle rule.'."\n" - ."\n" - .'> Set the value to the name of the subtitle template.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'et', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'Callback', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The webhook URL for receiving callback notifications about audio that contains violations.', 'type' => 'string', 'required' => false, 'example' => 'http://guide.aliyundoc.com/callback', 'title' => ''], ], [ - 'name' => 'App', + 'name' => 'CallbackTemplate', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AppName', - ], + 'schema' => ['description' => 'The callback template for automated review. The value can contain the following variables:'."\n" + ."\n" + .'- **{DomainName}**: The streaming domain.'."\n" + ."\n" + .'- **{AppName}**: The AppName of the stream.'."\n" + ."\n" + .'- **{StreamName}**: The stream name.'."\n" + ."\n" + .'- **{Timestamp}**: The UNIX timestamp when the callback is generated. Unit: seconds.'."\n" + ."\n" + .'- **{Result}**: The detection result.', 'type' => 'string', 'required' => false, 'example' => '{"domain":{DomainName},"app":{AppName},"stream":{StreamName},"timestamp":{Timestamp},"result":{Result}}', 'title' => ''], ], ], 'responses' => [ @@ -66630,144 +54989,132 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b96****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'IncorrectSubtitleStatus.%s', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'ConfigExisted', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ['errorCode' => 'UnsafeCallback', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The callback address is not safe. Please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0df228-4a64- af62-20e91b96****\\n","errorExample":""}]', - 'title' => 'DeleteLiveAIProduceRules', - 'description' => 'You can call this operation to delete a specified subtitle rule.'."\n" + 'title' => 'UpdateLiveAudioAuditNotifyConfig', + 'description' => '- Obtain the streaming domain and then call this operation to update the callback configuration for automated audio review.'."\n" ."\n" - .'> The live subtitles feature is in invitational preview. You can add up to 300 subtitle templates.'."\n" + .'- Live audio moderation is available only in specific regions. For supported regions, see [Service regions](~~193730~~).'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limits'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveAIProduceRules' => [ - 'summary' => 'Queries subtitle rules.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAudioAuditNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAudioAuditNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\"\\n}","type":"json"}]', + ], + 'UpdateLiveCenterTransfer' => [ + 'summary' => 'Updates the live center transfer configuration by calling UpdateLiveCenterTransfer.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '219166', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'App', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'AppName', - ], + 'schema' => ['description' => 'The name of the live stream application. The AppName you enter must match the AppName of the live stream to be transferred for the configuration to take effect. You can view the AppName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'testapp', 'title' => ''], ], [ - 'name' => 'SuffixName', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The suffix of the subtitle rule.'."\n" - ."\n" - .'> Set the value to the name of the subtitle template.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sub01', - ], + 'schema' => ['description' => 'The name of the live stream. You can view the StreamName on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'teststream', 'title' => ''], ], [ - 'name' => 'RulesId', + 'name' => 'DstUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the subtitle rule.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d-8f29-4bec****', - ], + 'schema' => ['description' => 'The third-party live streaming address to transfer to. A maximum of one address is supported.'."\n" + ."\n" + .'>The protocol of the destination address must match the protocol of the live stream being transferred. Only RTMP and SRT protocols are supported.', 'type' => 'string', 'required' => true, 'example' => 'rtmp://push.example2.aliyunlive.com/testapp1/teststream2', 'title' => ''], ], [ - 'name' => 'PageNumber', + 'name' => 'TransferArgs', 'in' => 'query', 'schema' => [ - 'description' => 'The page number. Valid values: \\[1,100].'."\n", + 'description' => 'The transfer validity period. Valid values:'."\n" + ."\n" + .'- **always**: Permanently effective.'."\n" + ."\n" + .'- **time**: Effective within a specified time range.'."\n" + ."\n" + .'>If you set this parameter to **time**, **StartTime** and **EndTime** are required.', + 'enumValueTitles' => ['always' => 'Permanently effective.', 'time' => 'Effective within a specified time range.'], 'type' => 'string', - 'required' => false, - 'example' => '1', + 'required' => true, + 'enum' => ['always', 'time'], + 'example' => 'always', + 'title' => '', ], ], [ - 'name' => 'PageSize', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: \\[1,100].'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '100', - ], + 'schema' => ['description' => 'The start time of the transfer. The date format follows ISO 8601 and uses UTC+0 time in the format yyyy-MM-ddTHH:mm:ssZ.', 'type' => 'string', 'required' => false, 'example' => '2017-12-21T10:00:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of the transfer. The date format follows ISO 8601 and uses UTC+0 time in the format yyyy-MM-ddTHH:mm:ssZ.'."\n" + ."\n" + .'>The end time must be later than the start time.', 'type' => 'string', 'required' => false, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], ], 'responses' => [ @@ -66775,125 +55122,51 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b96****', - ], - 'RuleInfoList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RuleInfo' => [ - 'description' => 'The subtitle rules.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the subtitle rule.'."\n", - 'type' => 'object', - 'properties' => [ - 'Domain' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - 'App' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'App Name', - ], - 'SubtitleName' => [ - 'description' => 'The name of the subtitle template.'."\n", - 'type' => 'string', - 'example' => 'sub1', - ], - 'IsLazy' => [ - 'description' => 'Indicates whether the rule takes effect when stream pulling starts.'."\n", - 'type' => 'boolean', - 'example' => 'true', - ], - 'RulesId' => [ - 'description' => 'The ID of the subtitle rule.'."\n", - 'type' => 'string', - 'example' => '72fba656-2cc2-40fd-923c-2a10c3b9****', - ], - 'LiveTemplate' => [ - 'description' => 'The specification of the exported subtitles.'."\n", - 'type' => 'string', - 'example' => 'lp_ld', - ], - 'GmtModifyTime' => [ - 'description' => 'The last time when the rule was modified. The value is a timestamp.'."\n", - 'type' => 'string', - 'example' => '1715594344000', - ], - 'SuffixName' => [ - 'description' => 'The suffix of the subtitle rule.'."\n", - 'type' => 'string', - 'example' => 'test0506', - ], - 'StudioName' => [ - 'description' => 'The name of the virtual background template.'."\n", - 'type' => 'string', - 'example' => 'test0708', - ], - 'Description' => [ - 'description' => 'The description of the rule.'."\n", - 'type' => 'string', - 'example' => 'live AI subtitle template', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '7908F2FF-44F8-120F-9FD6-85AE4B6C19EC', 'title' => ''], ], 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'IncorrectSubtitleStatus.%s', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'CodeIllegalDuration', 'errorMessage' => 'param end_time is before start_time', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\"\\n}","type":"json"}]', + 'title' => 'Update live center transfer configuration', + 'description' => 'This operation only supports updating configurations related to the **transfer validity period** (TransferArgs, StartTime, EndTime).'."\n" + .'## QPS limit'."\n" + .'The QPS limit for this operation is 100 calls per second per user. If the limit is exceeded, API calls are throttled, which may affect your business. Call this operation at a reasonable rate.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveCenterTransfer'], + ], ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveCenterTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b96****\\",\\n \\"RuleInfoList\\": {\\n \\"RuleInfo\\": [\\n {\\n \\"Domain\\": \\"demo.aliyundoc.com\\",\\n \\"App\\": \\"App Name\\",\\n \\"SubtitleName\\": \\"sub1\\",\\n \\"IsLazy\\": true,\\n \\"RulesId\\": \\"72fba656-2cc2-40fd-923c-2a10c3b9****\\",\\n \\"LiveTemplate\\": \\"lp_ld\\",\\n \\"GmtModifyTime\\": \\"1715594344000\\",\\n \\"SuffixName\\": \\"test0506\\",\\n \\"StudioName\\": \\"test0708\\",\\n \\"Description\\": \\"live AI subtitle template\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0df228-4a64- af62-20e91b96****\\n \\n demo.aliyundoc.com\\n App Name\\n sub1\\n true\\n true\\n 72fba656-2cc2-40fd-923c-2a10c3b9****\\n lp_ld\\n 1715594344000\\n test0506\\n live AI subtitle template\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveAIProduceRules', - 'description' => 'You can call this operation to query subtitle rules. Make sure that the parameter settings meet the requirements.'."\n" - ."\n" - .'> The live subtitles feature is in invitational preview. You can add up to 300 subtitle templates.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", ], - 'UpdateLiveAIProduceRules' => [ - 'summary' => 'Updates a subtitle rule.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], + 'UpdateLiveDelayConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -66901,135 +55174,116 @@ ], 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'update', + 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '218935', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveBP94ZY'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AppName', - ], + 'schema' => ['description' => 'The AppName of the live stream. You can specify an asterisk (\\*) to match all AppNames under the domain name.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'Suffix', + 'name' => 'Stream', 'in' => 'query', - 'schema' => [ - 'description' => 'The suffix to match.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'test01', - ], + 'schema' => ['description' => 'The name of the live stream. You can use the wildcard (\\*) to specify all StreamNames under the AppName.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'SubtitleName', + 'name' => 'DelayTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the subtitle template.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sub01', - ], + 'schema' => ['description' => 'The duration for which the playback is delayed. The value must be an integer. Valid values: 16 to 3600. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '60', 'title' => ''], ], [ - 'name' => 'StudioName', + 'name' => 'TaskTriggerMode', 'in' => 'query', + 'schema' => ['description' => 'The trigger mode for the task. Valid values:'."\n" + ."\n" + .'- **PUBLISH\\_ONLY**: Stream delay is triggered only by relevant parameters in the ingest URL.'."\n" + ."\n" + .'- **CONFIG\\_ONLY**: Stream delay is triggered only by the configuration. Parameters in the ingest URL are ignored.'."\n" + ."\n" + .'- **PUBLISH\\_CONFIG**: Stream delay is triggered by both the configuration and parameters in the ingest URL. Parameters in the ingest URL have a higher priority than the configuration.', 'type' => 'string', 'required' => false, 'example' => 'PUBLISH_ONLY', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The name of the virtual background template.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sub02', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameters', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'Invalid parameter:%s.'], + ], + ], + 'title' => 'UpdateLiveDelayConfig', + 'summary' => 'Updates the live stream delay configuration.', + 'description' => 'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveDelayConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'IsLazy', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to generate live subtitles when stream pulling starts. Valid values:'."\n" - ."\n" - .'* true: generates live subtitles when stream pulling starts and stops generating live subtitles when no streams are pulled for 5 minutes. When stream pulling restarts, live subtitles are generated again.'."\n" - .'* false: generates live subtitles when stream ingest starts.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], - ], - [ - 'name' => 'RulesId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the subtitle rule.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d -8f29-4bec2eb9****', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:UpdateLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'UpdateLiveDetectNotifyConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'LiveTemplate', - 'in' => 'query', - 'schema' => [ - 'description' => 'The specification of the output subtitles. Valid values:'."\n" - ."\n" - .'* `lp_ld`: 360p (640 × 360)'."\n" - .'* `lp_ld_v`: 360p (360 × 640)'."\n" - .'* `lp_sd`: 480p (854 × 480)'."\n" - .'* `lp_sd_v`: 480p (480 × 854)'."\n" - .'* `lp_hd`: 720p (1280 × 720)'."\n" - .'* `lp_hd_v`: 720p (720 × 1280)'."\n" - .'* `lp_ud`: 1080p (1920 × 1080)'."\n" - .'* `lp_ud_v`: 1080p (1080 × 1920)'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'lp_ld', - ], + 'AK' => [], ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveUTGSNT'], + ], + 'parameters' => [ [ - 'name' => 'SubtitleId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the subtitle template.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Description', + 'name' => 'NotifyUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The description of the subtitle rule. The description can be up to 128 characters in length and can contain letters, digits, and special characters.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'live AI subtitle template', - ], + 'schema' => ['description' => 'The callback URL that is used to receive callback notifications about violations, such as pornographic content, detected in live streams.', 'type' => 'string', 'required' => true, 'example' => 'http://guide.aliyundoc.com/examplecallback.action', 'title' => ''], ], ], 'responses' => [ @@ -67037,467 +55291,633 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidNotifyUrl.Malformed', 'errorMessage' => 'Specified NotifyUrl is invalid.', 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['errorCode' => 'InvalidNotifyUrl.Unsafe', 'errorMessage' => 'Specified NotifyUrl is not safe.', 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['errorCode' => 'InvalidParams', 'errorMessage' => 'Invalid Params.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'InvalidConfig.NotFound', 'errorMessage' => 'Config does not exist.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0df228-4a64-af62-20e91b96****\\n","errorExample":""}]', - 'title' => 'UpdateLiveAIProduceRules', - 'description' => 'You can call this operation to modify the parameters of a specified subtitle rule.'."\n" + 'title' => 'UpdateLiveDetectNotifyConfig', + 'summary' => 'Modifies the configuration of callbacks for video moderation results. As a result, the callback URL that is used to receive the callback notifications is changed.', + 'description' => '- Obtain the main streaming domain, and then call this operation to modify the configuration of callbacks for video moderation results.'."\n" ."\n" - .'> The live subtitles feature is in invitational preview. You can add up to 300 subtitle templates.'."\n" + .'- Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'translator' => 'machine', - ], - 'AddLiveAIProduceRules' => [ - 'summary' => 'Adds a subtitle rule.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveDetectNotifyConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveDetectNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'UpdateLiveMPUTask' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '218952', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '178411', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The application ID. You can specify only one application ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], ], [ - 'name' => 'Domain', + 'name' => 'ChannelId', 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', - ], + 'schema' => ['description' => 'The channel ID. You can specify only one channel ID. The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourChannelId', 'title' => ''], ], [ - 'name' => 'App', + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The name can be up to 256 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name must be the same as the application name in the ingest URL. Otherwise, the rule does not take effect.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'AppName', - ], + 'schema' => ['description' => 'The task ID. You can specify only one task ID. The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-). The ID must be unique.', 'type' => 'string', 'required' => true, 'example' => 'yourTaskId', 'title' => ''], ], [ - 'name' => 'Suffix', + 'name' => 'MixMode', 'in' => 'query', - 'schema' => [ - 'description' => 'The suffix to match.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'test01', - ], + 'schema' => ['description' => 'The stream mixing mode. Valid values:'."\n" + ."\n" + .'- **0**: the single-stream relay mode. In this mode, the service only relays the original single stream, but does not transcode mixed streams. You do not need to set parameters for mixed-stream transcoding.'."\n" + ."\n" + .'- **1** (default): the mixed-stream relay mode.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], ], [ - 'name' => 'SubtitleName', + 'name' => 'StreamURL', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the subtitle template.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sub01', - ], + 'schema' => ['description' => 'The ingest URL. You can specify only one ingest URL in the Real-Time Messaging Protocol (RTMP) format. The URL can be up to 2,048 characters in length. For information about the generation rules of ingest URLs, see [Ingest and streaming URLs](~~199339~~).'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- If the ingest URL is under a domain name for which hotlink protection is enabled, you must include an access token in the URL.'."\n" + ."\n" + .'- You cannot use the same ingest URL in different tasks.'."\n" + ."\n" + .'- You cannot use the same ingest URL within 10 seconds after a task is stopped.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://example.com/live/stream', 'title' => ''], ], [ - 'name' => 'StudioName', + 'name' => 'MultiStreamURL', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The name of the virtual background template.'."\n", - 'type' => 'string', + 'description' => 'The multiple ingest URLs to relay. This parameter allows you to specify multiple ingest URLs.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'URL' => ['description' => 'The ingest URL. Only the RTMP format is supported. The URL can be up to 2,048 characters in length. For information about the generation rules of ingest URLs, see [Ingest and streaming URLs](~~199339~~).', 'type' => 'string', 'required' => false, 'example' => 'rtmp://example.com/live/stream****', 'title' => ''], + 'IsAliCdn' => ['description' => 'Specifies whether to perform stream relay by using Alibaba Cloud CDN. Valid values:'."\n" + ."\n" + .'- false: performs stream relay by using a CDN service that is not Alibaba Cloud CDN.'."\n" + ."\n" + .'- true: performs stream relay by using Alibaba Cloud CDN.'."\n" + ."\n" + .'> The default value of this parameter is false.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], + ], + 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', + ], 'required' => false, - 'example' => 'sub02', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'IsLazy', + 'name' => 'SingleSubParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'Specifies whether to trigger the subtitle rule when stream pulling starts. Valid values:'."\n" - ."\n" - .'* true: generates live subtitles when stream pulling starts and stops generating live subtitles when no stream is pulled for 5 minutes. When stream pulling restarts, live subtitles are generated again.'."\n" - .'* false: generates live subtitles when stream ingest starts, regardless of whether stream pulling starts.'."\n", - 'type' => 'boolean', + 'description' => 'The single-stream relay parameters. These parameters are required if you set MixMode to 0.', + 'type' => 'object', + 'properties' => [ + 'SourceType' => ['description' => 'The type of the video source. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" + ."\n" + .'- **camera** (default)'."\n" + ."\n" + .'- **shareScreen**', 'type' => 'string', 'required' => false, 'example' => 'camera', 'title' => ''], + 'StreamType' => ['description' => 'The type of the stream that you want to relay. Valid values:'."\n" + ."\n" + .'- **0** (default): original stream'."\n" + ."\n" + .'- **1**: only the audio track'."\n" + ."\n" + .'- **2**: only the video track', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'UserId' => ['description' => 'The user ID. In the single-stream relay mode, you can relay only one stream in a request.', 'type' => 'string', 'required' => true, 'example' => 'yourSubUserId', 'title' => ''], + ], 'required' => false, - 'example' => 'true', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'LiveTemplate', + 'name' => 'TranscodeParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The specification of the output subtitles. Valid values:'."\n" - ."\n" - .'* `lp_ld`: landscape low definition 360p (640×360)'."\n" - .'* `lp_ld_v`: portrait low definition 360p (360×640)'."\n" - .'* `lp_sd`: landscape standard definition 480p (854×480)'."\n" - .'* `lp_sd_v`: portrait standard definition 480p (480×854)'."\n" - .'* `lp_hd`: landscape high definition 720p (1280×720)'."\n" - .'* `lp_hd_v`: portrait high definition 720p (720×1280)'."\n" - .'* `lp_ud`: landscape ultra-high definition 1080p (1920×1080)'."\n" - .'* `lp_ud_v`: portrait ultra-high definition 1080p (1080×1920)'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'lp_ld', + 'description' => 'The mixed-stream relay parameters. These parameters are required if you set MixMode to 1.', + 'type' => 'object', + 'properties' => [ + 'Background' => [ + 'description' => 'The global background image.', + 'type' => 'object', + 'properties' => [ + 'RenderMode' => ['description' => 'The display mode of the global background image.'."\n" + ."\n" + .'- **0**: scales the background image proportionally to fit the view, with black bars displayed.'."\n" + ."\n" + .'- **1** (default): crops the background image to fit the view.', 'type' => 'string', 'required' => false, 'example' => '1', 'title' => ''], + 'URL' => ['description' => 'The URL of the global background image.', 'type' => 'string', 'required' => false, 'example' => 'yourImageUrl', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'EncodeParams' => [ + 'description' => 'The encoding parameters for the output stream.', + 'type' => 'object', + 'properties' => [ + 'AudioOnly' => ['description' => 'Specifies whether the output stream is an audio-only stream. Valid values:'."\n" + ."\n" + .'- **true**: The output stream is an audio-only stream. If you set this parameter to true, you need to configure only audio-related parameters under EncodeParams.'."\n" + ."\n" + .'- **false** (default): The output stream is not an audio-only stream. If you set this parameter to false, you need to configure all parameters under EncodeParams, except the VideoCodec and EnhancedParam parameters.', 'type' => 'string', 'required' => false, 'example' => 'false', 'title' => ''], + 'AudioBitrate' => ['description' => 'The bitrate of the audio. Valid values: \\[8,500]. Unit: Kbit/s.', 'type' => 'string', 'required' => false, 'example' => '128', 'title' => ''], + 'AudioChannels' => ['description' => 'The number of sound channels. Valid values: 1 and 2.', 'type' => 'string', 'required' => false, 'example' => '2', 'title' => ''], + 'AudioSampleRate' => ['description' => 'The audio sampling rate. Valid values: 8000, 16000, 32000, 44100, and 48000. Unit: Hz.', 'type' => 'string', 'required' => false, 'example' => '44100', 'title' => ''], + 'VideoCodec' => ['description' => 'The video codec. Valid values:'."\n" + ."\n" + .'- H.264 (default)'."\n" + ."\n" + .'- H.265', 'type' => 'string', 'required' => false, 'example' => 'H.264', 'title' => ''], + 'VideoBitrate' => ['description' => 'The bitrate of the video. Valid values: \\[1,10000]. Unit: Kbit/s.', 'type' => 'string', 'required' => false, 'example' => '3500', 'title' => ''], + 'VideoFramerate' => ['description' => 'The frame rate of the video. Valid values: \\[1,60]. Unit: frames per second (FPS).', 'type' => 'string', 'required' => false, 'example' => '25', 'title' => ''], + 'VideoGop' => ['description' => 'The group of pictures (GOP) size of the video. Valid values: \\[1,60].', 'type' => 'string', 'required' => false, 'example' => '20', 'title' => ''], + 'VideoHeight' => ['description' => 'The height of the video. Valid values: \\[0,1920]. Unit: pixels.', 'type' => 'string', 'required' => false, 'example' => '1000', 'title' => ''], + 'VideoWidth' => ['description' => 'The width of the video. Valid values: \\[0,1920]. Unit: pixels.', 'type' => 'string', 'required' => false, 'example' => '1920', 'title' => ''], + 'EnhancedParam' => ['description' => 'The parameter used for encoding enhancement, which is a JSON string. The parameter includes the optional profile and preset fields.'."\n" + ."\n" + .'- profile: the encoding level. If the video codec is H.264, the valid values of this field are baseline, main, and high. If the video codec is H.265, the valid value of this field is main.'."\n" + ."\n" + .'- preset: adjusts the trade-off between encoding speed and video quality. The valid values of this field are ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, and placebo. Each value specifies a level of trade-off between encoding speed and video quality. For example, the ultrafast preset has the fastest encoding speed but the lowest video quality, while the placebo preset sacrifices the encoding speed for the best video quality.'."\n" + ."\n" + .'> A value of superfast for the preset field is suitable for real-time communication scenarios. We recommend that you not set the field if you are not a professional encoding engineer.', 'type' => 'string', 'required' => false, 'example' => '{"profile": "high", "preset": "veryfast"}', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'Layout' => [ + 'description' => 'The video layout information.'."\n" + ."\n" + .'> If video transcoding is required, you must specify the video layout information, including the x-coordinate and y-coordinate, the width and height, and the layer. For audio-only transcoding, leave the video layout information empty.', + 'type' => 'object', + 'properties' => [ + 'UserPanes' => [ + 'description' => 'The information about the panes.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the pane.', + 'type' => 'object', + 'properties' => [ + 'UserInfo' => [ + 'description' => 'The information about the user whose stream is played in the pane. If you leave this parameter empty, the system automatically sets this parameter based on the order in which streamers join the channel.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- If you specify the information about a user by using this parameter, the information about the user must also be specified by using the TranscodeParams.UserInfos parameter.'."\n" + ."\n" + .'- This parameter is valid only when you set StreamType to 0 or 2.', + 'type' => 'object', + 'properties' => [ + 'SourceType' => ['description' => 'The type of the video source. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" + ."\n" + .'- **camera** (default)'."\n" + ."\n" + .'- **shareScreen**', 'type' => 'string', 'required' => false, 'example' => 'camera', 'title' => ''], + 'ChannelId' => ['description' => 'The ID of the channel where the user is. If the user is in the same channel, you can leave this parameter empty. We recommend that you specify this parameter when you perform stream mixing across channels.', 'type' => 'string', 'required' => false, 'example' => 'yourChannelId', 'title' => ''], + 'UserId' => ['description' => 'The user ID.', 'type' => 'string', 'required' => false, 'example' => 'yourSubUserId', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'Height' => ['description' => 'The height of the pane. The value is normalized.', 'type' => 'string', 'required' => false, 'example' => '0.2632', 'title' => ''], + 'Width' => ['description' => 'The width of the pane. The value is normalized.', 'type' => 'string', 'required' => false, 'example' => '0.3564', 'title' => ''], + 'X' => ['description' => 'The x-coordinate of the pane. The value is normalized.', 'type' => 'string', 'required' => false, 'example' => '0.2456', 'title' => ''], + 'Y' => ['description' => 'The y-coordinate of the pane. The value is normalized.', 'type' => 'string', 'required' => false, 'example' => '0.3789', 'title' => ''], + 'ZOrder' => ['description' => 'The layer in which the pane resides. A value of 0 indicates the bottom layer. Each increment of the value by 1 indicates the next upper layer.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'BackgroundImageUrl' => ['description' => 'The URL of the background image of the pane. This image is displayed if the user turns off the camera or is not present in the channel.', 'type' => 'string', 'required' => false, 'example' => 'yourImageUrl', 'title' => ''], + 'RenderMode' => ['description' => 'The display mode of the pane. Valid values:'."\n" + ."\n" + .'- **0**: scales the video proportionally to fit the view, with black bars displayed.'."\n" + ."\n" + .'- **1 (default)**: crops the video to fit the view.', 'type' => 'string', 'default' => '1', 'required' => false, 'example' => '1', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'UserInfos' => [ + 'description' => 'The information about the users whose streams are subscribed to. If you leave this parameter empty, streams from all users are mixed.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the user.', + 'type' => 'object', + 'properties' => [ + 'SourceType' => ['description' => 'The type of the video source that is subscribed to. This parameter is valid only when you set StreamType to 2. Valid values:'."\n" + ."\n" + .'- **camera** (default)'."\n" + ."\n" + .'- **shareScreen**', 'type' => 'string', 'required' => false, 'example' => 'camera', 'title' => ''], + 'StreamType' => ['description' => 'The type of the relayed stream that is subscribed to. Valid values:'."\n" + ."\n" + .'- **0** (default): original stream'."\n" + ."\n" + .'- **1**: only the audio track'."\n" + ."\n" + .'- **2**: only the video track', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'ChannelId' => ['description' => 'The ID of the channel where the subscribed user is. If the user is in the same channel, you can leave this parameter empty. We recommend that you specify this parameter when you perform stream mixing across channels.', 'type' => 'string', 'required' => false, 'example' => 'yourChannelId', 'title' => ''], + 'UserId' => ['description' => 'The ID of the subscribed user.', 'type' => 'string', 'required' => true, 'example' => 'yourSubUserId', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'Description', + 'name' => 'SeiParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The description of the subtitle rule. The description can be up to 128 characters in length and can contain letters, digits, and special characters.'."\n", - 'type' => 'string', + 'description' => 'The supplemental enhancement information (SEI) parameters.', + 'type' => 'object', + 'properties' => [ + 'LayoutVolume' => [ + 'description' => 'The layout and volume SEI. If you leave this parameter empty, the default layout and volume SEI is used.', + 'type' => 'object', + 'properties' => [ + 'FollowIdr' => ['description' => 'Specifies whether to include the SEI in an Instantaneous Decoder Refresh (IDR) frame. Valid values:'."\n" + ."\n" + .'- **0**: does not include the SEI.'."\n" + ."\n" + .'- **1**: includes the SEI.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'Interval' => ['description' => 'The interval at which the SEI is sent. Valid values: \\[1000,5000]. Unit: milliseconds.', 'type' => 'string', 'required' => false, 'example' => '1000', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'PassThrough' => [ + 'description' => 'Specifies whether to pass through the SEI.', + 'type' => 'object', + 'properties' => [ + 'FollowIdr' => ['description' => 'Specifies whether to include the SEI in an IDR frame. Valid values:'."\n" + ."\n" + .'- **0**: does not include the SEI.'."\n" + ."\n" + .'- **1**: includes the SEI.', 'type' => 'string', 'required' => false, 'example' => '0', 'title' => ''], + 'Interval' => ['description' => 'The interval at which the SEI is sent. Valid values: \\[1000,5000]. Unit: milliseconds.', 'type' => 'string', 'required' => false, 'example' => '1000', 'title' => ''], + 'PayloadContent' => ['description' => 'The payload content of the SEI.', 'type' => 'string', 'required' => false, 'example' => 'yourPayloadContent', 'title' => ''], + 'PayloadContentKey' => ['description' => 'The key of the payload content of the SEI. If you do not specify this parameter, the default value udd is used.', 'type' => 'string', 'required' => false, 'example' => 'yourPayloadContentKey', 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + ], 'required' => false, - 'example' => 'live AI subtitle template', + 'title' => '', + 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ + 'description' => '', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', - ], - 'RulesId' => [ - 'description' => 'The ID of the subtitle rule.'."\n", - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '0F72851F-5DC1-1979-9B2C-450040316C3E', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => '%s, please check and try again later.', 'description' => 'No permission, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'eventInfo' => [ - 'enable' => false, - 'eventNames' => [], - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\",\\n \\"RulesId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0df228-4a64-af62-20e91b96****\\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'AddLiveAIProduceRules', - 'description' => '* After you call the [AddLiveAISubtitle](~~2848222~~) operation to add a subtitle template, you can call this operation to create a subtitle rule for the template.'."\n" - ."\n" - .'* You must add "\\_Subtitle template name" after the stream name in the streaming URL to play the subtitle stream.'."\n" - ."\n" - .' * RTMP: rtmp://example.aliyundoc.com/app/stream\\_{Subtitle template name}?auth_key={Access token}'."\n" - .' * FLV: http://example.aliyundoc.com/app/stream\\_{Subtitle template name}.flv?auth_key={Access token}'."\n" - .' * M3U8: http://example.aliyundoc.com/app/stream\\_{Subtitle template name}.m3u8?auth_key={Access token}'."\n" - ."\n" - .'> The live subtitles feature is in invitational preview. You can add up to 300 subtitle templates.'."\n" + 'title' => 'UpdateLiveMPUTask', + 'summary' => 'Updates a mixed-stream relay task.', + 'description' => 'Make sure that a mixed-stream relay task is created before you call this operation. You can call the [StartLiveMPUTask](~~2848199~~) operation to create a mixed-stream relay task.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'translator' => 'machine', - ], - 'AddLiveAISubtitle' => [ - 'summary' => 'Adds a subtitle template.', - 'methods' => [ - 'post', - 'get', + .'You can call this operation up to 500 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'changeSet' => [ + ['createdAt' => '2024-10-30T08:35:04.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-08-13T08:23:10.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-08-06T07:59:24.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-07-04T07:02:34.000Z', 'description' => 'Error codes changed'], + ['createdAt' => '2024-06-12T05:51:31.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-03-06T17:46:44.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2024-03-01T07:39:35.000Z', 'description' => 'Request parameters changed'], + ['createdAt' => '2023-12-26T06:01:15.000Z', 'description' => 'Request parameters changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveMPUTask'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveMPUTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0F72851F-5DC1-1979-9B2C-450040316C3E\\"\\n}","type":"json"}]', + ], + 'UpdateLivePackageConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '220749', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveJAENGU'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The ID of the region.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'SubtitleName', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the subtitle template. The name can contain only digits, letters, and hyphens (-). The name cannot start with a hyphen.', - 'type' => 'string', - 'required' => true, - 'example' => 'sub01', - ], + 'schema' => ['description' => 'The primary domain name for live streaming playback.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'SrcLanguage', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The source language. Valid values:'."\n" - .' - en-US: English '."\n" - .'- zh-CN: Chinese '."\n" - .'- ru-RU: Russian', - 'type' => 'string', - 'required' => true, - 'example' => 'zh-CN', - ], + 'schema' => ['description' => 'The application name. The template applies only when this AppName matches the application name in the ingest URL. The AppName can be up to 255 characters and can contain digits, letters, hyphens (-), and underscores (\\_). It cannot start with a hyphen or an underscore. Set this parameter to an asterisk (\\*) to match all application names.', 'type' => 'string', 'required' => true, 'example' => 'AppName', 'title' => ''], ], [ - 'name' => 'DstLanguage', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The target language. Valid values:'."\n" - .' - en-US: English '."\n" - .'- zh-CN: Chinese '."\n" - .'- es-ES: Spanish '."\n" - .'- ru-RU: Russian', - 'type' => 'string', - 'required' => false, - 'example' => 'zh-CN', - ], + 'schema' => ['description' => 'The stream name. The template applies only when this StreamName matches the stream name in the ingest URL. The StreamName can be up to 255 characters and can contain digits, letters, hyphens (-), and underscores (\\_). It cannot start with a hyphen or an underscore. Set this parameter to an asterisk (\\*) to match all stream names.', 'type' => 'string', 'required' => true, 'example' => 'StreamName', 'title' => ''], ], [ - 'name' => 'FontColor', + 'name' => 'Protocol', 'in' => 'query', - 'schema' => [ - 'description' => 'The font color, which is an RGBA value.', - 'type' => 'string', - 'required' => false, - 'example' => '0xFFFFFF', - ], + 'schema' => ['description' => 'The protocol and container format for live streaming. Valid values:'."\n" + ."\n" + .'- **HLS\\_CMAF**'."\n" + ."\n" + .'- **LLHLS\\_TS** (low latency)'."\n" + ."\n" + .'- **LLHLS\\_CMAF** (low latency)'."\n" + ."\n" + .'- **DASH\\_CMAF**'."\n" + ."\n" + .'- **HLSDASH\\_CMAF**', 'type' => 'string', 'required' => true, 'example' => 'HLS_CMAF', 'title' => ''], ], [ - 'name' => 'FontName', + 'name' => 'SegmentNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The font. Valid values:'."\n" - .'- KaiTi (default)'."\n" - .'- AlibabaPuHuiTi-Regular'."\n" - .'- AlibabaPuHuiTi-Bold'."\n" - .'- AlibabaPuHuiTi-Light'."\n" - .'- NotoSansHans-Regular'."\n" - .'- NotoSansHans-Bold'."\n" - .'- NotoSansHans-Light', - 'type' => 'string', - 'required' => false, - 'example' => 'KaiTi', - ], + 'schema' => ['description' => 'The number of M3U8 segments. The value must be an integer from 3 to 10.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '3', 'title' => ''], ], [ - 'name' => 'BgColor', + 'name' => 'SegmentDuration', 'in' => 'query', - 'schema' => [ - 'description' => 'The background color of the subtitles, which is an RGBA value.', - 'type' => 'string', - 'required' => false, - 'example' => '0xFF0000', - ], + 'schema' => ['description' => 'The segment duration in seconds.'."\n" + ."\n" + .'- If you set Protocol to HLS\\_CMAF, the value can range from 1 to 10 s.'."\n" + ."\n" + .'- If you set Protocol to LLHLS\\_\\*, the value can range from 1 to 2 s.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '5', 'title' => ''], ], [ - 'name' => 'PositionNormalized', + 'name' => 'PartDuration', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The position of the subtitles. The value is a pair of coordinates for which the origin of the x and y axes is the lower-left corner of the screen.', - 'type' => 'array', - 'items' => [ - 'description' => 'The position of the subtitles. The value is a pair of coordinates for which the origin of the x and y axes is the lower-left corner of the screen.', - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '[0.32,0.27]', - ], - 'required' => true, - ], + 'schema' => ['description' => 'The duration of a part segment in milliseconds.'."\n" + ."\n" + .'> This parameter is required if you set \\`Protocol\\` to \\`LLHLS\\_\\*\\`.'."\n" + ."\n" + .'- If SegmentDuration is 1 s, the value can range from 100 to 500 ms.'."\n" + ."\n" + .'- If SegmentDuration is 2 s, the value can range from 100 to 1000 ms.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '350', 'title' => ''], ], [ - 'name' => 'ShowSourceLan', + 'name' => 'IgnoreTranscode', 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to ignore transcoded streams. Valid values:'."\n" + ."\n" + .'- **true** (default): Ignore transcoded streams.'."\n" + ."\n" + .'- **false**: Do not ignore transcoded streams.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'Specifies whether to display the source language. Default value: false.', - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'InvalidParams', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is invalid, please check and try again.'], + ['errorCode' => 'InvalidProtocol', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter Protocol is invalid, please check and try again.'], + ['errorCode' => 'InvalidSegmentNum', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SegmentNum is invalid, please check and try again.'], + ['errorCode' => 'InvalidSegmentDuration', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter SegmentDuration is invalid, please check and try again.'], + ['errorCode' => 'InvalidPartDuration', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter PartDuration is invalid, please check and try again.'], + ], + 404 => [ + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 409 => [ + ['errorCode' => 'ConfigConflicts', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration conflict, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalErr', 'errorMessage' => '%s, please try again.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'UpdateLivePackageConfig', + 'summary' => 'Updates live encapsulation configurations.', + 'description' => 'You can call this operation to update live encapsulation configurations. The new configurations take effect after you restart the stream ingest.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'This operation is limited to 300 queries per second (QPS) per user. If you exceed this limit, API calls are throttled. This can affect your business operations. Plan your calls accordingly.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLivePackageConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'MaxLines', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of displayed lines.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', + 'operationType' => '', + 'ramAction' => [ + 'action' => 'live:UpdateLivePackageConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'UpdateLivePullStreamInfoConfig' => [ + 'summary' => 'Modifies a scheduled stream pulling configuration, including the origin URL, start time, and end time.', + 'methods' => ['get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'WordPerLine', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of words displayed per line. Valid values: integers from 1 to 500.', - 'type' => 'integer', - 'format' => 'int32', - 'required' => true, - 'example' => '20', - ], + 'AK' => [], ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'FontSizeNormalized', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The font size. Valid values: [0,1].', - 'type' => 'number', - 'format' => 'float', - 'required' => true, - 'example' => '0.037', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'BorderWidthNormalized', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The font weight. Valid values: [0,1].', - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.05', - ], + 'schema' => ['description' => 'The streaming domain that you use for stream pulling.'."\n" + ."\n" + .'> Ensure that the domain is a streaming domain and that you have the required permissions to manage it.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'BgWidthNormalized', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The background size of the subtitles. Valid values: [0,1].', - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.09', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'CopyFrom', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The subtitle template that you copy. Set the value to the name of the subtitle template.', - 'type' => 'string', - 'required' => false, - 'example' => 'sub01', - ], + 'schema' => ['description' => 'The name of the live stream.', 'type' => 'string', 'required' => true, 'example' => 'liveStream****', 'title' => ''], ], [ - 'name' => 'Description', + 'name' => 'SourceUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The custom description of the subtitle template. The description can be up to 128 characters in length and can contain letters, digits, and special characters.', - 'type' => 'string', - 'required' => false, - 'example' => 'live AI subtitle template', - ], + 'schema' => ['description' => 'The origin URL of the live stream. You can specify multiple URLs. Separate them with semicolons (;).', 'type' => 'string', 'required' => true, 'example' => 'rtmp://guide.aliyundoc.com/liveApp****/liveStream****;rtmp://developer.aliyundoc.com/liveApp****/liveStream****', 'title' => ''], ], [ - 'name' => 'Width', + 'name' => 'StartTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The preview width. Unit: pixels.', - 'type' => 'string', - 'required' => false, - 'example' => '1280', - ], + 'schema' => ['description' => 'The time when stream pulling starts. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. It must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-12-21T08:00:00Z', 'title' => ''], ], [ - 'name' => 'Height', + 'name' => 'EndTime', 'in' => 'query', - 'schema' => [ - 'description' => 'The preview height. Unit: pixels.'."\n" - .'The following specifications of preview width × preview height are supported: '."\n" - .'- Landscape low definition 360p (640×360) '."\n" - .'- Portrait low definition 360p (360×640)'."\n" - .'- Landscape standard definition 480p (854×480)'."\n" - .'- Portrait standard definition 480p (480×854)'."\n" - .'- Landscape high definition 720p (1280×720)'."\n" - .'- Portrait high definition 720p (720×1280)'."\n" - .'- Landscape ultra-high definition 1080p (1920×1080)'."\n" - .'- Portrait ultra-high definition 1080p (1080×1920)', - 'type' => 'string', - 'required' => false, - 'example' => '720', - ], + 'schema' => ['description' => 'The time when stream pulling ends.'."\n" + ."\n" + .'The time range specified by the StartTime and EndTime parameters cannot exceed seven days. The time must be later than the current time. Specify the value in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.', 'type' => 'string', 'required' => true, 'example' => '2017-12-22T08:00:00Z', 'title' => ''], ], ], 'responses' => [ @@ -67505,161 +55925,266 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', - ], - 'SubtitleId' => [ - 'description' => 'The ID of the subtitle template.', - 'type' => 'string', - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidStartTime.Malformed', 'errorMessage' => 'Specified StartTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidEndTime.Malformed', 'errorMessage' => 'Specified EndTime is malformed.', 'description' => ''], + ['errorCode' => 'InvalidParam', 'errorMessage' => 'Parameter invalid.', 'description' => 'Illegal input parameters'], + ['errorCode' => 'InvalidEndTime.Mismatch', 'errorMessage' => 'Specified end time does not math the specified start time.', 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['errorCode' => 'Duration.Exceed', 'errorMessage' => 'Duration between StartTime and EndTime is too long.', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\",\\n \\"SubtitleId\\": \\"445409ec-7eaa-461d-8f29-4bec2eb9****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0df228-4a64-af62-20e91b96****\\n 445409ec-7eaa-461d-8f29-4bec2eb9****\\n","errorExample":""}]', - 'title' => 'AddLiveAISubtitle', - 'description' => '## Instructions'."\n" - .'- This interface supports adding live caption template configurations, with templates configurable to describe caption content, layout, and more. '."\n" - .'- After adding caption templates, you also need to call the [AddLiveAIProduceRules](~~2799676~~) interface to add caption rules. Restarting the stream will then enable captions in the broadcast. '."\n" - .'- Real-time captions are currently supported in Beijing, Shanghai, Singapore, Indonesia, and Saudi regions.'."\n" - .'>The real-time caption feature is currently in beta testing. Each user can add up to 300 caption templates. >'."\n" - .'## QPS Limit '."\n" - .'The QPS limit for this interface per user is 60 requests/second. Exceeding this limit will result in API throttling, which may impact your services. Please use judiciously. For more information, refer to [QPS Limitations](~~343507~~).', - ], - 'DeleteLiveAISubtitle' => [ - 'summary' => 'Deletes a specified subtitle template.', - 'methods' => [ - 'post', - 'get', + 'title' => 'UpdateLivePullStreamInfoConfig', + 'description' => 'After this operation is complete, ApsaraVideo Live uses the updated settings for scheduled stream pulling. Make sure that the modification does not affect your business.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 1,000 times per minute per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => '## 特殊错误码'."\n" + .'| 错误代码 | 描述 | HTTP 状态码 | 语义 |'."\n" + .'|------------|--------|---------|------|'."\n" + .'| InternalError | The request processing has failed due to some unknown error. | 500 | 后台发生未知错误 |'."\n" + .'| InvalidDomain.NotFound | The domain provided does not exist in our records. | 404 | 当前账户下未查到域名 |'."\n" + .'| IllegalOperation | Illegal domain operate is not permitted. | 403 | 不支持当前操作,如:非直播类域名 |'."\n" + .'| Duration.Exceed | Duration between StartTime and EndTime is too long. | 400 | 查询时间范围过长|', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLivePullStreamInfoConfig'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLivePullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","type":"json"}]', + ], + 'UpdateLivePullToPush' => [ + 'summary' => 'Updates a stream pulling and pushing task by calling UpdateLivePullToPush.', + 'methods' => ['get'], + 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', + 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '218856', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '240074', + 'abilityTreeNodes' => ['FEATURElive9P39J9'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'default' => 'cn-shanghai', 'required' => false, 'example' => 'cn-beijing', 'title' => ''], ], [ - 'name' => 'SubtitleId', + 'name' => 'TaskId', + 'in' => 'query', + 'schema' => ['description' => 'The task ID.', 'type' => 'string', 'required' => true, 'example' => 'fd245384-4067-4f91-9d75-9666a6bc****', 'title' => ''], + ], + [ + 'name' => 'Region', 'in' => 'query', - 'allowEmptyValue' => false, 'schema' => [ - 'description' => 'The ID of the subtitle template.'."\n", + 'description' => 'The region where the task is launched. Valid values:'."\n" + ."\n" + .'- ap-southeast-1 (Singapore)'."\n" + .'- ap-southeast-5 (Indonesia)'."\n" + .'- cn-beijing (Beijing)'."\n" + .'- cn-shanghai (Shanghai).', + 'enumValueTitles' => ['cn-shenzhen' => 'Shenzhen.', 'cn-qingdao' => 'Qingdao.', 'preregion' => 'Pre-release.', 'cn-beijing' => 'Beijing.', 'cn-shanghai' => 'Shanghai.', 'ap-southeast-1' => 'Singapore.', 'eu-central-1' => 'Germany (Frankfurt).', 'ap-northeast-1' => 'Japan (Tokyo).', 'ap-southeast-5' => 'Indonesia.', 'me-central-1' => 'Saudi Arabia (Riyadh).'], 'type' => 'string', 'required' => true, - 'docRequired' => true, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', + 'enum' => ['ap-northeast-1', 'ap-southeast-1', 'ap-southeast-5', 'eu-central-1', 'me-central-1', 'cn-beijing', 'cn-shanghai', 'cn-shenzhen', 'cn-qingdao', 'preregion'], + 'example' => 'cn-shanghai', + 'title' => '', ], ], [ - 'name' => 'SubtitleName', + 'name' => 'StartTime', 'in' => 'query', - 'allowEmptyValue' => true, + 'schema' => ['description' => 'The start time of the task.'."\n" + .'> - Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n" + .'> - If the task has already started running, this update does not take effect.', 'type' => 'string', 'required' => false, 'example' => '2024-08-23T15:30:00Z', 'title' => ''], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => ['description' => 'The end time of the task.'."\n" + .'> - Format: yyyy-MM-ddTHH:mm:ssZ (UTC).'."\n" + .'> - EndTime must be later than StartTime.'."\n" + .'> - EndTime must be later than the current time.'."\n" + .'> - If the task has already ended, this update does not take effect.', 'type' => 'string', 'required' => false, 'example' => '2024-08-27T14:30:00Z', 'title' => ''], + ], + [ + 'name' => 'SourceUrls', + 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The name of the subtitle template. The name can contain only digits, letters, and hyphens (-). The name cannot start with a hyphen.'."\n", - 'type' => 'string', + 'description' => 'The list of source stream URLs.'."\n" + ."\n" + .'> - For the live type, only one complete live streaming URL is supported.'."\n" + .'> - For the vod and url types, up to 30 URLs can be specified.'."\n" + .'> - The live type supports RTMP, SRT, and HTTP-FLV protocols.'."\n" + .'> - For the vod type, specify ApsaraVideo VOD media asset IDs.'."\n" + .'> - The url type supports MP4 and HTTP-FLV protocols.'."\n" + .'> - For live source streams, the update takes effect immediately. For video file source streams, the update takes effect after the currently playing video ends, and playback restarts from the beginning of the updated video list.'."\n" + .'> - Update this parameter while the task is stopped. The update takes effect after the task is restarted.', + 'type' => 'array', + 'items' => ['description' => 'The source stream URL.'."\n" + ."\n" + .'> - For the live type, only one complete live streaming URL is supported.'."\n" + .'> - For the vod and url types, up to 30 URLs can be specified.'."\n" + .'> - The live type supports RTMP, SRT, and HTTP-FLV protocols.'."\n" + .'> - For the vod type, specify ApsaraVideo VOD media asset IDs.'."\n" + .'> - The url type supports MP4 and HTTP-FLV protocols.'."\n" + .'> - For live source streams, the update takes effect immediately. For video file source streams, the update takes effect after the currently playing video ends, and playback restarts from the beginning of the updated video list.'."\n" + .'> - Update this parameter while the task is stopped. The update takes effect after the task is restarted.', 'type' => 'string', 'required' => false, 'example' => 'rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434', 'title' => ''], 'required' => false, - 'example' => 'sub01', + 'example' => 'changedtesturl', + 'title' => '', ], ], - ], - 'responses' => [ - 200 => [ + [ + 'name' => 'RepeatNumber', + 'in' => 'query', 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', - ], + 'description' => 'The number of times playback repeats after the playlist finishes. Valid values:'."\n" + ."\n" + .'- 0 (default): no repeat.'."\n" + .'- -1: loop indefinitely.'."\n" + .'- Other positive integers: the number of times playback repeats after the playlist finishes.'."\n" + ."\n" + .'> - This parameter applies only to video-on-demand or third-party video streams.'."\n" + .'> - The update takes effect immediately.', + 'type' => 'integer', + 'format' => 'int32', + 'default' => '-5', + 'enum' => [], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + ], + [ + 'name' => 'Offset', + 'in' => 'query', + 'schema' => ['description' => 'The start offset of the video file, in seconds. The value must be greater than 0.'."\n" + .'> - Specifies the position relative to the first frame from which to start reading.'."\n" + .'> - This parameter applies only to video-on-demand or third-party video streams.'."\n" + .'> - This parameter takes effect only when the first video in the playlist is played.'."\n" + .'> - Update this parameter while the task is stopped. The update takes effect after the task is restarted.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'CallbackUrl', + 'in' => 'query', + 'schema' => ['description' => 'The callback URL. Default value: empty.'."\n" + .'> - The URL that receives task-related callbacks.'."\n" + .'> - Maximum length: 2000 characters.'."\n" + .'> - If this parameter is not specified, task events are not sent as callbacks.'."\n" + .'> - The update takes effect when the next event is triggered.', 'type' => 'string', 'required' => false, 'example' => 'https://callback*****.com', 'title' => ''], + ], + [ + 'name' => 'FileIndex', + 'in' => 'query', + 'schema' => ['description' => 'The video index. Default value: 0.'."\n" + .'> Update this parameter while the task is stopped. The update takes effect after the task is restarted.', 'type' => 'integer', 'format' => 'int32', 'default' => '0', 'required' => false, 'example' => '0', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68*****'], + 'RetCode' => ['description' => 'The return code.'."\n" + ."\n" + .'> - The value "0" is returned if the call is successful.'."\n" + .'> - For exceptions, refer to the error code list below.', 'type' => 'integer', 'format' => 'int32', 'example' => '0', 'title' => ''], + 'Description' => ['description' => 'The error description.', 'type' => 'string', 'example' => 'OK', 'title' => ''], ], + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidParameter', 'errorMessage' => '%s.', 'description' => 'Parameter error'], + ['errorCode' => 'InvalidParam.CodeIllegalDuration', 'errorMessage' => '%s.', 'description' => 'The value of start time should be less than the value of end time .'], + ['errorCode' => 'CodeInvalidAliUid', 'errorMessage' => 'This aliuid does not have a live domain name.', 'description' => 'This aluid does not have a live domain name.'], + ['errorCode' => 'CodeTaskNotExist', 'errorMessage' => 'Task does not exist.', 'description' => 'The task does not exist.'], + ['errorCode' => 'CodeTaskHasStarted', 'errorMessage' => 'The task has already started.', 'description' => 'The task has already started and cannot be updated.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s.', 'description' => 'error on the live liveapi server.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0df228-4a64-af62-20e91b96****\\n","errorExample":""}]', - 'title' => 'DeleteLiveAISubtitle', - 'description' => 'You can call this operation to delete a specified subtitle template for live streaming.'."\n" + 'staticInfo' => ['returnType' => 'synchronous'], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68*****\\",\\n \\"RetCode\\": 0,\\n \\"Description\\": \\"OK\\"\\n}","type":"json"}]', + 'title' => 'Update a stream pulling and pushing task', + 'description' => '- Call this operation to update a stream pulling and pushing task.'."\n" + .'- If the task has not reached the configured start time, you can update the Region parameter.'."\n" + .'- While the task is running (including during abnormal retry states), only CallbackUrl and RepeatTime can be updated, and the updates take effect immediately.'."\n" + .'- If the task is stopped, all parameters except Region can be updated.'."\n" ."\n" - .'> The live subtitles feature is in invitational preview. You can add up to 300 subtitle templates.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'UpdateLiveAISubtitle' => [ - 'summary' => 'Updates a subtitle template.', - 'methods' => [ - 'post', - 'get', + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 10 calls per second. If this limit is exceeded, the API calls are throttled, which may affect your business. Call this operation appropriately.', + 'changeSet' => [ + ['createdAt' => '2025-04-27T08:03:58.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLivePullToPush'], + ], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + ], + 'UpdateLiveRecordNotifyConfig' => [ + 'summary' => 'Updates the domain-level recording callback configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -67670,229 +56195,264 @@ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '218740', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '107282', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The streaming domain of the streamer.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'SubtitleName', + 'name' => 'NotifyUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the subtitle template. The name can contain digits, letters, and hyphens (-) but cannot start with a hyphen (-).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'live AI subtitle template', - ], + 'schema' => ['description' => 'The callback URL for recording events, including event callbacks and status callbacks.'."\n" + ."\n" + .'> - The URL must start with `http://` or `https://`.'."\n" + .'> - To properly identify Chinese characters, spaces, and other special characters in the input, perform URL encoding.', 'type' => 'string', 'required' => true, 'example' => 'http://learn.aliyundoc.com/examplecallback.action', 'title' => ''], ], [ - 'name' => 'SrcLanguage', + 'name' => 'OnDemandUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The source language. Valid values:'."\n" - ."\n" - .'* en-US: English'."\n" - .'* zh-CN: Chinese'."\n" - .'* ru-RU: Russian'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'zh-CN', - ], + 'schema' => ['description' => 'The on-demand recording callback URL.'."\n" + ."\n" + .'> - The URL must start with `http://` or `https://`.'."\n" + .'> - To properly identify Chinese characters, spaces, and other special characters in the input, perform URL encoding.', 'type' => 'string', 'required' => false, 'example' => 'http://guide.aliyundoc.com/ondemandcallback.action', 'title' => ''], ], [ - 'name' => 'DstLanguage', + 'name' => 'NeedStatusNotify', 'in' => 'query', - 'schema' => [ - 'description' => 'The target language. Valid values:'."\n" - ."\n" - .'* en-US: English'."\n" - .'* zh-CN: Chinese'."\n" - .'* es-ES: Spanish'."\n" - .'* ru-RU: Russian'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'zh-CN', - ], + 'schema' => ['description' => 'Specifies whether recording task status callbacks are required. Valid values:'."\n" + ."\n" + .'- **true**: Recording task status callbacks are required.'."\n" + .'- **false** (default): Recording task status callbacks are not required.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], [ - 'name' => 'FontColor', + 'name' => 'NotifyReqAuth', 'in' => 'query', - 'schema' => [ - 'description' => 'The font color. Color format: RGBA.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0xFFFFFF', - ], + 'schema' => ['description' => 'Specifies whether to enable callback authentication. Valid values:'."\n" + ."\n" + .'- **true**: Enabled.'."\n" + ."\n" + .'- **false**: Disabled.'."\n" + ."\n" + .'>Default value: **false**. If this parameter is set to **true**, the NotifyAuthKey parameter is required.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], [ - 'name' => 'FontName', + 'name' => 'NotifyAuthKey', 'in' => 'query', + 'schema' => ['description' => 'The callback authentication key. The key is 16 to 32 characters in length and can contain only letters and digits.'."\n" + .'>This parameter is required when the NotifyReqAuth parameter is set to **true**.', 'type' => 'string', 'required' => false, 'maxLength' => 64, 'minLength' => 16, 'example' => 'testkeyyourkey12', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The font. Valid values:'."\n" - ."\n" - .'* KaiTi (default)'."\n" - .'* AlibabaPuHuiTi-Regular'."\n" - .'* AlibabaPuHuiTi-Bold'."\n" - .'* AlibabaPuHuiTi-Light'."\n" - .'* NotoSansHans-Regular'."\n" - .'* NotoSansHans-Bold'."\n" - .'* NotoSansHans-Light'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'KaiTi', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidNotifyUrl.Malformed', 'errorMessage' => 'Specified NotifyUrl is invalid.', 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['errorCode' => 'InvalidNotifyUrl.Unsafe', 'errorMessage' => 'Specified NotifyUrl is not safe.', 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['errorCode' => 'InvalidOnDemandUrl.Malformed', 'errorMessage' => 'Specified OnDemandUrl is invalid.', 'description' => ''], + ['errorCode' => 'InvalidOnDemandUrl.Unsafe', 'errorMessage' => 'Specified OnDemandUrl is not safe.', 'description' => ''], + ['errorCode' => 'InvalidDomain.NotFound', 'errorMessage' => 'Specified Domain is invalid.', 'description' => ''], + ['errorCode' => 'Forbidden', 'errorMessage' => 'Ram Permission is forbidden.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'InvalidConfig.NotFound', 'errorMessage' => 'Config does not exist.', 'description' => ''], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD\\"\\n}","type":"json"}]', + 'title' => 'Update domain-level recording callback configuration', + 'description' => 'When you update the domain-level recording callback configuration, you can modify the following settings:'."\n" + .'- The callback URL for recording events, including recording file generation event callbacks and recording task status callbacks. For more information, see [Recording event callbacks](~~55016~~).'."\n" + .'- The on-demand recording callback URL. For more information, see [On-demand recording callback](~~85910~~).'."\n" + .'- Whether recording task status callbacks are required.'."\n" + ."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 30 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Call this operation appropriately.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveRecordNotifyConfig'], + ], + ], + 'ramActions' => [ [ - 'name' => 'BgColor', - 'in' => 'query', - 'schema' => [ - 'description' => 'The background color of the subtitles. Color format: RGBA.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '0xFF0000', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveRecordNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], + ], + ], + 'UpdateLiveRecordVodConfig' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '181113', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], + ], + 'parameters' => [ [ - 'name' => 'PositionNormalized', + 'name' => 'RegionId', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The position of the subtitles relative to the lower-left corner of the screen. The value is a pair of coordinates.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The position of the subtitles relative to the lower-left corner of the screen. The value is a pair of coordinates.', - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '[0.32,0.27]', - ], - 'required' => false, - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'ShowSourceLan', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to display the source language. Valid values: true and false. Default value: false.'."\n", - 'type' => 'boolean', - 'required' => false, - 'example' => 'true', - ], + 'schema' => ['description' => 'The streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'MaxLines', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of displayed lines.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The application name. You can view the `AppName` on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => true, 'example' => 'testName', 'title' => ''], ], [ - 'name' => 'WordPerLine', + 'name' => 'StreamName', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of characters per line. Valid values: 1 to 500.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '20', - ], + 'schema' => ['description' => 'The stream name. You can view the `StreamName` on the [Stream Management](~~197397~~) page.', 'type' => 'string', 'required' => false, 'example' => 'stream', 'title' => ''], ], [ - 'name' => 'FontSizeNormalized', + 'name' => 'VodTranscodeGroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The font size. Valid values: \\[0,1].'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.037', - ], + 'schema' => ['description' => '>This parameter is ignored if the `RecordFormat` parameter is specified.> The ID of the ApsaraVideo for VOD transcoding template group.', 'type' => 'string', 'required' => false, 'example' => 'e2d796d3bb5fd8049d32bff62f94****', 'title' => ''], ], [ - 'name' => 'BorderWidthNormalized', + 'name' => 'CycleDuration', 'in' => 'query', - 'schema' => [ - 'description' => 'The font weight. Valid values: \\[0,1].'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.05', - ], + 'schema' => ['description' => 'The duration of each cyclical recording file, in seconds. Default value: **3600**. Valid values: **300** to **21600**.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '21600', 'minimum' => '300', 'example' => '300', 'title' => ''], ], [ - 'name' => 'BgWidthNormalized', + 'name' => 'AutoCompose', 'in' => 'query', - 'schema' => [ - 'description' => 'The size of the background box. Valid values: \\[0,1].'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.09', - ], + 'schema' => ['description' => '>This parameter is ignored if the `RecordFormat` parameter is specified.>'."\n" + .'Specifies whether to enable automatic composition. Valid values:'."\n" + ."\n" + .'- **ON**: Enables automatic composition. If you set this value to ON, you must also specify the `ComposeVodTranscodeGroupId` parameter.', 'type' => 'string', 'required' => false, 'example' => 'OFF', 'title' => ''], ], [ - 'name' => 'SubtitleId', + 'name' => 'ComposeVodTranscodeGroupId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the subtitle template.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '597991f3-6ef9-4100-9238-82951de1****', - ], + 'schema' => ['description' => '>This parameter is ignored if the `RecordFormat` parameter is specified.>'."\n" + .'The ID of the ApsaraVideo for VOD transcoding template group used to transcode the video after automatic composition.'."\n" + ."\n" + .'> You can get the ID by calling the [Query Transcoding Configuration List](~~454928~~) operation.', 'type' => 'string', 'required' => false, 'example' => '*****', 'title' => ''], ], [ - 'name' => 'Description', + 'name' => 'OnDemand', 'in' => 'query', - 'schema' => [ - 'description' => 'The description of the subtitle template. The description can be up to 128 characters in length and can contain letters, digits, and special characters.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'live AI subtitle template', - ], + 'schema' => ['description' => 'The on-demand recording mode. Valid values:'."\n" + ."\n" + .'- **0** (default): Disables on-demand recording.'."\n" + ."\n" + .'- **1**: Enables on-demand recording triggered by an HTTP callback.'."\n" + ."\n" + .'- **2**: Triggers recording by parsing push streaming parameters.'."\n" + ."\n" + .'- **7**: Manual recording. Call the [RealTimeRecordCommand](~~2847882~~) operation to start or stop recording.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '0', 'title' => ''], ], [ - 'name' => 'Width', + 'name' => 'DelayTime', 'in' => 'query', + 'schema' => ['description' => 'The maximum duration of a stream interruption, in seconds. If a stream interruption exceeds this duration, the system generates a new file. Valid values: 15 to 21600.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '180'], + ], + [ + 'name' => 'RecordFormat', + 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The width of the preview. Unit: pixels.'."\n", - 'type' => 'string', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Format' => ['description' => 'The recording storage format.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'm3u8'], + 'SliceDuration' => ['description' => 'The duration of each segment, in seconds.'."\n" + .'>This parameter applies only to the `m3u8` format.>'."\n" + .'The default value is 30. Valid values: 5 to 30.', 'type' => 'integer', 'format' => 'int32', 'title' => '', 'required' => false, 'example' => '30'], + 'AutoCompose' => ['description' => 'Specifies whether to enable automatic composition. Valid values:'."\n" + ."\n" + .'- `ON`: Enables automatic composition.'."\n" + ."\n" + .'- `OFF`: Disables automatic composition.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'ON'], + 'VideoProcess' => ['description' => 'The video source to process. Valid values:'."\n" + ."\n" + .'- `origin` (default): Processes the source video.'."\n" + ."\n" + .'- `compose`: Processes the composed video.'."\n" + ."\n" + .'To process both the source and composed videos, separate the values with a comma. For example, `origin,compose`.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'origin'], + 'ProcessMethod' => ['description' => 'The video processing method. Valid values:'."\n" + ."\n" + .'- `transcode`: Processes the video by using a transcoding template group.'."\n" + ."\n" + .'- `workflow`: Processes the video by using a workflow.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'transcode'], + 'ProcessTemplateId' => ['description' => 'The ID of the transcoding template group or workflow.'."\n" + ."\n" + .'> ## The ID must match the video processing method specified in ProcessMethod. For example, if ProcessMethod is set to transcode, you must use a transcoding template group ID.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'e2d796d3bb5fd8049d32bff62f94****'], + 'Tags' => ['description' => 'A tag for video classification.', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'sports'], + ], + 'title' => '', + 'description' => 'The configuration for a recording format.'."\n" + .'>This operation can only modify the parameters of existing recording formats. You cannot use it to add or remove formats from the configuration. For example, if your configuration includes `m3u8` and `flv`, you can update their parameters but not add `mp4`.>', + 'required' => false, + 'example' => '', + ], + 'maxItems' => 3, + 'title' => '', + 'description' => 'A list of parameters for each recording format.', 'required' => false, - 'example' => '1280', + 'example' => '', ], ], [ - 'name' => 'Height', + 'name' => 'TranscodeTemplates', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'The height of the preview. Unit: pixels.'."\n" + 'type' => 'array', + 'items' => ['description' => '- The transcoding template for recording a transcoded stream. You can specify a maximum of 10 templates.'."\n" ."\n" - .'The following preview specifications (width x height) are supported:'."\n" + .'- This parameter is required if you record transcoded streams.'."\n" ."\n" - .'* 360p (640 x 360)'."\n" - .'* 360p (360 x 640)'."\n" - .'* 480p (854 x 480)'."\n" - .'* 480p (480 x 854)'."\n" - .'* 720p (1280 x 720)'."\n" - .'* 720p (720 x 1280)'."\n" - .'* 1080p (1920 x 1080)'."\n" - .'* 1080p (1080 x 1920)'."\n", - 'type' => 'string', + .'- To record all transcoded streams, set `TranscodeTemplates.1` to the wildcard character (`*`).'."\n" + ."\n" + .'> The value `raw` is reserved and cannot be used for `TranscodeTemplates`.'."\n" + .'> The `N` in `TranscodeTemplates.N` is an index for specifying multiple settings. For example: `TranscodeTemplates.1=sd`, `TranscodeTemplates.2=hd`.'."\n" + .'> --------------------------------------------------------------------------------------------------------------------------------------------------', 'type' => 'string', 'title' => '', 'required' => false, 'example' => 'sd'], + 'maxItems' => 10, + 'title' => '', + 'description' => 'A list of transcoding templates.', 'required' => false, - 'example' => '720', + 'example' => '', ], ], ], @@ -67901,128 +56461,125 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'String 5c6a2a0df228-4a64- af62-20e91b96****', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '61C96B9A-F203-4EC5-8E43-CB92E68F67DF', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => 'Config has already exist.', 'description' => ''], + ['errorCode' => 'CommomLiveRcordConfigExisted', 'errorMessage' => 'Commom liverecord config has already exist.', 'description' => ''], + ['errorCode' => 'InvalidAutoCompose.Malformed', 'errorMessage' => 'Specified parameter AutoCompose is not valid.', 'description' => ''], + ['errorCode' => 'InvalidAutoComposeAndComposeVodTranscodeGroupId.Malformed', 'errorMessage' => 'Specified parameter AutoCompose and ComposeVodTranscodeGroupId is not valid, must both empty or input', 'description' => ''], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ], + 403 => [ + ['errorCode' => 'InvalidRegion.Conflict', 'errorMessage' => 'Specified parameter StorageLocation and Region is not match', 'description' => ''], + ], + [ + ['errorCode' => 'InvalidStorage.NotFound', 'errorMessage' => 'Specified parameter StorageLocation is not exist', 'description' => ''], + ['errorCode' => 'InvalidTemplateGroupId.NotFound', 'errorMessage' => 'Specified parameter vodTranscodeGroupId or composeVodTranscodeGroupId is not exist', 'description' => ''], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => 'The request processing has failed due to backend service exception.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"String\\\\t5c6a2a0df228-4a64- af62-20e91b96****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n String\\t5c6a2a0df228-4a64- af62-20e91b96****\\n","errorExample":""}]', - 'title' => 'UpdateLiveAISubtitle', - ], - 'DescribeLiveAISubtitle' => [ - 'summary' => 'Queries subtitle templates.', - 'methods' => [ - 'post', - 'get', + 'title' => 'UpdateLiveRecordVodConfig', + 'summary' => 'Update a live-to-VOD configuration.', + 'description' => 'This operation has a rate limit of 1,000 calls per minute per account. If you exceed this limit, your API calls will be rate-limited, which may interrupt your service.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'http', - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveRecordVodConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"61C96B9A-F203-4EC5-8E43-CB92E68F67DF\\"\\n}","type":"json"}]', + ], + 'UpdateLiveSnapshotDetectPornConfig' => [ + 'summary' => 'Modifies a video moderation configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', + 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'get', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '218857', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '107283', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'SubtitleId', + 'name' => 'AppName', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the subtitle template.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', - ], + 'schema' => ['description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name in the ingest URL. Otherwise, the configuration does not take effect. The name can be up to 255 characters in length and can contain digits, letters, hyphens (-), and underscores (\\_). The name cannot start with a hyphen (-) or underscore (\\_). You can also specify an asterisk (\\*) as the value to match all applications.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], ], [ - 'name' => 'SubtitleName', + 'name' => 'OssEndpoint', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the subtitle template. The name can contain only digits, letters, and hyphens (-). The name cannot start with a hyphen.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sub01', - ], + 'schema' => ['description' => 'The endpoint of the Object Storage Service (OSS) bucket.', 'type' => 'string', 'required' => false, 'example' => 'cn-oss-****.aliyuncs.com', 'title' => ''], ], [ - 'name' => 'PageNumber', + 'name' => 'OssBucket', 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Valid values: \\[1,100].'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '1', - ], + 'schema' => ['description' => 'The name of the OSS bucket.', 'type' => 'string', 'required' => false, 'example' => 'liveBucket****', 'title' => ''], ], [ - 'name' => 'PageSize', + 'name' => 'OssObject', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Valid values: \\[1,100].'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '100', - ], + 'schema' => ['description' => 'The name of the snapshot that stores violations such as pornographic content and politically sensitive content.', 'type' => 'string', 'required' => false, 'example' => '{liveApp****}/{liveStream****}/{Date}/{Hour}/{Minute}_{Second}.jpg', 'title' => ''], ], [ - 'name' => 'IsDefault', + 'name' => 'Interval', + 'in' => 'query', + 'schema' => ['description' => 'The interval at which snapshots are captured from the live stream. Valid values: **5 to 3600**. Unit: seconds.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'maximum' => '3600', 'minimum' => '5', 'example' => '5', 'title' => ''], + ], + [ + 'name' => 'Scene', 'in' => 'query', + 'style' => 'repeatList', 'schema' => [ - 'description' => 'Specifies whether to query the default subtitle template. Valid values:'."\n" + 'description' => 'The moderation scenario array.', + 'type' => 'array', + 'items' => ['description' => 'The moderation scenario. Valid values:'."\n" + ."\n" + .'- **porn** (default): pornography detection'."\n" ."\n" - .'* true'."\n" + .'- **terrorism**: terrorism detection'."\n" ."\n" - .'* false'."\n" + .'- **ad**: ad violation detection'."\n" ."\n" - .' **'."\n" + .'- **live**: undesirable scene detection'."\n" ."\n" - .' **Note **The default template includes the built-in parameter configurations. You can specify the copyFrom parameter when you call the AddLiveAISubtitle operation to use the default template.'."\n", - 'type' => 'boolean', + .'- **logo**: logo detection', 'type' => 'string', 'required' => false, 'example' => 'live', 'title' => ''], 'required' => false, - 'example' => 'false', + 'example' => 'porn', + 'maxItems' => 5, + 'title' => '', ], ], ], @@ -68031,556 +56588,338 @@ 'schema' => [ 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b96****', - ], - 'SubtitleConfigs' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'SubtitleConfig' => [ - 'description' => 'The information about the subtitle templates.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Subtitle template information object', - 'type' => 'object', - 'properties' => [ - 'DstLanguage' => [ - 'description' => 'The language to which the subtitles are translated.'."\n", - 'type' => 'string', - 'example' => 'zh-CN', - ], - 'SrcLanguage' => [ - 'description' => 'The source language of the subtitles.'."\n", - 'type' => 'string', - 'example' => 'zh-CN', - ], - 'FontColor' => [ - 'description' => 'The font color.'."\n", - 'type' => 'string', - 'example' => '0xFFFFFF', - ], - 'FontName' => [ - 'description' => 'The font.'."\n", - 'type' => 'string', - 'example' => 'AlibabaPuHuiTi-Regular', - ], - 'ShowSourceLan' => [ - 'description' => 'Indicates whether the source language of the subtitle is displayed.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => 'true', - ], - 'MaxLines' => [ - 'description' => 'The number of displayed lines.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'WordPerline' => [ - 'description' => 'The number of words per line.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '20', - ], - 'PositionNormalized' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'Position' => [ - 'description' => 'The position of the subtitles.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Subtitle position', - 'type' => 'number', - 'format' => 'float', - 'example' => '[0.3,0.35]', - ], - ], - ], - ], - 'BgColor' => [ - 'description' => 'The background color of the subtitles.'."\n", - 'type' => 'string', - 'example' => '0xFF0000', - ], - 'BgWidthNormalized' => [ - 'description' => 'The size of the background image.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.09', - ], - 'BorderWidthNormalized' => [ - 'description' => 'The font weight.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.05', - ], - 'Width' => [ - 'description' => 'The width of the preview image.'."\n", - 'type' => 'string', - 'example' => '1280', - ], - 'Height' => [ - 'description' => 'The height of the preview image.'."\n", - 'type' => 'string', - 'example' => '720', - ], - 'SubtitleName' => [ - 'description' => 'The name of the subtitle template.'."\n", - 'type' => 'string', - 'example' => 'sub1', - ], - 'SubtitleId' => [ - 'description' => 'The ID of the subtitle template.'."\n", - 'type' => 'string', - 'example' => '597991f3-6ef9-4100-9238-82951de1****', - ], - 'RulesRefer' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'RulesId' => [ - 'description' => 'The ID of the subtitle rule.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'Subtitle rule ID', - 'type' => 'string', - 'example' => '1419783e-0dd2-4485-a298-6e4a0e4e****', - ], - ], - ], - ], - 'FontSizeNormalized' => [ - 'description' => 'The font size.'."\n", - 'type' => 'string', - 'example' => '0.037', - ], - 'Description' => [ - 'description' => 'The description of the template.'."\n", - 'type' => 'string', - 'example' => 'live AI subtitle template', - ], - ], - ], - ], - ], - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], + ['errorCode' => 'InvalidOssEndpoint.Malformed', 'errorMessage' => 'Specified parameter OssEndpoint is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.Malformed', 'errorMessage' => 'Specified parameter OssBucket is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssObject.Malformed', 'errorMessage' => 'Specified parameter OssObject is not valid.', 'description' => ''], + ['errorCode' => 'InvalidOssBucket.NotFound', 'errorMessage' => 'The parameter OssBucket does not exist.', 'description' => ''], + ['errorCode' => 'InvalidScenes', 'errorMessage' => 'Specified parameter Scene is not valid.', 'description' => ''], + ], + 404 => [ + ['errorCode' => 'InvalidConfig.NotFound', 'errorMessage' => 'Config does not exist.', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b96****\\",\\n \\"SubtitleConfigs\\": {\\n \\"SubtitleConfig\\": [\\n {\\n \\"DstLanguage\\": \\"zh-CN\\",\\n \\"SrcLanguage\\": \\"zh-CN\\",\\n \\"FontColor\\": \\"0xFFFFFF\\",\\n \\"FontName\\": \\"AlibabaPuHuiTi-Regular\\",\\n \\"ShowSourceLan\\": 0,\\n \\"MaxLines\\": 2,\\n \\"WordPerline\\": 20,\\n \\"PositionNormalized\\": {\\n \\"Position\\": [\\n 0\\n ]\\n },\\n \\"BgColor\\": \\"0xFF0000\\",\\n \\"BgWidthNormalized\\": 0.09,\\n \\"BorderWidthNormalized\\": 0.05,\\n \\"Width\\": \\"1280\\",\\n \\"Height\\": \\"720\\",\\n \\"SubtitleName\\": \\"sub1\\",\\n \\"SubtitleId\\": \\"597991f3-6ef9-4100-9238-82951de1****\\",\\n \\"RulesRefer\\": {\\n \\"RulesId\\": [\\n \\"1419783e-0dd2-4485-a298-6e4a0e4e****\\"\\n ]\\n },\\n \\"FontSizeNormalized\\": \\"0.037\\",\\n \\"Description\\": \\"live AI subtitle template\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 5c6a2a0df228-4a64- af62-20e91b96****\\n \\n zh-CN\\n zh-CN\\n 0xFFFFFF\\n AlibabaPuHuiTi-Regular\\n 2\\n 20\\n [0.3,0.35]\\n 0xFF0000\\n 0.09\\n 0.05\\n 1280\\n 720\\n sub1\\n 597991f3-6ef9-4100-9238-82951de1****\\n 1419783e-0dd2-4485-a298-6e4a0e4e****\\n 0.037\\n live AI subtitle template\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveAISubtitle', - 'description' => 'This interface supports querying the list of subtitle template information with specified pagination parameters. Ensure that the parameter settings meet the requirements when calling.'."\n" - .'>The real-time subtitle function is currently in the beta testing phase, and each user can add up to 300 subtitle templates. >'."\n" - .'## QPS Limit '."\n" - .'The QPS limit for this interface per user is 60 times/second. Exceeding this limit will result in API calls being throttled, which may impact your business operations. Please use it reasonably. For more information, refer to [QPS Limitation](~~343507~~).', - ], - 'CreateLiveAIStudio' => [ - 'summary' => 'Creates a lightweight virtual studio template.', - 'methods' => [ - 'post', - 'get', + 'title' => 'UpdateLiveSnapshotDetectPornConfig', + 'description' => '- Obtain the main streaming domain, and then call this operation to modify a video moderation configuration.'."\n" + ."\n" + .'- Only some live centers support the content moderation feature. For more information, see [Supported regions](~~193730~~).'."\n" + ."\n" + .'## [](#qps-)QPS limit'."\n" + ."\n" + .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveSnapshotDetectPornConfig'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveSnapshotDetectPornConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'UpdateLiveSnapshotNotifyConfig' => [ + 'summary' => 'Updates the snapshot callback configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'write', + 'operationType' => 'readAndWrite', 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '250868', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveMH1XD3'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'StudioName', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the virtual studio template. The name must be unique.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'stu02', - ], + 'schema' => ['description' => 'The main streaming domain.', 'type' => 'string', 'required' => true, 'example' => 'ww.yourdomain***.com', 'title' => ''], ], [ - 'name' => 'Description', + 'name' => 'NotifyUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The custom description.'."\n", - 'type' => 'string', - 'required' => false, - 'enumValueTitles' => [], - 'example' => 'template 1080', - ], + 'schema' => ['description' => 'The callback URL. The URL must be valid and cannot exceed 500 characters.', 'type' => 'string', 'required' => false, 'example' => 'http://callback.yourdomain***.com', 'title' => ''], ], [ - 'name' => 'Width', + 'name' => 'NotifyReqAuth', 'in' => 'query', - 'schema' => [ - 'description' => 'The preview width. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1920', - ], + 'schema' => ['description' => 'Specifies whether to enable authentication for callback notifications. Valid values:'."\n" + ."\n" + .'- **yes**: Enables'."\n" + ."\n" + .'- **no**: Disables'."\n" + ."\n" + .'> The default value is **no**. If you set this parameter to **yes**, NotifyAuthKey is required.', 'type' => 'string', 'required' => false, 'example' => 'yes', 'title' => ''], ], [ - 'name' => 'Height', + 'name' => 'NotifyAuthKey', 'in' => 'query', + 'schema' => ['description' => 'The callback authentication key. The key must be 16 to 32 characters in length and can contain letters and digits.'."\n" + ."\n" + .'> This parameter is required when NotifyReqAuth is set to **yes**.', 'type' => 'string', 'required' => false, 'example' => 'testkeyyourkey12', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The preview height. Unit: pixels.'."\n" - ."\n" - .'The following preview specifications (width × height) are supported:'."\n" - ."\n" - .'* Landscape low definition 360p (640×360)'."\n" - .'* Portrait low definition 360p (360×640)'."\n" - .'* Landscape standard definition 480p (854×480)'."\n" - .'* Portrait standard definition 480p (480×854)'."\n" - .'* Landscape high definition 720p (1280×720)'."\n" - .'* Portrait high definition 720p (720×1280)'."\n" - .'* Landscape ultra-high definition 1080p (1920×1080)'."\n" - .'* Portrait ultra-high definition 1080p (1080×1920)'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1080', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A3136B58-5876-5A93-83CA-B562781981A0', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ['errorCode' => 'MalformedParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Invalid parameter, please check and try again.'], + ['errorCode' => 'ConfigNotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Configuration does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A3136B58-5876-5A93-83CA-B562781981A0\\"\\n}","type":"json"}]', + 'title' => 'UpdateLiveSnapshotNotifyConfig', + 'description' => 'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'BackgroundType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the background material. Valid values:'."\n" - ."\n" - .'* VOD: a video in ApsaraVideo VOD'."\n" - .'* PIC: an image'."\n" - .'* LIVE: a live stream'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'VOD', - 'enum' => [ - 'VOD', - 'LIVE', - 'PIC', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveSnapshotNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], + ], + ], + 'UpdateLiveStreamMonitor' => [ + 'summary' => 'Updates the configurations of a monitoring session.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '107285', + 'abilityTreeNodes' => ['FEATUREliveSM955S'], + ], + 'parameters' => [ [ - 'name' => 'BackgroundResourceId', + 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the background material in ApsaraVideo VOD. You can obtain the ID from the ApsaraVideo VOD console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'd0eb493192c771efba644531858c0102', - 'enum' => [], - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'BackgroundResourceUrl', + 'name' => 'MonitorId', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the background material. Specify either this parameter or the BackgroundResourceId parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxx.com/1.mp4', - 'enum' => [], - ], + 'schema' => ['description' => 'The ID of the monitoring session.'."\n" + ."\n" + .'> Obtain the MonitorId value from the response parameters of the [CreateLiveStreamMonitor](~~2848129~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'MediaType', + 'name' => 'MonitorName', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the multimedia material. Valid values:'."\n" - ."\n" - .'* VOD: a video in ApsaraVideo VOD'."\n" - .'* PIC: an image'."\n" - .'* LIVE: a live stream'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'VOD', - 'enum' => [ - 'VOD', - 'LIVE', - 'PIC', - ], - ], + 'schema' => ['description' => 'The name of the monitoring session.', 'type' => 'string', 'required' => false, 'example' => 'liveMonitor****', 'title' => ''], ], [ - 'name' => 'MediaResourceId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the multimedia material in ApsaraVideo VOD. You can obtain the ID from the ApsaraVideo VOD console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'd0eb493192c771efba644531858c0102', - 'enum' => [], - ], + 'schema' => ['description' => 'The output domain name for the monitoring session.', 'type' => 'string', 'required' => false, 'example' => 'demo.aliyundoc.com', 'title' => ''], ], [ - 'name' => 'MediaResourceUrl', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the multimedia material. Specify either this parameter or the MediaResourceId parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxx.com/2.mp4', - 'enum' => [], - ], + 'schema' => ['description' => 'The application name for the output stream of the monitoring session. You can specify a custom name. If you do not specify this parameter, **monitor** is used as the AppName.', 'type' => 'string', 'required' => false, 'example' => 'monitor****', 'title' => ''], ], [ - 'name' => 'MediaLayout', + 'name' => 'Stream', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The layout information of the multimedia material.'."\n", - 'type' => 'object', - 'properties' => [ - 'PositionX' => [ - 'description' => 'The x-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0', - ], - 'PositionY' => [ - 'description' => 'The y-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the material height. The value indicates the ratio of the material height to the height of the background. Valid values: **0 to 1**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.5', - ], - ], - 'required' => false, - ], + 'schema' => ['description' => 'The name of the output stream for the monitoring session.', 'type' => 'string', 'required' => false, 'example' => 'monitorStream****', 'title' => ''], ], [ - 'name' => 'MattingType', + 'name' => 'OutputTemplate', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of chroma key. Valid values:'."\n" - ."\n" - .'* green: green-screen chroma key'."\n" - .'* blue: blue-screen chroma key'."\n" - .'* complex: background replacement'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'complex', - 'enum' => [ - 'green', - 'blue', - 'complex', - ], - ], + 'schema' => ['description' => 'The output template for the monitoring session. Valid values:'."\n" + ."\n" + .'- **lp\\_ld**: low definition.'."\n" + ."\n" + .'- **lp\\_sd**: standard definition.'."\n" + ."\n" + .'- **lp\\_hd**: high definition.'."\n" + ."\n" + .'- **lp\\_ud**: ultra-high definition.', 'type' => 'string', 'required' => false, 'example' => 'lp_ud', 'title' => ''], ], [ - 'name' => 'MattingLayout', + 'name' => 'InputList', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The layout information of the chroma-keyed material.'."\n", - 'type' => 'object', - 'properties' => [ - 'PositionX' => [ - 'description' => 'The x-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.3', - ], - 'PositionY' => [ - 'description' => 'The y-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.3', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the material height. The value indicates the ratio of the material height to the height of the background. Valid values: **0 to 1**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.5', - ], - ], - 'required' => true, - ], + 'schema' => ['description' => 'The list of input streams to monitor. For more information, see the **InputConfig** table below.', 'type' => 'string', 'required' => true, 'example' => 'InputConfig', 'title' => ''], + ], + [ + 'name' => 'MonitorConfig', + 'in' => 'query', + 'schema' => ['description' => 'The settings for alert thresholds. The value is a JSON string. For more information, see the MonitorConfig table below.', 'type' => 'string', 'required' => false, 'example' => '"{\\"fpsLowThres\\": 0.6,\\"brLowThres\\": 1.1,\\"eofDurationThresSec\\": 10}"', 'title' => ''], + ], + [ + 'name' => 'CallbackUrl', + 'in' => 'query', + 'schema' => ['description' => 'The webhook address. HTTP and HTTPS are supported.', 'type' => 'string', 'required' => false, 'example' => 'http://guide.aliyundoc.com/notify', 'title' => ''], + ], + [ + 'name' => 'DingTalkWebHookUrl', + 'in' => 'query', + 'schema' => ['description' => 'The webhook URL of the DingTalk chatbot. Monitoring alerts are sent to a DingTalk group using a chatbot. Set up a chatbot and enter its webhook URL, which must be an HTTP or HTTPS address. For more information, see [Custom robot access](https://open.dingtalk.com/document/robots/custom-robot-access).'."\n" + ."\n" + .'> Set the custom keyword of the DingTalk chatbot to "Alerting". Otherwise, messages cannot be received.', 'type' => 'string', 'required' => false, 'example' => 'https://oapi.dingtalk.com/robot/send?access_token=7a7d404056eee1f2fd944ace9bcfc361dc6448583e1d3d3baa****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '17D7526C-69AD-5761-8037-071C27358345', - ], - 'StudioId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the virtual studio template.'."\n", - 'type' => 'string', - 'example' => '369ced1f-c33a-49e5-91da-bdaae3d6c1c2', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0d-f228-4a64-af62-20e91b9676b3', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.PurchaseTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.ExpireTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidChargeType.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidChargeType.PostSupport', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidParameter.ChargeType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPeriod.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ['errorCode' => 'InvalidMonitorId.Malformed', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The parameter MonitorId is invalid, please check and try again.'], ], [ - [ - 'errorCode' => 'CasterNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], ], - [ - [ - 'errorCode' => 'InvalidParameter.NormType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 404 => [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ['errorCode' => 'StreamMonitorNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The monitoring room does not exist, please check and try again.'], ], - 408 => [ - [ - 'errorCode' => 'CreateLiveAIStudio.Timeout', - 'errorMessage' => '%s, please try again later.', - ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'title' => 'UpdateLiveStreamMonitor', + 'description' => 'This operation updates the configuration of a monitoring session. If the monitoring session is running, updates to the input source configuration take effect in real time.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10. API calls that exceed this limit are throttled. Throttling can affect your business, so we recommend that you plan your calls accordingly.', + 'requestParamsDescription' => '**InputConfig**'."\n" + ."\n" + .'| Name | Type | Description | Example |'."\n" + .'| ------------ | ------------ | -------------------------------------------------- | ----------------------------------------------------------- |'."\n" + .'| Index | Integer | The index. This parameter is used by the frontend. | 1 |'."\n" + .'| LayoutId | Integer | The layout ID. The value must start from 1. | 1 |'."\n" + .'| StreamName | String | The display name of the monitored stream. | monitorStream**** |'."\n" + .'| InputUrl | String | The URL of the input stream. | demo.aliyundoc.com |'."\n" + .'| LayoutConfig | LayoutConfig | The layout information. | For more information, see the **LayoutConfig** table below. |'."\n" + .'| PlayConfig | PlayConfig | The playback configuration. | For more information, see the **PlayConfig** table below. |'."\n" + ."\n" + .'**LayoutConfig**'."\n" + ."\n" + .'| Name | Type | Description | Example |'."\n" + .'| ------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- |'."\n" + .'| FillMode | String | The fill mode. Set this parameter to none for the frontend. | none |'."\n" + .'| PositionRefer | String | The reference point for the position of the element. Valid values: TopLeft, TopRight, BottomLeft, and BottomRight. | TopLeft |'."\n" + .'| PositionNormalized | Float | The normalized position of the fill area for the layer element. The value is in the [x,y] format. The values of x and y range from 0 to 1. For example, [0.1, 0.1] indicates a horizontal offset of 10% and a vertical offset of 10% from the top-left corner. | \\[0.1, 0.1] |'."\n" + .'| SizeNormalized | Float | The size of the fill area for the layer element. The value is in the [w,h] format. The values of w and h range from 0 to 1. Both the width and height are normalized. For example, [0.2, 0.3] indicates a horizontal proportion of 20% and a vertical proportion of 30%. | \\[0.2, 0.3] |'."\n" + ."\n" + .'**PlayConfig**'."\n" + ."\n" + .'| Name | Type | Description | Example |'."\n" + .'| ---------- | ----- | ------------------------------------------------------------------------- | ------- |'."\n" + .'| VolumeRate | Float | The volume. The value ranges from 0 to 1, accurate to two decimal places. | 0.50 |'."\n" + ."\n" + .'**MonitorConfig**'."\n" + ."\n" + .'| Name | Type | Description | Example |'."\n" + .'| ------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |'."\n" + .'| fpsLowThres | Float | The alert threshold for the video frame rate. This threshold is a coefficient. The value must be in the (0.0, 1.0] range. The default value is 0.7. An alert is triggered if the video frame rate of the monitored stream is less than (alert threshold × original frame rate of the live stream). | 0.7 |'."\n" + .'| brHighThres | Float | The alert threshold for the audio and video bitrate. This threshold is a coefficient. The value must be in the (0.0, 100] range. The default value is 1.0. An alert is triggered if the audio and video bitrate of the monitored stream is greater than (alert threshold × original bitrate of the live stream). | 1.0 |'."\n" + .'| eofDurationThresSec | Float | The threshold for stream interruption detection, in seconds. An alert is triggered if the monitored stream is interrupted for a duration longer than this threshold. The value must be in the (0, 65535] range. The default value is 0. After a stream is interrupted, the connection remains active. The system determines that the stream is interrupted if a packet receipt timeout of 5 s occurs. Therefore, if you set this parameter to a value less than or equal to 5 s, the actual detection time is 5 s. If you set this parameter to a value greater than 5 s, the actual detection time is the value you set. The first 5 s are for the internal packet receipt timeout, and the remaining time is the duration for which the system waits for the stream to resume. If the stream resumes before the timeout period expires, no alert is triggered. If you change the monitoring address before the stream times out, the system stops detecting the timeout and does not trigger an alert for the previous stream. | 10 |', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [ + ['createdAt' => '2024-09-04T07:12:49.000Z', 'description' => 'Request parameters changed'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"17D7526C-69AD-5761-8037-071C27358345\\",\\n \\"StudioId\\": \\"369ced1f-c33a-49e5-91da-bdaae3d6c1c2\\"\\n}","type":"json"}]', - 'title' => 'CreateLiveAIStudio', - 'description' => '> The lightweight virtual studio feature is in invitational preview. You can add up to 300 virtual studio templates.'."\n", - ], - 'DeleteLiveAIStudio' => [ - 'summary' => 'Deletes a virtual studio template.', - 'methods' => [ - 'post', - 'get', + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveStreamMonitor'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveStreamMonitor', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0d-f228-4a64-af62-20e91b9676b3\\"\\n}","type":"json"}]', + ], + 'UpdateLiveStreamTranscode' => [ + 'summary' => 'Updates a default transcoding configuration.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -68588,158 +56927,105 @@ ], 'operationType' => 'write', 'systemTags' => [ - 'operationType' => 'delete', + 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '239775', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeCode' => '206836', + 'abilityTreeNodes' => ['FEATUREliveG4SX14', 'FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'StudioId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the template. You can obtain the ID from the response to the CreateLiveAIStudio operation.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '369ced1f-c33a-49e5-91da-bdaae3d6c1c2', - ], + 'schema' => ['description' => 'The streaming domain. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], + ], + [ + 'name' => 'App', + 'in' => 'query', + 'schema' => ['description' => 'The AppName of the live stream. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'liveApp****', 'title' => ''], + ], + [ + 'name' => 'Template', + 'in' => 'query', + 'schema' => ['description' => 'The transcoding template name. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'lsd', 'title' => ''], + ], + [ + 'name' => 'EncryptParameters', + 'in' => 'query', + 'schema' => ['description' => 'The encryption settings, formatted as a JSON string.'."\n" + ."\n" + .'- **EncryptType**: The encryption type. Set the value to aliyun.'."\n" + ."\n" + .'- **KmsKeyID**: The ID of the customer master key (CMK) in Key Management Service (KMS).'."\n" + ."\n" + .'- **KmsKeyExpireInterval**: The key rotation period. Unit: seconds. Valid values: **60 to 3600.**'."\n" + ."\n" + .'> When you use Digital Rights Management (DRM) encryption, you cannot modify **KmsKeyID**.', 'type' => 'string', 'required' => false, 'example' => '{"EncryptType": "aliyun", "KmsKeyID":"afce5722-81d2-43c3-9930-7601da11****","KmsKeyExpireInterval":"3600"}', 'title' => ''], + ], + [ + 'name' => 'Lazy', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable on-demand transcoding. Valid values:'."\n" + ."\n" + .'- **yes**: Transcoding only starts when the first viewer requests this transcoded stream.'."\n" + ."\n" + .'- **no**: Transcoding starts immediately after the stream is published.', 'type' => 'string', 'required' => false, 'default' => 'yes', 'example' => 'yes', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", + 'description' => 'The request ID.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '40A4F36D-A7CC-473A-88E7-154F92242566', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.PurchaseTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParameter.ExpireTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidChargeType.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidChargeType.PostSupport', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidParameter.ChargeType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPeriod.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectStudioStatus.Inuse', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'CasterNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], ], - 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'title' => 'UpdateLiveStreamTranscode', + 'description' => 'To modify the encryption settings, first obtain a Customer Master Key (CMK) ID from Key Management Service (KMS). This operation supports only standard and Narrowband HD™ transcoding templates.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'ou can call this operation up to 30 times per second per account.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveStreamTranscode'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidParameter.NormType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 408 => [ - [ - 'errorCode' => 'DeleteLiveAIStudio.Timeout', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:UpdateLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"40A4F36D-A7CC-473A-88E7-154F92242566\\"\\n}","type":"json"}]', - 'title' => 'DeleteLiveAIStudio', - 'description' => 'To delete a virtual studio template, you must first unbind the rules. Otherwise, an error occurs.'."\n" - ."\n" - .'> The lightweight virtual studio feature is in invitational preview. You can add up to 300 virtual studio templates.'."\n", + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', ], - 'ModifyLiveAIStudio' => [ - 'summary' => 'Modifies a virtual studio template.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateLiveStreamWatermark' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], @@ -68750,423 +57036,272 @@ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '250887', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'StudioName', + 'name' => 'TemplateId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the virtual studio template. The name is the same as the value of the StudioName parameter that was specified when you called the CreateLiveAIStudio operation to create the virtual studio template.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'stu02', - ], + 'schema' => ['description' => 'The ID of the watermark template.'."\n" + ."\n" + .'> You can get the template ID from the response of the [AddLiveStreamWatermark](~~2848096~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], ], [ - 'name' => 'Description', + 'name' => 'Name', 'in' => 'query', - 'schema' => [ - 'description' => 'The custom description.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'custom', - ], + 'schema' => ['description' => 'The name of the watermark template.', 'type' => 'string', 'required' => false, 'example' => 'livewatermark****', 'title' => ''], ], [ - 'name' => 'Width', + 'name' => 'Description', 'in' => 'query', - 'schema' => [ - 'description' => 'The preview width. Unit: pixels.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1920', - ], + 'schema' => ['description' => 'The description of the watermark.', 'type' => 'string', 'required' => false, 'example' => 'my watermark', 'title' => ''], ], [ - 'name' => 'Height', + 'name' => 'RefWidth', 'in' => 'query', - 'schema' => [ - 'description' => 'The preview height. Unit: pixels.'."\n" - ."\n" - .'The following preview specifications (width × height) are supported:'."\n" - ."\n" - .'* Landscape low definition 360p (640×360)'."\n" - .'* Portrait low definition 360p (360×640)'."\n" - .'* Landscape standard definition 480p (854×480)'."\n" - .'* Portrait standard definition 480p (480×854)'."\n" - .'* Landscape high definition 720p (1280×720)'."\n" - .'* Portrait high definition 720p (720×1280)'."\n" - .'* Landscape ultra-high definition 1080p (1920×1080)'."\n" - .'* Portrait ultra-high definition 1080p (1080×1920)'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1080', - ], + 'schema' => ['description' => 'The reference width of the video background, in pixels.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1920', 'title' => ''], ], [ - 'name' => 'BackgroundType', + 'name' => 'RefHeight', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the background material. Valid values:'."\n" - ."\n" - .'* VOD: a video in ApsaraVideo VOD'."\n" - .'* PIC: an image'."\n" - .'* LIVE: a live stream'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'VOD'."\n", - 'enum' => [ - 'VOD', - 'LIVE', - 'PIC', - ], - ], + 'schema' => ['description' => 'The reference height of the video background, in pixels.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1080', 'title' => ''], ], [ - 'name' => 'BackgroundResourceId', + 'name' => 'XOffset', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the background material in ApsaraVideo VOD. You can obtain the ID from the ApsaraVideo VOD console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'd0eb493192c771efba644531858c0102', - 'enum' => [], - ], + 'schema' => ['description' => 'The X-axis offset of the watermark, in pixels.'."\n" + ."\n" + .'> Relative to RefWidth. If OffsetCorner is TopLeft, XOffset is the horizontal distance between the top‑left corner of the watermark and the top‑left corner of the background video. Positive X points to the right.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '50.0', 'title' => ''], ], [ - 'name' => 'BackgroundResourceUrl', + 'name' => 'YOffset', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the background material.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxx.com/2.mp4'."\n", - 'enum' => [], - ], + 'schema' => ['description' => 'The Y-axis offset of the watermark, in pixels.'."\n" + ."\n" + .'> Relative to RefHeight. If OffsetCorner is TopLeft, YOffset is the vertical distance between the top‑left corner of the watermark and the top‑left corner of the background video. Positive Y points downward.', 'type' => 'number', 'format' => 'float', 'required' => false, 'example' => '100.0', 'title' => ''], ], [ - 'name' => 'MediaType', + 'name' => 'Height', 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the multimedia material. Valid values:'."\n" - ."\n" - .'* VOD: a video in ApsaraVideo VOD'."\n" - .'* PIC: an image'."\n" - .'* LIVE: a live stream'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'VOD', - 'enum' => [ - 'VOD', - 'LIVE', - 'PIC', - ], - ], + 'schema' => ['description' => 'The height of the watermark image, in pixels. This value is relative to `RefHeight` and will be scaled proportionally with the actual video resolution.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '200', 'title' => ''], ], [ - 'name' => 'MediaResourceId', + 'name' => 'Transparency', 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the multimedia material in ApsaraVideo VOD. You can obtain the ID from the ApsaraVideo VOD console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'd0eb493192c771efba644531858c01102', - 'enum' => [], - ], + 'schema' => ['description' => 'The opacity of the watermark. Value range: `0` (fully transparent) to `255` (fully opaque).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '255', 'title' => ''], ], [ - 'name' => 'MediaResourceUrl', + 'name' => 'OffsetCorner', 'in' => 'query', - 'schema' => [ - 'description' => 'The URL of the multimedia material. Specify either this parameter or the MediaResourceId parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://xxx.com/1.mp4'."\n", - 'enum' => [], - ], + 'schema' => ['description' => 'The anchor point for the watermark\'s position. Valid values:'."\n" + ."\n" + .'- TopLeft'."\n" + ."\n" + .'- TopRight'."\n" + ."\n" + .'- BottomLeft'."\n" + ."\n" + .'- BottomRight', 'type' => 'string', 'required' => false, 'example' => 'TopRight', 'title' => ''], ], [ - 'name' => 'MediaLayout', + 'name' => 'PictureUrl', 'in' => 'query', - 'style' => 'json', + 'schema' => ['description' => 'The URL of the watermark image.', 'type' => 'string', 'required' => false, 'example' => 'http://example.com', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The layout information of the multimedia material.'."\n", 'type' => 'object', 'properties' => [ - 'PositionX' => [ - 'description' => 'The x-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0', - ], - 'PositionY' => [ - 'description' => 'The y-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the material height. The value indicates the ratio of the material height to the height of the background. Valid values: **0 to 1**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.5', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b9676b3', 'title' => ''], ], - 'required' => false, + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], + ], + ], + 'title' => 'UpdateLiveStreamWatermark', + 'summary' => 'Updates a watermark template.', + 'description' => 'This operation updates the parameters of a specified watermark template.'."\n" + ."\n" + .'## QPS limits'."\n" + ."\n" + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], + ], + 'ramActions' => [ [ - 'name' => 'MattingType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of chroma key. Valid values:'."\n" - ."\n" - .'* green: green-screen chroma key'."\n" - .'* blue: blue-screen chroma key'."\n" - .'* complex: background replacement'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'complex', - 'enum' => [ - 'green', - 'blue', - 'complex', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveStreamWatermark', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b9676b3\\"\\n}","type":"json"}]', + ], + 'UpdateLiveStreamWatermarkRule' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'MattingLayout', + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => ['FEATUREliveCT0GRQ'], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The layout information of the chroma-keyed material.'."\n", - 'type' => 'object', - 'properties' => [ - 'PositionX' => [ - 'description' => 'The x-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0', - ], - 'PositionY' => [ - 'description' => 'The y-coordinate of the material. Valid values: **0 to 1**. The upper-left corner is used as the coordinate origin for the material.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0', - ], - 'HeightNormalized' => [ - 'description' => 'The normalized value of the height. The value indicates the ratio of the material height to the height of the background. Valid values: **0 to 1**.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => false, - 'example' => '0.5', - ], - ], - 'required' => true, - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], + ], + [ + 'name' => 'RuleId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the watermark rule.'."\n" + ."\n" + .'> Get the rule ID from the response of the [AddLiveStreamWatermarkRule](~~2848100~~) operation.', 'type' => 'string', 'required' => true, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9****', 'title' => ''], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => ['description' => 'The custom name of the rule.', 'type' => 'string', 'required' => false, 'example' => 'WatermarkRule****', 'title' => ''], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => ['description' => 'The custom description of the rule.', 'type' => 'string', 'required' => false, 'example' => 'my rule', 'title' => ''], + ], + [ + 'name' => 'TemplateId', + 'in' => 'query', + 'schema' => ['description' => 'The ID of the watermark template.'."\n" + ."\n" + .'> Get the template ID from the response of the [AddLiveStreamWatermark](~~2848096~~) operation.', 'type' => 'string', 'required' => false, 'example' => '445409ec-7eaa-461d-8f29-4bec2eb9 ****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'The response parameters.'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '0BA6B3C4-525A-5381-A2B0-5351323F31C5', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5c6a2a0df228-4a64-af62-20e91b9676b3', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.PurchaseTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.ExpireTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidChargeType.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidChargeType.PostSupport', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidParameter.ChargeType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPeriod.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - [ - [ - 'errorCode' => 'CasterNumberExceed', - 'errorMessage' => '%s, please check and try again later.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], ], - 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + 'title' => 'UpdateLiveStreamWatermarkRule', + 'summary' => 'Updates a watermark rule.', + 'description' => 'This operation updates the parameters of a watermark rule based on the specified rule ID.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'You can call this operation up to 60 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveStreamWatermarkRule'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'InvalidParameter.NormType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - ], - 408 => [ - [ - 'errorCode' => 'ModifyLiveAIStudio.Timeout', - 'errorMessage' => '%s, please try again later.', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveStreamWatermarkRule', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"0BA6B3C4-525A-5381-A2B0-5351323F31C5\\"\\n}","type":"json"}]', - 'title' => 'ModifyLiveAIStudio', + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b9676b3\\"\\n}","type":"json"}]', ], - 'DescribeLiveAIStudio' => [ - 'summary' => 'Queries the virtual studio templates within your Alibaba Cloud account.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'https', - ], + 'UpdateMessageApp' => [ + 'summary' => 'Call UpdateMessageApp to update interactive message application information.', + 'methods' => ['post'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '239765', - 'abilityTreeNodes' => [ - 'FEATUREliveY7SMJ1', - ], - ], + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update'], 'parameters' => [ [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'StudioId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the virtual studio template that you want to query. This parameter is optional.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'dbe61b87-db9a-448f-8757-a875edb3f944', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive message application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], [ - 'name' => 'StudioName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the virtual studio template.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'sub02', - ], + 'name' => 'AppName', + 'in' => 'formData', + 'schema' => ['description' => 'Interactive message application name.', 'type' => 'string', 'required' => false, 'example' => 'testApp', 'title' => ''], ], [ - 'name' => 'PageNumber', - 'in' => 'query', + 'name' => 'AppConfig', + 'in' => 'formData', + 'style' => 'json', 'schema' => [ - 'description' => 'The page number. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'Application configuration.', + 'type' => 'object', 'required' => false, - 'example' => '1', + 'additionalProperties' => ['type' => 'string', 'description' => 'Application configuration information, user-defined content.', 'example' => '"appAlias":"localApp"', 'title' => ''], + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'PageSize', - 'in' => 'query', + 'name' => 'Extension', + 'in' => 'formData', + 'style' => 'json', 'schema' => [ - 'description' => 'The number of entries per page. Default value: 10. Valid values: 1 to 50.'."\n", - 'type' => 'integer', - 'format' => 'int32', + 'description' => 'Extension field.', + 'type' => 'object', 'required' => false, - 'example' => '10', + 'additionalProperties' => ['type' => 'string', 'description' => 'Extension field, passed as needed, for additional application properties that need to be recorded.', 'example' => 'test001', 'title' => ''], + 'title' => '', + 'example' => '', ], ], ], @@ -69174,7835 +57309,8111 @@ 200 => [ 'schema' => [ 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'Total' => [ - 'description' => 'The total number of templates.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '100', - ], - 'PageNumber' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page. Default value: 10. Valid values: 1 to 50.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'StudioConfigs' => [ + 'RequestId' => ['title' => 'Id of the request', 'description' => 'Request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'Return result.', 'type' => 'object', - 'itemNode' => true, 'properties' => [ - 'SubtitleConfig' => [ - 'description' => 'The virtual studio templates.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the virtual studio template.'."\n", - 'type' => 'object', - 'properties' => [ - 'MediaType' => [ - 'description' => 'The type of the multimedia material. Valid values:'."\n" - ."\n" - .'* VOD: a video in ApsaraVideo VOD'."\n" - .'* PIC: an image'."\n" - .'* LIVE: a live stream'."\n", - 'type' => 'string', - 'example' => 'VOD', - ], - 'MediaLayout' => [ - 'description' => 'LIVE, live streaming'."\n", - 'type' => 'string', - 'example' => '"{\\"positionY\\":\\"0.0\\",\\"positionX\\":\\"0.0\\",\\"heightNormalized\\":\\"0.5\\"}"', - ], - 'MediaResourceUrl' => [ - 'description' => 'The URL of the multimedia material.'."\n", - 'type' => 'string', - 'example' => 'https://testbucket.xx.com/2.jpg', - ], - 'MediaResourceId' => [ - 'description' => 'The ID of the multimedia material in ApsaraVideo VOD.'."\n", - 'type' => 'string', - 'example' => ' '."\n" - .'d0eb493192c771efba644531858c0102'."\n", - ], - 'BackgroundType' => [ - 'description' => 'The type of the background material. Valid values:'."\n" - ."\n" - .'* VOD: a video in ApsaraVideo VOD'."\n" - .'* PIC: an image'."\n" - .'* LIVE: a live stream'."\n", - 'type' => 'string', - 'example' => 'VOD', - ], - 'BackgroundResourceUrl' => [ - 'description' => 'The URL of the background material. Make sure that the URL is accessible over the Internet. Either this parameter or the BackgroundResourceId parameter is returned.'."\n", - 'type' => 'string', - 'example' => 'https://testbucket.xx.com/2.jpg', - ], - 'BackgroundResourceId' => [ - 'description' => 'The ID of the background material.'."\n", - 'type' => 'string', - 'example' => 'd0eb493192c771efba644531858c0102', - ], - 'Description' => [ - 'description' => 'The custom description.'."\n", - 'type' => 'string', - 'example' => 'user defined description', - ], - 'TemplateId' => [ - 'description' => 'The ID of the virtual studio template.'."\n", - 'type' => 'string', - 'example' => '24654384-f5ac-40ea-823b-74e85a61dd9f', - ], - 'TemplateName' => [ - 'description' => 'The name of the virtual studio template. The name is the same as the value of the StudioName parameter that was specified when you called the CreateLiveAiStudio operation to create the virtual studio template.'."\n", - 'type' => 'string', - 'example' => 'studio1', - ], - 'MattingLayout' => [ - 'description' => 'The layout information of the multimedia material.'."\n", - 'type' => 'string', - 'example' => '"{\\"positionY\\":\\"0.0\\",\\"positionX\\":\\"0.0\\",\\"heightNormalized\\":\\"0.5\\"}"', - ], - 'MattingType' => [ - 'description' => 'The type of chroma key that is performed on ingested streams. Valid values:'."\n" - ."\n" - .'* green: green-key chroma key'."\n" - .'* blue: blue-screen chroma key'."\n" - .'* complex: background replacement'."\n", - 'type' => 'string', - 'example' => 'complex', - ], - 'Height' => [ - 'description' => 'The preview height. Unit: pixels.'."\n" - ."\n" - .'The following preview specifications (width × height) are supported:'."\n" - ."\n" - .'* Landscape low definition 360p (640×360)'."\n" - .'* Portrait low definition 360p (360×640)'."\n" - .'* Landscape standard definition 480p (854×480)'."\n" - .'* Portrait standard definition 480p (480×854)'."\n" - .'* Landscape high definition 720p (1280×720)'."\n" - .'* Portrait high definition 720p (720×1280)'."\n" - .'* Landscape ultra-high definition 1080p (1920×1080)'."\n" - .'* Portrait ultra-high definition 1080p (1080×1920)'."\n", - 'type' => 'string', - 'example' => '1080', - ], - 'Width' => [ - 'description' => 'The preview width.'."\n", - 'type' => 'string', - 'example' => '1920', - ], - 'RuleIds' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'ruleId' => [ - 'description' => 'The IDs of the bound rules.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the rule.'."\n", - 'type' => 'string', - 'example' => '2414378f-541a-48d3-be0c-535212f9a6b4', - ], - ], - ], - ], - ], - ], - ], + 'Success' => ['description' => 'Indicates whether the update is successful. Valid values:'."\n" + ."\n" + .'- true: successful.'."\n" + .'- false: unsuccessful.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], + 'example' => '', ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.PurchaseTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.ExpireTime', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'MissingParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidChargeType.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidChargeType.PostSupport', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidCasterTemplate.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidParameter.Malformed', - 'errorMessage' => 'There are invalid parameters: %s.', - ], - [ - 'errorCode' => 'InvalidParameter.ChargeType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidPeriod.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidUserId.Malformed', - 'errorMessage' => '%s, please check userId.', - ], - [ - 'errorCode' => 'InvalidClientToken.Malformed', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'IncorrectCasterStatus', - 'errorMessage' => '%s, please check and try again later.', - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","type":"json"}]', + 'title' => 'UpdateMessageApp', + 'description' => '## QPS limits'."\n" + ."\n" + .'The single-user QPS limit for this API is 100 queries per second (QPS). API calls that exceed this limit are throttled, which may affect your business. You can call this API at a reasonable rate. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateMessageApp'], ], + ], + 'ramActions' => [ [ - [ - 'errorCode' => 'CasterNumberExceed', - 'errorMessage' => '%s, please check and try again later.', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 403 => [ - [ - 'errorCode' => 'PermissionDenied', - 'errorMessage' => '%s, please check and try again later.', - ], + ], + ], + 'UpdateMessageGroup' => [ + 'methods' => ['post'], + 'schemes' => ['http', 'https'], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => ['operationType' => 'update'], + 'parameters' => [ + [ + 'name' => 'GroupId', + 'in' => 'formData', + 'schema' => ['description' => 'The message group ID.', 'type' => 'string', 'required' => true, 'example' => 'AE35-****-T95F', 'title' => ''], ], [ - [ - 'errorCode' => 'InvalidParameter.NormType', - 'errorMessage' => '%s, please check and try again later.', - ], - [ - 'errorCode' => 'InvalidConfiguration.NotFound', - 'errorMessage' => '%s, please check and try again later.', - ], + 'name' => 'AppId', + 'in' => 'formData', + 'schema' => ['description' => 'The interactive message application ID.', 'type' => 'string', 'required' => true, 'example' => 'VKL3***', 'title' => ''], ], - 408 => [ - [ - 'errorCode' => 'DescribeLiveAIStudio.Timeout', - 'errorMessage' => '%s, please try again later.', + [ + 'name' => 'Extension', + 'in' => 'formData', + 'style' => 'json', + 'schema' => [ + 'description' => 'The extension field.', + 'type' => 'object', + 'required' => false, + 'additionalProperties' => ['type' => 'string', 'description' => 'The message group extension field.', 'example' => 'test01', 'title' => ''], + 'title' => '', + 'example' => '', ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-****-CB92E68F4CD8'], + 'Result' => [ + 'description' => 'The returned result.', + 'type' => 'object', + 'properties' => [ + 'Success' => ['description' => 'Indicates whether the update was successful. Valid values:'."\n" + ."\n" + .'- true: The update was successful.'."\n" + .'- false: The update failed.', 'type' => 'boolean', 'example' => 'true', 'title' => ''], + ], + 'title' => '', + 'example' => '', + ], + ], + 'example' => '', + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"Total\\": 100,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"StudioConfigs\\": {\\n \\"SubtitleConfig\\": [\\n {\\n \\"MediaType\\": \\"VOD\\",\\n \\"MediaLayout\\": \\"\\\\\\"{\\\\\\\\\\\\\\"positionY\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.0\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"positionX\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.0\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"heightNormalized\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.5\\\\\\\\\\\\\\"}\\\\\\"\\",\\n \\"MediaResourceUrl\\": \\"https://testbucket.xx.com/2.jpg\\",\\n \\"MediaResourceId\\": \\"\\\\t\\\\nd0eb493192c771efba644531858c0102\\\\n\\",\\n \\"BackgroundType\\": \\"VOD\\",\\n \\"BackgroundResourceUrl\\": \\"https://testbucket.xx.com/2.jpg\\",\\n \\"BackgroundResourceId\\": \\"d0eb493192c771efba644531858c0102\\",\\n \\"Description\\": \\"user defined description\\",\\n \\"TemplateId\\": \\"24654384-f5ac-40ea-823b-74e85a61dd9f\\",\\n \\"TemplateName\\": \\"studio1\\",\\n \\"MattingLayout\\": \\"\\\\\\"{\\\\\\\\\\\\\\"positionY\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.0\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"positionX\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.0\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"heightNormalized\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"0.5\\\\\\\\\\\\\\"}\\\\\\"\\",\\n \\"MattingType\\": \\"complex\\",\\n \\"Height\\": \\"1080\\",\\n \\"Width\\": \\"1920\\",\\n \\"RuleIds\\": {\\n \\"ruleId\\": [\\n \\"2414378f-541a-48d3-be0c-535212f9a6b4\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","type":"json"}]', - 'title' => 'DescribeLiveAIStudio', - ], - 'CreateLivePullToPush' => [ - 'summary' => 'Creates a pulled-stream relay task.', - 'methods' => [ - 'get', - 'post', + 'title' => 'UpdateMessageGroup', + 'summary' => 'You can call the UpdateMessageGroup operation to update message group information.', + 'description' => '## QPS limits'."\n" + ."\n" + .'The QPS limit for this API is 100 queries per second (QPS) per user. If the limit is exceeded, API calls will be throttled, which may affect your business. You can call the API properly to avoid this issue. For more information, see [QPS limits](~~343507~~).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateMessageGroup'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\",\\n \\"Result\\": {\\n \\"Success\\": true\\n }\\n}","type":"json"}]', + ], + 'UpdateMixStream' => [ + 'summary' => 'Updates a stream mix task.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', - 'deprecated' => false, 'systemTags' => [ - 'operationType' => 'create', + 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '240052', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeCode' => '107287', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', 'schema' => [ + 'description' => 'The region ID.', + 'enumValueTitles' => [], 'type' => 'string', + 'required' => false, 'default' => 'cn-shanghai', + 'example' => 'cn-shanghai', + 'title' => '', ], ], [ - 'name' => 'Region', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The region where the task is started. Valid values:'."\n" - ."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-shanghai', - 'enum' => [ - 'ap-northeast-1', - 'ap-southeast-1', - 'ap-southeast-5', - 'eu-central-1', - 'me-central-1', - 'cn-beijing', - 'cn-shanghai', - 'cn-shenzhen', - 'cn-qingdao', - 'preregion', - ], - ], + 'schema' => ['description' => 'The streaming domain.'."\n" + ."\n" + .'>'."\n" + ."\n" + .'Only domain names in the China (Shanghai) and China (Beijing) regions are supported.'."\n" + ."\n" + .'>', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'TaskName', + 'name' => 'MixStreamId', 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the task. Default value: "". Fuzzy search for task names is supported.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'test', - ], + 'schema' => ['description' => 'The ID of the stream mix task. If you created the task by calling the [CreateMixStream](~~2848087~~) operation, use the MixStreamId value returned in the response.', 'type' => 'string', 'required' => true, 'example' => '5b2a046e-74d7-385e-d2d7-8a5b87e4****', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'InputStreamList', 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of the task.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'* The time range specified by the StartTime and EndTime parameters cannot exceed seven days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2024-08-26T10:30:00Z', - ], + 'schema' => ['description' => 'The list of input streams for the mix. This is a JSON array.'."\n" + ."\n" + .'For more information, see **InputStreamConfig** below.', 'type' => 'string', 'required' => true, 'example' => '{"InputStreamList":[{"LayoutConfig":{"FillSizeNormalized":[0.5,0.5],"FillPositionNormalized":[0,0],"PositionRefer":"topLeft","FillMode":"fit"},"LayoutChildId":1,"ResourceValue":"rtmp://aliyundoc.com/caster/8564a8d1659b4dc69df5f66cf4c9****","ResourceType":"live"},{"LayoutConfig":{"FillSizeNormalized":[0.5,0.5],"FillPositionNormalized":[0.5,0],"PositionRefer":"topLeft","FillMode":"fit"},"LayoutChildId":2,"ResourceValue":"http://developer.aliyundoc.com/3c3c25426cf744fdb90423e76b78a28a/69b1a16e2b1d423d9841bf27a96f134e-0b1cba51f58bb5ad3a854x96a2c735f****.mp4","ResourceType":"url"},{"LayoutConfig":{"FillSizeNormalized":[1,0.5],"FillPositionNormalized":[0,0.5],"PositionRefer":"topLeft","FillMode":"fit"},"LayoutChildId":3,"ResourceValue":"http://aliyundoc.com/c0c6c5446b56432389e91535864938da/ed4adc5263b4474c954b95607a5350ae-fda757b3328438a8cf-4k57f373a0f0****.mp4","ResourceType":"url"}]}', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'LayoutId', 'in' => 'query', + 'schema' => ['description' => 'The layout ID. The following values are supported:'."\n" + ."\n" + .'- **MixStreamLayout-1-1**'."\n" + ."\n" + .'- **MixStreamLayout-2-1**'."\n" + ."\n" + .'- **MixStreamLayout-2-2**'."\n" + ."\n" + .'- **MixStreamLayout-2-3**'."\n" + ."\n" + .'- **MixStreamLayout-3-1**'."\n" + ."\n" + .'- **MixStreamLayout-3-2**'."\n" + ."\n" + .'- **MixStreamLayout-4-1**'."\n" + ."\n" + .'- **USERDEFINED** (If you use a custom layout instead of a preset layout, set this parameter to this value.)', 'type' => 'string', 'required' => false, 'example' => 'MixStreamLayout-3-2', 'title' => ''], + ], + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The end time of the task.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'* The time range specified by the StartTime and EndTime parameters cannot exceed seven days.'."\n" - ."\n" - .'* The end time must be later than the start time.'."\n" - ."\n" - .'* The end time must be later than the current time.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2024-08-27T14:30:00Z', + 'type' => 'object', + 'properties' => [ + 'MixStreamId' => ['description' => 'The ID of the stream mix task. You can use this ID to query or delete the task.', 'type' => 'string', 'example' => '5b2a046e-74d7-385e-d2d7-8a5b87e4****', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1A8CDDFF-0121-4ABB-DA60-AEF095A8W34F', 'title' => ''], + ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'InvalidUserId.Malformed', 'errorMessage' => '%s, please check userId.', 'description' => 'The userId passed in is invalid, please check.'], + ['errorCode' => 'InvalidParameter.Malformed', 'errorMessage' => 'There are invalid parameters: %s.', 'description' => 'There are invalid parameters: %s.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], [ - 'name' => 'SourceType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the source stream. Valid values:'."\n" - ."\n" - .'* live: a live stream'."\n" - .'* vod: a list of ApsaraVideo VOD resources'."\n" - .'* url: a list of video resources from a third party'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'live', - 'enum' => [ - 'live', - 'vod', - 'url', + ['errorCode' => 'IllegalOperation', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Operation not allowed, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'MixStreamAlreadyExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The confluence task already exists, please check and try again.'], + ['errorCode' => 'MixStreamNotExist', 'errorMessage' => '%s, please check and try again later.', 'description' => 'The confluous task does not exist. Please check and try again.'], + ], + [ + ['errorCode' => 'InvalidDomainName.NotFound', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Domain name does not exist, please check and try again.'], + ], + 500 => [ + ['errorCode' => 'InternalError', 'errorMessage' => '%s, please try again later.', 'description' => 'Internal error, please try again later.'], + ], + ], + 'title' => 'UpdateMixStream', + 'description' => 'You can call this API operation to update a stream mix task. You can update the input sources and layout, but you cannot update parameters such as the output resolution.'."\n" + ."\n" + .'## QPS limit'."\n" + ."\n" + .'The queries per second (QPS) limit for a single user is 10 calls per second. If you exceed this limit, your API calls are throttled. This may impact your business. Plan your calls accordingly.', + 'requestParamsDescription' => '### InputStreamConfig'."\n" + ."\n" + .'| Name | Type | Description |'."\n" + .'| ------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| ResourceType | String | The resource type.
**live**: A live streaming URL.
**url**: A file streaming URL. |'."\n" + .'| ResourceValue | String | The resource URL.
If ResourceType is set to live, this is the live streaming URL. The URL must use the RTMP, FLV, or Alibaba Real-Time Communication (ARTC) protocol. The HLS protocol is not supported.
If ResourceType is set to url, this is the file streaming URL. |'."\n" + .'| LayoutChildId | String | The ID of the layout pane. This ID also determines the stacking order of the streams. |'."\n" + .'| LayoutConfig | LayoutConfig\\[] | A JSON array that specifies layout information, such as the position and fill mode.
This parameter is optional if you use a preset layout.
If you set this parameter, the preset layout information that corresponds to LayoutChildId is ignored. |'."\n" + ."\n" + .'### LayoutConfig'."\n" + ."\n" + .'| Name | Type | Required | Description |'."\n" + .'| ---------------------- | ------------------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |'."\n" + .'| FillSizeNormalized | JSON array of floating-point numbers | Yes | The size of the area to fill for this layer element.
\\[w,h]: The values of w and h range from 0 to 1. The width and height are normalized.
For example, \\[0.2,0.3] means the element occupies 20% of the horizontal space and 30% of the vertical space. |'."\n" + .'| FillPositionNormalized | Array of floating-point numbers | Yes | The normalized position of the fill area for this layer element.
\\[x,y]: The values of x and y range from 0 to 1.
For example, \\[0.1,0.1] means a horizontal offset of 10% and a vertical offset of 10% from the top-left corner. |'."\n" + .'| PositionRefer | String | No | The reference coordinate for the position of the element.
Set this parameter to topLeft to use the top-left corner as the reference. |'."\n" + .'| FillMode | String | No | The fill mode for the element.
**none**: No fill.
**fit**: Scales the stream to fit the pane. The longest edge reaches the border, and black bars may be added to the shorter edge.
**fill**: Scales the stream proportionally based on the larger of the width or height ratio, and then crops the stream to fill the entire pane.
Set this parameter to fit. |', + 'responseParamsDescription' => ' ', + 'extraInfo' => '### SDK example'."\n" + ."\n" + .'For more information, see [Sample code of stream mixing](https://help.aliyun.com/document_detail/199362.html).'."\n", + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateMixStream'], + ], + ], + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateMixStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"MixStreamId\\": \\"5b2a046e-74d7-385e-d2d7-8a5b87e4****\\",\\n \\"RequestId\\": \\"1A8CDDFF-0121-4ABB-DA60-AEF095A8W34F\\"\\n}","type":"json"}]', + ], + 'UpdateRtcCloudRecording' => [ + 'summary' => 'Updates an RTC cloud recording task.', + 'methods' => ['post'], + 'schemes' => ['https'], + 'security' => [ [ - 'name' => 'SourceProtocol', + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '269333', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'TaskId', 'in' => 'query', - 'schema' => [ - 'description' => 'The protocol of the source stream.'."\n" - ."\n" - .'Valid values:'."\n" - ."\n" - .'* rtmp'."\n" - .'* rtsp'."\n" - .'* srt'."\n" - .'* http-flv'."\n" - .'* flv'."\n" - ."\n" - .'> This parameter is required if you set the **SourceType** parameter to live, but does not take effect if you set the SourceType parameter to vod or url.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp', - 'enum' => [], - ], + 'schema' => ['description' => 'The task ID. This ID is returned by StartRtcCloudRecording. Only tasks in the running or abnormal state can be updated.', 'type' => 'string', 'required' => true, 'example' => '******73-8501-****-8ac1-72295a******'."\n", 'title' => ''], ], [ - 'name' => 'SourceUrls', + 'name' => 'SubscribeParams', 'in' => 'query', 'style' => 'json', 'schema' => [ - 'description' => 'The source URLs.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If SourceType is set to live, you can specify only one streaming URL.'."\n" - ."\n" - .'* If SourceType is set to vod or url, you can specify up to 30 IDs or URLs.'."\n" - ."\n" - .'* If SourceType is set to live, the supported protocols for URLs are Real-Time Messaging Protocol (RTMP), Real-Time Streaming Protocol (RTSP), Secure Reliable Transport Protocol (SRT), and HTTP-FLV.'."\n" - ."\n" - .'* If SourceType is set to vod, specify the IDs of media assets from ApsaraVideo VOD.'."\n" - ."\n" - .'* If SourceType is set to url, the supported protocols for URLs are MP4 and HTTP-FLV.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The source URL of the stream.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If SourceType is set to live, you can specify only one streaming URL.'."\n" - ."\n" - .'* If SourceType is set to vod or url, you can specify up to 30 IDs or URLs.'."\n" - ."\n" - .'* If SourceType is set to live, the supported protocols for URLs are RTMP, RTSP, SRT, and HTTP-FLV.'."\n" - ."\n" - .'* If SourceType is set to vod, specify the IDs of media assets from ApsaraVideo VOD.'."\n" - ."\n" - .'* If SourceType is set to url, the supported protocols for URLs are MP4 and HTTP-FLV.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434', + 'description' => 'The updated subscription parameters.', + 'type' => 'object', + 'properties' => [ + 'SubscribeUserIdList' => [ + 'description' => 'The list of subscribed UserId entries. In single-stream recording mode, each UserId is recorded separately. In stream mixing recording mode, the audio and video of all UserIds are mixed into a single set of audio and video.'."\n" + .'> '."\n" + .'> - The array supports a maximum of 17 elements.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the subscribed UserId.', + 'type' => 'object', + 'properties' => [ + 'UserId' => ['description' => 'The subscribed UserId.', 'type' => 'string', 'required' => true, 'example' => 'userA', 'title' => ''], + 'StreamType' => [ + 'description' => 'The media type of the subscribed UserId. Valid values:'."\n" + ."\n" + .'- 0: original stream, which includes both audio and video. (Default)'."\n" + ."\n" + .'- 1: audio-only stream.'."\n" + ."\n" + .'- 2: video-only stream.', + 'enumValueTitles' => ['original stream, which includes both audio and video.', 'audio-only stream.', 'video-only stream.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1', '2'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'SourceType' => [ + 'description' => 'The video input stream type of the UserId. This parameter takes effect only when the video stream is subscribed (StreamType=2). Valid values:'."\n" + ."\n" + .'- 0: camera. (Default)'."\n" + ."\n" + .'- 1: screen sharing.', + 'enumValueTitles' => ['camera.', 'screen sharing.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => true, + 'maxItems' => 17, + 'minItems' => 1, + 'title' => '', + 'example' => '', + ], ], 'required' => true, - 'example' => 'testurls', + 'title' => '', + 'example' => '', ], ], [ - 'name' => 'DstUrl', + 'name' => 'MixLayoutParams', 'in' => 'query', + 'style' => 'json', 'schema' => [ - 'description' => 'The destination URL to which the stream is relayed.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The supported protocol for the URL is RTMP.'."\n" - ."\n" - .'* The URL can be up to 2,000 characters in length.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://pushtest.********.aliyunlive.com/pulltest493/pulltest-w434', + 'description' => 'The updated layout parameters. Leave this parameter empty in single-stream recording mode. This parameter is required in stream mixing recording mode when the transcoding output is not audio-only.', + 'type' => 'object', + 'properties' => [ + 'MixBackground' => [ + 'description' => 'The global background image for stream mixing.', + 'type' => 'object', + 'properties' => [ + 'RenderMode' => [ + 'description' => 'The display mode for the output. Valid values:'."\n" + .'- 0: crop. (Default)'."\n" + .'- 1: scale and display with black borders.', + 'enumValueTitles' => ['crop.', 'scale and display with black borders.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'Url' => ['description' => 'The URL of the background image. The maximum length is 2048 characters.', 'type' => 'string', 'maxLength' => 2048, 'required' => false, 'example' => 'https://xxxx.com/photos/my-test-picture.png'."\n", 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'UserPanes' => [ + 'description' => 'The window layout information of the subscribed users. Only UserIds with layout information configured are placed in the output. This parameter is required in stream mixing mode when recording non-audio-only files.', + 'type' => 'array', + 'items' => [ + 'description' => 'The window configuration in the output.', + 'type' => 'object', + 'properties' => [ + 'UserId' => ['description' => 'The UserId corresponding to this window.'."\n" + .'- If UserId is not specified, windows are filled in the order in which subscribed users join the channel.'."\n" + .'- The combination of UserId and SourceType specified here must be included in SubscribeUserIdList.'."\n" + .'- Audio-only streams cannot be added to the layout.', 'type' => 'string', 'required' => false, 'example' => 'userA', 'title' => ''], + 'SourceType' => [ + 'description' => 'The video input stream type of the UserId. This parameter is invalid if UserId is not specified. Valid values:'."\n" + .'- 0: camera. (Default)'."\n" + .'- 1: screen sharing.'."\n" + ."\n" + .'The combination of UserId and SourceType specified here must be included in SubscribeUserIdList.', + 'enumValueTitles' => ['camera.', 'screen sharing.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'Height' => ['description' => 'The pane height as a normalized percentage. The value must be in the range of [0, 1]. (Default: 0)', 'type' => 'string', 'default' => '0', 'required' => false, 'example' => '0.5', 'title' => ''], + 'Width' => ['description' => 'The pane width as a normalized percentage. The value must be in the range of [0, 1]. (Default: 0)', 'type' => 'string', 'default' => '0', 'required' => false, 'example' => '0.5', 'title' => ''], + 'X' => ['description' => 'The X coordinate as a normalized percentage. The value must be in the range of [0, 1]. (Default: 0)', 'type' => 'string', 'default' => '0', 'required' => false, 'example' => '0', 'title' => ''], + 'Y' => ['description' => 'The Y coordinate as a normalized percentage. The value must be in the range of [0, 1]. (Default: 0)', 'type' => 'string', 'default' => '0', 'required' => false, 'example' => '0', 'title' => ''], + 'ZOrder' => ['description' => 'The stacking order. 0 is the bottom layer, layer 1 is above layer 0, and so on. (Default: 0)', 'type' => 'integer', 'format' => 'int32', 'default' => '0', 'required' => false, 'example' => '0', 'title' => ''], + 'SubBackground' => [ + 'description' => 'The sub-pane background image. When a user turns off the camera, has not started stream ingest after joining, or leaves the channel midway, the corresponding image is displayed at the layout position.', + 'type' => 'object', + 'properties' => [ + 'RenderMode' => [ + 'description' => 'The display mode for the sub-pane output. Valid values:'."\n" + .'- 0: crop. (Default)'."\n" + .'- 1: scale and display with black borders.', + 'enumValueTitles' => ['crop.', 'scale and display with black borders.'], + 'type' => 'integer', + 'format' => 'int32', + 'default' => '0', + 'enum' => ['0', '1'], + 'required' => false, + 'example' => '0', + 'title' => '', + ], + 'Url' => ['description' => 'The URL of the background image. The maximum length is 2048 characters.', 'type' => 'string', 'maxLength' => 2048, 'required' => false, 'example' => 'https://xxxx.com/photos/my-test-pane-picture.png'."\n", 'title' => ''], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + 'required' => false, + 'title' => '', + 'example' => '', + ], + ], + 'required' => false, + 'title' => '', + 'example' => '', ], ], - [ - 'name' => 'RepeatNumber', - 'in' => 'query', + ], + 'responses' => [ + 200 => [ 'schema' => [ - 'description' => 'The number of playbacks after the first playback is complete. Valid values:'."\n" - ."\n" - .'* 0 (default): specifies that the video list is played only once.'."\n" - .'* \\-1: specifies that the video list is played in loop mode.'."\n" - .'* Positive integer: specifies the number of times the video list repeats after the first playback is complete.'."\n" - ."\n" - .'> This parameter is applicable to only video resources from ApsaraVideo VOD or a third party.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - 'enum' => [], + 'title' => '', + 'description' => 'Schema of Response', + 'type' => 'object', + 'properties' => [ + 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => '******58-5876-****-83CA-B56278******'."\n"], + 'TaskId' => ['description' => 'The task ID.', 'type' => 'string', 'example' => '******73-8501-****-8ac1-72295a******'."\n", 'title' => ''], + ], + 'example' => '', ], ], + ], + 'errorCodes' => [ + 400 => [ + ['errorCode' => 'NotFound.Task', 'errorMessage' => '%s, please check the TaskId.', 'description' => 'The parameter TaskId does not exist.'], + ['errorCode' => 'InvalidParameter.TaskId', 'errorMessage' => '%s, please check the TaskId.', 'description' => 'The specified task must be in the running or recovering state.'], + ['errorCode' => 'InvalidParameter.SubscribeParams.SubscribeUserIdList', 'errorMessage' => '%s, please check the subscribeUserIdList of subscribeParams.', 'description' => 'The parameter SubscribeUserIdList is invalid, please check.'], + ['errorCode' => 'InvalidParameter.MixLayoutParams.UserPanes', 'errorMessage' => '%s, please check the userPanes of mixLayoutParams.', 'description' => 'The parameter UserPanes has invalid fields, please check.'], + ['errorCode' => 'InvalidParameter.MixTranscodeParams', 'errorMessage' => '%s, please check the transcodeParams.', 'description' => 'The parameter MixTranscodeParams has invalid fields, please check.'], + ['errorCode' => 'MissingParameter', 'errorMessage' => '%s.', 'description' => 'Missing parameter'], + ], + 403 => [ + ['errorCode' => 'InvalidParameter.UserId', 'errorMessage' => '%s, please check the UserId.', 'description' => 'UserId is invalid, please check.'], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******58-5876-****-83CA-B56278******\\\\n\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\\\n\\"\\n}","type":"json"}]', + 'title' => 'Update an RTC cloud recording task', + 'description' => 'Single-stream recording supports updating subscription parameters. Stream mixing recording supports updating only the subscribed user streams.'."\n" + .'## QPS limit'."\n" + .'The single-user QPS limit for this operation is 50 calls per second. If this limit is exceeded, the API call is throttled, which may affect your business. Call this operation as appropriate.', + 'requestParamsDescription' => '- You can subscribe to both the camera and screen sharing streams of the same UserId at the same time. In single-stream recording mode, if you want to subscribe to both the camera and screen sharing streams of the same UserId, FileNamePattern and SliceNamePattern must include the SourceType variable to prevent recording files from overwriting each other.'."\n" + ."\n" + .'- In single-stream recording mode, subscribing to a video-only stream of a specific UserId is not supported. That is, in single-stream mode, the value of UserInfo.StreamType cannot be set to 2.'."\n" + ."\n" + .'- If you want to record only the screen sharing stream of a UserId without audio, either subscribe to the video-only stream of the UserId and set SourceType to 1 (not supported in single-stream recording mode), or subscribe to the original stream of the UserId and push only the screen sharing stream without audio or with audio muted during stream ingest. If you want to record both the screen sharing stream and audio stream of a UserId, either subscribe to the original stream of the UserId and push only the screen sharing stream along with the audio stream during stream ingest, or subscribe to the video-only stream of the UserId and set SourceType to 1 (not supported in single-stream recording mode) while also subscribing to the audio-only stream of the UserId.'."\n" + ."\n" + .'- In single-stream recording mode, if RecordParams.StreamType is audio-only (value 1), SubscribeParams must not contain any video-only subscriptions (value 2). If RecordParams.StreamType is video-only (value 2), SubscribeParams must not contain any audio-only subscriptions (value 1).'."\n" + ."\n" + .'- In stream mixing recording mode, if RecordParams.StreamType is audio-only (value 1), not all UserIds in SubscribeParams can be subscribed as video-only (value 2). If RecordParams.StreamType is video-only (value 2), not all UserIds in SubscribeParams can be subscribed as audio-only (value 1).', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateRtcCloudRecording'], + ], + ], + 'ramActions' => [ [ - 'name' => 'FileIndex', - 'in' => 'query', - 'schema' => [ - 'description' => 'The file index, which specifies the sequence of the file where the playback starts.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateRtcCloudRecording', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], + ], + 'translator' => 'machine', + ], + 'UpdateRtcMPUEventSub' => [ + 'summary' => 'Updates a subscription to mixed-stream relay events.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], + 'security' => [ [ - 'name' => 'Offset', - 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the position where the system starts to read the video resource. Unit: seconds. Valid values: positive numbers.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter indicates an offset from the first frame of the first video resource in the list.'."\n" - ."\n" - .'* This parameter is applicable to only video resources from ApsaraVideo VOD or a third party.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'AK' => [], ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '219223', + 'abilityTreeNodes' => ['FEATUREliveK6LRQR'], + ], + 'parameters' => [ [ - 'name' => 'CallbackUrl', + 'name' => 'AppId', 'in' => 'query', - 'schema' => [ - 'description' => 'The HTTP callback URL. By default, this parameter is left empty.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The URL is used to receive callbacks related to the task.'."\n" - ."\n" - .'* The URL can be up to 2,000 characters in length.'."\n" - ."\n" - .'* If you do not specify this parameter, no callbacks are returned for events related to the task.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://callback*****.com', - ], + 'schema' => ['description' => 'The ID of the application.'."\n" + ."\n" + .'> The ID can be up to 64 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => true, 'example' => 'yourAppId', 'title' => ''], ], [ - 'name' => 'RetryInterval', + 'name' => 'ChannelIds', 'in' => 'query', - 'schema' => [ - 'description' => 'The retry interval. Unit: seconds. Valid values: \\[60,300]. Default value: 60.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '300', - 'minimum' => '60', - 'example' => '60', - 'default' => '60', - ], + 'schema' => ['description' => 'The ID of the channel to which you want to send mixed-stream relay event callbacks. Separate multiple channel IDs with commas (,).'."\n" + ."\n" + .'>'."\n" + ."\n" + .'- If you leave this parameter empty, you are subscribed to all mixed-stream relay events submitted in the application.'."\n" + ."\n" + .'- You cannot specify duplicate channel IDs. You can specify up to 20 channel IDs in each call.'."\n" + ."\n" + .'- The ID can be up to 64 characters in length and contain letters, digits, underscores (\\_), and hyphens (-).', 'type' => 'string', 'required' => false, 'example' => 'yourChannelIds', 'title' => ''], ], [ - 'name' => 'RetryCount', + 'name' => 'CallbackUrl', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of retries allowed. Default value: 3.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '3', - 'default' => '3', - ], + 'schema' => ['description' => 'The callback URL.'."\n" + ."\n" + .'> You can use headers such as HTTP and HTTPS in callback URLs. The URL can be up to 2,083 characters and contain letters, digits, and the following special characters: - \\_ ? % = # . / +', 'type' => 'string', 'required' => false, 'example' => 'http://****.com/callback', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68*****', - ], - 'RetCode' => [ - 'description' => 'The code that is returned for the request.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* 0 is returned if the request is normal.'."\n" - ."\n" - .'* For information about codes that are returned when exceptions occur, see the following Error codes table.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'Description' => [ - 'description' => 'The description of the custom rule.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], - 'TaskId' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'example' => 'fd245384-4067-4f91-9d75-9666a6bc9****', - ], + 'RequestId' => ['description' => 'The ID of the request.', 'type' => 'string', 'example' => '******3B-0E1A-586A-AC29-742247******', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParam.CodeIllegalDuration', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CodeInvalidAliUid', - 'errorMessage' => 'This aliuid does not have a live domain name.', - ], - [ - 'errorCode' => 'CodeNotEnoughResource', - 'errorMessage' => 'Exceeded configuration limits or insufficient resources.', - ], - [ - 'errorCode' => 'CodeConfigAlreadyExists', - 'errorMessage' => 'Code Config Already Exists', - ], + ['errorCode' => 'InvalidParam', 'errorMessage' => '%s.', 'description' => 'Parameter verification failed'], + ['errorCode' => 'InvalidAppId', 'errorMessage' => '%s, please check and try again later.', 'description' => 'AppId is invalid, please check and try again.'], + ['errorCode' => 'MissingParam', 'errorMessage' => '%s, please check and try again later.', 'description' => 'Parameter is missing, please check and try again.'], + ], + 403 => [ + ['errorCode' => 'OperationDenied', 'errorMessage' => 'Your account has not enabled the Live service', 'description' => ''], ], 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'InternalError', 'errorMessage' => 'InternalError', 'description' => ''], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68*****\\",\\n \\"RetCode\\": 0,\\n \\"Description\\": \\"OK\\",\\n \\"TaskId\\": \\"fd245384-4067-4f91-9d75-9666a6bc9****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68*****\\n 0\\n OK\\n fd245384-4067-4f91-9d75-9666a6bc9****\\n","errorExample":""}]', - 'title' => 'CreateLivePullToPush', - 'description' => '> The pulled-stream relay feature is in public preview. You can use it free of charge. After the public preview ends, fees will be charged. The specific end time will be announced.'."\n" + 'title' => 'UpdateRtcMPUEventSub', + 'description' => '- You can call this operation to update a subscription to mixed-stream relay events. You can modify parameters such as the callback URL and channel IDs.'."\n" ."\n" - .'* You can call this operation to create a pulled-stream relay task.'."\n" - .'* The pulled source can be a live stream or video-on-demand (VOD) resources.'."\n" - .'* After a task is created, it starts at the specified start time and ends at the specified end time. A task that ends is automatically deleted.'."\n" - .'* Make sure that the destination URL specified in the task is not used by another task. Otherwise, conflicts occur and stream ingest fails.'."\n" - .'* The events for pulled-stream relay callbacks include state changes of a pulled-stream relay task and exit of a pulled-stream relay task. For more information, see [Pulled-stream relay callbacks](~~2846768~~).'."\n" + .'- Before you call this operation, make sure that you have called the CreateRtcMPUEventSub operation to create the subscription.'."\n" ."\n" .'## [](#qps-)QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'UpdateLivePullToPush' => [ - 'summary' => 'Updates a pulled-stream relay task.', - 'methods' => [ - 'get', + .'You can call this operation up to 50 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', + 'changeSet' => [ + ['createdAt' => '2024-07-04T06:14:36.000Z', 'description' => 'Error codes changed'], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateRtcMPUEventSub'], + ], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateRtcMPUEventSub', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', + ], + 'UpdateRtsLiveStreamTranscode' => [ + 'summary' => 'Updates the configuration of a custom Real-time Streaming (RTS) transcoding template.', + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, + 'operationType' => 'write', 'systemTags' => [ 'operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '240074', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeNodes' => ['FEATUREliveHVN9B2'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'Domain', 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'fd245384-4067-4f91-9d75-9666a6bc****', - ], + 'schema' => ['description' => 'The streaming domain. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Region', + 'name' => 'App', 'in' => 'query', - 'schema' => [ - 'description' => 'The region where the task is started. Valid values:'."\n" - ."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-shanghai', - 'enum' => [ - 'ap-northeast-1', - 'ap-southeast-1', - 'ap-southeast-5', - 'eu-central-1', - 'me-central-1', - 'cn-beijing', - 'cn-shanghai', - 'cn-shenzhen', - 'cn-qingdao', - 'preregion', - ], - ], + 'schema' => ['description' => 'The AppName of the live stream. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'aliyun-test', 'title' => ''], ], [ - 'name' => 'StartTime', + 'name' => 'Template', 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of the task.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'* The time range specified by the StartTime and EndTime parameters cannot exceed seven days.'."\n" - ."\n" - .'* If the task has already started, the update does not take effect.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2024-08-23T15:30:00Z', - ], + 'schema' => ['description' => 'The name of the custom transcoding template. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'ld', 'title' => ''], ], [ - 'name' => 'EndTime', + 'name' => 'TemplateType', 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of the task.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'* The time range specified by the StartTime and EndTime parameters cannot exceed seven days.'."\n" - ."\n" - .'* The end time must be later than the start time.'."\n" - ."\n" - .'* The end time must be later than the current time.'."\n" - ."\n" - .'* If the task has ended, the update does not take effect.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2024-08-27T14:30:00Z', - ], + 'schema' => ['description' => 'The type of the custom transcoding template. This parameter cannot be modified.', 'type' => 'string', 'required' => true, 'example' => 'h264', 'title' => ''], ], [ - 'name' => 'SourceUrls', + 'name' => 'Height', 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The source URLs.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If SourceType is set to live, you can specify only one streaming URL.'."\n" - ."\n" - .'* If SourceType is set to vod or url, you can specify up to 30 IDs or URLs.'."\n" - ."\n" - .'* If SourceType is set to live, the supported protocols for URLs are Real-Time Messaging Protocol (RTMP), Real-Time Streaming Protocol (RTSP), Secure Reliable Transport Protocol (SRT), and HTTP-FLV.'."\n" - ."\n" - .'* If SourceType is set to vod, specify the IDs of media assets from ApsaraVideo VOD.'."\n" - ."\n" - .'* If SourceType is set to url, the supported protocols for URLs are MP4 and HTTP-FLV.'."\n" - ."\n" - .'* If the source is a live stream, the update takes effect immediately. If the source is a list of video resources from ApsaraVideo VOD or a third party, the update does not take effect until the playback of the current video ends. After the update takes effect, the video list starts to play from the beginning.'."\n" - ."\n" - .'* You can modify this parameter only if the task is stopped. The update takes effect immediately.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The source URL of the stream.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* If SourceType is set to live, you can specify only one streaming URL.'."\n" - ."\n" - .'* If SourceType is set to vod or url, you can specify up to 30 IDs or URLs.'."\n" - ."\n" - .'* If SourceType is set to live, the supported protocols for URLs are RTMP, RTSP, SRT, and HTTP-FLV.'."\n" - ."\n" - .'* If SourceType is set to vod, specify the IDs of media assets from ApsaraVideo VOD.'."\n" - ."\n" - .'* If SourceType is set to url, the supported protocols for URLs are MP4 and HTTP-FLV.'."\n" - ."\n" - .'* If the source is a live stream, the update takes effect immediately. If the source is a list of video resources from ApsaraVideo VOD or a third party, the update does not take effect until the playback of the current video ends. After the update takes effect, the video list starts to play from the beginning.'."\n" - ."\n" - .'* You can modify this parameter only if the task is stopped. The update takes effect immediately.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434', - ], - 'required' => false, - 'example' => 'changedtesturl', - ], + 'schema' => ['description' => 'Output video height in pixels.'."\n" + ."\n" + .'Requirements:'."\n" + ."\n" + .'- Height ≥ 100'."\n" + ."\n" + .'- max(Height, Width) ≤ 2560'."\n" + ."\n" + .'- min(Height, Width) ≤ 1440'."\n" + ."\n" + .'> * Required if you set TemplateType to h264, h264-nbhd, or h264-origin.'."\n" + .'>'."\n" + .'> * For h264-origin templates, the resolution can be up to 4K to retain the information of the source stream.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1280', 'title' => ''], ], [ - 'name' => 'RepeatNumber', + 'name' => 'Width', 'in' => 'query', - 'schema' => [ - 'description' => 'The number of playbacks after the first playback is complete. Valid values:'."\n" - ."\n" - .'* 0 (default): specifies that the video list is played only once.'."\n" - .'* \\-1: specifies that the video list is played in loop mode.'."\n" - .'* Positive integer: specifies the number of times the video list repeats after the first playback is complete.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter is applicable to only video resources from ApsaraVideo VOD or a third party.'."\n" - ."\n" - .'* The update can take effect immediately.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '-5', - 'enum' => [], - ], + 'schema' => ['description' => 'Output video width in pixels.'."\n" + ."\n" + .'Requirements:'."\n" + ."\n" + .'- Width ≥ 100'."\n" + ."\n" + .'- max(Height, Width) ≤ 2560'."\n" + ."\n" + .'- min(Height, Width) ≤ 1440'."\n" + ."\n" + .'> Required if you set TemplateType to h264, h264-nbhd, or h264-origin.'."\n" + ."\n" + .'For h264-origin templates, the resolution can be up to 4K to retain the information of the source stream.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '720', 'title' => ''], ], [ - 'name' => 'Offset', + 'name' => 'FPS', 'in' => 'query', - 'schema' => [ - 'description' => 'The offset of the position where the system starts to read the video resource. Unit: seconds. Valid values: positive numbers.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter indicates an offset from the first frame.'."\n" - ."\n" - .'* This parameter is applicable to only video resources from ApsaraVideo VOD or a third party.'."\n" - ."\n" - .'* The update takes effect only for the first video in a video list.'."\n" - ."\n" - .'* You can modify this parameter only if the task is stopped. The update takes effect immediately.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '2', - ], + 'schema' => ['description' => 'The frame rate of the output video. Unit: frames per second (FPS). Valid values: 1 to **60**.'."\n" + ."\n" + .'> Required if you set TemplateType to h264, h264-nbhd, or h264-origin.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '30', 'title' => ''], ], [ - 'name' => 'CallbackUrl', + 'name' => 'VideoBitrate', 'in' => 'query', - 'schema' => [ - 'description' => 'The callback URL. By default, this parameter is left empty.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The URL is used to receive callbacks related to the task.'."\n" - ."\n" - .'* The URL can be up to 2,000 characters in length.'."\n" - ."\n" - .'* If you do not specify this parameter, no callbacks are returned for events related to the task.'."\n" - ."\n" - .'* The update takes effect for subsequent events that occur.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'https://callback*****.com', - ], + 'schema' => ['description' => 'The output video bitrate. Unit: kbps. Valid values: 1 to **6000**.'."\n" + ."\n" + .'> - Required if you set TemplateType to h264, h264-nbhd, or h264-origin.'."\n" + .'>'."\n" + .'> - The system tries to transcode the video at the specified bitrate. However, the actual bitrate may not be the same as the specified value, especially when the specified value is too high or too low.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2000', 'title' => ''], ], [ - 'name' => 'FileIndex', + 'name' => 'AudioBitrate', 'in' => 'query', - 'schema' => [ - 'description' => 'The file index. Default value: 0.'."\n" - ."\n" - .'> You can modify this parameter only if the task is stopped. The update takes effect after you restart the task.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '0', - 'default' => '0', - ], + 'schema' => ['description' => 'The output audio bitrate. Unit: kbps. Valid values: 1 to **1000**.'."\n" + ."\n" + .'> Required if you set TemplateType to audio.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '128', 'title' => ''], ], - ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68*****', - ], - 'RetCode' => [ - 'description' => 'The code that is returned for the request.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* 0 is returned if the request is normal.'."\n" - ."\n" - .'* For information about codes that are returned when exceptions occur, see the following Error codes table.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'Description' => [ - 'description' => 'The error description.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], - ], - ], + [ + 'name' => 'Gop', + 'in' => 'query', + 'schema' => ['description' => 'The Group of Pictures (GOP) size, which specifies the keyframe interval. Unit: seconds. Valid values: **1** to **3**.', 'type' => 'string', 'required' => false, 'example' => '2', 'title' => ''], ], - ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParam.CodeIllegalDuration', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CodeInvalidAliUid', - 'errorMessage' => 'This aliuid does not have a live domain name.', - ], - [ - 'errorCode' => 'CodeTaskNotExist', - 'errorMessage' => 'Task does not exist.', - ], - [ - 'errorCode' => 'CodeTaskHasStarted', - 'errorMessage' => 'The task has already started.', - ], + [ + 'name' => 'DeleteBframes', + 'in' => 'query', + 'schema' => ['description' => 'Controls whether to remove B-frames from the transcoded output video. Valid values:'."\n" + ."\n" + .'- **true**: The transcoded video has no B-frames.'."\n" + ."\n" + .'- **false**: The transcoded video contains B-frames. This is the default value.'."\n" + ."\n" + .'> Required if you set TemplateType to h264, h264-nbhd, or h264-origin.', 'type' => 'boolean', 'required' => false, 'example' => 'false', 'title' => ''], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + [ + 'name' => 'Opus', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to use the Opus codec for audio transcoding. This is mainly for compatibility with native WebRTC. Valid values:'."\n" + ."\n" + .'- **true**: Transcodes the audio to the Opus format.'."\n" + ."\n" + .'- **false**: Does not use the Opus format for transcoding. This is the default value.', 'type' => 'boolean', 'required' => false, 'example' => 'true', 'title' => ''], ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68*****\\",\\n \\"RetCode\\": 0,\\n \\"Description\\": \\"OK\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68*****\\n 0\\n OK\\n","errorExample":""}]', - 'title' => 'UpdateLivePullToPush', - 'description' => '* You can call this operation to update a pulled-stream relay task.'."\n" - .'* As long as the specified start time of a task has not been reached, you can modify the SourceType, Region, and DstUrl parameters of the task.'."\n" - .'* If a task is running (even if the task is in an abnormal retry state), you can modify only the CallbackUrl and RepeatTime parameters of the task. The update takes effect immediately.'."\n" - .'* If a task is stopped, you can modify all parameters of the task except SourceType, Region, and DstUrl.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLivePullToPush' => [ - 'summary' => 'Deletes a pulled-stream relay task.', - 'methods' => [ - 'get', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ [ - 'AK' => [], + 'name' => 'Profile', + 'in' => 'query', + 'schema' => ['description' => 'The video codec profile. A larger value indicates better video quality and higher resource consumption for encoding and decoding. Valid values:'."\n" + ."\n" + .'- **1**: baseline (for mobile devices).'."\n" + ."\n" + .'- **2**: main (for SD devices).'."\n" + ."\n" + .'- **3**: high (for HD devices).', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], ], - ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '238152', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', + [ + 'name' => 'AudioProfile', + 'in' => 'query', + 'schema' => ['description' => 'The audio codec profile. Valid values:'."\n" + ."\n" + .'- aac\\_low'."\n" + ."\n" + .'- aac\\_he'."\n" + ."\n" + .'- aac\\_he\\_v2'."\n" + ."\n" + .'- aac\\_ld', 'type' => 'string', 'required' => false, 'example' => 'aac_low', 'title' => ''], ], - ], - 'parameters' => [ [ - 'name' => 'RegionId', + 'name' => 'AudioCodec', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The audio codec. Valid values:'."\n" + ."\n" + .'- aac'."\n" + ."\n" + .'- mp3'."\n" + ."\n" + .'> To use the Opus codec, set the Opus parameter to true.', 'type' => 'string', 'required' => false, 'example' => 'aac', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'AudioRate', 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '3efb43c5-18ff-49eb-92a6-005f6521****', - ], + 'schema' => ['description' => 'The audio sample rate. Valid values: 22050, 32000, 44100, 48000, 96000. Recommended: 44100. Unit: Hz.'."\n" + ."\n" + .'> If AudioProfile is set to aac\\_ld, the sample rate cannot exceed 44100.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '44100', 'title' => ''], ], [ - 'name' => 'Region', + 'name' => 'AudioChannelNum', 'in' => 'query', - 'schema' => [ - 'description' => 'The region where the task is started. Valid values:'."\n" - ."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-shanghai', - 'enum' => [ - 'ap-northeast-1', - 'ap-southeast-1', - 'ap-southeast-5', - 'eu-central-1', - 'me-central-1', - 'cn-beijing', - 'cn-shanghai', - 'cn-shenzhen', - 'cn-qingdao', - 'preregion', - ], - ], + 'schema' => ['description' => 'The number of audio channels. Valid values:'."\n" + ."\n" + .'- **1**: mono.'."\n" + ."\n" + .'- **2**: stereo.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '2', 'title' => ''], + ], + [ + 'name' => 'Lazy', + 'in' => 'query', + 'schema' => ['description' => 'Specifies whether to enable on-demand transcoding. Valid values:'."\n" + ."\n" + .'- **yes**: Transcoding only starts when the first viewer requests this transcoded stream.'."\n" + ."\n" + .'- **no**: Transcoding starts immediately after the stream is published.', 'type' => 'string', 'required' => false, 'example' => 'no', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", + 'description' => 'The request ID.', 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68*****', - ], - 'RetCode' => [ - 'description' => 'The code that is returned for the request.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* 0 is returned if the request is normal.'."\n" - ."\n" - .'* For information about codes that are returned when exceptions occur, see the following Error codes table.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'Description' => [ - 'description' => 'The error description.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', 'title' => ''], ], + 'title' => '', + 'example' => '', ], ], - [], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CodeInvalidAliUid', - 'errorMessage' => 'This aliuid does not have a live domain name.', - ], - [ - 'errorCode' => 'CodeTaskNotExist', - 'errorMessage' => 'Task does not exist.', - ], + ['errorCode' => 'InvalidParameters', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Exception parameter exists, please check and try again.'], + ['errorCode' => 'ConfigAlreadyExists', 'errorMessage' => '%s Please check and try again later.', 'description' => 'Configuration already exists, please check and try again.'], + ['errorCode' => 'TemplateLimit', 'errorMessage' => '%s Please check and try again later.', 'description' => 'The number of templates reached the upper limit.'], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], - ], - ], - 'staticInfo' => [ - 'returnType' => 'synchronous', ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68*****\\",\\n \\"RetCode\\": 0,\\n \\"Description\\": \\"OK\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68*****\\n 0\\n OK\\n","errorExample":""}]', - 'title' => 'DeleteLivePullToPush', - 'description' => '* You can call this operation to delete a pulled-stream relay task.'."\n" - .'* If you delete a running task, the task is immediately stopped and cannot be restarted.'."\n" + 'title' => 'UpdateRtsLiveStreamTranscode', + 'description' => 'This API operation supports only the following types of custom transcoding templates: h264, h264-nbhd, h264-origin, and audio.'."\n" ."\n" - .'## [](#qps-)QPS limit'."\n" + .'## QPS limit'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLivePullToPush' => [ - 'summary' => 'Queries pulled-stream relay tasks.', - 'methods' => [ - 'get', + .'You can call this operation up to 10 times per second per account.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [], ], - 'schemes' => [ - 'https', + 'ramActions' => [ + [ + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateRtsLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","type":"json"}]', + ], + 'VerifyLiveDomainOwner' => [ + 'methods' => ['post', 'get'], + 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', - 'deprecated' => false, 'systemTags' => [ 'operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free', - 'abilityTreeCode' => '238179', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'abilityTreeCode' => '107290', + 'abilityTreeNodes' => ['FEATUREliveG4SX14'], ], 'parameters' => [ [ 'name' => 'RegionId', 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'default' => 'cn-shanghai', - ], + 'schema' => ['description' => 'The region ID.', 'type' => 'string', 'required' => false, 'default' => 'cn-shanghai', 'example' => 'cn-shanghai', 'title' => ''], ], [ - 'name' => 'TaskId', + 'name' => 'DomainName', 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'fd245384-4067-4f91-9d75-9666a6bc****', - ], + 'schema' => ['description' => 'The domain name to verify. Only one domain name can be verified at a time.', 'type' => 'string', 'required' => true, 'example' => 'example.com', 'title' => ''], ], [ - 'name' => 'Region', + 'name' => 'VerifyType', 'in' => 'query', - 'schema' => [ - 'description' => 'The region where the task is started. Valid values:'."\n" - ."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-shanghai', - 'enum' => [ - 'ap-northeast-1', - 'ap-southeast-1', - 'ap-southeast-5', - 'eu-central-1', - 'me-central-1', - 'cn-beijing', - 'cn-shanghai', - 'cn-shenzhen', - 'cn-qingdao', - 'preregion', - ], - ], + 'schema' => ['description' => 'The verification method. Valid values:'."\n" + ."\n" + .'- dnsCheck: DNS record verification'."\n" + ."\n" + .'- fileCheck: file verification', 'type' => 'string', 'required' => true, 'example' => 'dnsCheck', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", 'type' => 'object', 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '3271ACD2-F143-1204-AFDB-9A87C131****', - ], - 'RetCode' => [ - 'description' => 'The code that is returned for the request.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* 0 is returned if the request is normal.'."\n" - ."\n" - .'* For information about codes that are returned when exceptions occur, see the following Error codes table.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'Description' => [ - 'description' => 'The error description.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], - 'TaskId' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'example' => 'fd245384-4067-4f91-9d75-9666a6bc9****', - ], - 'TaskStatus' => [ - 'description' => 'The current status of the task.'."\n" - ."\n" - .'* 0: not started.'."\n" - .'* 1: running. Stream pulling and stream relay are normal.'."\n" - .'* 2: abnormal.'."\n" - .'* 3: stopped. It may be because exceptions occur during stream pulling or stream relay or you proactively call the StopLivePullToPush operation.'."\n" - .'* \\-1: exited.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'TaskInvalidReason' => [ - 'description' => 'The reason why the task was stopped.'."\n" - ."\n" - .'* PullStreamFailed: An exception occurred while pulling the source stream. A retry is in progress.'."\n" - .'* PushStreamFailed: An exception occurred while ingesting the stream. A retry is in progress.'."\n" - .'* UnknownError: An unknown exception occurred.'."\n" - ."\n" - .'> This parameter is returned only if the task status is stopped.'."\n", - 'type' => 'string', - 'example' => 'UnknownError', - ], - 'TaskExitTime' => [ - 'description' => 'The time when the task was exited. The value is a Unix timestamp in seconds.'."\n" - ."\n" - .'> This parameter is returned only if the task status is exited.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1724740200', - ], - 'TaskExitReason' => [ - 'description' => 'The reason why the task is stopped.'."\n" - ."\n" - .'* TriggerByUser: You proactively stopped the task.'."\n" - .'* OverEndTime: The specified end time was exceeded.'."\n" - ."\n" - .'> This parameter is returned only if the task is stopped.'."\n", - 'type' => 'string', - 'example' => 'TriggerByUser', - ], - 'CurrentOffset' => [ - 'description' => 'The current offset for video playback.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'CurrentFileIndex' => [ - 'description' => 'The current file index.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'TaskInfo' => [ - 'description' => 'The information about the task.'."\n", - 'type' => 'object', - 'properties' => [ - 'TaskId' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'example' => 'fd245384-4067-4f91-9d75-9666a6bc9****', - ], - 'TaskName' => [ - 'description' => 'The task name.'."\n", - 'type' => 'string', - 'example' => 'test', - ], - 'StartTime' => [ - 'description' => 'The start time of the task. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2024-08-26T10:30:00Z', - ], - 'EndTime' => [ - 'description' => 'The end time of the task. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2024-08-27T14:30:00Z', - ], - 'SourceType' => [ - 'description' => 'The type of the source stream. Valid values:'."\n" - ."\n" - .'* live: a live stream'."\n" - .'* vod: a list of ApsaraVideo VOD resources'."\n" - .'* url: a list of video resources from a third party'."\n", - 'type' => 'string', - 'example' => 'live', - ], - 'SourceProtocol' => [ - 'description' => 'The protocol of the source stream.'."\n", - 'type' => 'string', - 'example' => 'RTMP', - ], - 'SourceUrls' => [ - 'description' => 'The source URLs.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The source URL of the stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434', - ], - 'example' => 'rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434', - ], - 'DstUrl' => [ - 'description' => 'The destination URL to which the stream is relayed.'."\n", - 'type' => 'string', - 'example' => 'rtmp://pushtest.********.aliyunlive.com/pulltest493/pulltest-w434', - ], - 'CallbackURL' => [ - 'description' => 'The HTTP callback URL.'."\n", - 'type' => 'string', - 'example' => 'https://callback*****.com', - ], - 'Offset' => [ - 'description' => 'The offset of the position where the system starts to read the video resource. Unit: seconds. Valid values: positive numbers.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter indicates an offset from the first frame.'."\n" - ."\n" - .'* This parameter is applicable to only video resources from ApsaraVideo VOD or a third party.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '2', - ], - 'FileIndex' => [ - 'description' => 'The file index, which indicates the sequence of the file where the playback starts.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'RetryCount' => [ - 'description' => 'The number of retries allowed.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3', - ], - 'RetryInterval' => [ - 'description' => 'The retry interval. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '60', - ], - 'RepeatNumber' => [ - 'description' => 'The number of playbacks after the first playback is complete. Valid values:'."\n" - ."\n" - .'* 0 (default): specifies that the video list is played only once.'."\n" - .'* \\-1: specifies that the video list is played in loop mode.'."\n" - .'* Positive integer: specifies the number of times the video list repeats after the first playback is complete.'."\n" - ."\n" - .'> This parameter is applicable to only video resources from ApsaraVideo VOD or a third party.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - ], - ], + 'Content' => ['description' => 'The verification information.', 'type' => 'string', 'example' => 'verify_dffeb6610035dcb77b413******', 'title' => ''], + 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1BA6D7CE-55F1-5926-8764-F8663473AD0D', 'title' => ''], ], + 'description' => '', + 'title' => '', + 'example' => '', ], ], ], 'errorCodes' => [ 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CodeInvalidAliUid', - 'errorMessage' => 'This aliuid does not have a live domain name.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], + ['errorCode' => 'DomainOwnerVerifyFail', 'errorMessage' => 'Owner verification of the root domain failed.', 'description' => ''], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"a05e6b15-15af-405b-a4a2-0152245d****\\",\\n \\"RetCode\\": 0,\\n \\"Description\\": \\"OK\\",\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\",\\n \\"TaskStatus\\": 0,\\n \\"TaskInvalidReason\\": \\"PullStreamFailed\\",\\n \\"TaskExitTime\\": 1726354625,\\n \\"TaskExitReason\\": \\"TriggerByUser\\",\\n \\"CurrentOffset\\": 0,\\n \\"CurrentFileIndex\\": 0,\\n \\"TaskInfo\\": {\\n \\"TaskId\\": \\"fd245384-4067-4f91-9d75-9666a6bc9****\\",\\n \\"TaskName\\": \\"test\\",\\n \\"StartTime\\": \\"2024-08-26T10:30:00Z\\",\\n \\"EndTime\\": \\"2024-08-27T14:30:00Z\\",\\n \\"SourceType\\": \\"vod\\",\\n \\"SourceProtocol\\": \\"RTMP\\",\\n \\"SourceUrls\\": [\\n \\"rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434\\"\\n ],\\n \\"DstUrl\\": \\"rtmp://pushtest.********.aliyunlive.com/pulltest493/pulltest-w434\\",\\n \\"CallbackURL\\": \\"https://callback*****.com\\",\\n \\"Offset\\": 0,\\n \\"FileIndex\\": 0,\\n \\"RetryCount\\": 3,\\n \\"RetryInterval\\": 60,\\n \\"RepeatNumber\\": 0\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 3271ACD2-F143-1204-AFDB-9A87C131****\\n 0\\n OK\\n fd245384-4067-4f91-9d75-9666a6bc9****\\n 1\\n UnknownError\\n 1724740200\\n TriggerByUser\\n \\n fd245384-4067-4f91-9d75-9666a6bc9****\\n live\\n 2\\n https://callback*****.com\\n rtmp://pulltest.****.aliyunlive.com/pulltest493/pulltest-w434\\n rtmp://pushtest.********.aliyunlive.com/pulltest493/pulltest-w434\\n 2024-08-26T10:30:00Z\\n 2024-08-27T14:30:00Z\\n \\n","errorExample":""}]', - 'title' => 'DescribeLivePullToPush', - 'description' => '* You can call this operation to query the information about a pulled-stream relay task.'."\n" - .'* This operation allows you to query the configurations and status of a task with a specified ID.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" + 'title' => 'VerifyLiveDomainOwner', + 'summary' => 'Verifies the ownership of a domain name.', + 'description' => '### QPS limits'."\n" ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLivePullToPushList' => [ - 'summary' => 'Queries pulled-stream relay tasks. Fuzzy match is supported.', - 'methods' => [ - 'get', - ], - 'schemes' => [ - 'https', - ], - 'security' => [ - [ - 'AK' => [], - ], - ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '257040', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', + .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions.', + 'changeSet' => [], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'VerifyLiveDomainOwner'], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'default' => 'cn-shanghai', - ], - ], + 'ramActions' => [ [ - 'name' => 'Region', - 'in' => 'query', - 'schema' => [ - 'description' => 'The region of the live center. Valid values:'."\n" - ."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'cn-shanghai', - 'enum' => [ - 'ap-northeast-1', - 'ap-southeast-1', - 'ap-southeast-5', - 'eu-central-1', - 'me-central-1', - 'cn-beijing', - 'cn-shanghai', - 'cn-shenzhen', - 'cn-qingdao', - 'preregion', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:VerifyLiveDomainOwner', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - [ - 'name' => 'TaskId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID. Fuzzy search is performed based on the task ID.'."\n" - ."\n" - .'> The ID can be up to 55 characters in length and can contain letters, digits, underscores (\\_), and hyphens (-).'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '861009', - ], - ], - [ - 'name' => 'TaskName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The task name. Fuzzy search is performed based on the task name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'task', - ], - ], - [ - 'name' => 'DstUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The destination URL. Fuzzy search is performed based on the destination URL.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://qd', - ], - ], - [ - 'name' => 'PageNumber', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number.'."\n" - ."\n" - .'> The value must be greater than 0 and not greater than the maximum value of the Integer data type. Default value: 1.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'example' => '1', - 'default' => '1', - ], - ], - [ - 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page.'."\n" - ."\n" - .'> Valid values: \\[1,100]. Default value: 10.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '10', - 'default' => '10', - ], - ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'a05e6b15-15af-405b-a4a2-0152245*****', - ], - 'Total' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3', - ], - 'PageNumber' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'TaskList' => [ - 'description' => 'The tasks.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the tasks returned.'."\n", - 'type' => 'object', - 'properties' => [ - 'TaskId' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', - ], - 'TaskStatus' => [ - 'description' => 'The task status. Valid values:'."\n" - ."\n" - .'* 0: not started.'."\n" - .'* 1: running. Stream pulling and stream relay are normal.'."\n" - .'* 2: abnormal.'."\n" - .'* 3: stopped. It may be because exceptions occur during stream pulling or stream relay or you proactively call the StopLivePullToPush operation.'."\n" - .'* \\-1: exited.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'TaskInvalidReason' => [ - 'description' => 'The reason why the task was stopped.'."\n" - ."\n" - .'* PullStreamFailed: An exception occurred while pulling the source stream. A retry is in progress.'."\n" - .'* PushStreamFailed: An exception occurred while ingesting the stream. A retry is in progress.'."\n" - .'* UnknownError: An unknown exception occurred.'."\n" - ."\n" - .'> This parameter is returned only if the task status is stopped.'."\n", - 'type' => 'string', - 'example' => 'PullStreamFailed', - ], - 'TaskExitTime' => [ - 'description' => 'The time when the task was exited. The value is a Unix timestamp in seconds.'."\n" - ."\n" - .'> This parameter is returned only if the task status is exited.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1726354625', - ], - 'TaskExitReason' => [ - 'description' => 'The reason why the task was exited. Valid values:'."\n" - ."\n" - .'* TriggerByUser: You proactively ended the task.'."\n" - .'* OverEndTime: The specified end time was exceeded.'."\n" - ."\n" - .'> This parameter is returned only if the task status is exited.'."\n", - 'type' => 'string', - 'example' => 'TriggerByUser', - ], - 'CurrentOffset' => [ - 'description' => 'The current offset for video playback.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'CurrentFileIndex' => [ - 'description' => 'The current file index.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'TaskInfo' => [ - 'description' => 'The information about the task.'."\n", - 'type' => 'object', - 'properties' => [ - 'TaskId' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', - ], - 'TaskName' => [ - 'description' => 'The task name.'."\n", - 'type' => 'string', - 'example' => 'taskname', - ], - 'StartTime' => [ - 'description' => 'The start time of the task. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2024-12-04T09:16:00Z', - ], - 'EndTime' => [ - 'description' => 'The end time of the task. The time follows the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2024-12-30T14:30:00Z', - ], - 'SourceType' => [ - 'description' => 'The type of the source stream. Valid values:'."\n" - ."\n" - .'* live: a live stream'."\n" - .'* vod: a list of ApsaraVideo VOD resources'."\n" - .'* url: a list of video resources from a third party'."\n", - 'type' => 'string', - 'example' => 'vod', - ], - 'SourceProtocol' => [ - 'description' => 'The protocol of the source stream.'."\n", - 'type' => 'string', - 'example' => 'flv', - ], - 'SourceUrls' => [ - 'description' => 'The source URLs.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The source URL of the stream.'."\n", - 'type' => 'string', - 'example' => 'rtmp://118.178.***.*5:****/wwtestlive1/pulltest.jiugong.aliyunlive.com_livelight2?vhost=pulltest.jiugong.aliyun*******', - ], - ], - 'DstUrl' => [ - 'description' => 'The destination URL to which the stream is relayed.'."\n", - 'type' => 'string', - 'example' => 'rtmp://qd.push.lgg.alivecdn.com/testhsc/streamhsc?live_rtmp_*******', - ], - 'CallbackURL' => [ - 'description' => 'The HTTP callback URL.'."\n", - 'type' => 'string', - 'example' => 'hahaha.com', - ], - 'Offset' => [ - 'description' => 'The offset of the position where the system starts to read the video resource. Unit: seconds. Valid values: positive numbers.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter indicates an offset from the first frame.'."\n" - ."\n" - .'* This parameter is applicable to only video resources from ApsaraVideo VOD or a third party.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'FileIndex' => [ - 'description' => 'The file index, which indicates the sequence of the file where the playback starts.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - 'RetryCount' => [ - 'description' => 'The number of retries allowed.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '3', - ], - 'RetryInterval' => [ - 'description' => 'The retry interval. Unit: seconds.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '60', - ], - 'RepeatNumber' => [ - 'description' => 'The number of playbacks after the first playback is complete. Valid values:'."\n" - ."\n" - .'* 0 (default): specifies that the video list is played only once.'."\n" - .'* \\-1: specifies that the video list is played in loop mode.'."\n" - .'* Positive integer: specifies the number of times the video list repeats after the first playback is complete.'."\n" - ."\n" - .'> This parameter is applicable to only video resources from ApsaraVideo VOD or a third party.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '0', - ], - ], - ], - ], - ], - ], - ], - ], - ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Content\\": \\"verify_dffeb6610035dcb77b413******\\",\\n \\"RequestId\\": \\"1BA6D7CE-55F1-5926-8764-F8663473AD0D\\"\\n}","type":"json"}]', + ], + ], + 'endpoints' => [ + ['regionId' => 'cn-qingdao', 'regionName' => 'China (Qingdao)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-beijing', 'regionName' => 'China (Beijing)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-hangzhou', 'regionName' => 'China (Hangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-shenzhen', 'regionName' => 'China (Shenzhen)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-northeast-1', 'regionName' => 'Japan (Tokyo)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'ap-southeast-5', 'regionName' => 'Indonesia (Jakarta)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-shanghai', 'regionName' => 'China (Shanghai)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => 'live-vpc.cn-shanghai.aliyuncs.com'], + ['regionId' => 'ap-southeast-1', 'regionName' => 'Singapore', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'live.ap-southeast-1.aliyuncs.com', 'endpoint' => 'live.ap-southeast-1.aliyuncs.com', 'vpc' => 'live-vpc.ap-southeast-1.aliyuncs.com'], + ['regionId' => 'us-east-1', 'regionName' => 'US (Virginia)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => 'live-vpc.us-east-1.aliyuncs.com'], + ['regionId' => 'eu-central-1', 'regionName' => 'Germany (Frankfurt)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'live.eu-central-1.aliyuncs.com', 'endpoint' => 'live.eu-central-1.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'me-central-1', 'regionName' => 'Saudi Arabia (Riyadh)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => 'live-vpc.me-central-1.aliyuncs.com'], + ['regionId' => 'ap-south-1', 'regionName' => 'India (Mumbai) Closed', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => ''], + ['regionId' => 'cn-north-2-gov-1', 'regionName' => 'Beijing Government Cloud', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'live.aliyuncs.com', 'endpoint' => 'live.aliyuncs.com', 'vpc' => ''], + ], + 'errorCodes' => [ + ['code' => 'Abs.CheckUrl.Malformed', 'message' => 'The CheckUrl you provided is malformed.', 'http_code' => 400, 'description' => 'The CheckUrl you provided is malformed.'], + ['code' => 'AppInfoNotExist', 'message' => 'The app does not exist.', 'http_code' => 404, 'description' => 'The app does not exist.'], + ['code' => 'BillTypeNotFound', 'message' => 'User bill type not found or is not monthly bill type.', 'http_code' => 400, 'description' => 'The bill type does not exist, or your account does not support monthly bills.'], + ['code' => 'BusinessExist', 'message' => 'Business exist, do not repeated submission', 'http_code' => 400, 'description' => 'Do not submit the same request multiple times.'], + ['code' => 'CasterNumberExceed', 'message' => 'The number casters is exceeded', 'http_code' => 400, 'description' => 'The number of production studios exceeds the limit.'], + ['code' => 'Certificate.Duplicated', 'message' => 'The certificate name is duplicated', 'http_code' => 400, 'description' => 'Duplicate certificate names.'], + ['code' => 'Certificate.MissMatch', 'message' => 'The certificate is not match the private key', 'http_code' => 400, 'description' => 'The certificate does not match the private key.'], + ['code' => 'CheckAccountFailed', 'message' => 'Failed to check account, %s.', 'http_code' => 400, 'description' => 'Failed to check account.'], + ['code' => 'CheckSourceHealthFailed', 'message' => 'sources ip or source domain check health failed, please input right source.', 'http_code' => 400, 'description' => '-'], + ['code' => 'CodeAddToBizTranscodeAllFailed', 'message' => 'code failed to add to biztranscode', 'http_code' => 400, 'description' => 'Failed to add the configuration. Try again later.'], + ['code' => 'CodeAppNameIsIllegal', 'message' => 'Code app name is not legal', 'http_code' => 400, 'description' => 'The application name is invalid.'], + ['code' => 'CodeConfigAlreadyExists', 'message' => 'Code Config Already Exists', 'http_code' => 400, 'description' => 'The configuration already exists. Check the configuration and try again.'], + ['code' => 'CodeConfigNotFound', 'message' => 'No config found', 'http_code' => 400, 'description' => 'The configuration does not exist. Check the configuration and try again.'], + ['code' => 'CodeGetMainPlaybackDomainError', 'message' => 'Failed to obtain the main playback domain name.', 'http_code' => 400, 'description' => 'Failed to get primary playback domain name.'], + ['code' => 'CodeGetPushbackDomainError', 'message' => 'Unable to get the push domain name, please check the domain name mapping configuration.', 'http_code' => 400, 'description' => 'Unable to get the push domain name, please check the domain name mapping configuration.'], + ['code' => 'CodeGroupCountIsOutOfRange', 'message' => 'Code Group Count Is Out Of Range', 'http_code' => 400, 'description' => 'The number of template groups has exceeded the limit. Check the configuration and try again.'], + ['code' => 'CodeGroupIdIsIllegal', 'message' => 'Code Group Id Is Illegal', 'http_code' => 400, 'description' => 'The configuration group ID is invalid.'], + ['code' => 'CodeInvalidAliUid', 'message' => 'This aliuid does not have a live domain name.', 'http_code' => 400, 'description' => 'This aluid does not have a live domain name.'], + ['code' => 'CodeInvalidConfig', 'message' => 'Invalid database configuration.', 'http_code' => 400, 'description' => 'Invalid database configuration.'], + ['code' => 'CodeIsAvFormatIllegal', 'message' => 'Code Is Av Format Illegal', 'http_code' => 400, 'description' => 'The AV format is invalid.'], + ['code' => 'CodeIsLazyIllegal', 'message' => 'Code Is Lazy Illegal', 'http_code' => 400, 'description' => 'The parameter for the lazy mode is invalid.'], + ['code' => 'CodeIsTimeAlignIllegal', 'message' => 'Code Is Time Align Illegal', 'http_code' => 400, 'description' => 'Time for the parameter is invalid.'], + ['code' => 'CodeMultiRateBandWidthIllegal', 'message' => 'BandWidth is illegal, must be composed with digit.', 'http_code' => 400, 'description' => 'BandWidth is illegal, must be composed with digit.'], + ['code' => 'CodeMultiRateConfigIsEmpty', 'message' => 'CodeMultiRateConfig is Empty', 'http_code' => 400, 'description' => 'Empty multi-bitrate configuration.'], + ['code' => 'CodeNotEnoughResource', 'message' => 'Exceeded configuration limits or insufficient resources.', 'http_code' => 400, 'description' => 'Exceeded configuration limits or insufficient resources'], + ['code' => 'CodeNotPullDomain', 'message' => 'The domain name is not a pull domain name.', 'http_code' => 400, 'description' => 'The domain name is not a pull domain name.'], + ['code' => 'CodeNotPushDomain', 'message' => 'The domain name is not a push domain name.', 'http_code' => 400, 'description' => 'The domain name is not a push domain name.'], + ['code' => 'CodeTaskHasStarted', 'message' => 'The task has already started.', 'http_code' => 400, 'description' => 'The task has already started and cannot be updated.'], + ['code' => 'CodeTaskHasStopped', 'message' => 'The task has been stopped.', 'http_code' => 400, 'description' => 'The task has been stopped.'], + ['code' => 'CodeTaskNotExist', 'message' => 'Task does not exist.', 'http_code' => 400, 'description' => 'The task does not exist.'], + ['code' => 'CodeTaskNotStarted', 'message' => 'Task not started, cannot operate.', 'http_code' => 400, 'description' => 'Task not started, cannot operate.'], + ['code' => 'CommomLiveRcordConfigExisted', 'message' => 'Common live record config has already exist.', 'http_code' => 400, 'description' => 'Common live record config has already exist.'], + ['code' => 'ComponentNumberExceed', 'message' => 'Number of text/image exceeded norms.', 'http_code' => 400, 'description' => 'The number of text and picture components exceeds the limit.'], + ['code' => 'ConfigAlreadyExists', 'message' => 'Config duplicate', 'http_code' => null, 'description' => 'The configuration already exists. Check the configuration and try again.'], + ['code' => 'ConfigAlreadyExists', 'message' => 'Config has already exist.', 'http_code' => null, 'description' => 'The configuration already exists. Check the configuration and try again.'], + ['code' => 'ConfigAlreadyExists', 'message' => 'config has already exists', 'http_code' => 400, 'description' => 'The configuration already exists.'], + ['code' => 'ConfigConflicts', 'message' => 'Configuration already exists.', 'http_code' => 409, 'description' => 'Configuration already exists.'], + ['code' => 'ConfigExisted', 'message' => 'config is existed', 'http_code' => 400, 'description' => 'The configuration already exists. Check the configuration and try again.'], + ['code' => 'ConfigurationConflicts', 'message' => 'The staging environment has a configuration in effect and cannot modify the production environment configuration.', 'http_code' => 400, 'description' => 'The staging environment has a configuration in effect and cannot modify the production environment configuration.'], + ['code' => 'CreateOrderFailed', 'message' => 'Failed to create order, %s.', 'http_code' => 400, 'description' => 'Failed to create order,%s.'], + ['code' => 'DataNotFound', 'message' => 'Data does not exist or has been deleted.', 'http_code' => 404, 'description' => 'Data does not exist or has been deleted'], + ['code' => 'Domain.BeianInvalid', 'message' => 'not allowed to do this operation because the domain registration record invalid in China main land', 'http_code' => 400, 'description' => 'This operation is not allowed because the domain name is registered in the Chinese mainland.'], + ['code' => 'DomainAlreadyExist', 'message' => 'The specified domain already exists.', 'http_code' => 400, 'description' => 'The domain name already exists.'], + ['code' => 'DomainAlreadyExist', 'message' => 'Domain has already existed', 'http_code' => 400, 'description' => 'The domain name already exists.'], + ['code' => 'DomainInProtectedMode', 'message' => 'This domain is in the protected mode. if you want to do this operation, please contact us.', 'http_code' => 400, 'description' => 'The domain name is in protected mode. If you want to perform this operation, please contact us.'], + ['code' => 'DomainNotRegistration', 'message' => 'The Domain name is not registered', 'http_code' => 400, 'description' => 'The domain name is not registered.'], + ['code' => 'DomainNotRegistration', 'message' => 'The domain name you added is not registered, cannot use the Chinese mainland live center of ApsaraVideo Live or acceleration regions.', 'http_code' => 400, 'description' => 'The domain name you added does not have an ICP number. You cannot access live centers or accelerated regions in the Chinese mainland.'], + ['code' => 'DomainNumberTooLarge', 'message' => 'The domain number is too large.', 'http_code' => 400, 'description' => 'Too many domains'], + ['code' => 'DomainOverLimit', 'message' => 'The Number of Domain is over the limit', 'http_code' => 400, 'description' => 'The number of domain names exceeds the upper limit.'], + ['code' => 'DomainOwnerVerifyFail', 'message' => 'Owner verification of the root domain failed', 'http_code' => 400, 'description' => 'Failed to verify the ownership of the domain name.'], + ['code' => 'DomainReserved', 'message' => 'The root domain of your domain is reserved by another account.', 'http_code' => 400, 'description' => 'The root domain is added to other accounts.'], + ['code' => 'Duration.Exceed', 'message' => 'Duration between StartTime and EndTime is too long', 'http_code' => 400, 'description' => 'The interval between the start time and the end time is too long.'], + ['code' => 'EntityNotExist.ResourceGroup', 'message' => 'The resource group does not exist.', 'http_code' => 403, 'description' => 'The resource group does not exist.'], + ['code' => 'ErrorAckTimeout', 'message' => '%s.', 'http_code' => 408, 'description' => 'the ACK received timeout, please confirm the client version and try again.'], + ['code' => 'ErrorInvalidAppName', 'message' => '%s.', 'http_code' => 400, 'description' => 'The AppName is invalid, please check and try again.'], + ['code' => 'ErrorInvalidAuditUrl', 'message' => '%s.', 'http_code' => 400, 'description' => 'The AuditUrl is invalid, please check and try again.'], + ['code' => 'ErrorInvalidCallBackUrl', 'message' => '%s.', 'http_code' => 400, 'description' => 'The CallBackURL is invalid, please check and try again.'], + ['code' => 'ErrorInvalidEventCallbackUrl', 'message' => '%s.', 'http_code' => 400, 'description' => 'The EventCallbackUrl is invalid, please check and try again.'], + ['code' => 'ErrorTooManyApps', 'message' => '%s.', 'http_code' => 400, 'description' => 'Under each account, up to 300 apps are allowed to be created at the same time.'], + ['code' => 'ErrorTooManyGroups', 'message' => '%s.', 'http_code' => 400, 'description' => 'For each AppId, a maximum of 5000 groups are allowed to be created at the same time.'], + ['code' => 'ExceedLimit', 'message' => 'The number of domains has exceeded the limit.', 'http_code' => 400, 'description' => 'The number of domains has exceeded the limit.'], + ['code' => 'ExtensiveAndSpecificDomainConflict', 'message' => 'Extensive domain and corresponding specific domain are mutually exclusive.', 'http_code' => 400, 'description' => 'Extensive domain and corresponding specific domain are mutually exclusive.'], + ['code' => 'Forbidden', 'message' => 'User not authorized to operate on the specified resource.', 'http_code' => 403, 'description' => 'You do not have the required permissions. Check and try again.'], + ['code' => 'Forbidden.AccessDenied', 'message' => 'Request was denied due to isolation policy.', 'http_code' => 403, 'description' => 'Request was denied due to isolation policy.'], + ['code' => 'IllegalOperation', 'message' => 'Illegal domain operate is not permitted.', 'http_code' => 400, 'description' => 'The operation is invalid. Check the request and try again.'], + ['code' => 'IllegalOperationDomain', 'message' => 'You are not authorized to operate the domain', 'http_code' => 400, 'description' => 'You do not have the permission to operate on this domain name.'], + ['code' => 'IncorrectCasterStatus', 'message' => 'Caster has been started.', 'http_code' => 400, 'description' => 'Caster has been started.'], + ['code' => 'IncorrectCasterStatus.EnableChannel', 'message' => 'Caster should be stopped when enable channel for the first time.', 'http_code' => 400, 'description' => 'Caster should be stopped when enable channel for the first time.'], + ['code' => 'IncorrectCasterStatus.Inuse', 'message' => 'caster is in use', 'http_code' => 400, 'description' => 'The production studio is active.'], + ['code' => 'IncorrectChannel.Disable', 'message' => 'Channel is disable.', 'http_code' => 400, 'description' => 'The Channel is in a non-settable state.'], + ['code' => 'IncorrectSceneStatus', 'message' => 'The status of the scene is invalid', 'http_code' => 400, 'description' => 'The scene status is not supported. Check the scene status and try again.'], + ['code' => 'IncorrectSceneStatus.ConfigError', 'message' => 'Scene status is incorrect', 'http_code' => 400, 'description' => 'Incorrect scene status.'], + ['code' => 'IncorrectSceneStatus.Idle', 'message' => 'The status of the scene is invalid', 'http_code' => 400, 'description' => 'Incorrect scene status: Idle.'], + ['code' => 'IncorrectSubtitleStatus.%s', 'message' => '%s.', 'http_code' => 400, 'description' => 'Abnormal subtitle template status'], + ['code' => 'IndexOutOfBound', 'message' => 'The required index is out of bound.', 'http_code' => 400, 'description' => 'The required index is out of bound, please make sure your index is within the range'], + ['code' => 'InputInvalid', 'message' => '%s.', 'http_code' => 400, 'description' => 'Illegal input parameters'], + ['code' => 'InternalError', 'message' => 'The request processing has failed due to some unknown error.', 'http_code' => null, 'description' => 'An internal error occurred. Try again later.'], + ['code' => 'InternalError', 'message' => 'The request processing has failed due to some unknown error', 'http_code' => null, 'description' => 'An internal error occurred. Try again later.'], + ['code' => 'InternalError', 'message' => '%s.', 'http_code' => 500, 'description' => 'error on the live liveapi server.'], + ['code' => 'InvaildParameter', 'message' => 'Invalid Parameter', 'http_code' => 400, 'description' => 'Invalid request parameter.'], + ['code' => 'InvaildParameter', 'message' => 'The parameter you provided is invalid,Please check whether the input parameters are complete and correct.', 'http_code' => 400, 'description' => 'The parameter that you specify is invalid. Check whether the parameter is complete and correct.'], + ['code' => 'InvalidAlignment', 'message' => 'Specified parameter Alignment is not valid.', 'http_code' => 400, 'description' => 'The specified parameter alignment format is invalid. Verify that the parameter alignment format is correct.'], + ['code' => 'InvalidAnimate', 'message' => 'Specified parameter Animate is not valid.', 'http_code' => 400, 'description' => 'Invalid animation. Check whether the animation parameter that you specified is correct.'], + ['code' => 'InvalidAppName.Conflicted', 'message' => 'The AppName provided has probably configured template already in our records.', 'http_code' => 400, 'description' => 'A transcoding template has already been configured for the current AppName.'], + ['code' => 'InvalidAppName.LengthTooLong', 'message' => 'The specified app name is too long.', 'http_code' => 400, 'description' => 'The length of AppName exceeds the limit. Specify a valid AppName.'], + ['code' => 'InvalidAppName.Mismatch', 'message' => 'The AppName param must be passed.', 'http_code' => 400, 'description' => 'The AppName parameter does not match. Make sure that you specify the correct AppName.'], + ['code' => 'InvalidAppName.TemplateExceed', 'message' => 'The AppName provided had maximum number of templates', 'http_code' => 400, 'description' => 'Templates in the AppName has exceeded the maximum number allowed. You cannot add any more templates.'], + ['code' => 'InvalidAreaParameter', 'message' => 'The specified Area parameter is invalid.', 'http_code' => 400, 'description' => 'The specified Area parameter is invalid. Specify a correct region code.'], + ['code' => 'InvalidArgName.ValueNotSupported', 'message' => 'Argument Name [%s] is not supported.', 'http_code' => 400, 'description' => 'Argument Name [%s] is not supported.'], + ['code' => 'InvalidArgValue.Malformed', 'message' => 'Specified argument value is malformed.', 'http_code' => 400, 'description' => 'Specified argument value is malformed.'], + ['code' => 'InvalidAutoComposeAndComposeVodTranscodeGroupId.Malformed', 'message' => 'Specified parameters "AutoCompose" and "ComposeVodTranscodeGroupId" are invalid.', 'http_code' => 400, 'description' => 'The "AutoCompose" and "ComposeVodTranscodeGroupId" parameters specified are invalid.'], + ['code' => 'InvalidBorderColor', 'message' => 'Specified parameter BorderColor is not valid.', 'http_code' => 400, 'description' => 'The specified parameter is invalid. Verify that the parameter is correct.'], + ['code' => 'InvalidBorderWidth', 'message' => 'Specified parameter BorderWidth is not valid.', 'http_code' => 400, 'description' => 'The specified parameter is invalid. Verify that the parameter is correct.'], + ['code' => 'InvalidBucket.NotFound', 'message' => 'The bucket does not belong to you.', 'http_code' => 404, 'description' => 'the specified bucket does not belong to the current user.'], + ['code' => 'InvalidCaster.ChannelDisableUnsupported', 'message' => 'Disable channel is unsupported when current status of channel is enable.', 'http_code' => 400, 'description' => 'Once the channelEnable is turned on, it cannot be turned off.'], + ['code' => 'InvalidCaster.NotFound', 'message' => 'The caster does not exist.', 'http_code' => 404, 'description' => 'The caster does not exist.'], + ['code' => 'InvalidColor', 'message' => 'Specified parameter Color is not valid.', 'http_code' => 400, 'description' => 'The specified parameter color is invalid. Verify that the parameter color is correct.'], + ['code' => 'InvalidConfig.Changed', 'message' => 'The oss bucket info between StartTime and EndTime has changed.', 'http_code' => 400, 'description' => 'ossbucket start end time has changed.'], + ['code' => 'InvalidConfig.NotFound', 'message' => 'The speicified config does not exist.', 'http_code' => null, 'description' => 'The UID is not configured in the database.'], + ['code' => 'InvalidConfig.NotFound', 'message' => 'Config does not exist.', 'http_code' => null, 'description' => 'The UID is not configured in the database.'], + ['code' => 'InvalidConfig.NotFound', 'message' => '%s.', 'http_code' => 400, 'description' => 'The uid database table is not configured.'], + ['code' => 'InvalidCycleDuration.Malformed', 'message' => 'Specified CycleDuration Format is not valid.', 'http_code' => 400, 'description' => 'Invalid format of CycleDuration. Check whether the format of the CycleDuration parameter is correct.'], + ['code' => 'InvalidDomain.NotFound', 'message' => 'The domain provided does not exist in our records.', 'http_code' => null, 'description' => 'The domain name is not found under the account. Check whether the domain name is valid.'], + ['code' => 'InvalidDomain.NotPullDomain', 'message' => 'The parameter is not a pull field name. Please check your parameters.', 'http_code' => 400, 'description' => 'The parameter is not a pull watershed name. Please check your parameters.'], + ['code' => 'InvalidDomain.NotPushDomain', 'message' => '%s.', 'http_code' => 400, 'description' => 'The parameter is not a push field name. Please check your parameters.'], + ['code' => 'InvalidDomain.NotPushDomain', 'message' => 'The parameter is not a push field name. Please checkyour parameters.', 'http_code' => 400, 'description' => 'This parameter is not a push stream city name. Please check your parameters.'], + ['code' => 'InvalidDomainName.Malformed', 'message' => 'Specified domain name is malformed.', 'http_code' => 400, 'description' => 'Specified domain name is malformed.'], + ['code' => 'InvalidDomainName.NotFound', 'message' => 'DomainName is not found.', 'http_code' => 400, 'description' => 'The domain name could not be found.'], + ['code' => 'InvalidDomainName.NotFound', 'message' => 'Failed to obtain the playdomain name.', 'http_code' => 400, 'description' => 'The current domain name is not associated with the push domain name. The dual-stream disaster recovery function is not supported.'], + ['code' => 'InvalidEndTime.Malformed', 'message' => 'Specified EndTime is malformed.', 'http_code' => null, 'description' => 'The EndTime parameter is invalid. Check the request and try again.'], + ['code' => 'InvalidEndTime.Malformed', 'message' => 'Specified parameter EndTime is not valid.', 'http_code' => null, 'description' => 'The EndTime parameter is invalid. Check the request and try again.'], + ['code' => 'InvalidEndTime.Mismatch', 'message' => 'Specified end time does not math the specified start time.', 'http_code' => 400, 'description' => 'The end time does not match the start time. Make sure that the start and end times match.'], + ['code' => 'InvalidFormat.Malformed', 'message' => 'Specified parameter Format is not valid.', 'http_code' => 400, 'description' => 'Invalid value of Format. Check whether the Format parameter that you specified is correct.'], + ['code' => 'InvalidFunctionArgs.Malformed', 'message' => '%s, please check your params', 'http_code' => 400, 'description' => 'The parameter name is invalid.'], + ['code' => 'InvalidFunctionName.ValueNotSupported', 'message' => 'FunctionName [%s] is not supported.', 'http_code' => 400, 'description' => 'The input function name is not supported.'], + ['code' => 'InvalidHeightOrWidthNormalized', 'message' => 'HeightNormalized or WidthNormalized parameter is invalid.', 'http_code' => 400, 'description' => 'HeightNormalized or WidthNormalized parameter is invalid.'], + ['code' => 'InvalidIdentity.ServiceDisabled', 'message' => 'The request identity was not allowed operated.', 'http_code' => null, 'description' => 'The InvalidParameter parameter is invalid. Verify that the InvalidParameter parameter is correct.'], + ['code' => 'InvalidImage', 'message' => 'The ImageUrl provided can not be accessed.', 'http_code' => 400, 'description' => 'Invalid value of ImageUrl. Check whether the ImageUrl parameter that you specified is correct.'], + ['code' => 'InvalidImage.Malformed', 'message' => 'The specified parameter ImageUrl is not valid.', 'http_code' => 400, 'description' => 'Invalid value of ImageUrl. Check whether the ImageUrl parameter that you specified is correct.'], + ['code' => 'InvalidImage.TooLarge', 'message' => 'The image is too large.', 'http_code' => 400, 'description' => 'The image is too large. Try again later.'], + ['code' => 'InvalidIntervalParameter', 'message' => 'The specified interval parameter is invalid.', 'http_code' => 400, 'description' => 'The specified interval parameter is invalid.'], + ['code' => 'InvalidLocationParameter', 'message' => 'The specified location name parameter is invalid.', 'http_code' => 400, 'description' => 'The specified LocationNameEn parameter is invalid.'], + ['code' => 'InvalidMixDomain.NotFound', 'message' => 'The mix domain provided does not exist in our records.', 'http_code' => null, 'description' => 'No stream mixing domain was found under the current account. Verify that the stream mixing domain is correct.'], + ['code' => 'InvalidMixStream.NotPublish', 'message' => 'Specified mix stream is not publishing.', 'http_code' => 400, 'description' => 'No stream ingest was detected. Verify that the stream ingest is correct.'], + ['code' => 'InvalidNormalizedX', 'message' => 'Specified parameter NormalizedX is not valid.', 'http_code' => 400, 'description' => 'Invalid value of NormalizedX. Check whether the NormalizedX parameter that you specified is correct.'], + ['code' => 'InvalidNormalizedY', 'message' => 'Specified parameter NormalizedY is not valid.', 'http_code' => 400, 'description' => 'Invalid value of NormalizedX. Check whether the NormalizedX parameter that you specified is correct.'], + ['code' => 'InvalidNotifyUrl.Malformed', 'message' => 'Specified parameter NotifyUrl is not valid.', 'http_code' => null, 'description' => 'The specified notifyurl parameter is invalid. Verify that the notifyurl parameter is correct.'], + ['code' => 'InvalidNotifyUrl.Malformed', 'message' => 'Specified NotifyUrl is invalid.', 'http_code' => 400, 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['code' => 'InvalidNotifyUrl.Unsafe', 'message' => 'Specified NotifyUrl is not safe.', 'http_code' => 400, 'description' => 'Invalid value of notifyurl. Check whether the notifyurl parameter that you specified is correct.'], + ['code' => 'InvalidOssBucket.Malformed', 'message' => 'Specified OssBucket is malformed.', 'http_code' => 400, 'description' => 'Invalid value of OSSBucket. Check whether the OSSBucket parameter that you specified is correct.'], + ['code' => 'InvalidOssBucket.Malformed', 'message' => 'Specified parameter OssBucket is not valid.', 'http_code' => 400, 'description' => 'The OSSBucket parameter is invalid. Verify that the OSS BUCKET parameter is correct.'], + ['code' => 'InvalidOssBucket.NotFound', 'message' => 'The parameter OssBucket does not exist.', 'http_code' => null, 'description' => 'The OSSBucket parameter is invalid. Verify that the OSS BUCKET parameter is correct.'], + ['code' => 'InvalidOssEndpoint.Malformed', 'message' => 'Specified OssObject is malformed.', 'http_code' => null, 'description' => 'The OssEndpoint is invalid. Check the value and try again.'], + ['code' => 'InvalidOssEndpoint.Malformed', 'message' => 'Specified parameter OssEndpoint is not valid.', 'http_code' => null, 'description' => 'The OssEndpoint is invalid. Check the value and try again.'], + ['code' => 'InvalidOssObject.Malformed', 'message' => 'Specified OssObject is malformed.', 'http_code' => null, 'description' => 'The OSSObject parameter is invalid. Verify that the OSSObject parameter is correct.'], + ['code' => 'InvalidOssObjectPrefix.Malformed', 'message' => 'Specified parameter OssObjectPrefix is not valid.', 'http_code' => null, 'description' => 'The OSSObjectPrefix parameter is invalid. Verify that the OSSObjectPrefix parameter is correct.'], + ['code' => 'InvalidOverwriteOssObject.Malformed', 'message' => 'Specified parameter OverwriteOssObject is not valid.', 'http_code' => 400, 'description' => 'The OverwriteOSSObject parameter is invalid. Verify that the OverwriteOSSObject parameter is correct.'], + ['code' => 'InvalidOverwriteOssObjectOrSequenceOssObject.Malformed', 'message' => 'Specified paramters OverwriteOssObject or SequenceOssObject should have one.', 'http_code' => 400, 'description' => 'You can specify only one of the OverwriteOssObject and SequenceOssObject parameters.'], + ['code' => 'InvalidPageNumber.ValueNotSupported', 'message' => 'The specified value of parameter PageNumber is not supported.', 'http_code' => 400, 'description' => 'The value of the specified PageNumber parameter is not supported.'], + ['code' => 'InvalidPageToken', 'message' => 'The token of page is invalid.', 'http_code' => 400, 'description' => 'The specified paging token is incorrect. Specify the correct token returned by the last query and confirm that your request parameters are not modified.'], + ['code' => 'InvalidParam', 'message' => 'The parameter is invalid.', 'http_code' => 400, 'description' => 'Invalid parameter.'], + ['code' => 'InvalidParam', 'message' => 'Parameter invalid.', 'http_code' => 400, 'description' => 'Illegal input parameters'], + ['code' => 'InvalidParam.CodeIllegalDuration', 'message' => '%s.', 'http_code' => 400, 'description' => 'The value of start time should be less than the value of end time .'], + ['code' => 'InvalidParameter', 'message' => 'The parameter you provided is invalid,Please check whether the input parameters are complete and correct.', 'http_code' => 400, 'description' => 'The parameter that you specify is invalid. Check whether the parameter is complete and correct.'], + ['code' => 'InvalidParameter', 'message' => 'The specified parameter is invalid.', 'http_code' => 400, 'description' => 'The parameter is invalid.'], + ['code' => 'InvalidParameter', 'message' => '%s.', 'http_code' => 400, 'description' => 'Parameter error'], + ['code' => 'InvalidParameter. MixTranscodeParams', 'message' => '%s, please check the transcodeParams.', 'http_code' => 400, 'description' => 'The parameter MixTranscodeParams has invalid fields, please check.'], + ['code' => 'InvalidParameter.ChargeType', 'message' => 'Specified parameter ChargeType is invalid.', 'http_code' => 400, 'description' => 'The specified ChargeType parameter is invalid.'], + ['code' => 'InvalidParameter.Malformed', 'message' => 'There are invalid parameters: %s.', 'http_code' => 400, 'description' => 'There are invalid parameters: %s.'], + ['code' => 'InvalidParameter.MixLayoutParams.UserPanes', 'message' => '%s, please check the userPanes of mixLayoutParams.', 'http_code' => 400, 'description' => 'The parameter UserPanes has invalid fields, please check.'], + ['code' => 'InvalidParameter.MixTranscodeParams', 'message' => '%s, please check the transcodeParams.', 'http_code' => 400, 'description' => 'The parameter MixTranscodeParams has invalid fields, please check.'], + ['code' => 'InvalidParameter.NotifyUrl', 'message' => '%s, please check the notifyUrl.', 'http_code' => 400, 'description' => 'The parameter NotifyUrl format is invalid, please check.'], + ['code' => 'InvalidParameter.StorageParams.FileInfo', 'message' => '%s, please check the fileInfo of storageParams.', 'http_code' => 400, 'description' => 'The parameter FileInfo has invalid fields, please check.'], + ['code' => 'InvalidParameter.StorageParams.OSSParams', 'message' => '%s, please check the ossParams of storageParams.', 'http_code' => 400, 'description' => 'The parameter OSSParams has invalid fields, please check.'], + ['code' => 'InvalidParameter.SubscribeParams.SubscribeUserIdList', 'message' => '%s, please check the subscribeUserIdList of subscribeParams.', 'http_code' => 400, 'description' => 'The parameter SubscribeUserIdList is invalid, please check.'], + ['code' => 'InvalidParameter.SubscribeParams.UserInfos', 'message' => '%s, please check the userInfos of subscribeParams.', 'http_code' => 400, 'description' => 'The parameter UserInfos has invalid fields, please check.'], + ['code' => 'InvalidParameter.TaskId', 'message' => '%s, please check the TaskId.', 'http_code' => 400, 'description' => 'The specified task must be in the running or recovering state.'], + ['code' => 'InvalidParameter.UserId', 'message' => '%s, please check the UserId.', 'http_code' => 403, 'description' => 'UserId is invalid, please check.'], + ['code' => 'InvalidParameterField', 'message' => 'The specified Field is invalid.', 'http_code' => 400, 'description' => 'The Field parameter is set to an invalid value.'], + ['code' => 'InvalidParameters', 'message' => 'There are invalid parameters: %s.', 'http_code' => 400, 'description' => 'Invalid parameter:%s.'], + ['code' => 'InvalidParameterType', 'message' => 'The specified Type is invalid.', 'http_code' => 400, 'description' => 'The Type parameter is set to an invalid value.'], + ['code' => 'InvalidParamPrecision', 'message' => 'The parameter Precision is invalid, please check StartTime and EndTime or Precision.', 'http_code' => 400, 'description' => 'The Precision parameter is invalid. Check the value of the StartTime, EndTime, or Precision parameter.'], + ['code' => 'InvalidQueryTime.Exceed', 'message' => 'QueryTime exceed three month.', 'http_code' => 400, 'description' => 'The query time is more than three months from the current time.'], + ['code' => 'InvalidQueryTime.Malformed', 'message' => 'Specified QueryTime is malformed.', 'http_code' => 400, 'description' => 'The specified query time is invalid.'], + ['code' => 'InvalidRecordFmt.NotSupported', 'message' => 'The RecordFmt parameter is not supported.', 'http_code' => 400, 'description' => 'The RecordFmt parameter does not support the specified type. Enter a format specified in the documentation.'], + ['code' => 'InvalidRegion', 'message' => 'The current region does not support this operation.', 'http_code' => 400, 'description' => 'The current region does not support this operation.'], + ['code' => 'InvalidRegion.Conflict', 'message' => 'The specified "StorageLocation" does not match the region where the streaming domain is located.', 'http_code' => 403, 'description' => 'The specified "StorageLocation" does not match the region where the streaming domain is located.'], + ['code' => 'InvalidRegion.Malformed', 'message' => 'Specified Region is malformed.', 'http_code' => 400, 'description' => 'The specified area is invalid.'], + ['code' => 'InvalidRegionId', 'message' => 'Specified parameter RegionId is not valid.', 'http_code' => null, 'description' => 'The RegionId parameter is invalid. Verify that the RegionId parameter is correct.'], + ['code' => 'InvalidResumeTime.Malformed', 'message' => 'Specified parameter ResumeTime is not valid.', 'http_code' => null, 'description' => 'The ResumeTime parameter is invalid. Verify that the ResumeTime parameter is correct.'], + ['code' => 'InvalidScene.Malformed', 'message' => 'The specified parameter Scene is not valid.', 'http_code' => 400, 'description' => 'Invalid value of Scene. Check whether the Scene parameter that you specified is correct.'], + ['code' => 'InvalidScene.NotFound', 'message' => 'The queried Scene does not exist.', 'http_code' => 404, 'description' => 'The queried Scene does not exist.'], + ['code' => 'InvalidSceneList.Malformed', 'message' => 'The specified parameter SceneList is not valid.', 'http_code' => 400, 'description' => 'Invalid value of SceneList. Check whether the SceneList parameter that you specified is correct.'], + ['code' => 'InvalidSequenceOssObject.Malformed', 'message' => 'Specified parameter SequenceOssObject is not valid.', 'http_code' => 400, 'description' => 'Invalid value of SequenceOssObject. Check whether the SequenceOssObject parameter that you specified is correct.'], + ['code' => 'InvalidSizeRatio', 'message' => 'Specified parameter SizeRatio is not valid.', 'http_code' => 400, 'description' => 'Invalid value of SizeRatio. Check whether the SizeRatio parameter that you specified is correct.'], + ['code' => 'InvalidSizeRatioMode', 'message' => 'Specified parameter SizeRatioMode is not valid.', 'http_code' => 400, 'description' => 'The SizeRatioMode parameter is invalid. Verify that the SizeRatioMode parameter is correct.'], + ['code' => 'InvalidSliceOssObjectPrefix.Malformed', 'message' => 'Specified parameter SliceOssObjectPrefix is not valid.', 'http_code' => 400, 'description' => 'The SliceOssObjectPrefix parameter is invalid. Verify that the SliceOssObjectPrefix parameter is correct.'], + ['code' => 'InvalidSourceUrl', 'message' => 'Specified parameter SourceUrl is not valid.', 'http_code' => 400, 'description' => 'Invalid source URL. Check whether the SourceUrl parameter that you specified is correct.'], + ['code' => 'InvalidSourceUrl.Unsafe', 'message' => 'Specified SourceUrl is not safe.', 'http_code' => 400, 'description' => 'The specified SourceUrl is not secure. Verify that the SourceUrl is safe.'], + ['code' => 'InvalidSSLPri', 'message' => 'The SSLPri you provided is malformed.', 'http_code' => 400, 'description' => 'The supplied SSL private key parameter is invalid.'], + ['code' => 'InvalidStartTime.Malformed', 'message' => 'Specified StartTime is malformed.', 'http_code' => null, 'description' => 'The StartTime parameter is invalid. Check the request and try again.'], + ['code' => 'InvalidStartTime.Malformed', 'message' => 'Specified parameter StartTime is not valid.', 'http_code' => null, 'description' => 'The StartTime parameter is invalid. Check the request and try again.'], + ['code' => 'InvalidStartTime.Mismatch', 'message' => 'Specified "StartTime" does not match the current time.', 'http_code' => 400, 'description' => 'The specified recording start time parameter "StartTime" does not match the current time.'], + ['code' => 'InvalidStartTime.ValueNotSupported', 'message' => 'Specified end time does not math the specified start time,And the time range does not exceed 90 days.', 'http_code' => 400, 'description' => 'The start time and the end time do not match. The start time cannot be later than the end time, and the interval between the start time and the end time cannot exceed 90 days.'], + ['code' => 'InvalidStartTime.ValueNotSupported', 'message' => 'The specified value of parameter StartTime is not supported.', 'http_code' => 400, 'description' => 'The value specified for the StartTime parameter is invalid.'], + ['code' => 'InvalidStorage.NotFound', 'message' => 'Specified parameter StorageLocation does not exist.', 'http_code' => 404, 'description' => 'The specified parameter StorageLocation does not exist.'], + ['code' => 'InvalidStream.NotConfig', 'message' => 'Specified stream does not config.', 'http_code' => 400, 'description' => 'Mixed stream configuration does not exist. Check whether mixed stream settings are configured for this stream.'], + ['code' => 'InvalidStream.NotFound', 'message' => 'Speicified stream does not exist.', 'http_code' => null, 'description' => 'The live stream does not exist. Verify that the live stream is correct.'], + ['code' => 'InvalidStream.NotPublish', 'message' => 'Specified stream is not publishing.', 'http_code' => 400, 'description' => 'No stream is ingested. Check whether the stream you want to ingest is valid.'], + ['code' => 'InvalidStream.NotStart', 'message' => 'Specified stream has not started.', 'http_code' => 400, 'description' => 'Multi-channel mixed streams are not supported for this stream. Check whether the service of multi-channel mixed streams is enabled.'], + ['code' => 'InvalidStreamName.LengthTooLong', 'message' => 'The specified stream name is too long.', 'http_code' => 400, 'description' => 'The length of StreamName exceeds the limit. Specify a valid StreamName.'], + ['code' => 'InvalidStreamNumber.Malformed', 'message' => 'Specified StreamNumber is malformed.', 'http_code' => 400, 'description' => 'The number of streams exceeds the limit. Check whether the limit is exceeded.'], + ['code' => 'InvalidStreamProtocol.NotSupport', 'message' => 'The specified stream protocol is not support.', 'http_code' => 400, 'description' => 'The specified stream protocol is not supported. Refer to the documentation for supported stream protocols.'], + ['code' => 'InvalidTemplate', 'message' => 'The template provided does not exist in our records or it is not a mix-transcode template.', 'http_code' => 400, 'description' => 'The specified co-stream transcoding template is not found.'], + ['code' => 'InvalidText', 'message' => 'Specified parameter Text is not valid.', 'http_code' => 400, 'description' => 'Invalid text. Check whether the text parameter that you specified is correct.'], + ['code' => 'InvalidTime.Malformed', 'message' => 'Specified Time is malformed.', 'http_code' => 400, 'description' => 'Invalid time. Check whether the time that you specified is correct.'], + ['code' => 'InvalidTime.ValueNotSupported', 'message' => 'Specified Time is malformed.', 'http_code' => 400, 'description' => 'The specified time is invalid.'], + ['code' => 'InvalidTimeSpan', 'message' => 'The time span exceeds the limit.', 'http_code' => 400, 'description' => 'The time span exceeds the limit. Please refer to the API documentation to specify a reasonable time span.'], + ['code' => 'InvalidTranscode.NotFound', 'message' => 'Transcode is not configured.', 'http_code' => 404, 'description' => 'The transcoding template is not configured.'], + ['code' => 'InvalidTransparency', 'message' => 'Specified parameter Transparency is not valid.', 'http_code' => 400, 'description' => 'The specified transparency parameter is invalid. Verify that the specified transparency parameter is correct.'], + ['code' => 'InvalidUrl', 'message' => 'Specified parameter Url is not valid.', 'http_code' => null, 'description' => 'The URL parameter is invalid. Verify that the URL parameter is correct.'], + ['code' => 'InvalidUrl.Unsafe', 'message' => 'Specified Url is not safe.', 'http_code' => null, 'description' => 'The specified URL is not secure. Verify that the URL is secure.'], + ['code' => 'InvalidUserId.Malformed', 'message' => 'Invalid UserId.', 'http_code' => 400, 'description' => 'Invalid User Id.'], + ['code' => 'InvalidUserParameter', 'message' => 'The specified user parameter is invalid.', 'http_code' => 400, 'description' => 'The specified user is invalid.'], + ['code' => 'InvalidVodUrl.Malformed', 'message' => 'VodUrl is invalid.', 'http_code' => 400, 'description' => 'The entered VodUrl is invalid.'], + ['code' => 'LicenseTrialOnceOnly', 'message' => 'Only one trial license can be applied for one package name of each functional module.', 'http_code' => 400, 'description' => 'Each feature module allows only one trial license per package name.'], + ['code' => 'Live2Vod.ConfigAlreadyExists', 'message' => 'Had live2vod record config already', 'http_code' => 400, 'description' => 'The live-to-VOD configuration already exists.'], + ['code' => 'LiveServiceNotFound', 'message' => 'Your account does not open Live service yet', 'http_code' => 400, 'description' => 'Your account has not yet activated ApsaraVideo Live.'], + ['code' => 'LiveServiceSuspended', 'message' => 'live service is suspended', 'http_code' => 400, 'description' => 'The live streaming service has been suspended. Check whether your account has an overdue payment.'], + ['code' => 'LiveServiceSuspended', 'message' => 'Your LIVE service is suspended, Please check whether the account is in arrears.', 'http_code' => 403, 'description' => 'ApsaraVideo Live is suspended. Check whether the account has overdue payments.'], + ['code' => 'LockFail', 'message' => 'The domain name is being used by another operation, please try again later.', 'http_code' => 400, 'description' => 'The domain name is being used by another operation, please try again later'], + ['code' => 'Meter.AuthError', 'message' => 'Authentication Failed,Please Try Again.', 'http_code' => 403, 'description' => 'Authentication failed.'], + ['code' => 'Meter.DataSourceError', 'message' => 'Data Source Error:%s,Please Try Again.', 'http_code' => 500, 'description' => 'Data query failed, possibly due to incorrect input parameters'], + ['code' => 'Meter.DataSourceQueryError', 'message' => 'Data Source Error:%s,Please Try Again.', 'http_code' => 500, 'description' => 'A data query error occurred.'], + ['code' => 'Meter.ParamError', 'message' => 'Param Error:%s,Please Check Again.', 'http_code' => 400, 'description' => 'An error message was returned.'], + ['code' => 'Meter.ReadyTsError', 'message' => 'Get ReadyTs Failed,Please Try Again.', 'http_code' => 502, 'description' => 'The queried data is not ready yet.'], + ['code' => 'Meter.ServerInternalError', 'message' => 'The Request Processing Has Failed Due To Some Unknown Error.', 'http_code' => 500, 'description' => 'An internal service error occurred.'], + ['code' => 'MissingDomainName', 'message' => 'DomainName is mandatory for this action.', 'http_code' => 400, 'description' => 'The DomainName parameter is required. Provide the domain name that you want to query.'], + ['code' => 'MissingOssObjectPrefix', 'message' => 'OssObjectPrefix is mandatory for this action.', 'http_code' => null, 'description' => 'The OssObjectPrefix value is missing. Verify that the OssObjectPrefix value is correct.'], + ['code' => 'MissingParam', 'message' => 'Parameter invalid.', 'http_code' => 400, 'description' => 'Illegal input parameters'], + ['code' => 'MissingParameter', 'message' => 'Invalid.MissingParameter.', 'http_code' => 400, 'description' => 'Missing parameter'], + ['code' => 'MissingParameter', 'message' => '%s.', 'http_code' => 400, 'description' => 'Missing parameter'], + ['code' => 'MissingParameter.AppId', 'message' => '%s, please check the input parameters.', 'http_code' => 400, 'description' => 'The parameter AppId is missing, please check the input parameters.'], + ['code' => 'MissingSliceOssObjectPrefix', 'message' => 'The parameter "SliceOssObjectPrefix" is missing, please fill in and try again.', 'http_code' => 400, 'description' => 'The parameter SliceOssObjectPrefix is missing. Please fill it in and try again.'], + ['code' => 'MixStreamAlreadyExist', 'message' => 'Mix Stream Task Already Existed', 'http_code' => 400, 'description' => 'The merge task already exists.'], + ['code' => 'MixStreamNotExist', 'message' => 'Mix Stream does not exist', 'http_code' => 400, 'description' => 'The merge task does not exist.'], + ['code' => 'NoAuth', 'message' => '%s.', 'http_code' => 403, 'description' => 'No permission'], + ['code' => 'NoRecordContent', 'message' => 'The record content between StartTime and EndTime is empty.', 'http_code' => 400, 'description' => 'No records were found between StartTime and EndTime.'], + ['code' => 'NoSpecialConfiguration', 'message' => 'No special configuration for domain name.', 'http_code' => 400, 'description' => 'The domain name does not open the preheating switch.'], + ['code' => 'NotFound', 'message' => 'Not Found: %s.', 'http_code' => 404, 'description' => 'Not found: %s.'], + ['code' => 'NotFound.OSSBucket', 'message' => '%s, please check the ossBucket of storageParams.', 'http_code' => 400, 'description' => 'The parameter OSSBucket does not exist.'], + ['code' => 'NotFound.Task', 'message' => '%s, please check the TaskId.', 'http_code' => 400, 'description' => 'The parameter TaskId does not exist.'], + ['code' => 'NotInternationRealIdentity', 'message' => 'You need to do real name authentication when you use Chinese mainland resources.', 'http_code' => 400, 'description' => 'You must use a valid authorized identity to access resources in the Chinese mainland.'], + ['code' => 'PullDomainIsUsed', 'message' => 'The pull domain has been associated with another app ID.', 'http_code' => 400, 'description' => 'The streaming domain has already been bindded to another application ID.'], + ['code' => 'PullStreamOverLimit', 'message' => 'Pull stream is over limit for this domainName', 'http_code' => 400, 'description' => 'The number of pulled streams exceeds the upper limit for the domain name.'], + ['code' => 'PushDomainIsUsed', 'message' => 'The push domain has been associated with another app ID.', 'http_code' => 400, 'description' => 'The ingest domain has already been bound to another application ID.'], + ['code' => 'QuotaExceeded.Blacklist', 'message' => 'Exceed max blacklist count limit', 'http_code' => 400, 'description' => 'The maximum number of blacklist entries has been exceeded.'], + ['code' => 'QuotaLimitError', 'message' => '%s.', 'http_code' => 400, 'description' => 'For each AppId, a maximum of 20 subscriptions are allowed at the same time, and only one full channel subscription is allowed.'], + ['code' => 'RecordContentExceed', 'message' => 'The record content between StartTime and EndTime is exceeded', 'http_code' => 400, 'description' => 'The time range exceeds the limit. Please narrow down the range.'], + ['code' => 'ResourceNotExist', 'message' => '%s.', 'http_code' => 404, 'description' => 'The requested resource does not exist, please check and try again'], + ['code' => 'ServerError', 'message' => '%s.', 'http_code' => 500, 'description' => 'Unknown error, please try again later or submit a ticket for consultation.'], + ['code' => 'ServiceSuspended', 'message' => 'Your LIVE service is suspended,Please check whether the account is in arrears.', 'http_code' => 403, 'description' => 'ApsaraVideo Live is suspended. Check whether the account has overdue payments.'], + ['code' => 'StreamNotFound', 'message' => 'Stream is not found', 'http_code' => 409, 'description' => 'The stream does not exist. Check the request and try again.'], + ['code' => 'SuperLargeGroup', 'message' => '%s.', 'http_code' => 420, 'description' => 'When the group has more than 2000 members, the group is upgraded to a super large group and no longer supports querying the user list.'], + ['code' => 'TaskAlreadyStarted', 'message' => 'The task has already started', 'http_code' => 400, 'description' => 'The task has started.'], + ['code' => 'TaskIdAlreadyStarted', 'message' => 'The update program failed to pull the push task. The task has already started and cannot be updated.', 'http_code' => 400, 'description' => 'The updater failed to pull the push task. The task has been started and cannot be updated.'], + ['code' => 'TaskIdNotExist', 'message' => 'The request taskId does not exist. Please check and try again.', 'http_code' => 400, 'description' => 'The request task ID does not exist. Check and try again.'], + ['code' => 'Throttling', 'message' => 'Request was denied due to request throttling.', 'http_code' => null, 'description' => 'You have exceeded the maximum traffic. To increase the limit, submit a ticket.'], + ['code' => 'TriggerRecordIsTooFrequently', 'message' => 'Trigger too frequently pre-record is not complete yet please try later.', 'http_code' => 400, 'description' => 'The trigger is too frequent. The pre-recording has not been completed yet. Please try again later.'], + ['code' => 'Unauthorized', 'message' => 'The request is not authorized', 'http_code' => 401, 'description' => 'The request is not authorized.'], + ['code' => 'UnexpectedLocationID', 'message' => 'The locationId is unexpected', 'http_code' => 400, 'description' => 'The LocationId is invalid. Check and try again.'], + ['code' => 'UnsupportedParameter', 'message' => 'The parameters "OwnerId"or "OwnerAccount" is unsupported.', 'http_code' => 400, 'description' => 'The specified OwnerId or OwnerAccount parameter is not supported.'], + ['code' => 'UserNotAck', 'message' => '%s.', 'http_code' => 408, 'description' => 'Send a highly reliable message to the user, but the user does not respond.'], + ['code' => 'UserQuotaExceed', 'message' => 'Quota exceeded: %s.', 'http_code' => 403, 'description' => 'Quota exceeded: %s.'], + ['code' => 'InvalidParameter.AppId', 'message' => '%s, please check the appId.', 'http_code' => 404, 'description' => 'The parameter AppId is invalid. Check it.'], + ['code' => 'CertNameNotFound', 'message' => 'The cert name is not found.', 'http_code' => 404, 'description' => 'The certificate name does not exist.'], + ['code' => 'InvalidUserId.Malformed', 'message' => '%s, please check userId.', 'http_code' => 400, 'description' => 'The userId passed in is invalid, please check.'], + ['code' => 'AppIdNotFound', 'message' => 'The appId doesn\'t exists.', 'http_code' => 404, 'description' => 'The input appId does not exist.'], + ['code' => 'AppIdNotFound', 'message' => 'The appId doesn\'t exist.', 'http_code' => 404, 'description' => 'The input appId does not exist.'], + ['code' => 'Duplicate.TagKey', 'message' => 'The tags should not contain duplicate keys.', 'http_code' => 403, 'description' => 'The tag should not contain duplicate keys.'], + ['code' => 'InvalidResourcesCount', 'message' => 'The count of resources is invalid, %s.', 'http_code' => 403, 'description' => 'The input resource array. The total number of resources cannot exceed the maximum value and must be greater than 0.'], + ['code' => 'InvalidResourceType', 'message' => 'The resourceType is invalid.', 'http_code' => 401, 'description' => 'The specified resourceType parameter is invalid.'], + ['code' => 'QuotaExceed.TagsPerResource', 'message' => 'The maximum number of tags for each resource is exceeded.', 'http_code' => 401, 'description' => 'The number of tags for the resource exceeds the upper limit.'], + ['code' => 'StreamNotExists.Blacklist', 'message' => 'stream not exists.', 'http_code' => 400, 'description' => 'Stream not exist'], + ['code' => 'InvalidTagKey', 'message' => 'The tag key is invalid, %s.', 'http_code' => 401, 'description' => 'Invalid tag key.'], + ['code' => 'LockFail', 'message' => 'Domain has been occupied.', 'http_code' => 400, 'description' => 'The domain name is currently in use. Please try again later.'], + ['code' => 'InvalidParameter.StorageParams.StorageType', 'message' => '%s, please check the storageType of storageParams.', 'http_code' => 405, 'description' => 'The parameter StorageType is invalid, please check.'], + ['code' => 'InvalidRecordModeParameter', 'message' => 'RecordMode parameter error.', 'http_code' => 400, 'description' => 'RecordMode parameter error'], + ['code' => 'InvalidAppIdParameter', 'message' => 'AppId parameter error.', 'http_code' => 400, 'description' => 'AppId parameter error'], + ['code' => 'InvalidParameter.NotifyFileUploadedFormat', 'message' => '%s, please check the notifyFileUploadedFormat.', 'http_code' => 405, 'description' => 'The parameter NotifyFileUploadedFormat is invalid, please check.'], + ['code' => 'DomainOffline', 'message' => 'The domain is not online, please check the domain status and try again later.', 'http_code' => 400, 'description' => 'The domain is not online, please check the domain status and try again later.'], + ['code' => 'InvalidParam', 'message' => '%s.', 'http_code' => 400, 'description' => 'Parameter verification failed'], + ['code' => 'InvalidParameters', 'message' => '%s Please check and try again later.', 'http_code' => 400, 'description' => 'Exception parameter exists, please check and try again.'], + ['code' => 'ConfigAlreadyExists', 'message' => '%s Please check and try again later.', 'http_code' => 400, 'description' => 'Configuration already exists, please check and try again.'], + ['code' => 'TemplateLimit', 'message' => '%s Please check and try again later.', 'http_code' => 400, 'description' => 'The number of templates reached the upper limit.'], + ['code' => 'MissingParam', 'message' => '%s. Please check and try again later.', 'http_code' => 400, 'description' => 'There are parameters missing, please check and try again.'], + ['code' => 'InvalidAppId', 'message' => '%s Please check and try again later.', 'http_code' => 400, 'description' => 'The appId parameter is invalid, please check and try again.'], + ['code' => 'InvalidOssEndpoint.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Invalid OssEndpoint, please check and try again.'], + ['code' => 'CodeMissingParam', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Missing parameter, please check and try again.'], + ['code' => 'CodeAppNameIsIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter AppName is invalid, please check and try again.'], + ['code' => 'CodeStreamNameIsIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The StreamName is invalid, please check and try again.'], + ['code' => 'CodeIsLazyIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Invalid IsLazy parameter, please check and try again.'], + ['code' => 'CodeIsTimeAlignIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'IsTimeAlign parameter is invalid, please check and try again.'], + ['code' => 'CodeAddToRdsFailed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Failed to add to database, please try again later.'], + ['code' => 'CodeQueryHlsMultirateFailed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Failed to query Hls multi rate, please try again later.'], + ['code' => 'CodeMultiRateGroupIdLengthIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Invalid GroupId length, please check and try again.'], + ['code' => 'CodeMultiRateBandWidthIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'BandWidth parameter is invalid, please check and try again.'], + ['code' => 'CodeMultiRateConfigIsEmpty', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Configuration does not exist, please check and try again.'], + ['code' => 'CodeMultiRateUpdateParamError', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Templates parameter error, please check and try again.'], + ['code' => 'CodeUpdateToBizTranscodeAllFailed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Update failed, please try again later.'], + ['code' => 'CodeGroupIdIsIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The GroupId is invalid, please check and try again.'], + ['code' => 'CodeMultiRateTemplatesIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Templates parameter is invalid, please check and try again.'], + ['code' => 'CodeMultiRateBandWidthSyntaxIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter BandWidth is invalid, please check and try again.'], + ['code' => 'CodeIsAvFormatIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter avformat is invalid, please check and try again.'], + ['code' => 'CodeTemplateTypeIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The TemplateType is invalid, please check and try again.'], + ['code' => 'CodeTemplateNameIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The TemplateName is invalid, please check and try again.'], + ['code' => 'CodeTemplateHeightIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The TemplateHeight is invalid, please check and try again.'], + ['code' => 'CodeTemplateWidthIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The TemplateWidth is invalid, please check and try again.'], + ['code' => 'CodeTemplateFpsIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter Fps is invalid, please check and try again.'], + ['code' => 'CodeTemplateGopIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter Gop is invalid, please check and try again.'], + ['code' => 'CodeTemplateVideoBitrateIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter VideoBitrate is invalid, please check and try again.'], + ['code' => 'CodeTemplateProfileIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter Profile is invalid, please check and try again.'], + ['code' => 'CodeTemplateAudioProfileIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter AudioProfile is invalid, please check and try again.'], + ['code' => 'CodeTemplateAudioCodecIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter AudioCodec is invalid, please check and try again.'], + ['code' => 'CodeTemplateAudioBitrateIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter AudioBitrate is invalid, please check and try again.'], + ['code' => 'CodeTemplateAudioRateIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter AudioRate is invalid, please check and try again.'], + ['code' => 'CodeTemplateAudioChannelNumIllegal', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter AudioChannelNum is invalid, please check and try again.'], + ['code' => 'CodeGroupCountIsOutOfRange', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The number of template groups exceeds the limit. Please check and try again.'], + ['code' => 'CodeInternalErr', 'message' => '%s, please try again later.', 'http_code' => 500, 'description' => 'Internal error, please try again later.'], + ['code' => 'CodeTemplateCountOutOfRange', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The number of templates exceeds the limit. Please check and try again.'], + ['code' => 'CodeConfigAlreadyExists', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Configuration already exists, please check and try again.'], + ['code' => 'CodeAddToBizTranscodePartFailed', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Failed to add configuration, please try again later.'], + ['code' => 'CodeAddToBizTranscodeAllFailed', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Failed to add configuration, please try again later.'], + ['code' => 'CodeUpdateToBizTranscodePartFailed', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Update failed, please try again later.'], + ['code' => 'CodeMultiRateDeleteAllIllegal', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Failed to delete configuration, please try again later.'], + ['code' => 'CodeDeleteAllIllegal', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Failed to delete configuration, please try again later.'], + ['code' => 'InvalidCasterId.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter CasterId is invalid, please check and try again.'], + ['code' => 'InvalidPositionNormalized.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter PositionNormalized is invalid, please check and try again.'], + ['code' => 'DuplicateLocationID', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter LocationID duplicate. Check and try again.'], + ['code' => 'IllegalOperation', 'message' => '%s, please check and try again later.', 'http_code' => 401, 'description' => 'Operation not allowed, please check and try again.'], + ['code' => 'InvalidCaster.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The guide station does not exist, please check and try again.'], + ['code' => 'CanvasNotExist', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Canvas does not exist, please check and try again.'], + ['code' => 'InternalError', 'message' => '%s, please try again later.', 'http_code' => 500, 'description' => 'Internal error, please try again later.'], + ['code' => 'InvalidComponent.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The component to be operated does not exist. Please check and try again.'], + ['code' => 'SwitchTypeInvalid.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter SwitchType is invalid, please check and try again.'], + ['code' => 'IncorrectStartTime', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['code' => 'IncorrectEndTime', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ['code' => 'EpisodeConflict.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'There is a conflict with the program time, please check and try again.'], + ['code' => 'InvalidResource.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The resource does not exist. Please check and try again.'], + ['code' => 'IncorrectEpisodeStatus', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The current status of the program is not operational, please check and try again.'], + ['code' => 'InvalidEpisode.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Episode does not exist, please check and try again.'], + ['code' => 'InvalidClientToken.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter ClientToken is invalid, please check and try again.'], + ['code' => 'InvalidVideoLayersAndBlendListSize.Mismatch', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The size of the VideoLayers does not match the size of the BlendList, please check and try again.'], + ['code' => 'InvalidAudioLayersAndMixListSize.Mismatch', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The size of the AudioLayers does not match the size of the MixList, please check and try again.'], + ['code' => 'InvalidBlendList.ExceedNorm', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'BlendList size exceeds specification, please check and try again.'], + ['code' => 'InvalidHeightOrWidthNormalized', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'HeightNormalized or WidthNormalized parameters are invalid, please check and try again.'], + ['code' => 'InvalidLayoutId.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The LayoutId is invalid, please check and try again.'], + ['code' => 'InvalidLayout.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'LayoutId does not exist, please check and try again.'], + ['code' => 'InvalidPageSize.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter PageSize is invalid, please check and try again.'], + ['code' => 'InvalidPageNum.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter PageNum is invalid, please check and try again.'], + ['code' => 'InvalidLiveStreamUrl.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter LiveStreamUrl is invalid, please check and try again.'], + ['code' => 'InvalidMaterialId.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter MaterialId is invalid, please check and try again.'], + ['code' => 'InvalidVodUrl.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter VodUrl is invalid, please check and try again.'], + ['code' => 'ResourceNumberExceed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The number of resources exceeds the limit. Please check and try again.'], + ['code' => 'UnexpectedLocationID', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The LocationId is invalid, please check and try again.'], + ['code' => 'InvalidResourceId.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter ResourceId is invalid, please check and try again.'], + ['code' => 'MalformedParam', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Invalid parameter, please check and try again.'], + ['code' => 'MissingParam', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter is missing, please check and try again.'], + ['code' => 'InternalErr', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Internal error, please try again later.'], + ['code' => 'ConfigExisted', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Configuration already exists, please check and try again.'], + ['code' => 'ConfigNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Configuration does not exist, please check and try again.'], + ['code' => 'UnsafeCallback', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The callback address is not safe. Please check and try again.'], + ['code' => 'ConfigAlreadyExists', 'message' => '%s, please check and try again later.', 'http_code' => 409, 'description' => 'Configuration already exists, please check and try again.'], + ['code' => 'InvalidShowList.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'ShowList does not exist, please check and try again.'], + ['code' => 'InvalidShow.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Show does not exist, please check and try again.'], + ['code' => 'IncorrectCasterStatus', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Guide station status error, please check and try again.'], + ['code' => 'InvalidHtmlResource.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'HtmlResource does not exist, please check and try again.'], + ['code' => 'DuplicateHtmlResource', 'message' => '%s, please check and try again later.', 'http_code' => 409, 'description' => 'HtmlResource already exists, please check and try again.'], + ['code' => 'HtmlResourceAlreadyAlive', 'message' => '%s, please check and try again later.', 'http_code' => 409, 'description' => 'HtmlResource already exists or is started, please check and try again.'], + ['code' => 'InvalidMixList.ExceedNorm', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'MixList size exceeds specification, please check and try again.'], + ['code' => 'InvalidVideoLayersConfig', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The size of the VideoLayers does not match the size of the BlendList, please check and try again.'], + ['code' => 'InvalidAudioLayersConfig', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The size of the AudioLayers does not match the size of the MixList, please check and try again.'], + ['code' => 'InvalidParameter.Status', 'message' => '%s, please check and try again later.', 'http_code' => 500, 'description' => 'Parameter Status is invalid, please check and try again.'], + ['code' => 'NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The access object does not exist. Please check and try again.'], + ['code' => 'InvalidHtmlResource.NotBelongToYou', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'No permission to operate HtmlResource, please check and try again.'], + ['code' => 'InvalidParameter.EndTime', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter EndTime is invalid, please check and try again.'], + ['code' => 'PlayListIsEmpty', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Playlist is empty, please check and try again.'], + ['code' => 'MissInputParams', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter is missing, please check and try again.'], + ['code' => 'InvalidProgramId.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter ProgramId is invalid, please check and try again.'], + ['code' => 'InvalidDomainName.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Domain name does not exist, please check and try again.'], + ['code' => 'CasterNumberExceed', 'message' => '%s, please check and try again later.', 'http_code' => 401, 'description' => 'The number of casters exceeds the limit. Please check and try again.'], + ['code' => 'IncorrectPlaylistStatus.Inuse', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The Playlist is in use, please check and try again.'], + ['code' => 'PlayListNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'PlayList does not exist, please check and try again.'], + ['code' => 'InvalidSceneId.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter SceneId is invalid, please check and try again.'], + ['code' => 'IncorrectSceneStatus', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Scene status is not supported, please check and try again.'], + ['code' => 'IncorrectSceneStatus.Idle', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Scene status is idle, please check and try again.'], + ['code' => 'IncorrectSceneStatus.ConfigError', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Scene configuration error, please check and try again.'], + ['code' => 'InvalidScene.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Scene does not exist, please check and try again.'], + ['code' => 'ResourceInChannel.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The resource does not exist. Please check and try again.'], + ['code' => 'ResourceInChannel.PreConditionFailed', 'message' => '%s, please try again later.', 'http_code' => 412, 'description' => 'Resource pre-verification failed, please try again later.'], + ['code' => 'ResourceInChannel.Invalid', 'message' => '%s, please check and try again later.', 'http_code' => 412, 'description' => 'Resource and channel material address are inconsistent, please check and try again.'], + ['code' => 'InvalidVideo.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The video resource does not exist. Please check and try again.'], + ['code' => 'IncorrectSceneStatus.Inuse', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Scene is on, please check and try again.'], + ['code' => 'InvalidCaptionResource', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The resource referenced by the voice caption component does not exist or is not a live source. Please check and try again.'], + ['code' => 'ComponentNumberExceed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The number of components exceeds the limit. Please check and try again.'], + ['code' => 'SceneNumberExceed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The number of Scenes exceeds the limit. Please check and try again.'], + ['code' => 'IncorrectSceneStatus.Waiting', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Scene is waiting, please try again later.'], + ['code' => 'InvalidUrgentMaterial.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The spare material does not exist. Please check and try again.'], + ['code' => 'ConfigurationNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Configuration does not exist, please check and try again.'], + ['code' => 'TemplateAlreadyExist', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Template already exists, please check and try again.'], + ['code' => 'CustomTemplateInvalid', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The custom template is invalid, please check and try again.'], + ['code' => 'IncorrectCasterStatus.Idle', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The caster is not open, please check and try again.'], + ['code' => 'InvalidParams', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter is invalid, please check and try again.'], + ['code' => 'InvalidProtocol', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter Protocol is invalid, please check and try again.'], + ['code' => 'InvalidSegmentNum', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter SegmentNum is invalid, please check and try again.'], + ['code' => 'InvalidSegmentDuration', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter SegmentDuration is invalid, please check and try again.'], + ['code' => 'InvalidPartDuration', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter PartDuration is invalid, please check and try again.'], + ['code' => 'ConfigConflicts', 'message' => '%s, please check and try again later.', 'http_code' => 409, 'description' => 'Configuration conflict, please check and try again.'], + ['code' => 'InternalErr', 'message' => '%s, please try again.', 'http_code' => 500, 'description' => 'Internal error, please try again later.'], + ['code' => 'ConfigNotFound', 'message' => '%s, please check and try again.', 'http_code' => 404, 'description' => 'Configuration does not exist, please check and try again.'], + ['code' => 'IncorrectCasterStatus.EnableChannel', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Caster status does not support EnableChannel settings, please check and try again.'], + ['code' => 'InvalidCasterTemplate.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The guide template does not exist. Please check and try again.'], + ['code' => 'PlayListItemNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'PlayListItem does not exist, please check and try again.'], + ['code' => 'InvalidNormType.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The norm type is invalid, please check and try again.'], + ['code' => 'InvalidParameter.Offset', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter Offset is invalid. Check and try again.'], + ['code' => 'InvalidParameter.StartItemId', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter StartItemId is invalid, please check and try again.'], + ['code' => 'DuplicateResourceId', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Duplicate ResourceId, please check and try again.'], + ['code' => 'InvalidParamter', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter is invalid, please check and try again.'], + ['code' => 'CodeConfigNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Configuration does not exist, please check and try again.'], + ['code' => 'InvalidStream.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The live stream does not exist. Check whether the live stream is correct.'], + ['code' => 'IncorrectChannel.Disable', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The Channel is in a non-settable state, please check and try again.'], + ['code' => 'InvalidParameter.EventName', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter EventName is invalid, please check and try again.'], + ['code' => 'InvalidConfiguration.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Configuration does not exist, please check and try again.'], + ['code' => 'InvalidAppId', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'AppId is invalid, please check and try again.'], + ['code' => 'LiveServiceNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The live service is not enabled. Please check and try again.'], + ['code' => 'InvalidParameter.StartTime', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter StartTime is invalid, please check and try again.'], + ['code' => 'InvalidParameter.Status', 'message' => '%s, please check and try again.', 'http_code' => 400, 'description' => 'Status is invalid, please check and try again.'], + ['code' => 'DomainConfigFailed', 'message' => '%s, please try again later.', 'http_code' => 500, 'description' => 'Domain name configuration failed, please try again later.'], + ['code' => 'InvalidDataNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Data does not exist, please check and try again.'], + ['code' => 'InvalidStreamNum', 'message' => '%s, please check and try again later.', 'http_code' => 409, 'description' => 'The number of streams is abnormal. Please check and try again.'], + ['code' => 'InvalidParameter.PurchaseTime', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter PurchaseTime is invalid, please check and try again.'], + ['code' => 'InvalidChargeType.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['code' => 'InvalidChargeType.PostSupport', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'ChargeType only supports post-paid, please check and try again.'], + ['code' => 'InvalidCasterTemplate.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter CasterTemplate is invalid, please check and try again.'], + ['code' => 'InvalidParameter.ChargeType', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter ChargeType is invalid, please check and try again.'], + ['code' => 'InvalidPeriod.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Invalid time interval, please check and try again.'], + ['code' => 'PermissionDenied', 'message' => '%s, please check and try again later.', 'http_code' => 403, 'description' => 'Access denied, please check and try again.'], + ['code' => 'InvalidParameter.NormType', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The parameter NormType is invalid, please check and try again.'], + ['code' => 'CreateLiveAIStudio.Timeout', 'message' => '%s, please try again later.', 'http_code' => 408, 'description' => 'Call CreateLiveAIStudio timed out, please try again later.'], + ['code' => 'DeleteLiveAIStudio.Timeout', 'message' => '%s, please try again later.', 'http_code' => 408, 'description' => 'Call DeleteLiveAIStudio timed out, please try again later.'], + ['code' => 'ModifyLiveAIStudio.Timeout', 'message' => '%s, please try again later.', 'http_code' => 408, 'description' => 'Call ModifyLiveAIStudio timed out, please try again later.'], + ['code' => 'DescribeLiveAIStudio.Timeout', 'message' => '%s, please try again later.', 'http_code' => 408, 'description' => 'Call DescribeLiveAIStudio timed out, please try again later.'], + ['code' => 'StreamMonitorExist', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The monitoring room already exists, please check and try again.'], + ['code' => 'InvalidMonitorId.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter MonitorId is invalid, please check and try again.'], + ['code' => 'StreamMonitorNotExist', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The monitoring room does not exist, please check and try again.'], + ['code' => 'StreamMonitorAlreadyStarted', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The monitoring room has been opened, please check and try again.'], + ['code' => 'StreamMonitorAlreadyStop', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The monitoring room has been stopped, please check and try again.'], + ['code' => 'MixStreamAlreadyExist', 'message' => '%s, please check and try again later.', 'http_code' => 403, 'description' => 'The confluence task already exists, please check and try again.'], + ['code' => 'MixStreamNotExist', 'message' => '%s, please check and try again later.', 'http_code' => 403, 'description' => 'The confluous task does not exist. Please check and try again.'], + ['code' => 'Forbidden', 'message' => '%s, please check and try again later.', 'http_code' => 403, 'description' => 'No permission, please check and try again.'], + ['code' => 'TemplateNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'The template does not exist. Please check and try again.'], + ['code' => 'OperationDenied', 'message' => '%s, please check and try again later.', 'http_code' => 403, 'description' => 'Operation rejected, please check and try again.'], + ['code' => 'JobNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Task does not exist, please check and try again.'], + ['code' => 'UserTaskExceed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'User tasks have reached the upper limit, please check and try again.'], + ['code' => 'MissingParams', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter is missing, please check and try again.'], + ['code' => 'Cannot find task', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Task does not exist, please check and try again.'], + ['code' => 'CreateCaster.Timeout', 'message' => '%s, please try again later.', 'http_code' => 408, 'description' => 'Call CreateCaster timed out, please try again later.'], + ['code' => 'InvalidParameter.PlayStatus', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter PlayStatus is invalid, please check and try again.'], + ['code' => 'InvalidChannelId.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter ChannelId is invalid, please check and try again.'], + ['code' => 'InvalidParameter.SeekOffset', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter SeekOffset is invalid, please check and try again.'], + ['code' => 'ResourceOfChannelExist', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Resource already exists in the channel, please check and try again.'], + ['code' => 'InvalidParameter.ExpireTime', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter ExpireTime is invalid, please check and try again.'], + ['code' => 'IncorrectStudioStatus.Inuse', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Studio is in use, please check and try again.'], + ['code' => 'MalformedParams', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Parameter is invalid, please check and try again.'], + ['code' => 'InvalidTaskId', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'TaskId is invalid, please check and try again.'], + ['code' => 'InvalidBlockIngInfo.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The BlockingInfo is invalid, please check and try again.'], + ['code' => 'InvalidEndTime.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'BlockingEndTime parameter is invalid, please check and try again.'], + ['code' => 'IllegalOperation', 'message' => '%s, please check and try again.', 'http_code' => 400, 'description' => 'Error operation, please check and try again.'], + ['code' => 'InvalidStreamNumber.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Invalid number of streams, please check and try again.'], + ['code' => 'InvalidTime.ValueNotSupported', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The StartTime does not match the EndTime, please check and try again.'], + ['code' => 'InvalidTime.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Invalid StartTime and EndTime interval, please check and try again.'], + ['code' => 'InvalidStartTime.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'StartTime parameter is invalid, please check and try again.'], + ['code' => 'InvalidEndTime.Malformed', 'message' => '%s, please check and try again.', 'http_code' => 400, 'description' => 'EndTime parameter is invalid, please check and try again.'], + ['code' => 'Throttling', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Trigger flow control, please try again later.'], + ['code' => 'CdnServiceNotFound', 'message' => '%s, please try again later.', 'http_code' => 400, 'description' => 'Service does not exist, please try again later.'], + ['code' => 'InvalidAppName.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'AppName parameter is invalid, please check and try again.'], + ['code' => 'StreamNotFound', 'message' => '%s, please check and try again later.', 'http_code' => 409, 'description' => 'Stream does not exist, please check and try again.'], + ['code' => 'TaskAlreadyStarted', 'message' => '%s, please do not start again.', 'http_code' => 409, 'description' => 'Task already started, do not start again.'], + ['code' => 'IncorrectCasterStatus.Inuse', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Caster status is inuse, please check and try again later.'], + ['code' => 'InvalidParameter.PageSize', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter PageSize is invalid, please check and try again.'], + ['code' => 'InvalidParameter.PageNum', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The parameter PageNum is invalid, please check and try again.'], + ['code' => 'InvalidCaster.ChannelDisableUnsupported', 'message' => '%s, please check.', 'http_code' => 400, 'description' => 'Disabling an enabled Channel is not supported.'], + ['code' => 'IncorrectCasterStatus.EnableChannel', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'Caster status does not support EnableChannel settings, please check and try again.'], + ['code' => 'IncorrectCasterStatus.Cease', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The caster has stopped service due to arrears, please settle and try again.'], + ['code' => 'IncorrectCasterStatus.Expire', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The prepaid instance of the caster has expired, please renew it and try again.'], + ['code' => 'InvalidTranscode.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Transcoding is not configured, please check and try again.'], + ['code' => 'InvalidDelay.NotFound', 'message' => '%s, please check and try again later.', 'http_code' => 404, 'description' => 'Delayed playback is not configured, please check and try again.'], + ['code' => 'InvalidFunctionName.ValueNotSupported', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The input function name is not supported.'], + ['code' => 'InvalidArgName.ValueNotSupported', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The ArgName passed in is invalid.'], + ['code' => 'InvalidArgValue.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The ArgValue passed in is invalid.'], + ['code' => 'InvalidRule.Malformed', 'message' => '%s, please check and try again later.', 'http_code' => 400, 'description' => 'The Rule passed in is invalid.'], + ['code' => 'MissingTemplate', 'message' => 'Template is mandatory for this action.', 'http_code' => 400, 'description' => 'Missing transcoding template parameter configuration.'], + ['code' => 'QuotaExceed.RunningTask', 'message' => 'The number of active cloud recording tasks has reached the limit.', 'http_code' => 403, 'description' => 'The number of active cloud recording tasks has reached the limit.'], + ], + 'changeSet' => [ + [ + 'apis' => [ + ['description' => 'Error codes changed, Request parameters changed, Response parameters changed', 'api' => 'DescribeLiveStreamTranscodeStreamNum'], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => 'Your account does not open Live service yet', - ], - [ - 'errorCode' => 'CodeInvalidAliUid', - 'errorMessage' => 'This aliuid does not have a live domain name.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], - ], + 'createdAt' => '2025-04-11T03:13:47.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'DescribeLiveStreamsNotifyUrlConfig'], + ['description' => 'Request parameters changed', 'api' => 'SetLiveStreamsNotifyUrlConfig'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"a05e6b15-15af-405b-a4a2-0152245*****\\",\\n \\"Total\\": 3,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TaskList\\": [\\n {\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\",\\n \\"TaskStatus\\": 0,\\n \\"TaskInvalidReason\\": \\"PullStreamFailed\\",\\n \\"TaskExitTime\\": 1726354625,\\n \\"TaskExitReason\\": \\"TriggerByUser\\",\\n \\"CurrentOffset\\": 0,\\n \\"CurrentFileIndex\\": 0,\\n \\"TaskInfo\\": {\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\",\\n \\"TaskName\\": \\"taskname\\",\\n \\"StartTime\\": \\"2024-12-04T09:16:00Z\\",\\n \\"EndTime\\": \\"2024-12-30T14:30:00Z\\",\\n \\"SourceType\\": \\"vod\\",\\n \\"SourceProtocol\\": \\"flv\\",\\n \\"SourceUrls\\": [\\n \\"rtmp://118.178.***.*5:****/wwtestlive1/pulltest.jiugong.aliyunlive.com_livelight2?vhost=pulltest.jiugong.aliyun*******\\"\\n ],\\n \\"DstUrl\\": \\"rtmp://qd.push.lgg.alivecdn.com/testhsc/streamhsc?live_rtmp_*******\\",\\n \\"CallbackURL\\": \\"hahaha.com\\",\\n \\"Offset\\": 0,\\n \\"FileIndex\\": 0,\\n \\"RetryCount\\": 3,\\n \\"RetryInterval\\": 60,\\n \\"RepeatNumber\\": 0\\n }\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'DescribeLivePullToPushList', - 'description' => '* You can call this operation to query pulled-stream relay tasks.'."\n" - .'* You can query tasks by page. Fuzzy search is supported based on task IDs, task names, and destination URLs.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'createdAt' => '2025-04-01T06:33:49.000Z', + 'description' => '', ], - 'StopLivePullToPush' => [ - 'summary' => 'Stops a pulled-stream relay task.', - 'methods' => [ - 'get', + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLivePullToPush'], + ['description' => 'Response parameters changed', 'api' => 'DescribeLivePullToPushList'], ], - 'schemes' => [ - 'https', + 'createdAt' => '2025-04-01T03:47:26.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveMessageApp'], + ['description' => 'Response parameters changed', 'api' => 'ListLiveMessageApps'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2025-03-26T02:53:24.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveMessageGroup'], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '257294', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'createdAt' => '2025-03-26T02:50:54.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'ListLiveMessageGroupUsers'], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Region', - 'in' => 'query', - 'schema' => [ - 'description' => 'The region of the live center. Valid values:'."\n" - ."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'preregion', - 'enum' => [ - 'ap-northeast-1', - 'ap-southeast-1', - 'ap-southeast-5', - 'eu-central-1', - 'me-central-1', - 'cn-beijing', - 'cn-shanghai', - 'cn-shenzhen', - 'cn-qingdao', - 'preregion', - ], - ], - ], - [ - 'name' => 'TaskId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '3bb44350-0c34-49c7-8c5e-cba5e6c0****', - 'enum' => [], - ], - ], + 'createdAt' => '2025-03-26T02:43:54.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'CreateLiveMessageApp'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'a05e6b15-15af-405b-a4a2-0152245d****', - ], - 'TaskId' => [ - 'description' => 'The new task ID.'."\n", - 'type' => 'string', - 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', - ], - ], - ], - ], + 'createdAt' => '2025-02-26T03:18:25.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed, Request parameters changed, Response parameters changed', 'api' => 'DescribeLiveStreamsNotifyUrlConfig'], + ['description' => 'Request parameters changed', 'api' => 'SetLiveStreamsNotifyUrlConfig'], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => 'Your account does not open Live service yet', - ], - [ - 'errorCode' => 'CodeInvalidAliUid', - 'errorMessage' => 'This aliuid does not have a live domain name.', - ], - [ - 'errorCode' => 'InvalidParam.CodeIllegalDuration', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CodeTaskNotExist', - 'errorMessage' => 'Task does not exist.', - ], - [ - 'errorCode' => 'CodeTaskHasStopped', - 'errorMessage' => 'The task has been stopped.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], - ], + 'createdAt' => '2025-02-20T08:26:19.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveMessageApp'], + ['description' => 'Response parameters changed', 'api' => 'ListLiveMessageApps'], + ['description' => 'Response parameters changed', 'api' => 'SendLiveMessageGroup'], + ['description' => 'Error codes changed, Request parameters changed, Response parameters changed', 'api' => 'SendLiveMessageUser'], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'createdAt' => '2025-01-23T12:01:08.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'CreateLiveMessageApp'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"a05e6b15-15af-405b-a4a2-0152245d****\\",\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\"\\n}","type":"json"}]', - 'title' => 'StopLivePullToPush', - 'description' => '* You can call this operation to stop a pulled-stream relay task.'."\n" - .'* You can stop a task that is running (even if the task is in an abnormal retry state). You cannot stop a task that is not running.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'createdAt' => '2025-01-22T10:57:09.000Z', + 'description' => '', ], - 'RestartLivePullToPush' => [ - 'summary' => 'Restarts a pulled-stream relay task.', - 'methods' => [ - 'get', + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'SendLiveMessageGroup'], ], - 'schemes' => [ - 'https', + 'createdAt' => '2025-01-13T05:41:38.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed, Response parameters changed', 'api' => 'DescribeLiveStreamsPublishList'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2024-12-30T02:09:45.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeCasterConfig'], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '257299', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'createdAt' => '2024-12-12T09:11:26.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'AddLiveAISubtitle'], + ['description' => 'Error codes changed', 'api' => 'DeleteLiveAISubtitle'], + ['description' => 'Error codes changed', 'api' => 'DescribeLiveAISubtitle'], + ['description' => 'Error codes changed', 'api' => 'UpdateLiveAISubtitle'], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'default' => 'cn-shanghai', - ], - ], - [ - 'name' => 'Region', - 'in' => 'query', - 'schema' => [ - 'description' => 'The region of the live center. Valid values:'."\n" - ."\n" - .'* ap-southeast-1: Singapore'."\n" - .'* ap-southeast-5: Indonesia (Jakarta)'."\n" - .'* cn-beijing: China (Beijing)'."\n" - .'* cn-shanghai: China (Shanghai)'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'preregion', - 'enum' => [ - 'ap-northeast-1', - 'ap-southeast-1', - 'ap-southeast-5', - 'eu-central-1', - 'me-central-1', - 'cn-beijing', - 'cn-shanghai', - 'cn-shenzhen', - 'cn-qingdao', - 'preregion', - ], - ], - ], - [ - 'name' => 'TaskId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The task ID.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '6f869419-0692-4fd5-8cf0-66cab659****', - 'enum' => [], - ], - ], + 'createdAt' => '2024-12-04T05:55:26.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'ListRtcMPUTaskDetail'], + ['description' => 'Request parameters changed', 'api' => 'StartLiveMPUTask'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'a05e6b15-15af-405b-a4a2-01522450****', - ], - 'TaskId' => [ - 'description' => 'The new task ID.'."\n", - 'type' => 'string', - 'example' => 'fb0d4ac7-c7e3-4978-9743-0bf2f6e8****', - ], - ], - ], - ], + 'createdAt' => '2024-11-14T09:21:58.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'ListRtcMPUTaskDetail'], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => 'Your account does not open Live service yet', - ], - [ - 'errorCode' => 'InvalidParam.CodeIllegalDuration', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CodeInvalidAliUid', - 'errorMessage' => 'This aliuid does not have a live domain name.', - ], - [ - 'errorCode' => 'CodeTaskNotExist', - 'errorMessage' => 'Task does not exist.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], - ], + 'createdAt' => '2024-10-30T09:34:14.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'StartLiveMPUTask'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveMPUTask'], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'createdAt' => '2024-10-30T08:35:59.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'AddLiveDomain'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"a05e6b15-15af-405b-a4a2-01522450****\\",\\n \\"TaskId\\": \\"fb0d4ac7-c7e3-4978-9743-0bf2f6e8****\\"\\n}","type":"json"}]', - 'title' => 'RestartLivePullToPush', - 'description' => '* You can call this operation to restart a pulled-stream relay task.'."\n" - .'* You can restart a task that is running (even if the task is in an abnormal retry state) or a task that is stopped. For a task that is running, this operation stops and then restarts it. For a task that is stopped, this operation directly starts it.'."\n" - .'* You cannot restart a task if the start time specified for the task has not been reached.'."\n" - .'* If a task is restarted, the task runs based on the latest configuration of the task. This interrupts stream ingest.'."\n" - .'* If a task for a list of ApsaraVideo VOD resources is restarted, the list plays from the beginning based on the latest configuration. You can call an operation to update the video index and playback progress to achieve successive playback.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'createdAt' => '2024-10-24T06:15:08.000Z', + 'description' => '', ], - 'SetLiveDomainMultiStreamConfig' => [ - 'summary' => 'Configures dual-stream disaster recovery for a streaming domain.', - 'methods' => [ - 'get', + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'RemoveTerminals'], ], - 'schemes' => [ - 'https', + 'createdAt' => '2024-10-18T04:00:06.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'AddLiveAIProduceRules'], + ['description' => 'Request parameters changed', 'api' => 'DeleteLiveAIProduceRules'], + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveAIProduceRules'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveAIProduceRules'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2024-10-14T03:48:07.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'StopLiveDomain'], ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '250492', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'createdAt' => '2024-09-29T06:30:50.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DescribeLiveDomainLog'], + ['description' => 'Error codes changed', 'api' => 'DescribeLiveDomainMapping'], ], - 'parameters' => [ - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'Switch', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable the dual-stream disaster recovery feature. Valid values:'."\n" - ."\n" - .'* **on**: enables the feature.'."\n" - .'* **off**: disables the feature.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'on', - 'enum' => [ - 'on', - 'off', - ], - ], - ], + 'createdAt' => '2024-09-29T03:52:12.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DescribeLiveDomainCertificateInfo'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64-af62-20e91b96****', - ], - ], - ], - ], + 'createdAt' => '2024-09-29T03:21:53.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DescribeDomainWithIntegrity'], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CodeGetPushbackDomainError', - 'errorMessage' => 'Unable to get the push domain name, please check the domain name mapping configuration.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], - ], + 'createdAt' => '2024-09-29T03:09:55.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'CreateCaster'], + ['description' => 'Request parameters changed, Response parameters changed', 'api' => 'DescribeCasters'], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'createdAt' => '2024-09-27T02:17:14.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed, Request parameters changed', 'api' => 'AddLiveDomain'], + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveDomainDetail'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5c6a2a0df228-4a64-af62-20e91b96****\\"\\n}","type":"json"}]', - 'title' => 'SetLiveDomainMultiStreamConfig', - 'description' => 'You can call this operation to configure dual-stream disaster recovery for a streaming domain, which allows you to ingest two streams that have the same name.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", + 'createdAt' => '2024-09-25T07:01:49.000Z', + 'description' => '', ], - 'SetLiveDomainMultiStreamOptimalMode' => [ - 'summary' => 'Configures the auto mode of dual-stream disaster recovery.', - 'methods' => [ - 'get', + [ + 'apis' => [ + ['description' => 'Request parameters changed, Response parameters changed', 'api' => 'DescribeLiveUserDomains'], ], - 'schemes' => [ - 'https', + 'createdAt' => '2024-09-25T02:40:34.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'CreateLiveStreamMonitor'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveStreamMonitor'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2024-09-04T07:13:57.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed, Request parameters changed', 'api' => 'CreateCaster'], + ['description' => 'Error codes changed', 'api' => 'DeleteCaster'], + ['description' => 'Error codes changed, Request parameters changed, Response parameters changed', 'api' => 'DescribeCasters'], + ['description' => 'Error codes changed', 'api' => 'SetCasterConfig'], ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '250499', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'createdAt' => '2024-08-21T03:34:41.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'ListRtcMPUTaskDetail'], + ['description' => 'Request parameters changed', 'api' => 'StartLiveMPUTask'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveMPUTask'], ], - 'parameters' => [ - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The application name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testapp', - 'enum' => [], - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'teststream', - ], - ], - [ - 'name' => 'OptimalMode', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to enable the auto mode of dual-stream disaster recovery. Valid values:'."\n" - ."\n" - .'* **on**: enables the auto mode.'."\n" - .'* **off**: disables the auto mode.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'on', - 'enum' => [ - 'on', - 'off', - ], - ], - ], + 'createdAt' => '2024-08-13T08:24:13.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'CreateRtcAsrTask'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-****-CB92E68F4CD8', - ], - ], - ], - ], + 'createdAt' => '2024-08-12T06:05:19.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'AddCasterVideoResource'], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'CodeTaskNotExist', - 'errorMessage' => 'Task does not exist.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], - ], + 'createdAt' => '2024-08-08T03:25:14.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'ListRtcMPUTaskDetail'], + ['description' => 'Request parameters changed', 'api' => 'StartLiveMPUTask'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveMPUTask'], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'createdAt' => '2024-08-06T08:00:32.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed, Response parameters changed', 'api' => 'DescribeLiveStreamsOnlineList'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-****-CB92E68F4CD8\\"\\n}","type":"json"}]', - 'title' => 'SetLiveDomainMultiStreamOptimalMode', + 'createdAt' => '2024-08-01T06:18:00.000Z', + 'description' => '', ], - 'SetLiveDomainMultiStreamMaster' => [ - 'summary' => 'Manually switches between the active stream and standby stream.', - 'methods' => [ - 'get', + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveMessageApp'], + ['description' => 'Response parameters changed', 'api' => 'ListLiveMessageApps'], ], - 'schemes' => [ - 'https', + 'createdAt' => '2024-08-01T02:19:34.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'RecoverLiveMessageDeletedGroup'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2024-07-19T03:45:27.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeShowList'], ], - 'operationType' => 'write', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '250500', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'createdAt' => '2024-07-15T01:32:07.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeShowList'], ], - 'parameters' => [ - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.aliyundoc.com', - ], - ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testapp', - 'enum' => [], - ], - ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'teststream', - ], - ], - [ - 'name' => 'UpstreamSequence', - 'in' => 'query', - 'schema' => [ - 'description' => 'The unique identifier of the stream ingest.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'teststream_***', - 'enum' => [], - ], - ], + 'createdAt' => '2024-07-11T09:46:43.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed, Response parameters changed', 'api' => 'DescribeLiveStreamsOnlineList'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4E*****43-CB92E68F4CD8', - ], - ], - ], - ], + 'createdAt' => '2024-07-11T03:44:06.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'ListRtcMPUTaskDetail'], + ['description' => 'Error codes changed', 'api' => 'StartLiveMPUTask'], + ['description' => 'Error codes changed', 'api' => 'StopLiveMPUTask'], + ['description' => 'Error codes changed', 'api' => 'UpdateLiveMPUTask'], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'LiveServiceNotFound', - 'errorMessage' => 'Your account does not open Live service yet', - ], - [ - 'errorCode' => 'CodeTaskNotExist', - 'errorMessage' => 'Task does not exist.', - ], - [ - 'errorCode' => 'CodeTaskNotStarted', - 'errorMessage' => 'Task not started, cannot operate.', - ], - ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', - ], - ], + 'createdAt' => '2024-07-04T07:03:49.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'CreateRtcMPUEventSub'], + ['description' => 'Error codes changed', 'api' => 'DeleteRtcMPUEventSub'], + ['description' => 'Error codes changed', 'api' => 'DescribeRtcMPUEventSub'], + ['description' => 'Error codes changed', 'api' => 'ListRtcMPUEventSubRecord'], + ['description' => 'Error codes changed', 'api' => 'SetLiveMpuTaskSei'], + ['description' => 'Error codes changed', 'api' => 'UpdateRtcMPUEventSub'], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + 'createdAt' => '2024-07-04T06:15:53.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'AddLiveAIProduceRules'], + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveAIProduceRules'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveAIProduceRules'], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4E*****43-CB92E68F4CD8\\"\\n}","type":"json"}]', - 'title' => 'SetLiveDomainMultiStreamMaster', + 'createdAt' => '2024-07-04T02:58:31.000Z', + 'description' => '', ], - 'DescribeLiveDomainMultiStreamConfig' => [ - 'summary' => 'Queries the configuration status of dual-stream disaster recovery.', - 'methods' => [ - 'get', + [ + 'apis' => [ + ['description' => 'Response parameters changed, Error codes changed', 'api' => 'DescribeLiveStreamRecordIndexFile'], + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveStreamRecordIndexFiles'], ], - 'schemes' => [ - 'https', + 'createdAt' => '2024-06-25T08:56:07.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'ListEventSub'], ], - 'security' => [ - [ - 'AK' => [], - ], + 'createdAt' => '2024-06-14T07:15:10.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeChannelParticipants'], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '250493', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', - ], + 'createdAt' => '2024-06-13T01:20:56.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'StartLiveMPUTask'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveMPUTask'], ], - 'parameters' => [ - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'pliveplay.gstv.com.cn', - ], - ], + 'createdAt' => '2024-06-12T05:52:37.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'DescribeLiveAISubtitle'], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'F486A44F-6B35-5A96-BF2C-************', - ], - 'Switch' => [ - 'description' => 'Indicates whether the dual-stream disaster recovery feature is enabled. Valid values:'."\n" - ."\n" - .'* **on**: enabled'."\n" - .'* **off**: disabled'."\n", - 'type' => 'string', - 'enumValueTitles' => [ - 'off' => 'off', - 'on' => 'on', - ], - 'example' => 'on', - ], - ], + 'createdAt' => '2024-06-11T03:34:04.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'ListLiveMessageGroups'], + ], + 'createdAt' => '2024-05-23T05:56:48.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'ModifyLiveMessageUserInfo'], + ], + 'createdAt' => '2024-05-10T02:55:32.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeShowList'], + ], + 'createdAt' => '2024-04-11T07:34:41.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DeleteLiveStreamTranscode'], + ], + 'createdAt' => '2024-03-15T07:05:47.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'CreateLiveMessageApp'], + ], + 'createdAt' => '2024-03-13T01:43:13.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'StartLiveMPUTask'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveMPUTask'], + ], + 'createdAt' => '2024-03-06T17:48:16.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'StartLiveMPUTask'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveMPUTask'], + ], + 'createdAt' => '2024-03-01T07:40:57.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveMessageApp'], + ], + 'createdAt' => '2024-02-22T06:02:47.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeMeterLiveRtcDuration'], + ['description' => 'Response parameters changed', 'api' => 'DescribeRTSNativeSDKPlayTime'], + ], + 'createdAt' => '2024-02-20T03:12:58.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'ModifyLiveMessageAppAudit'], + ['description' => 'Error codes changed', 'api' => 'ModifyLiveMessageAppCallback'], + ], + 'createdAt' => '2024-02-02T01:46:43.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed, Response parameters changed', 'api' => 'CreateLiveMessageApp'], + ], + 'createdAt' => '2024-01-31T03:43:15.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'CreateLiveMessageGroup'], + ], + 'createdAt' => '2024-01-31T03:36:40.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DeleteLiveDetectNotifyConfig'], + ['description' => 'Error codes changed', 'api' => 'DeleteLiveDomainPlayMapping'], + ], + 'createdAt' => '2024-01-30T08:57:27.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed, Response parameters changed', 'api' => 'CreateLiveStreamRecordIndexFiles'], + ], + 'createdAt' => '2024-01-30T07:46:18.000Z', + 'description' => '无', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeShowList'], + ], + 'createdAt' => '2024-01-30T03:32:15.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveStreamsOnlineList'], + ], + 'createdAt' => '2024-01-26T05:59:52.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed, Error codes changed', 'api' => 'DescribeLiveLazyPullStreamConfig'], + ], + 'createdAt' => '2024-01-23T08:49:39.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveDomainLimit'], + ], + 'createdAt' => '2024-01-23T07:51:42.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'RealTimeSnapshotCommand'], + ], + 'createdAt' => '2024-01-11T07:55:00.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeLiveMessageApp'], + ['description' => 'Response parameters changed', 'api' => 'ListLiveMessageApps'], + ['description' => 'Request parameters changed', 'api' => 'SendLiveMessageGroup'], + ], + 'createdAt' => '2024-01-09T03:36:21.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'StartLiveMPUTask'], + ['description' => 'Request parameters changed', 'api' => 'UpdateLiveMPUTask'], + ], + 'createdAt' => '2023-12-26T06:02:30.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed, Request parameters changed, Response parameters changed', 'api' => 'DescribeLiveStreamMetricDetailData'], + ], + 'createdAt' => '2023-12-21T06:32:26.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'TagLiveResources'], + ], + 'createdAt' => '2023-12-14T02:41:25.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'SendLiveMessageGroup'], + ], + 'createdAt' => '2023-12-13T07:07:53.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeCasterConfig'], + ['description' => 'Request parameters changed', 'api' => 'SetCasterConfig'], + ], + 'createdAt' => '2023-11-22T01:25:43.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'CreateEventSub'], + ], + 'createdAt' => '2023-11-21T09:22:15.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DescribeLiveDomainLogExTtl'], + ], + 'createdAt' => '2023-11-21T09:18:49.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed, Request parameters changed', 'api' => 'CreateEventSub'], + ['description' => 'Error codes changed, Request parameters changed, Response parameters changed', 'api' => 'DeleteEventSub'], + ], + 'createdAt' => '2023-11-21T05:56:18.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'CreateEventSub'], + ['description' => 'Error codes changed', 'api' => 'DeleteChannel'], + ['description' => 'Error codes changed', 'api' => 'DescribeChannelUsers'], + ['description' => 'Error codes changed', 'api' => 'RemoveTerminals'], + ], + 'createdAt' => '2023-08-31T01:48:52.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed, Response parameters changed', 'api' => 'CreateEventSub'], + ], + 'createdAt' => '2023-08-04T10:36:56.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed, Request parameters changed', 'api' => 'DescribeDomainUsageData'], + ], + 'createdAt' => '2023-07-27T07:29:29.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'AddLiveDomain'], + ], + 'createdAt' => '2023-05-09T08:03:09.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'CancelMuteAllGroupUser'], + ['description' => 'Request parameters changed', 'api' => 'MuteAllGroupUser'], + ], + 'createdAt' => '2023-04-04T06:10:42.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'ModifyCasterVideoResource'], + ], + 'createdAt' => '2023-03-31T11:03:40.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'AddCasterVideoResource'], + ['description' => 'Response parameters changed', 'api' => 'DescribeCasterConfig'], + ['description' => 'Response parameters changed', 'api' => 'DescribeCasterVideoResources'], + ['description' => 'Request parameters changed, Response parameters changed', 'api' => 'ModifyCasterVideoResource'], + ['description' => 'Request parameters changed', 'api' => 'SetCasterConfig'], + ], + 'createdAt' => '2023-03-31T08:27:31.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'SendMessageToGroupUsers'], + ], + 'createdAt' => '2023-03-28T07:17:29.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'UpdateCasterSceneAudio'], + ], + 'createdAt' => '2023-03-24T08:24:58.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'DescribeCasterConfig'], + ], + 'createdAt' => '2023-03-24T08:24:47.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Response parameters changed', 'api' => 'SendMessageToGroup'], + ], + 'createdAt' => '2023-03-24T08:22:46.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'ListMessageGroupUserById'], + ], + 'createdAt' => '2023-03-24T08:22:07.000Z', + 'description' => '', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'AddLiveDomain'], + ], + 'createdAt' => '2022-12-22T09:04:25.000Z', + 'description' => '错误码更新', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'MuteAllGroupUser'], + ], + 'createdAt' => '2022-12-08T09:06:36.000Z', + 'description' => 'API更新。', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'SendMessageToGroupUsers'], + ], + 'createdAt' => '2022-12-05T08:48:35.000Z', + 'description' => 'API配置更新', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed, Response parameters changed', 'api' => 'ListMessageGroup'], + ], + 'createdAt' => '2022-12-05T02:26:37.000Z', + 'description' => 'API更新。', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'SendMessageToGroup'], + ['description' => 'Request parameters changed', 'api' => 'SendMessageToGroupUsers'], + ], + 'createdAt' => '2022-12-04T11:01:18.000Z', + 'description' => '更新API。', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'ListMessage'], + ], + 'createdAt' => '2022-11-24T12:46:01.000Z', + 'description' => '发布接口。', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'ListMessageGroupUser'], + ], + 'createdAt' => '2022-11-24T09:14:29.000Z', + 'description' => '修改限流值。', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'ListMessageGroup'], + ], + 'createdAt' => '2022-10-27T06:55:06.000Z', + 'description' => '新增接口', + ], + [ + 'apis' => [ + ['description' => 'OpenAPI offline', 'api' => 'DescribeRTSNativeSDKPlayFailStatus'], + ], + 'createdAt' => '2022-10-27T02:35:07.000Z', + 'description' => 'rts native 数据质量接口发布', + ], + [ + 'apis' => [ + ['description' => 'OpenAPI offline', 'api' => 'GetMessageUserInfo'], + ], + 'createdAt' => '2022-09-29T08:17:34.000Z', + 'description' => '增加获取用户信息和应用更新', + ], + [ + 'apis' => [ + ['description' => 'OpenAPI offline', 'api' => 'CancelMuteAllGroupUser'], + ['description' => 'Response parameters changed', 'api' => 'GetMessageGroup'], + ['description' => 'Request parameters changed', 'api' => 'JoinMessageGroup'], + ['description' => 'Request parameters changed', 'api' => 'LeaveMessageGroup'], + ], + 'createdAt' => '2022-09-27T09:18:49.000Z', + 'description' => '新增IMV3-禁言点赞功能', + ], + [ + 'apis' => [ + ['description' => 'Request parameters changed', 'api' => 'ListMessage'], + ['description' => 'Request parameters changed', 'api' => 'ListMessage'], + ], + 'createdAt' => '2022-09-13T02:27:54.000Z', + 'description' => '新增查询消息列表的接口。', + ], + [ + 'apis' => [ + ['description' => 'OpenAPI offline', 'api' => 'CloseMessageGroup'], + ['description' => 'OpenAPI offline', 'api' => 'CreateMessageGroup'], + ['description' => 'OpenAPI offline', 'api' => 'DeleteMessageApp'], + ['description' => 'OpenAPI offline', 'api' => 'GetMessageToken'], + ['description' => 'OpenAPI offline', 'api' => 'ListMessageGroup'], + ['description' => 'OpenAPI offline', 'api' => 'ListMessageGroupUser'], + ['description' => 'OpenAPI offline', 'api' => 'SendMessageToGroup'], + ], + 'createdAt' => '2022-09-08T15:23:58.000Z', + 'description' => '增加直播-互动消息能力API集合', + ], + [ + 'apis' => [ + ['description' => 'OpenAPI offline', 'api' => 'DescribeMeterLiveRtcDuration'], + ], + 'createdAt' => '2022-09-01T02:47:32.000Z', + 'description' => '一体化直播连麦接口发布', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DescribeLiveDomainDetail'], + ], + 'createdAt' => '2022-08-31T08:14:35.000Z', + 'description' => 'api治理', + ], + [ + 'apis' => [ + ['description' => 'OpenAPI offline', 'api' => 'CreateLiveTranscodeTemplate'], + ], + 'createdAt' => '2022-08-22T13:21:24.000Z', + 'description' => 'api治理', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DeleteLiveLazyPullStreamInfoConfig'], + ], + 'createdAt' => '2022-08-17T11:23:47.000Z', + 'description' => 'api治理', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'DeleteLiveStreamsNotifyUrlConfig'], + ], + 'createdAt' => '2022-08-17T09:42:51.000Z', + 'description' => 'api治理', + ], + [ + 'apis' => [ + ['description' => 'Error codes changed', 'api' => 'SetLiveLazyPullStreamInfoConfig'], + ], + 'createdAt' => '2022-08-16T09:11:58.000Z', + 'description' => 'api治理', + ], + ], + 'flowControl' => [ + 'flowControlList' => [ + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveRecordNotifyConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EffectCasterUrgent'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveStreamWatermarkRule'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BatchGetOnlineUsers'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainMultiStreamMaster'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteStudioLayout'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveSnapshotNotifyConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLivePullToPushList'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateCasterSceneConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainRecordUsageData'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamTranscodeInfo'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveDelayConfig'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateMessageApp'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CopyCasterSceneConfig'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageAppCallback'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamMerge'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveAudioAuditConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopLiveStreamMonitor'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendMessageToGroupUsers'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveSpecificStagingConfig'], + ['threshold' => '2000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamState'], + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMuteGroupUser'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteEdgeTranscodeJob'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveMessageGroup'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetCasterSceneConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveStreamMonitor'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveCenterTransfer'], + ['threshold' => '1000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamBitRateData'], + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CancelMuteAllGroupUser'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveSnapshotNotifyConfig'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAppRecordConfig'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetShowListBackground'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainRealtimeLogDelivery'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'LeaveMessageGroup'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartCasterScene'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamRecordIndexFile'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveTopDomainsByFlow'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMessageGroupUser'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCustomLiveStreamTranscode'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveLazyPullStreamInfoConfig'], + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartLiveMPUTask'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveAIStudio'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveRecordNotifyConfig'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveStreamsNotifyUrlConfig'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveMessageApp'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveUserTags'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteEventSub'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteRtcMPUEventSub'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLivePrivateLine'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveRealTimeLogDelivery'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartRtcCloudRecording'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyStudioLayout'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAudioAuditConfig'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAppSnapshotConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EditShowAndReplace'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'PlayChoosenShow'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateCasterSceneAudio'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopEdgeTranscodeJob'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopRtcAsrTask'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveAIStudio'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetAllCustomTemplates'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddShowIntoShowList'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveCertificateDetail'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListRtcMPUTaskDetail'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveMessageApp'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveMessageGroupBand'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveStreamBlock'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsBlockList'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLivePushProxyLog'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveStreamMonitor'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveStreamTranscode'], + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterEpisodeGroupContent'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateRtcCloudRecording'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveDetectNotifyConfig'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RecoverLiveMessageDeletedGroup'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateRtcMPUEventSub'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeMeterLiveBypassDuration'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QuerySnapshotCallbackAuth'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsControlHistory'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamCount'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetMessageGroup'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLivePullToPush'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveRealtimeLogDelivery'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryRtcAsrTasks'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMessageGroup'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainMonitoringUsageData'], + ['threshold' => '1000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'HotLiveRtcStream'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EnableLiveRealtimeLogDelivery'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteMessageApp'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateCaster'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLivePullToPush'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamRecordContent'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAIProduceRules'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListPlaylistItems'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveCenterStreamRateData'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetEdgeTranscodeTemplate'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveLiveMessageGroupBand'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveSnapshotConfig'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateEdgeTranscodeJob'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKVvData'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveStreamTranscode'], + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeCasterProgram'], + ['threshold' => '15', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeStudioLayouts'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveRealtimeDeliveryAcc'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAISubtitle'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendLiveMessageUser'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteRtcAsrTask'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DisableLiveRealtimeLogDelivery'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'BatchSetLiveDomainConfigs'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveStreamMerge'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainDetail'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainMapping'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageAppDisable'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveDelayConfig'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveDomainPlayMapping'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddStudioLayout'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAISubtitle'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeStreamLocationBlock'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ForbidLiveStream'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveMessageGroupByPage'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateEdgeTranscodeJob'], + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCasterEpisodeGroup'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveStreamBlock'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRtcMPUEventSub'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveVerifyContent'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAppSnapshotConfig'], + ['threshold' => '90', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKFirstFrameDelay'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EffectCasterVideoResource'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainLog'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateCustomLiveStreamTranscode'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCasterComponent'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageAppAudit'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryMessageApp'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'KickLiveMessageGroupUser'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetCasterConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartCaster'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListEventSub'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainMultiStreamConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopCaster'], + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopLiveMPUTask'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveDomain'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAudioAuditConfig'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveEdgeTransfer'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAppRecordConfig'], + ['threshold' => '5', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeMixStreamList'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetEdgeTranscodeJob'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveCenterTransfer'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveTerminals'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetEditingJobInfo'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateMixStream'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDetectNotifyConfig'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsNotifyRecords'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'VerifyLiveDomainOwner'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveSnapshotDetectPornConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CloseLiveShift'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveStreamRecordIndexFiles'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageUserInfo'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartPlaylist'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveEdgeTransfer'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainMultiStreamConfig'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveStreamMerge'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'QueryLiveDomainMultiStreamList'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateMessageApp'], + ['threshold' => '5', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeUpBpsPeakOfLine'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKPlayFailStatus'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainStagingConfig'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveStreamWatermark'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKPlayTime'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamWatermarks'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'EditPlaylist'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeDomainWithIntegrity'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeToutiaoLivePublish'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRtcCloudRecordingFiles'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainPublishErrorCode'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAudioAuditConfig'], + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCasterProgram'], + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterEpisodeGroup'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLivePrivateLineAvailGA'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDrmUsageData'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamWatermarkRules'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnbanLiveMessageGroup'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'JoinMessageGroup'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveRecordNotifyConfig'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveRealtimeLogAuthorized'], + ['threshold' => '1000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendLiveMessageGroup'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLiveDelayConfig'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RollbackLiveStagingConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLivePackageConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterComponent'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveMessageApps'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAudioAuditNotifyConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartLiveStreamMonitor'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCasterVideoResource'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateEventSub'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveCertificateList'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RestartLivePullToPush'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateLivePullToPush'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsNotifyUrlConfig'], + ['threshold' => '5', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeUpBpsPeakData'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageGroupBand'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainBpsDataByLayer'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveRealtimeLogDeliveryDomains'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'GetCustomTemplate'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckLiveMessageUsersInGroup'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamTranscodeMetricData'], + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyCasterProgram'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveStreamsNotifyUrlConfig'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'PublishLiveStagingConfigToProduction'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendLike'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartLiveDomain'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateMessageGroup'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveAISubtitle'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveCenterTransfer'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveRecordNotifyRecords'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamAuthChecking'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'OpenLiveShift'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterVideoResource'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddPlaylistItems'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainMultiStreamOptimalMode'], + ['threshold' => '1', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveUserBillPrediction'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopLivePullToPush'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RestartCaster'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopCasterScene'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainRealTimeTrafficData'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAudioAuditNotifyConfig'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainByCertificate'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMessage'], + ['threshold' => '4', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyCasterEpisode'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAIProduceRules'], + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamSnapshotInfo'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateRtcMPUEventSub'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveIpInfo'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddRtsLiveStreamTranscode'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetCasterChannel'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveRecordNotifyConfig'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAISubtitle'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainTimeShiftData'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListLiveMessageGroups'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'TagLiveResources'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainTrafficData'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CheckLiveMessageUsersOnline'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StartEdgeTranscodeJob'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateMessageGroup'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainStagingConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RemoveShowFromShowList'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ModifyLiveMessageGroup'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopLiveDomain'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDelayConfig'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveAppRecordConfig'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamHistoryUserNum'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveMpuTaskSei'], + ['threshold' => '1000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'AddLiveRecordVodConfig'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateCasterResourceGroup'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLivePackageConfig'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDomainMapping'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLivePullStreamInfoConfig'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLivePrivateLine'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveStreamPreloadTasks'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamPushMetricDetailData'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainConfigs'], + ['threshold' => '200', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamRecordIndexFiles'], + ['threshold' => '1000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'DescribeLiveStreamDelayConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamPreloadTasks'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveDomainCertificate'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateRtcAsrTask'], + ['threshold' => '1000', 'countWindow' => 60, 'regionId' => '*', 'api' => 'SetLiveStreamDelayConfig'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLivePullToPush'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetLiveEdgeTransfer'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDomainPlayMapping'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveAudioAuditNotifyConfig'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CreateRoomRealTimeStreamAddress'], + ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateLiveMPUTask'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDetectNotifyConfig'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveStreamWatermarkRule'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteChannel'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DynamicUpdateWaterMarkStreamRule'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopRtcCloudRecording'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamMetricDetailData'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SetSnapshotCallbackAuth'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeUpPeakPublishStreamData'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeRTSNativeSDKFirstFrameCost'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListEdgeTranscodeTemplate'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDelayConfig'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveDomain'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddLiveDomainMapping'], + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MuteAllGroupUser'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RealTimeRecordCommand'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'AddCasterLayout'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ResumeLiveStream'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveUserDomains'], + ['threshold' => '60', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveAIProduceRules'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamDetailFrameRateAndBitRateData'], + ['threshold' => '15', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamMonitorList'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveStreamsPublishList'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveSnapshotDetectPornConfig'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeLiveDomainStreamTranscodeData'], + ['threshold' => '30', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveSnapshotNotifyConfig'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteCaster'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeChannelParticipants'], + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'MuteGroupUser'], + ['threshold' => '100', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ListMessageApp'], + ['threshold' => '10', 'countWindow' => 1, 'regionId' => '*', 'api' => 'StopPlaylist'], + ['threshold' => '20', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UnTagLiveResources'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UpdateEventSub'], + ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DeleteLiveMessageGroupMessage'], + ['threshold' => '15', 'countWindow' => 1, 'regionId' => '*', 'api' => 'DescribeCasterScenes'], + ['threshold' => '300', 'countWindow' => 1, 'regionId' => '*', 'api' => 'CancelMuteGroupUser'], + ], + ], + 'ram' => [ + 'productCode' => 'Live', + 'productName' => 'ApsaraVideo Live', + 'ramCodes' => ['live', 'live-interaction'], + 'ramLevel' => 'RESOURCE', + 'ramConditions' => [], + 'ramActions' => [ + [ + 'apiName' => 'UpdateMixStream', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateMixStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', + [ + 'apiName' => 'EffectCasterUrgent', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:EffectCasterUrgent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - [ - 'errorCode' => 'CodeGetPushbackDomainError', - 'errorMessage' => 'Unable to get the push domain name, please check the domain name mapping configuration.', + ], + ], + [ + 'apiName' => 'DeleteLiveEdgeTransfer', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveEdgeTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'UpdateLivePackageConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLivePackageConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + [ + 'apiName' => 'CreateRTCWhipStreamAddress', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CreateRTCWhipStreamAddress', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"F486A44F-6B35-5A96-BF2C-************\\",\\n \\"Switch\\": \\"on\\"\\n}","type":"json"}]', - 'title' => 'DescribeLiveDomainMultiStreamConfig', - ], - 'QueryLiveDomainMultiStreamList' => [ - 'summary' => 'Queries the dual-stream disaster recovery records of online streams.', - 'methods' => [ - 'get', + [ + 'apiName' => 'AddLiveStreamTranscode', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'https', + [ + 'apiName' => 'BatchDeleteLiveDomainConfigs', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:BatchDeleteLiveDomainConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DeleteLiveStreamBlock', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamBlock', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'DescribeLiveStreamRecordIndexFile', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '250498', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamRecordIndexFile', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', + [ + 'apiName' => 'DescribeLiveDrmUsageData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDrmUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. This parameter is used for exact match.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'teststream', + ], + [ + 'apiName' => 'DescribeLiveDomainCertificateInfo', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainCertificateInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC. The time range specified by the StartTime and EndTime parameters cannot exceed seven days.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2024-12-01T01:00:00Z', + ], + [ + 'apiName' => 'UpdateLiveAISubtitle', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAISubtitle', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd*T*HH:mm:ss*Z format. The time must be in UTC.'."\n" - ."\n" - .'The end time must be later than the start time. The time range specified by the StartTime and EndTime parameters cannot exceed seven days. If the two parameters are not specified, data of the last 24 hours is queried by default.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2024-12-02T01:00:00Z', + ], + [ + 'apiName' => 'DeleteSnapshotCallbackAuth', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteSnapshotCallbackAuth', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'PageNumber', - 'in' => 'query', - 'schema' => [ - 'description' => 'The page number. Default value: **1**.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '1', - 'default' => '1', + ], + [ + 'apiName' => 'EditShowAndReplace', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:EditShowAndReplace', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'PageSize', - 'in' => 'query', - 'schema' => [ - 'description' => 'The number of entries per page. Default value: 10.'."\n" - ."\n" - .'Valid values: 1 to 100.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'required' => false, - 'maximum' => '100', - 'minimum' => '1', - 'example' => '10', - 'default' => '10', + ], + [ + 'apiName' => 'GetEditingJobInfo', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetEditingJobInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'CF60DB6A-7FD6-426E-9288-122CC1A5****', - ], - 'PageNumber' => [ - 'description' => 'The page number.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '1', - ], - 'PageSize' => [ - 'description' => 'The number of entries per page.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '10', - ], - 'TotalCount' => [ - 'description' => 'The total number of entries returned.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '19', - ], - 'OnlineStreams' => [ - 'description' => 'The online streams returned.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Domain' => [ - 'description' => 'The main streaming domain.'."\n", - 'type' => 'string', - 'example' => 'play.***.com', - ], - 'AppName' => [ - 'description' => 'The name of the application.'."\n", - 'type' => 'string', - 'example' => 'apptest', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'teststream', - ], - 'OptimalMode' => [ - 'description' => 'Indicates whether the dual-stream disaster recovery feature is enabled. Valid values:'."\n" - ."\n" - .'* **on**: enabled'."\n" - .'* **off**: disabled'."\n", - 'type' => 'string', - 'enumValueTitles' => [ - 'off' => 'off', - 'on' => 'on', - ], - 'example' => 'on', - ], - 'UpstreamList' => [ - 'description' => 'The standby streams.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'UpstreamSequence' => [ - 'description' => 'The unique identifier of the stream ingest.'."\n", - 'type' => 'string', - 'example' => '***test_Alirewrite1', - ], - 'UpstreamIp' => [ - 'description' => 'The IP address of the stream ingest client.'."\n", - 'type' => 'string', - 'example' => '1.1.1.1', - ], - 'UpstreamTime' => [ - 'description' => 'The stream ingest time.'."\n", - 'type' => 'string', - 'example' => '2024-11-13T09:20:47Z', - ], - 'MasterFlag' => [ - 'description' => 'The active/standby tag.'."\n" - ."\n" - .'> This parameter indicates whether the active or standby stream is being distributed.'."\n" - ."\n" - .'Valid values:'."\n" - ."\n" - .'* true'."\n" - .'* false'."\n", - 'type' => 'boolean', - 'enumValueTitles' => [ - 'true' => 'true', - 'false' => 'false', - ], - 'example' => 'false', - ], - ], - 'description' => '', - ], - ], - 'ChangeLogs' => [ - 'description' => 'The switchover records.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ChangeTime' => [ - 'description' => 'The switchover time.'."\n", - 'type' => 'string', - 'example' => '2024-11-13T09:20:47Z', - ], - 'ChangeReason' => [ - 'description' => 'The reason for the switchover.'."\n" - ."\n" - .'* merge cut manually: You proactively switched the stream.'."\n" - .'* master stream no data: No data is available in the active stream.'."\n" - .'* master stream low quality: The quality of the active stream deteriorated.'."\n", - 'type' => 'string', - 'example' => 'merge cut manually', - ], - 'MasterUpstream' => [ - 'description' => 'The stream used after the switchover.'."\n", - 'type' => 'string', - 'example' => 'rtmp://118.178.168.35:1936/wwMultitest/pull.livetest2.aliyunlive.com_wwMultitest428_AliRewrite_2?vhost=pull.livetest2.aliyunlive.com&live_rtmp_test=on', - ], - 'UpstreamSequence' => [ - 'description' => 'The identifier of the stream after the switchover.'."\n", - 'type' => 'string', - 'example' => '***test_AliRewrite_2', - ], - 'UpstreamIp' => [ - 'description' => 'The IP address used after the switchover.'."\n", - 'type' => 'string', - 'example' => '1.1.1.1', - ], - ], - 'description' => '', - ], - ], - ], - 'description' => '', - ], - ], - ], + [ + 'apiName' => 'ModifyCasterProgram', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterProgram', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => '%s.', - ], - [ - 'errorCode' => 'InvalidParam.CodeIllegalDuration', - 'errorMessage' => '%s.', + [ + 'apiName' => 'DeleteLiveSnapshotNotifyConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveSnapshotNotifyConfig', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'RollbackLiveStagingConfig', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:RollbackLiveStagingConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', - ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"CF60DB6A-7FD6-426E-9288-122CC1A5****\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 19,\\n \\"OnlineStreams\\": [\\n {\\n \\"Domain\\": \\"play.***.com\\",\\n \\"AppName\\": \\"apptest\\",\\n \\"StreamName\\": \\"teststream\\",\\n \\"OptimalMode\\": \\"on\\",\\n \\"UpstreamList\\": [\\n {\\n \\"UpstreamSequence\\": \\"***test_Alirewrite1\\",\\n \\"UpstreamIp\\": \\"1.1.1.1\\",\\n \\"UpstreamTime\\": \\"2024-11-13T09:20:47Z\\",\\n \\"MasterFlag\\": false\\n }\\n ],\\n \\"ChangeLogs\\": [\\n {\\n \\"ChangeTime\\": \\"2024-11-13T09:20:47Z\\",\\n \\"ChangeReason\\": \\"merge cut manually\\",\\n \\"MasterUpstream\\": \\"rtmp://118.178.168.35:1936/wwMultitest/pull.livetest2.aliyunlive.com_wwMultitest428_AliRewrite_2?vhost=pull.livetest2.aliyunlive.com&live_rtmp_test=on\\",\\n \\"UpstreamSequence\\": \\"***test_AliRewrite_2\\",\\n \\"UpstreamIp\\": \\"1.1.1.1\\"\\n }\\n ]\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'QueryLiveDomainMultiStreamList', - ], - 'DescribeLiveDomainStagingConfig' => [ - 'summary' => 'Queries the feature configurations of an accelerated domain name in the canary release environment.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DescribeUpPeakPublishStreamData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeUpPeakPublishStreamData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'ListLiveRealtimeLogDelivery', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:ListLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'KickLiveMessageGroupUser', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:KickLiveMessageGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'developer.aliyundoc.com', + ], + [ + 'apiName' => 'CreateLiveStreamMonitor', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveStreamMonitor', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'FunctionNames', - 'in' => 'query', - 'schema' => [ - 'description' => 'The feature that you want to query. Separate multiple features with commas (,).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'aliauth', + ], + [ + 'apiName' => 'ChangeLiveDomainResourceGroup', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ChangeLiveDomainResourceGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'C80705BF-0F76-41FA-BAD1-5B59296A4E59', - ], - 'DomainConfigs' => [ - 'description' => 'The feature configurations of the accelerated domain name.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Status' => [ - 'description' => 'The configuration status. Valid values:'."\n" - ."\n" - .'* **success**'."\n" - .'* **testing**'."\n" - .'* **failed**'."\n" - .'* **configuring**'."\n", - 'type' => 'string', - 'example' => 'success', - ], - 'ConfigId' => [ - 'description' => 'The configuration ID.'."\n", - 'type' => 'string', - 'example' => '6295', - ], - 'FunctionName' => [ - 'description' => 'The name of the feature.'."\n", - 'type' => 'string', - 'example' => 'aliauth', - ], - 'FunctionArgs' => [ - 'description' => 'The configurations of the feature.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ArgName' => [ - 'description' => 'The name of the parameter.'."\n", - 'type' => 'string', - 'example' => 'auth_type', - ], - 'ArgValue' => [ - 'description' => 'The configured value.'."\n", - 'type' => 'string', - 'example' => 'req_auth', - ], - ], - ], - ], - ], - ], - ], - ], - 'description' => '', + [ + 'apiName' => 'DescribeLiveSnapshotDetectPornConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveSnapshotDetectPornConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Invalid%s.ValueNotSupported', - 'errorMessage' => 'FunctionName [%s] is not supported.', + [ + 'apiName' => 'DescribeCasterStreamUrl', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterStreamUrl', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C80705BF-0F76-41FA-BAD1-5B59296A4E59\\",\\n \\"DomainConfigs\\": [\\n {\\n \\"Status\\": \\"success\\",\\n \\"ConfigId\\": \\"6295\\",\\n \\"FunctionName\\": \\"aliauth\\",\\n \\"FunctionArgs\\": [\\n {\\n \\"ArgName\\": \\"auth_type\\",\\n \\"ArgValue\\": \\"req_auth\\"\\n }\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n\\nC80705BF-0F76-41FA-BAD1-5B59296A4E59\\n\\n success\\n aliauth\\n 6295\\n \\n req_auth\\n auth_type\\n \\n\\n","errorExample":""}]', - 'title' => 'DescribeLiveDomainStagingConfig', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'You can call this operation to query the feature configurations of an accelerated domain name in the canary release environment.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'PublishLiveStagingConfigToProduction' => [ - 'summary' => 'Publishes the configurations of an accelerated domain name from the canary release environment to the production environment.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'UpdateLiveRecordVodConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveRecordVodConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'apiName' => 'ListMessageGroupUser', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessageGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeLiveDomainDetail', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainDetail', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'developer.aliyundoc.com', + ], + [ + 'apiName' => 'DeleteLiveAIProduceRules', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAIProduceRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'FunctionName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the feature. For more information about how to obtain the feature name, see [DescribeLiveDomainStagingConfig](~~297374~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'aliauth', + ], + [ + 'apiName' => 'DescribeLiveCenterTransfer', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveCenterTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', - ], - ], - 'description' => '', + [ + 'apiName' => 'DescribeLiveDomainSnapshotData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainSnapshotData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'StagingConfig.Failed', - 'errorMessage' => 'The rules for the staging environment are being configured. Try again later.', + [ + 'apiName' => 'DescribeRtcMPUEventSub', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRtcMPUEventSub', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 404 => [ - [ - 'errorCode' => 'StagingConfig.NotFound', - 'errorMessage' => 'The staging configuration does not exist.', + ], + [ + 'apiName' => 'DescribeMixStreamList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeMixStreamList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n04F0F334-1335-436C-A1D7-6C044FE73368\\r\\n","errorExample":""}]', - 'title' => 'PublishLiveStagingConfigToProduction', - 'description' => 'Function name is required for calling this operation. You can get the function name by calling the [DescribeLiveDomainStagingConfig](~~297374#doc-api-live-DescribeLiveDomainStagingConfig~~ "Queries the configurations in the canary release environment.") operation.'."\n" - ."\n" - .'## QPS limit'."\n" - ."\n" - .'A single user can perform a maximum of 30 queries per minute. Throttling is triggered when the number of calls per second exceeds the QPS limit. The throttling may affect your business. Thus, we recommend that you observe the QPS limit on this operation. For more information about what a single user means and the QPS details, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live#topic-2136805).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'RollbackLiveStagingConfig' => [ - 'summary' => 'Rolls back the configurations of an accelerated domain name in the canary release environment.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'UpdateLiveAudioAuditNotifyConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAudioAuditNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DeleteLivePullStreamInfoConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLivePullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ + [ + 'apiName' => 'DescribeLiveGrtnDuration', + 'description' => '', 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:DescribeLiveGrtnDuration', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeLiveAIProduceRules', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAIProduceRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'developer.aliyundoc.com', + ], + [ + 'apiName' => 'DeleteLiveStreamMonitor', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamMonitor', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'FunctionName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the feature. For more information about how to obtain the feature name, see [DescribeLiveDomainStagingConfig](~~297374~~).'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'aliauth', + ], + [ + 'apiName' => 'DescribeLiveMessageGroupBand', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveMessageGroupBand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', - ], - ], - 'description' => '', + [ + 'apiName' => 'AddLiveSnapshotDetectPornConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveSnapshotDetectPornConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 404 => [ - [ - 'errorCode' => 'StagingConfig.NotFound', - 'errorMessage' => 'The staging configuration does not exist.', + [ + 'apiName' => 'ModifyLiveDomainSchdmByProperty', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveDomainSchdmByProperty', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n04F0F334-1335-436C-A1D7-6C044FE73368\\r\\n","errorExample":""}]', - 'title' => 'RollbackLiveStagingConfig', - 'description' => 'Function name is required for calling this operation. You can get the function name by calling the [DescribeLiveDomainStagingConfig](~~297374#doc-api-live-DescribeLiveDomainStagingConfig~~ "Queries the configurations in the canary release environment.") operation.'."\n" - ."\n" - .'## QPS limit'."\n" - ."\n" - .'A single user can perform a maximum of 30 queries per minute. Throttling is triggered when the number of calls per second exceeds the QPS limit. The throttling may affect your business. Thus, we recommend that you observe the QPS limit on this operation. For more information about what a single user means and the QPS details, see [QPS limit on an API operation in ApsaraVideo Live](https://www.alibabacloud.com/help/en/apsaravideo-live/latest/qps-limit-on-an-api-operation-in-apsaravideo-live#topic-2136805).', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'SetLiveDomainStagingConfig' => [ - 'summary' => 'Sets or modifies domain name configurations in the canary release environment.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DeleteLiveDelayConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'write', - 'systemTags' => [ + [ + 'apiName' => 'DisableLiveRealtimeLogDelivery', + 'description' => '', 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:DisableLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'RealTimeRecordCommand', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:RealTimeRecordCommand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'developer.aliyundoc.com', + ], + [ + 'apiName' => 'ModifyCasterEpisode', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterEpisode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'Functions', - 'in' => 'query', - 'schema' => [ - 'description' => 'The list of features. You must specify the ConfigId field when you want to modify the configurations. For more information, see **Features specified by the Functions parameter**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '[{"functionArgs":[{"argName":"enable","argValue":"on"},{"argName":"pri","argValue":"1"},{"argName":"rule","argValue":"xxx"}],"functionName":"edge_function"}]', + ], + [ + 'apiName' => 'DescribeLiveDomainLimit', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainLimit', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', - ], - ], - 'description' => '', + [ + 'apiName' => 'SetLiveStreamPreloadTasks', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:SetLiveStreamPreloadTasks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidFunctionName.ValueNotSupported', - 'errorMessage' => '%s', - ], - [ - 'errorCode' => 'InvalidArgName.ValueNotSupported', - 'errorMessage' => '%s', + [ + 'apiName' => 'DescribeCasters', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasters', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - [ - 'errorCode' => 'InvalidArgValue.Malformed', - 'errorMessage' => '%s', + ], + ], + [ + 'apiName' => 'AddPlaylistItems', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddPlaylistItems', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - [ - 'errorCode' => 'InvalidRule.Malformed', - 'errorMessage' => '%s', + ], + ], + [ + 'apiName' => 'EditPlaylist', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:EditPlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - [ - 'errorCode' => 'ConfigurationConflicts', - 'errorMessage' => 'The staging environment has a configuration in effect. You cannot modify the production environment configuration.', + ], + ], + [ + 'apiName' => 'DescribeLivePrivateLineAvailGA', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePrivateLineAvailGA', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], - [ - 'errorCode' => 'InvalidDomain.BelongToConfigGroup', - 'errorMessage' => 'The domain is bound to a configuration group. Modify the domain in the configuration group.', + ], + ], + [ + 'apiName' => 'DeleteLiveStreamsNotifyUrlConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamsNotifyUrlConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n04F0F334-1335-436C-A1D7-6C044FE73368\\r\\n","errorExample":""}]', - 'title' => 'SetLiveDomainStagingConfig', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'Obtain the accelerated domain name, and then call this operation to set or modify the domain name configurations in the canary release environment. For more information, see **Format of the Functions parameter**.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => '## Format of the Functions parameter'."\n" - ."\n" - .'* To set the configurations, use the format similar to the following example: `[{"functionArgs":[{"argName":"enable","argValue":"on"},{"argName":"pri","argValue":"1"},{"argName":"rule","argValue":"xxx"}],"functionName":"edge_function"}]`'."\n" - ."\n" - .'* To modify the configurations, use the ConfigId field (of the Long type) to specify the configuration items that you want to modify. Example: `[{"functionArgs":[{"argName":"enable","argValue":"on"},{"argName":"pri","argValue":"1"},{"argName":"rule","argValue":"yyy"}],"ConfigId":123456,"functionName":"edge_function"}]`'."\n" - ."\n" - .'Note: The following table describes the features specified by the Functions parameter. Specify all attribute values in the form of a string.'."\n" - ."\n" - .'|Feature|Required attribute|Optional attribute|'."\n" - .'|---|---|---|'."\n" - .'|edge\\_function: configures the edge function.|\\- **rule**: the domain-specific language (DSL) rule.
\\- **pri**: the priority of the rule.
\\- **enable**: specifies whether to enable the rule. Valid values: on and off.|\\- **name**: the name of the rule.
\\- **pos**: the position from which to execute the rule.
\\- **brk**: After the rule is hit, the rules after the specified position are skipped.
\\- **option**: the option.
\\- **grammar**: the grammar. Valid values: es2 and js. You can also leave this attribute empty.
\\- **jsmode**: the mode to manage the domain name whitelist in JavaScript. Valid values: redirect and bypass.|', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveSpecificStagingConfig' => [ - 'summary' => 'Deletes domain configurations in the canary release environment.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'DeleteLiveAudioAuditConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAudioAuditConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'GetAllCustomTemplates', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetAllCustomTemplates', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'SetLiveDomainStagingConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainStagingConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'apiName' => 'StartRtcCloudTranscode', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:StartRtcCloudTranscode', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => 'developer.aliyundoc.com', + [ + 'apiName' => 'DescribeCasterChannels', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterChannels', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'ConfigId', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ID of the configuration that you want to delete. If you want to specify multiple IDs, separate them with commas (,). You can call the [DescribeLiveDomainStagingConfig](~~297374~~) operation to obtain the configuration ID.'."\n", - 'type' => 'string', - 'required' => true, - 'docRequired' => true, - 'example' => '6295', + ], + [ + 'apiName' => 'DeleteCasterSceneConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterSceneConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '04F0F334-1335-436C-A1D7-6C044FE73368', - ], - ], - 'description' => '', + [ + 'apiName' => 'DescribeLiveDetectPornData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDetectPornData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Invalid%s.ValueNotSupported', - 'errorMessage' => 'FunctionName [%s] is not supported.', + [ + 'apiName' => 'DescribeRTSNativeSDKFirstFrameCost', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKFirstFrameCost', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\r\\n04F0F334-1335-436C-A1D7-6C044FE73368\\r\\n","errorExample":""}]', - 'title' => 'DeleteLiveSpecificStagingConfig', - 'description' => '## [](#)Usage notes'."\n" - ."\n" - .'Before you call this operation to delete a domain configuration in the canary release environment, you can call the [DescribeLiveDomainStagingConfig](~~297374~~) operation to obtain the configuration ID.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 20 times per second per account. Requests that exceed this limit are dropped and you may experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveIpInfo' => [ - 'summary' => 'Checks whether a specified IP address belongs to an Alibaba Cloud point of presence (POP).', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'ListPlaylist', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListPlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DeleteRtcAsrTask', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteRtcAsrTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'AddLiveAISubtitle', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAISubtitle', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'DescribeRTSNativeSDKPlayTime', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107056', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKPlayTime', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DeleteCasterEpisode', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterEpisode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'IP', - 'in' => 'query', - 'schema' => [ - 'description' => 'The IP address that you want to check. You can specify only one IP address in each call.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '192.168.0.1', + ], + [ + 'apiName' => 'ListRTCLiveRooms', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:ListRTCLiveRooms', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'IspEname' => [ - 'description' => 'The English name of the Internet service provider (ISP).'."\n", - 'type' => 'string', - 'example' => 'telecom', - ], - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '1B1D0EE7-9559-489D-BC4E-279495EB8FB8', - ], - 'RegionEname' => [ - 'description' => 'The English name of the region.'."\n", - 'type' => 'string', - 'example' => 'China-Guizhou-guiyang', - ], - 'ISP' => [ - 'description' => 'The Chinese name of the ISP.'."\n", - 'type' => 'string', - 'example' => 'ChinaTelecom', - ], - 'Region' => [ - 'description' => 'The Chinese name of the region.'."\n", - 'type' => 'string', - 'example' => 'China-Guizhou-guiyang', - ], - ], + [ + 'apiName' => 'StopRtcCloudRecording', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:StopRtcCloudRecording', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'CdnIP.NotFound', - 'errorMessage' => 'Cannot find this ip in alicdn', + [ + 'apiName' => 'CreateEventSub', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CreateEventSub', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"IspEname\\": \\"telecom\\",\\n \\"RequestId\\": \\"1B1D0EE7-9559-489D-BC4E-279495EB8FB8\\",\\n \\"RegionEname\\": \\"China-Guizhou-guiyang\\",\\n \\"ISP\\": \\"电信\\",\\n \\"Region\\": \\"中国-贵州省-贵阳市\\"\\n}","errorExample":""},{"type":"xml","example":"\\n China-Guizhou-guiyang\\n 中国-贵州省-贵阳市\\n telecom\\n 1B1D0EE7-9559-489D-BC4E-279495EB8FB8\\n 电信\\n","errorExample":""}]', - 'title' => 'DescribeLiveIpInfo', - 'description' => '### [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 30 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveStreamAuthChecking' => [ - 'summary' => 'Queries the authentication status of an active stream.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'ListRtcMPUTaskDetail', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListRtcMPUTaskDetail', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'StartPlaylist', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartPlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DeletePlaylistItems', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeletePlaylistItems', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'RestartCaster', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:RestartCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], + [ + 'apiName' => 'DeleteLiveMessageGroupMessage', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveMessageGroupMessage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], + ], + ], + [ + 'apiName' => 'QuerySnapshotCallbackAuth', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:QuerySnapshotCallbackAuth', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeStudioLayouts', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeStudioLayouts', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain or streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', + ], + [ + 'apiName' => 'DeleteCaster', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'Url', - 'in' => 'query', - 'schema' => [ - 'description' => 'The complete ingest URL or streaming URL. You can use the [URL generator](~~197400~~) to generate a URL.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'http://example.com/live/test.flv?auth_key=1664248******', + ], + [ + 'apiName' => 'ListPlaylistItems', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListPlaylistItems', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Description' => [ - 'description' => 'The error message for failed authentication.'."\n", - 'type' => 'string', - 'example' => 'INVALID AUTH_KEY', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16F08B4E-14FD-5D72-AB2F-BAFA4C4D57F1', - ], - 'Status' => [ - 'description' => 'Indicates whether the signed URL is valid. Valid values:'."\n" - ."\n" - .'* pass: valid.'."\n" - .'* false: invalid.'."\n", - 'type' => 'string', - 'example' => 'pass', - ], - ], - 'description' => '', + [ + 'apiName' => 'DeleteEdgeTranscodeJob', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', + [ + 'apiName' => 'SetCasterConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetCasterConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + [ + 'apiName' => 'AddLiveRecordNotifyConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveRecordNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"Description\\": \\"INVALID AUTH_KEY\\",\\n \\"RequestId\\": \\"16F08B4E-14FD-5D72-AB2F-BAFA4C4D57F1\\",\\n \\"Status\\": \\"pass\\"\\n}","errorExample":""},{"type":"xml","example":"\\n pass\\n \\n 16F08B4E-14FD-5D72-AB2F-BAFA4C4D57F1\\n","errorExample":""}]', - 'title' => 'DescribeLiveStreamAuthChecking', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'responseParamsDescription' => '### Error codes for failed authentication'."\n" - ."\n" - .'|Error code|Description|'."\n" - .'|---|---|'."\n" - .'|INVALID AUTH\\_KEY|The auth\\_key field of the signed URL is invalid.|'."\n" - .'|INVALID TIMESTAMP|The timestamp of the signed URL is invalid.|'."\n" - .'|INVALID ALIAUTH|The type of URL signing is invalid.|'."\n" - .'|INVALID MD5HASH|The hash value calculated by using the MD5 algorithm is invalid.|', - ], - 'TagLiveResources' => [ - 'summary' => 'Adds tags for domain names.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'HotLiveRtcStream', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:HotLiveRtcStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'ListLiveRealtimeLogDeliveryDomains', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveRealtimeLogDeliveryDomains', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DeleteCasterProgram', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterProgram', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107259', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'apiName' => 'DescribeLiveTagResources', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveTagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'AddLiveCenterTransfer', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveCenterTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'ResourceId', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The type of the resources. Set the value to **DOMAIN**.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], - 'required' => true, - 'example' => 'example.com', - 'maxItems' => 51, + ], + [ + 'apiName' => 'GetEdgeTranscodeJob', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'Tag', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'env', - ], - 'Value' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'product', - ], - ], - 'required' => false, - ], - 'required' => true, - 'maxItems' => 21, + ], + [ + 'apiName' => 'AddCasterProgram', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterProgram', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'ResourceType', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'DOMAIN', - 'enum' => [ - 'DOMAIN', - ], + ], + [ + 'apiName' => 'DescribeLiveDomainRealTimeTrafficData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRealTimeTrafficData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '34AB41F1-04A5-496F-8C8D-634BDBE6A9FB', - ], - ], + [ + 'apiName' => 'DescribeLiveDomainBpsDataByLayer', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainBpsDataByLayer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 401 => [ - [ - 'errorCode' => 'InvalidResourceType', - 'errorMessage' => 'The resourceType is invalid.', + [ + 'apiName' => 'DeleteLiveMessageGroup', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], - [ - 'errorCode' => 'QuotaExceed.TagsPerResource', - 'errorMessage' => 'The maximum number of tags for each resource is exceeded.', + ], + ], + [ + 'apiName' => 'AddShowIntoShowList', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddShowIntoShowList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - [ - 'errorCode' => 'InvalidTagKey', - 'errorMessage' => 'The tag key is invalid, %s.', + ], + ], + [ + 'apiName' => 'DescribeLiveDomainRecordUsageData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRecordUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 403 => [ - [ - 'errorCode' => 'Duplicate.TagKey', - 'errorMessage' => 'The tags should not contain duplicate keys.', + ], + [ + 'apiName' => 'DescribeLiveDetectNotifyConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDetectNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'InvalidResourcesCount', - 'errorMessage' => 'The count of resources is invalid, %s.', + ], + ], + [ + 'apiName' => 'CopyCasterSceneConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CopyCasterSceneConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"34AB41F1-04A5-496F-8C8D-634BDBE6A9FB\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 34AB41F1-04A5-496F-8C8D-634BDBE6A9FB\\r\\n","errorExample":""}]', - 'title' => 'TagLiveResources', - 'description' => 'The key of the tag. Valid values of N: **1 to 20**.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => 'The value of the tag. Valid values of N: **1 to 20**.'."\n", - ], - 'UnTagLiveResources' => [ - 'summary' => 'Deletes tags of domain names.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'DescribeLiveStreamDetailFrameRateAndBitRateData', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamDetailFrameRateAndBitRateData', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'GetEdgeTranscodeTemplate', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetEdgeTranscodeTemplate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'AddLivePackageConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLivePackageConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ + [ + 'apiName' => 'SetLiveDomainCertificate', + 'description' => '', 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '107264', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainCertificate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'SendLiveMessageUser', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:SendLiveMessageUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'ResourceId', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'type' => 'string', - 'required' => false, - ], - 'required' => true, - 'example' => 'example.com', - 'maxItems' => 51, + ], + [ + 'apiName' => 'DeleteMessageApp', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'TagKey', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'type' => 'string', - 'required' => false, - ], - 'required' => false, - 'example' => 'env', - 'maxItems' => 21, + ], + [ + 'apiName' => 'UpdateLiveSnapshotDetectPornConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveSnapshotDetectPornConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'ResourceType', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'DOMAIN', - 'enum' => [ - 'DOMAIN', - ], + ], + [ + 'apiName' => 'UpdateLiveAppRecordConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAppRecordConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'All', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'boolean', - 'required' => false, - 'example' => 'false', + ], + [ + 'apiName' => 'AddLiveAppRecordConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAppRecordConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '97C68796-EB7F-4D41-9D5B-12B909D76508', - ], - ], + [ + 'apiName' => 'StopCasterScene', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopCasterScene', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], - 'errorCodes' => [ - 401 => [ - [ - 'errorCode' => 'InvalidResourceType', - 'errorMessage' => 'The resourceType is invalid.', + [ + 'apiName' => 'DeleteLiveStreamTranscode', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 403 => [ - [ - 'errorCode' => 'Duplicate.TagKey', - 'errorMessage' => 'The tags should not contain duplicate keys.', - ], - [ - 'errorCode' => 'InvalidResourcesCount', - 'errorMessage' => 'The count of resources is invalid, %s.', + ], + [ + 'apiName' => 'UpdateLiveStreamWatermarkRule', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveStreamWatermarkRule', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"97C68796-EB7F-4D41-9D5B-12B909D76508\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 97C68796-EB7F-4D41-9D5B-12B909D76508\\r\\n","errorExample":""}]', - 'title' => 'UnTagLiveResources', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - ], - 'ListLiveTagResources' => [ - 'summary' => '查询符合条件的资源和标签', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'AddLiveAudioAuditConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAudioAuditConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'SetSnapshotCallbackAuth', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetSnapshotCallbackAuth', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DescribeLiveRecordConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRecordConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'DescribeRTSNativeSDKPlayFailStatus', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKPlayFailStatus', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'cn-shanghai', - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeRtcCloudTranscode', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeRtcCloudTranscode', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'ResourceId', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'my-resource-id', - ], - 'required' => false, - 'maxItems' => 51, + ], + [ + 'apiName' => 'UpdateMessageGroup', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'Tag', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'env', - ], - 'Value' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'dev', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 21, + ], + [ + 'apiName' => 'DeleteCustomTemplate', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCustomTemplate', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'TagOwnerUid', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'xxx1234xxx', + ], + [ + 'apiName' => 'UpdateCasterResourceGroup', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:UpdateCasterResourceGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'TagOwnerBid', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => '26842', + ], + [ + 'apiName' => 'ModifyLiveMessageGroup', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'ResourceType', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'DOMAIN', - 'enum' => [ - 'DOMAIN', - ], + ], + [ + 'apiName' => 'DescribeLiveUserDomains', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUserDomains', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'NextToken', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => false, - 'example' => 'q2j8bLtBdhONLRkgaPBa6A==', + ], + [ + 'apiName' => 'BatchSetLiveDomainConfigs', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:BatchSetLiveDomainConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'NextToken' => [ - 'description' => '', - 'type' => 'string', - 'example' => '6a5e8f4fae643e70d1a2ff1827cd91bd', - ], - 'RequestId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'TagResources' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'TagResource' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'ResourceId' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'my-resource-id', - ], - 'ResourceType' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'DOMAIN', - ], - 'TagKey' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'env', - ], - 'TagValue' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'dev', - ], - ], - ], - ], - ], - ], - ], + [ + 'apiName' => 'StopPlaylist', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopPlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], + [ + 'apiName' => 'MuteAllGroupUser', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:MuteAllGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], + [ + 'apiName' => 'PlayChoosenShow', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:PlayChoosenShow', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], - 'errorCodes' => [ - 401 => [ - [ - 'errorCode' => 'InvalidResourceType', - 'errorMessage' => 'The resourceType is invalid.', - ], - [ - 'errorCode' => 'InvalidTagKey', - 'errorMessage' => 'The tag key is invalid, %s.', + [ + 'apiName' => 'StartLiveDomain', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartLiveDomain', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 403 => [ - [ - 'errorCode' => 'InvalidResourcesCount', - 'errorMessage' => 'The count of resources is invalid, %s.', - ], - [ - 'errorCode' => 'Duplicate.TagKey', - 'errorMessage' => 'The tags should not contain duplicate keys.', + ], + [ + 'apiName' => 'ListLiveMessageApps', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageApps', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"6a5e8f4fae643e70d1a2ff1827cd91bd\\",\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TagResources\\": {\\n \\"TagResource\\": [\\n {\\n \\"ResourceId\\": \\"my-resource-id\\",\\n \\"ResourceType\\": \\"DOMAIN\\",\\n \\"TagKey\\": \\"env\\",\\n \\"TagValue\\": \\"dev\\"\\n }\\n ]\\n }\\n}","type":"json"}]', - ], - 'DescribeLiveTagResources' => [ - 'summary' => 'Queries the tags of domain names.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DescribeLiveAudioAuditNotifyConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAudioAuditNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'SetLiveStreamDelayConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveStreamDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'DescribeLivePullToPushList', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:DescribeLivePullToPushList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'CreateMixStream', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateMixStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'ResourceId', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The N resources. The resources are domain names in this operation. Valid values of N: **1 to 50**.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The resource.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', - ], - 'required' => true, - 'example' => 'example.com', - 'maxItems' => 50, + ], + [ + 'apiName' => 'AddCustomLiveStreamTranscode', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCustomLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'Tag', - 'in' => 'query', - 'style' => 'repeatList', - 'schema' => [ - 'description' => 'The N tags.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The key of the tag. Valid values of N: **1 to 20**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'env', - ], - 'Value' => [ - 'description' => 'The value of the tag. Valid values of N: **1 to 20**.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'product', - ], - ], - 'required' => false, - ], - 'required' => false, - 'maxItems' => 20, + ], + [ + 'apiName' => 'VerifyLiveDomainOwner', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:VerifyLiveDomainOwner', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'ResourceType', - 'in' => 'query', - 'schema' => [ - 'description' => 'The type of the resources. Set the value to **DOMAIN**.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'DOMAIN', + ], + [ + 'apiName' => 'ModifyCasterComponent', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterComponent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '34AB41F1-04A5-496F-8C8D-634BDBE6A9FB', - ], - 'TagResources' => [ - 'description' => 'The tags of the resource.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ResourceId' => [ - 'description' => 'The resource.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Tag' => [ - 'description' => 'The key-value pair of the tag.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'description' => 'The key of the tag.'."\n", - 'type' => 'string', - 'example' => 'env', - ], - 'Value' => [ - 'description' => 'The value of the tag.'."\n", - 'type' => 'string', - 'example' => 'product', - ], - ], - ], - ], - ], - ], - ], - ], + [ + 'apiName' => 'GetMessageApp', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"****41F1-04A5-496F-8C8D-634BDBE6****\\",\\n \\"TagResources\\": [\\n {\\n \\"ResourceId\\": \\"example.com\\",\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"env\\",\\n \\"Value\\": \\"product\\"\\n }\\n ]\\n }\\n ]\\n}","errorExample":""},{"type":"xml","example":"\\n 34AB41F1-04A5-496F-8C8D-634BDBE6A9FB\\n \\n example.com\\n \\n product\\n env\\n \\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveTagResources', - 'description' => 'You can call this operation up to 10 times per second per account.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'AddLiveCenterTransfer' => [ - 'summary' => 'Adds a configuration of live center stream relay.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'UpdateCasterSceneAudio', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateCasterSceneAudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'StopRtcAsrTask', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopRtcAsrTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'create', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'apiName' => 'EffectCasterVideoResource', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:EffectCasterVideoResource', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeChannelUsers', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:DescribeChannelUsers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + ], + [ + 'apiName' => 'ListLiveMessageGroupUsers', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageGroupUsers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name for the live stream that you want to relay. Otherwise, the configuration does not take effect. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testapp', + ], + [ + 'apiName' => 'StopLiveDomain', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopLiveDomain', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'teststream', + ], + [ + 'apiName' => 'DescribeLiveDelayConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DstUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The third-party URL to which the live stream is relayed. You can add only one URL.'."\n" - ."\n" - .'> The protocol that the URL uses must be the same as the protocol of the live stream. Only URLs over RTMP and SRT are supported.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://push.example2.aliyunlive.com/testapp1/teststream2', + ], + [ + 'apiName' => 'DeleteLiveRealtimeLogDelivery', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'TransferArgs', - 'in' => 'query', - 'schema' => [ - 'description' => 'The validity period of stream relay. Valid values:'."\n" - ."\n" - .'* **always**: The stream can always be relayed.'."\n" - .'* **time**: The stream can be relayed in a specified time period.'."\n" - ."\n" - .'> If you set this parameter to **time**, **StartTime** and **EndTime** are required.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'always', - 'enum' => [ - 'always', - 'time', - ], + ], + [ + 'apiName' => 'CancelMuteGroupUser', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:CancelMuteGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of stream relay. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-21T10:00:00Z', + ], + [ + 'apiName' => 'DescribeLiveStreamMonitorList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamMonitorList', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of stream relay. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> The end time must be later than the start time.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-22T08:00:00Z', + ], + [ + 'apiName' => 'DescribeToutiaoLivePublish', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeToutiaoLivePublish', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '7908F2FF-44F8-120F-9FD6-85AE4B6C19EC', - ], - ], - 'description' => '', + [ + 'apiName' => 'DeleteLiveSpecificStagingConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveSpecificStagingConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', + [ + 'apiName' => 'DeleteLiveAudioAuditNotifyConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAudioAuditNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], - [ - 'errorCode' => 'CenterTransfersStreamOverLimit', - 'errorMessage' => 'CenterTransfers stream is over limit for this domainName.', + ], + ], + [ + 'apiName' => 'DescribeLiveStreamAuthChecking', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamAuthChecking', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], - [ - 'errorCode' => 'ConfigAlreadyExists', - 'errorMessage' => 'Config has already exist.', + ], + ], + [ + 'apiName' => 'DescribeLiveAIStudio', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAIStudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'CodeIllegalDuration', - 'errorMessage' => 'param end_time is before start_time', + ], + ], + [ + 'apiName' => 'UnTagLiveResources', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UnTagLiveResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + [ + 'apiName' => 'DeleteLiveCenterTransfer', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveCenterTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\n","errorExample":""}]', - 'title' => 'AddLiveCenterTransfer', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'UpdateLiveCenterTransfer' => [ - 'summary' => 'Modifies the configurations of live center stream relay.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'DeleteLiveAISubtitle', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAISubtitle', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'AddLiveAudioAuditNotifyConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAudioAuditNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DescribeLiveCertificateDetail', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveCertificateDetail', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'write', - 'systemTags' => [ + [ + 'apiName' => 'ModifyLiveRealtimeLogDelivery', + 'description' => '', 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:ModifyLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeLiveRtcRecordUsageData', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRtcRecordUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + ], + [ + 'apiName' => 'DescribeLiveDomainRealTimeBpsData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRealTimeBpsData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name for the live stream that you want to relay. Otherwise, the configuration does not take effect. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testapp', + ], + [ + 'apiName' => 'DescribeLiveStreamMerge', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamMerge', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'teststream', + ], + [ + 'apiName' => 'DeleteLiveMessageUserMessage', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveMessageUserMessage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DstUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The third-party URL to which the live stream is relayed. You can add only one URL.'."\n" - ."\n" - .'> The protocol that the URL uses must be the same as the protocol of the live stream. Only URLs over RTMP and SRT are supported.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'rtmp://push.example2.aliyunlive.com/testapp1/teststream2', + ], + [ + 'apiName' => 'RemoveTerminals', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:RemoveTerminals', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live:*:{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'TransferArgs', - 'in' => 'query', - 'schema' => [ - 'description' => 'The validity period of stream relay. Valid values:'."\n" - ."\n" - .'* **always**: The stream can always be relayed.'."\n" - .'* **time**: The stream can be relayed in a specified time period.'."\n" - ."\n" - .'> If the value is **time**, **StartTime** and **EndTime** are required.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'always', - 'enum' => [ - 'always', - 'time', - ], + ], + [ + 'apiName' => 'DescribeUpBpsPeakData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeUpBpsPeakData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of stream relay. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-21T10:00:00Z', + ], + [ + 'apiName' => 'MuteGroupUser', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:MuteGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of stream relay. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" - ."\n" - .'> The end time must be later than the start time.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2017-12-22T08:00:00Z', + ], + [ + 'apiName' => 'UpdateLiveStreamWatermark', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveStreamWatermark', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '7908F2FF-44F8-120F-9FD6-85AE4B6C19EC', - ], - ], - 'description' => '', + [ + 'apiName' => 'DescribeLiveStreamsTotalCount', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsTotalCount', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', + [ + 'apiName' => 'ListMessageGroup', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'CodeIllegalDuration', - 'errorMessage' => 'param end_time is before start_time', + ], + ], + [ + 'apiName' => 'DescribeToutiaoLivePlay', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeToutiaoLivePlay', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + [ + 'apiName' => 'DescribeLiveUserBillPrediction', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUserBillPrediction', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\n","errorExample":""}]', - 'title' => 'UpdateLiveCenterTransfer', - 'description' => 'You can call this operation to modify only the **time-related** parameters, including TransferArgs, StartTime, and EndTime.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveCenterTransfer' => [ - 'summary' => 'Queries the information about a configuration of live center stream relay.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'SendLike', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:SendLike', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DescribeLiveDomainFrameRateAndBitRateData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainFrameRateAndBitRateData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DescribeLiveCenterStreamRateData', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveCenterStreamRateData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'apiName' => 'DescribeLiveUserStreamMetricData', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUserStreamMetricData', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'AddLiveDomainPlayMapping', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveDomainPlayMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + ], + [ + 'apiName' => 'AddLiveDetectNotifyConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveDetectNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name for the live stream that you want to relay. Otherwise, the configuration does not take effect. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'testapp', + ], + [ + 'apiName' => 'SetLiveDomainMultiStreamMaster', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainMultiStreamMaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'teststream', + ], + [ + 'apiName' => 'DescribeLiveStreamSnapshotInfo', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamSnapshotInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DstUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The third-party URL to which the live stream is relayed.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://push.example2.aliyunlive.com/testapp1/teststream2', + ], + [ + 'apiName' => 'DescribeLivePushProxyUsageData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePushProxyUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'LiveCenterTransferInfoList' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'LiveCenterTransferInfo' => [ - 'description' => 'The stream relay information.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'teststream', - ], - 'DomainName' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'DstUrl' => [ - 'description' => 'The third-party URL to which the live stream is relayed.'."\n", - 'type' => 'string', - 'example' => 'rtmp://push.example2.aliyunlive.com/testapp1/teststream2', - ], - 'EndTime' => [ - 'description' => 'The end time of stream relay.'."\n", - 'type' => 'string', - 'example' => '2022-04-29T15:16:00Z', - ], - 'StartTime' => [ - 'description' => 'The start time of stream relay.'."\n", - 'type' => 'string', - 'example' => '2022-04-28T15:16:00Z', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'teststream', - ], - 'TransferArgs' => [ - 'description' => 'The validity period of stream relay. Valid values:'."\n" - ."\n" - .'* **always**: The stream can always be relayed.'."\n" - .'* **time**: The stream can be relayed in a specified time period.'."\n", - 'type' => 'string', - 'example' => 'time', - ], - ], - ], - ], - ], - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'C4865B85-664B-19D3-BB16-C62FB83C8226', - ], - ], - 'description' => '', + [ + 'apiName' => 'ResumeLiveStream', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ResumeLiveStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', + [ + 'apiName' => 'SetCasterChannel', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetCasterChannel', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + [ + 'apiName' => 'DescribeLiveStreamDelayConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"LiveCenterTransferInfoList\\": {\\n \\"LiveCenterTransferInfo\\": [\\n {\\n \\"AppName\\": \\"teststream\\",\\n \\"DomainName\\": \\"example.com\\",\\n \\"DstUrl\\": \\"rtmp://push.example2.aliyunlive.com/testapp1/teststream2\\",\\n \\"EndTime\\": \\"2022-04-29T15:16:00Z\\",\\n \\"StartTime\\": \\"2022-04-28T15:16:00Z\\",\\n \\"StreamName\\": \\"teststream\\",\\n \\"TransferArgs\\": \\"time\\"\\n }\\n ]\\n },\\n \\"RequestId\\": \\"C4865B85-664B-19D3-BB16-C62FB83C8226\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C4865B85-664B-19D3-BB16-C62FB83C8226\\n \\n 2022-04-29T15:16:00Z\\n teststream\\n 2022-04-28T15:16:00Z\\n time\\n teststream\\n rtmp://push.example2.aliyunlive.com/testapp1/teststream2\\n example.com\\n \\n","errorExample":""}]', - 'title' => 'DescribeLiveCenterTransfer', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DeleteLiveCenterTransfer' => [ - 'summary' => 'Deletes a configuration of live center stream relay.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'CreateEdgeTranscodeJob', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DescribeCasterConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'SetLiveEdgeTransfer', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveEdgeTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ - 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'apiName' => 'StartLiveStreamMonitor', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartLiveStreamMonitor', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeLiveDomainStagingConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainStagingConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + ], + [ + 'apiName' => 'DescribeLiveShiftConfigs', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveShiftConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. The value of this parameter must be the same as the application name for the live stream that you want to relay. Otherwise, the configuration does not take effect. You can view the application name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'testapp', + ], + [ + 'apiName' => 'CreateLiveStreamRecordIndexFiles', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveStreamRecordIndexFiles', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream. You can view the stream name on the [Stream Management](~~197397~~) page of the ApsaraVideo Live console.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'teststream', + ], + [ + 'apiName' => 'DescribeMeterLiveBypassDuration', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeMeterLiveBypassDuration', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DstUrl', - 'in' => 'query', - 'schema' => [ - 'description' => 'The third-party URL to which the live stream is relayed.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'rtmp://push.example2.aliyundoc.com/testapp1/teststream2', + ], + [ + 'apiName' => 'DescribeLiveStreamRecordContent', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamRecordContent', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '7908F2FF-44F8-120F-9FD6-85A******', - ], - ], - 'description' => '', + [ + 'apiName' => 'DeleteLiveRealTimeLogLogstore', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveRealTimeLogLogstore', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', + [ + 'apiName' => 'UpdateRtcMPUEventSub', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateRtcMPUEventSub', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + [ + 'apiName' => 'StartLiveMPUTask', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:StartLiveMPUTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7908F2FF-44F8-120F-9FD6-85A******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7908F2FF-44F8-120F-9FD6-85AE4B6C19EC\\n","errorExample":""}]', - 'title' => 'DeleteLiveCenterTransfer', - 'description' => 'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - ], - 'DescribeLiveEdgeTransfer' => [ - 'summary' => 'Queries the configuration of edge stream relay.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'DescribeLiveStreamCount', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamCount', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DescribeLiveStreamsPublishList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsPublishList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'ModifyCasterVideoResource', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterVideoResource', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + [ + 'apiName' => 'InitializeAutoShowListTask', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:InitializeAutoShowListTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeCasterScenes', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterScenes', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', + ], + [ + 'apiName' => 'DescribeUpBpsPeakOfLine', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeUpBpsPeakOfLine', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'HttpDns' => [ - 'description' => 'The HTTPDNS API that is used to obtain the destination URLs.'."\n", - 'type' => 'string', - 'example' => 'http://developer.aliyundoc.com/****', - ], - 'AppName' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '53FCB985-C67C-467B-B2B3-398430A21E14', - ], - 'TransferArgs' => [ - 'description' => 'Indicates whether stream ingest parameters are passed through. Valid values:'."\n" - ."\n" - .'* **yes**: Stream ingest parameters are passed through.'."\n" - .'* **no**: Stream ingest parameters are not passed through.'."\n", - 'type' => 'string', - 'example' => 'yes', - ], - 'StreamName' => [ - 'description' => 'The name of the ingested stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'TargetDomainList' => [ - 'description' => 'The destination domain names to which the ingested stream is relayed. Multiple domain names are separated by commas (,).'."\n", - 'type' => 'string', - 'example' => 'learn.aliyundoc.com,guide.aliyundoc.com', - ], - 'DomainName' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'example' => 'demo.aliyundoc.com', - ], - ], - 'description' => '', + [ + 'apiName' => 'CreateLiveDelayConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', + [ + 'apiName' => 'DescribeLiveCertificateList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveCertificateList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + [ + 'apiName' => 'DynamicUpdateWaterMarkStreamRule', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:DynamicUpdateWaterMarkStreamRule', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"HttpDns\\": \\"http://developer.aliyundoc.com/****\\",\\n \\"AppName\\": \\"liveApp****\\",\\n \\"RequestId\\": \\"53FCB985-C67C-467B-B2B3-398430A21E14\\",\\n \\"TransferArgs\\": \\"yes\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"TargetDomainList\\": \\"learn.aliyundoc.com,guide.aliyundoc.com\\",\\n \\"DomainName\\": \\"demo.aliyundoc.com\\"\\n}","errorExample":""},{"type":"xml","example":"\\n http://developer.aliyundoc.com/****\\n liveApp****\\n 53FCB985-C67C-467B-B2B3-398430A21E14\\n yes\\n liveStream****\\n learn.aliyundoc.com,guide.aliyundoc.com\\n demo.aliyundoc.com\\n","errorExample":""}]', - 'title' => 'DescribeLiveEdgeTransfer', - 'description' => 'Obtain the ingest domain, and then call this operation to query the configuration of edge stream relay.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.'."\n", - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DeleteLiveEdgeTransfer' => [ - 'summary' => 'Deletes the configuration of edge stream relay.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'DescribeLiveRealtimeDeliveryAcc', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRealtimeDeliveryAcc', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DescribeLiveDomainByCertificate', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainByCertificate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'SetShowListBackground', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetShowListBackground', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], ], ], - 'operationType' => 'readAndWrite', - 'systemTags' => [ + [ + 'apiName' => 'DeleteLiveDomainMapping', + 'description' => '', 'operationType' => 'delete', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDomainMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeLiveDomainMapping', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain. You can set only one stream relay configuration for an ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', + ], + [ + 'apiName' => 'DescribeLivePrivateLineAreas', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePrivateLineAreas', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - ], - 'description' => '', + [ + 'apiName' => 'DescribeCasterLayouts', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterLayouts', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', + [ + 'apiName' => 'DeleteLiveDomain', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDomain', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + [ + 'apiName' => 'ListLiveDelayConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\n","errorExample":""}]', - 'title' => 'DeleteLiveEdgeTransfer', - 'description' => 'You can call the DeleteLiveEdgeTransfer operation to delete the configuration of edge stream relay for a specific domain name. Ingested streams that are already relayed based on the configuration are not affected. The following table describes the scenarios in which edge stream relay takes effect or not.'."\n" - ."\n" - .'|Scenario|Analysis|Result|'."\n" - .'|---|---|---|'."\n" - .'|1\\. You ingest a stream after you call the SetLiveEdgeTransfer operation to configure edge stream relay. Then, you call the DeleteLiveEdgeTransfer operation to delete the configuration.|The configuration of edge stream relay is available when you ingest the stream.|The ingested stream is not affected, and stream relay is not interrupted.|'."\n" - .'|2\\. You call the DeleteLiveEdgeTransfer operation to delete the configuration of edge stream relay after you ingest a stream. Then, you disconnect and resume the ingested stream.|The configuration of edge stream relay is not available after you resume the ingested stream.|Edge stream relay does not take effect.|'."\n" - .'|3\\. You call the DeleteLiveEdgeTransfer operation before you ingest a stream.|The configuration of edge stream relay is not available.|Edge stream relay does not take effect.|'."\n" - ."\n" - .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', - 'requestParamsDescription' => ' ', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'SetLiveEdgeTransfer' => [ - 'summary' => 'Sets the configuration of edge stream relay.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'AddCasterComponent', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterComponent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DescribeLiveProducerUsageData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveProducerUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'ListLiveRealtimeLogDeliveryInfos', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListLiveRealtimeLogDeliveryInfos', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'write', - 'systemTags' => [ + [ + 'apiName' => 'UpdateLiveCenterTransfer', + 'description' => '', 'operationType' => 'update', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:UpdateLiveCenterTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'ListMessageGroupUserById', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessageGroupUserById', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain. Stream relay is configured based on the ingest domain. Only one stream relay configuration can be set for an ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'demo.aliyundoc.com', + ], + [ + 'apiName' => 'CreateLiveRealTimeLogDelivery', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveRealTimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'AppName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs. Regular expressions are supported, with a few limits. For more information, see the **Description about the AppName and StreamName parameters** section. For example, a value of **liveApp\\*\\*\\*\\*\\[1,2,3]** specifies that stream relay is configured for three applications: liveApp\\*\\*\\*\\*1, liveApp\\*\\*\\*\\*2, and liveApp\\*\\*\\*\\*3.****'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter takes effect for only destination domain names that are specified by the TargetDomainList parameter.'."\n" - ."\n" - .'* You cannot use a caret (^) or a dollar sign ($) in a regular expression to configure the `AppName` parameter. Otherwise, stream relay fails.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveApp****', + ], + [ + 'apiName' => 'UpdateLiveAudioAuditConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAudioAuditConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StreamName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the ingested stream. Regular expressions are supported, with a few limits. For more information, see the **Description about the AppName and StreamName parameters** section. For example, a value of **liveStream\\*\\*\\*\\*\\[1,2,3]** specifies that stream relay is configured for three streams: liveStream\\*\\*\\*\\*1, liveStream\\*\\*\\*\\*2, and liveStream\\*\\*\\*\\*3.****'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* This parameter takes effect for only destination domain names that are specified by the TargetDomainList parameter.'."\n" - ."\n" - .'* You cannot use a caret (^) or a dollar sign ($) in a regular expression to configure the `StreamName` parameter. Otherwise, stream relay fails.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'liveStream****', + ], + [ + 'apiName' => 'DeleteCasterComponent', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterComponent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'TargetDomainList', - 'in' => 'query', - 'schema' => [ - 'description' => 'The destination domain names to which you want to relay the ingested stream. Separate multiple domain names with commas (,). The request must contain the `TargetDomainList` parameter or the `HttpDns` parameter. The two parameters are mutually exclusive.'."\n" - ."\n" - .'> '."\n" - ."\n" - .'* The `AppName` and `StreamName` parameters take effect only when the `TargetDomainList` parameter is configured.'."\n" - ."\n" - .'* If the `TargetDomainList` parameter is configured, you cannot configure the `HttpDns` parameter.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'learn.aliyundoc.com,guide.aliyundoc.com', + ], + [ + 'apiName' => 'DeleteLiveStreamRecordIndexFiles', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamRecordIndexFiles', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'HttpDns', - 'in' => 'query', - 'schema' => [ - 'description' => 'The HTTPDNS API that is used to obtain the destination URLs. The request must contain the `TargetDomainList` parameter or the `HttpDns` parameter. The two parameters are mutually exclusive.'."\n" - ."\n" - .'> If the `HttpDns` parameter is configured, you cannot configure the `TargetDomainList` parameter, and the `AppName` and `StreamName` parameters do not take effect.'."\n" - ."\n" - .'For information about the requirements on the structure of messages that are returned by the HTTPDNS API, see the **Description about the HTTPDNS API** section.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'http://developer.aliyundoc.com', + ], + [ + 'apiName' => 'OpenLiveShift', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:OpenLiveShift', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'TransferArgs', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to pass through stream ingest parameters. Valid values:'."\n" - ."\n" - .'* **yes**: passes through stream ingest parameters.'."\n" - .'* **no**: does not pass through stream ingest parameters.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'yes', - 'default' => 'no', - 'enum' => [ - 'yes', - 'no', - ], + ], + [ + 'apiName' => 'AddLivePullStreamInfoConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLivePullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CF8', - ], - ], - 'description' => '', + [ + 'apiName' => 'DeleteChannel', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DeleteChannel', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live:*:{#accountId}:rtc/{#AppId}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParam', - 'errorMessage' => 'Parameter invalid.', + [ + 'apiName' => 'StopEdgeTranscodeJob', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => 'The request processing has failed due to backend service exception.', + ], + [ + 'apiName' => 'DeleteLivePackageConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLivePackageConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 16A96B9A-F203-4EC5-8E43-CB92E68F4CF8\\n","errorExample":""}]', - 'title' => 'SetLiveEdgeTransfer', - 'description' => 'You can call the SetLiveEdgeTransfer operation to configure edge stream relay. The configuration takes effect for ingested streams that start after edge stream relay is configured. The following table describes the scenarios in which edge stream relay takes effect or not.'."\n" - ."\n" - .'|Scenario|Analysis|Result|'."\n" - .'|---|---|---|'."\n" - .'|1\\. You ingest a stream before you call the SetLiveEdgeTransfer operation.|The configuration of edge stream relay is not available.|The ingested stream is not affected by your call of the SetLiveEdgeTransfer operation. Edge stream relay does not take effect.|'."\n" - .'|2\\. You disconnect an ingested stream that started before you called the SetLiveEdgeTransfer operation, and then resume the ingested stream.|The configuration of edge stream relay is available.|Edge stream relay takes effect for the resumed ingested stream based on the configuration.|'."\n" - .'|3\\. You ingest a stream after you call the SetLiveEdgeTransfer operation.|The configuration of edge stream relay is available.|Edge stream relay takes effect for the ingested stream based on the configuration.|'."\n" - ."\n" - .'## QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation.', - 'requestParamsDescription' => '### Description about the AppName and StreamName parameters'."\n" - ."\n" - .'The AppName and StreamName parameters do not support carets (`^`) and dollar signs (`$`). If a caret (`^`) or a dollar sign (`$`) exists in the parameter values, stream relay fails.'."\n" - ."\n" - .'### Description about the HTTPDNS API'."\n" - ."\n" - .'If the `HttpDns` parameter is configured, the destination domain names are obtained by accessing the HTTPDNS API that is specified by the `HttpDns` parameter.'."\n" - ."\n" - .'Example: http://developer.aliyundoc.com/?host={}&app={}&name={}{<\\_ali\\_user\\_args>} '."\n" - .'Note: When the HTTPDNS API is accessed, the following parameters are replaced with the actual values in the ingest URL.'."\n" - ."\n" - .'* {}: The ingest domain.'."\n" - .'* {}: The name of the application to which the live stream belongs.'."\n" - .'* {}: The name of the stream.'."\n" - .'* {<\\_ali\\_user\\_args>}: The custom parameters that are carried in the ingest URL.'."\n" - ."\n" - .'The following HTTP status codes and results are returned.'."\n" - ."\n" - .'* If HTTP status code 403 is returned, the access to the HTTPDNS API fails. Stream relay is not required.'."\n" - .'* If HTTP status code 200 is returned, the access to the HTTPDNS API is successful. The returned result is in the JSON format. The following sample code provides an example of the message structure and parameters.'."\n" - ."\n" - .'```'."\n" - .'{'."\n" - .' "cdn_types": ['."\n" - .' {'."\n" - .' "name": "cdnA****",'."\n" - .' "upstream_url": "rtmp://developer.aliyundoc.com/live/testedge****"'."\n" - .' },'."\n" - .' {'."\n" - .' "name": "cdnB****",'."\n" - .' "upstream_url": "rtmp://developer.aliyundoc.com/live/testedge****"'."\n" - .' }'."\n" - .' ]'."\n" - .'}'."\n" - .'```'."\n" - ."\n" - .'|Parameter|Description|Example|'."\n" - .'|---|---|---|'."\n" - .'|name|The name of the CDN point of presence (POP). You can specify a custom name. Duplicate names are not allowed.|cdnA\\*\\*\\*\\*|'."\n" - .'|upstream\\_url|The destination URL to which the ingested stream is relayed.|rtmp://developer.aliyundoc.com/live/testedge\\*\\*\\*\\*|'."\n" - ."\n" - .'**Note** You can obtain the destination domain name from the JSON-formatted result. If multiple destination domain names are obtained, the ingested stream is relayed to multiple domain names.'."\n" - ."\n" - .'* If the structure of the returned data does not meet the requirements, stream relay fails.', - 'responseParamsDescription' => ' ', - 'extraInfo' => ' ', - ], - 'DescribeLiveUserBillPrediction' => [ - 'summary' => 'Queries the estimated bills of ApsaraVideo Live in your Alibaba Cloud account.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', - ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'SetLiveMpuTaskSei', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveMpuTaskSei', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'DescribeLiveDomainConfigs', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive9P39J9', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'ModifyCasterLayout', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyCasterLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time. Specify the time in the ISO 8601 standard in the *yyyy-MM-dd**THH:mm:ssZ* format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-01T05:40:00Z', + ], + [ + 'apiName' => 'DeleteEventSub', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DeleteEventSub', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live:*:{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end time. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2015-12-01T05:45:00Z', + ], + [ + 'apiName' => 'UpdateLiveDetectNotifyConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveDetectNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'EndTime' => [ - 'description' => 'The end time. If you do not specify the request parameter EndTime, the end time is the current time by default. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-10-25T10:00:00Z', - ], - 'StartTime' => [ - 'description' => 'The start time. If you do not specify the request parameter StartTime, the start time is 00:00 on the first day of the month by default. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", - 'type' => 'string', - 'example' => '2018-09-30T16:00:00Z', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => 'B95BE680-5A6A-1CAD-8AB1-09DFF5D6****', - ], - 'BillType' => [ - 'description' => 'The metering method. Valid values:'."\n" - ."\n" - .'* hour_flow: pay by hourly data transfer'."\n" - .'* day_bandwidth: pay by daily bandwidth'."\n" - .'* month\\_95: pay by monthly 95th percentile bandwidth'."\n" - .'* month_avg_day_bandwidth: pay by average daily peak bandwidth per month'."\n" - .'* month\\_4th_day_bandwidth: pay by 4th peak bandwidth per month'."\n" - .'* month_avg_day\\_95: pay by average daily 95th percentile bandwidth per month'."\n" - .'* month\\_95\\_night_half: pay by 95th percentile bandwidth with 50% off from 00:00 to 08:00'."\n" - .'* hour_vas: pay by value-added services per hour'."\n" - .'* day_count: pay by daily requests'."\n", - 'type' => 'string', - 'enumValueTitles' => [], - 'example' => 'day_bandwidth', - ], - 'BillPredictionData' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'BillPredictionDataItem' => [ - 'description' => 'The estimated bill data.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The estimated bill data.'."\n", - 'type' => 'object', - 'properties' => [ - 'Value' => [ - 'description' => 'The estimated value.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '10000', - ], - 'TimeStp' => [ - 'description' => 'The time at which the estimated value occurs. This parameter is returned only if the metering method is pay by 95th percentile bandwidth, pay by 95th percentile bandwidth with 50% off from 00:00 to 08:00, or pay by 4th peak bandwidth per month.'."\n", - 'type' => 'string', - 'example' => '2018-10-15T16:00:00Z', - ], - 'Area' => [ - 'description' => 'The billable region. Valid values:'."\n" - ."\n" - .'* CN: Chinese mainland'."\n" - .'* OverSeas: countries and regions outside the Chinese mainland'."\n" - .'* AP1: Asia Pacific 1, including Hong Kong (China), Macao (China), Taiwan (China), Japan, and other Southeast Asia countries and regions except Vietnam and Indonesia'."\n" - .'* AP2: Asia Pacific 2, including Indonesia, South Korea, and Vietnam'."\n" - .'* AP3: Asia Pacific 3, including Australia and New Zealand'."\n" - .'* NA: North America, including US and Canada'."\n" - .'* SA: South America, specifically meaning Brazil'."\n" - .'* EU: Europe, including Ukraine, UK, France, Netherlands, Spain, Italy, Sweden, and Germany'."\n" - .'* MEAA: Middle East and Africa, including South Africa, Oman, UAE, and Kuwait'."\n" - ."\n" - .'By default, data of all regions is aggregated and returned.'."\n", - 'type' => 'string', - 'example' => 'CN', - ], - ], - ], - ], - ], - ], - ], - 'description' => '', + [ + 'apiName' => 'DescribeLiveUpVideoAudioInfo', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUpVideoAudioInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter', - 'errorMessage' => 'InvalidParameter.', - ], - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'The specified StartTime parameter is invalid.', - ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'The specified EndTime is invalid.', - ], - [ - 'errorCode' => 'InvalidStartTime.ValueNotSupported', - 'errorMessage' => 'The StartTime cannot exceed 31 days before the current time.', - ], - [ - 'errorCode' => 'InvalidTime.Malformed', - 'errorMessage' => 'Specified Time is malformed.', - ], - [ - 'errorCode' => 'InvalidEndTime.Mismatch', - 'errorMessage' => 'Specified end time does not math the specified start time.', + [ + 'apiName' => 'DescribeLivePullStreamConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePullStreamConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'InvalidTimeSpan', - 'errorMessage' => 'The time span exceeds the limit.', + ], + ], + [ + 'apiName' => 'DescribeLiveRealtimeLogAuthorized', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRealtimeLogAuthorized', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'BillTypeNotFound', - 'errorMessage' => 'User bill type not found or is not monthly bill type.', + ], + ], + [ + 'apiName' => 'DescribeLiveSnapshotNotifyConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveSnapshotNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"EndTime\\": \\"2018-10-25T10:00:00Z\\",\\n \\"StartTime\\": \\"2018-09-30T16:00:00Z\\",\\n \\"RequestId\\": \\"B95BE680-5A6A-1CAD-8AB1-09DFF5D6****\\",\\n \\"BillType\\": \\"day_bandwidth\\",\\n \\"BillPredictionData\\": {\\n \\"BillPredictionDataItem\\": [\\n {\\n \\"Value\\": 10000,\\n \\"TimeStp\\": \\"2018-10-15T16:00:00Z\\",\\n \\"Area\\": \\"CN\\"\\n }\\n ]\\n }\\n}","type":"json"}]', - 'title' => 'DescribeLiveUserBillPrediction', - 'description' => 'You can call this operation to estimate resource usage of the current month based on the metering method that is specified on the first day of the month. You can call this operation to estimate resource usage of only the current month within your Alibaba Cloud account. The time range used for the estimation starts at 00:00 on the first day of the month and ends 2 hours earlier than the current time.'."\n" - ."\n" - .'* Pay by monthly 95th percentile bandwidth: The top 5% values between the start time and end time are excluded. The highest value among the remaining values is the estimated value.'."\n" - .'* Pay by average daily peak bandwidth per month: Estimated value = Sum of daily peak bandwidth values/Number of days. The current day is excluded.'."\n" - .'* Pay by 4th peak bandwidth per month: The estimated value is the 4th peak bandwidth value between the start time and end time. If the time range is less than four days, the estimated value is 0.'."\n" - .'* Pay by average daily 95th percentile bandwidth per month: Estimated value = Sum of daily 95th percentile bandwidth values/Number of days. The current day is excluded.'."\n" - .'* Pay by 95th percentile bandwidth with 50% off from 00:00 to 08:00: The top 5% values between the start time and end time are excluded. The highest value among the remaining values is the estimated value.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation once per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeRTSNativeSDKFirstFrameCost' => [ - 'summary' => 'Queries the information about the factors that cause latency of first frames within a specified period of time.', - 'methods' => [ - 'get', - 'post', + [ + 'apiName' => 'ListEdgeTranscodeTemplate', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListEdgeTranscodeTemplate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'AddLiveStreamWatermarkRule', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveStreamWatermarkRule', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'ListLiveMessageGroups', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageGroups', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'DescribeLiveMessageApp', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + 'ramAction' => [ + 'action' => 'live:DescribeLiveMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T20:00:00Z', + [ + 'apiName' => 'ListLiveMessageGroupMessages', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageGroupMessages', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T21:00:00Z', + ], + [ + 'apiName' => 'DescribeShowList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeShowList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DataInterval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. The default value is 300. If you specify an invalid value or do not specify this parameter, the default value is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', + ], + [ + 'apiName' => 'SetLiveDomainMultiStreamOptimalMode', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainMultiStreamOptimalMode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainNameList', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'From V2.1.0, all domain names are queried by default. You can also specify specific domain names that you want to query. In this case, separate the domain names with commas (,). You can specify up to 500 domain names in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a.example.com', - ], - 'required' => false, + ], + [ + 'apiName' => 'DescribeLiveHttpsDomainList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveHttpsDomainList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'DataInterval' => [ - 'description' => 'The time granularity.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'EndTime' => [ - 'description' => 'The end of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T21:00:00Z', - ], - 'FirstFrameCostData' => [ - 'description' => 'The average latency of first frames at each interval. Unit: milliseconds.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'Connected' => [ - 'description' => 'The time elapsed from initialization to connection establishment.'."\n", - 'type' => 'string', - 'example' => '100', - ], - 'FinishGetStreamInfo' => [ - 'description' => 'The time elapsed from connection establishment to subscription.'."\n", - 'type' => 'string', - 'example' => '89', - ], - 'FirstFrameComplete' => [ - 'description' => 'The time elapsed from first packet processing to display of the first frame.'."\n", - 'type' => 'string', - 'example' => '32', - ], - 'FirstPacket' => [ - 'description' => 'The time elapsed from subscription to first packet processing.'."\n", - 'type' => 'string', - 'example' => '132', - ], - 'Initialized' => [ - 'description' => 'The time consumed by initialization.'."\n", - 'type' => 'string', - 'example' => '1100', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - ], - ], - ], - 'RequestId' => [ - 'title' => 'Id', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => 'BC858082-736F-4A25-867B-E5B67C85ACF7', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - ], + [ + 'apiName' => 'DeleteLiveDetectNotifyConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDetectNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', + [ + 'apiName' => 'DescribeLiveStreamTranscodeInfo', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamTranscodeInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', + ], + [ + 'apiName' => 'UpdateLiveMPUTask', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveMPUTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', - ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', + ], + [ + 'apiName' => 'DescribeLiveStreamTranscodeMetricData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamTranscodeMetricData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', + ], + [ + 'apiName' => 'DescribeLiveStreamPushMetricDetailData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamPushMetricDetailData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"FirstFrameCostData\\": [\\n {\\n \\"Connected\\": \\"100\\",\\n \\"FinishGetStreamInfo\\": \\"89\\",\\n \\"FirstFrameComplete\\": \\"32\\",\\n \\"FirstPacket\\": \\"132\\",\\n \\"Initialized\\": \\"1100\\",\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\"\\n }\\n ],\\n \\"RequestId\\": \\"BC858082-736F-4A25-867B-E5B67C85ACF7\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\"\\n}","type":"json"}]', - 'title' => 'DescribeRTSNativeSDKFirstFrameCost', - 'description' => 'You can call this operation to query the information about the factors that cause latency of first frames within a specified period of time. You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see QPS limit.'."\n", - ], - 'DescribeRTSNativeSDKPlayTime' => [ - 'summary' => 'Queries the playback duration within a specified period of time.', - 'methods' => [ - 'get', - 'post', + [ + 'apiName' => 'DescribeLiveStreamsNotifyRecords', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsNotifyRecords', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'UpdateLiveStreamTranscode', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:UpdateLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DescribeLiveInteractionMetricData', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveInteractionMetricData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'DescribeLiveStreamTranscodeStreamNum', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamTranscodeStreamNum', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T20:00:00Z', + [ + 'apiName' => 'AddCasterEpisode', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterEpisode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T21:00:00Z', + ], + [ + 'apiName' => 'ListLiveTagResources', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListLiveTagResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DataInterval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. The default value is 300. If you specify an invalid value or do not specify this parameter, the default value is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', + ], + [ + 'apiName' => 'DescribeLiveDomainBpsData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainBpsData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainNameList', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'From V2.1.0, all domain names are queried by default. You can also specify specific domain names that you want to query. In this case, separate the domain names with commas (,). You can specify up to 500 domain names in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a.example.com', - ], - 'required' => false, + ], + [ + 'apiName' => 'DescribeLivePullToPush', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'DataInterval' => [ - 'description' => 'The time granularity.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'EndTime' => [ - 'description' => 'The end of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T21:00:00Z', - ], - 'PlayTimeData' => [ - 'description' => 'The average playback duration and average stuttering duration at each interval. Unit: milliseconds.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'PlayTime' => [ - 'description' => 'The average playback duration within the period of time.'."\n", - 'type' => 'string', - 'example' => '1000', - ], - 'StallTime' => [ - 'description' => 'The average stuttering duration within the period of time.'."\n", - 'type' => 'string', - 'example' => '100', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - ], - ], - ], - 'RequestId' => [ - 'title' => 'Id', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '7BF95F2A-3B24-4CDE-9346-7F6FA86697A1', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - ], + [ + 'apiName' => 'DescribeLiveStreamRecordIndexFiles', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamRecordIndexFiles', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', + [ + 'apiName' => 'DescribeLiveIpInfo', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveIpInfo', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', + ], + [ + 'apiName' => 'DeleteCasterLayout', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', - ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', + ], + [ + 'apiName' => 'DescribeAutoShowListTasks', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeAutoShowListTasks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', + ], + [ + 'apiName' => 'TagLiveResources', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:TagLiveResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"PlayTimeData\\": [\\n {\\n \\"PlayTime\\": \\"1000\\",\\n \\"StallTime\\": \\"100\\",\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\"\\n }\\n ],\\n \\"RequestId\\": \\"7BF95F2A-3B24-4CDE-9346-7F6FA86697A1\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\"\\n}","type":"json"}]', - 'title' => 'DescribeRTSNativeSDKPlayTime', - 'description' => 'You can query the playback duration within a specified period of time. You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see QPS limit.'."\n", - ], - 'DescribeRTSNativeSDKPlayFailStatus' => [ - 'summary' => 'Queries the causes of playback failures that occurred within a specified period of time. The causes are returned in the form of status codes.', - 'methods' => [ - 'get', - 'post', + [ + 'apiName' => 'CopyCaster', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CopyCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'QueryRtcAsrTasks', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:QueryRtcAsrTasks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DeleteLiveRecordNotifyConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveRecordNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'DescribeLiveDomainPvUvData', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainPvUvData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T20:00:00Z', + [ + 'apiName' => 'AddLiveStreamMerge', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveStreamMerge', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T21:00:00Z', + ], + [ + 'apiName' => 'UpdateLivePullStreamInfoConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLivePullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DataInterval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. The default value is 300. If you specify an invalid value or do not specify this parameter, the default value is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', + ], + [ + 'apiName' => 'DescribeLiveTopDomainsByFlow', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveTopDomainsByFlow', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainNameList', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'From V2.1.0, all domain names are queried by default. You can also specify specific domain names that you want to query. In this case, separate the domain names with commas (,). You can specify up to 500 domain names in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a.example.com', - ], - 'required' => false, + ], + [ + 'apiName' => 'DescribeLiveDomainTrafficData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainTrafficData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'DataInterval' => [ - 'description' => 'The time granularity.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'EndTime' => [ - 'description' => 'The end of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T21:00:00Z', - ], - 'PlayFailStatus' => [ - 'description' => 'The number of error status codes at each interval.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - 'V20001' => [ - 'description' => 'The status code that indicates failed DNS resolution.'."\n", - 'type' => 'string', - 'example' => '1', - ], - 'V20002' => [ - 'description' => 'The status code that indicates failed authentication.'."\n", - 'type' => 'string', - 'example' => '2', - ], - 'V20011' => [ - 'description' => 'The status code that indicates a connection signaling timeout.'."\n", - 'type' => 'string', - 'example' => '3', - ], - 'V20012' => [ - 'description' => 'The status code that indicates a subscription signaling error.'."\n", - 'type' => 'string', - 'example' => '4', - ], - 'V20013' => [ - 'description' => 'The status code indicating that the stream to subscribe to does not exist.'."\n", - 'type' => 'string', - 'example' => '5', - ], - 'V20052' => [ - 'description' => 'The status code that indicates a media packet collection timeout.'."\n", - 'type' => 'string', - 'example' => '6', - ], - ], - ], - ], - 'RequestId' => [ - 'title' => 'Id', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z'."\n", - ], - ], + [ + 'apiName' => 'UpdateEdgeTranscodeJob', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', + [ + 'apiName' => 'DescribeLiveDomainPublishErrorCode', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainPublishErrorCode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', + ], + [ + 'apiName' => 'UpdateLiveAIProduceRules', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAIProduceRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', + ], + [ + 'apiName' => 'DeleteLivePrivateLine', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLivePrivateLine', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', + ], + ], + [ + 'apiName' => 'DescribeLiveStreamsControlHistory', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsControlHistory', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', + ], + [ + 'apiName' => 'DescribeLiveStreamState', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamState', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"PlayFailStatus\\": [\\n {\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\",\\n \\"V20001\\": \\"1\\",\\n \\"V20002\\": \\"2\\",\\n \\"V20011\\": \\"3\\",\\n \\"V20012\\": \\"4\\",\\n \\"V20013\\": \\"5\\",\\n \\"V20052\\": \\"6\\"\\n }\\n ],\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\\\n\\"\\n}","type":"json"}]', - 'title' => 'DescribeRTSNativeSDKPlayFailStatus', - 'description' => 'You can call this operation to query the causes of playback failures that occurred within a specified period of time. The causes are returned in the form of status codes. You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see QPS limit.'."\n", - ], - 'DescribeRTSNativeSDKFirstFrameDelay' => [ - 'summary' => 'Queries the average latency of first frames within a specified period of time.', - 'methods' => [ - 'get', - 'post', + [ + 'apiName' => 'DescribeLiveDomainRealtimeLogDelivery', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'SetLiveDomainMultiStreamConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveDomainMultiStreamConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'JoinMessageGroup', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:JoinMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'DescribeDomainUsageData', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + 'ramAction' => [ + 'action' => 'live:DescribeDomainUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T20:00:00Z', + [ + 'apiName' => 'DeleteStudioLayout', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteStudioLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T21:00:00Z', + ], + [ + 'apiName' => 'CreateMessageApp', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DataInterval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. The default value is 300. If you specify an invalid value or do not specify this parameter, the default value is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', + ], + [ + 'apiName' => 'DescribeLiveStreamWatermarkRules', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamWatermarkRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainNameList', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'From V2.1.0, all domain names are queried by default. You can also specify specific domain names that you want to query. In this case, separate the domain names with commas (,). You can specify up to 500 domain names in each call.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a.example.com', - ], - 'required' => false, + ], + [ + 'apiName' => 'LeaveMessageGroup', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:LeaveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'DataInterval' => [ - 'description' => 'The time granularity.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'EndTime' => [ - 'description' => 'The end of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T21:00:00Z', - ], - 'FrameDelayData' => [ - 'description' => 'The average latency of first frames at each interval. Unit: milliseconds.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'FrameDelay' => [ - 'description' => 'The average latency of first frames within the period of time.'."\n", - 'type' => 'string', - 'example' => '400', - ], - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - ], - ], - ], - 'RequestId' => [ - 'title' => 'Id', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - ], + [ + 'apiName' => 'DescribeLiveSnapshotConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveSnapshotConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', + [ + 'apiName' => 'AddCasterLayout', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', + ], + [ + 'apiName' => 'UpdateLiveRecordNotifyConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveRecordNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', + ], + [ + 'apiName' => 'ForbidLiveStream', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ForbidLiveStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', + ], + ], + [ + 'apiName' => 'CancelMuteAllGroupUser', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CancelMuteAllGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', + ], + [ + 'apiName' => 'DescribeLiveMessageGroup', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"FrameDelayData\\": [\\n {\\n \\"FrameDelay\\": \\"400\\",\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\"\\n }\\n ],\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\"\\n}","type":"json"}]', - 'title' => 'DescribeRTSNativeSDKFirstFrameDelay', - 'description' => 'You can call this operation to query the average latency of first frames within a specified period of time. You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see QPS limit.'."\n", - ], - 'DescribeRTSNativeSDKVvData' => [ - 'summary' => 'Queries the total number of playbacks and the number of successful playbacks within a specified period of time.', - 'methods' => [ - 'get', - 'post', + [ + 'apiName' => 'DescribeLiveDomainRealTimeHttpCodeData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainRealTimeHttpCodeData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DeleteLivePullToPush', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'CreateRoomRealTimeStreamAddress', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CreateRoomRealTimeStreamAddress', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], - 'operationType' => 'read', - 'deprecated' => false, - 'systemTags' => [ + [ + 'apiName' => 'QueryMessageApp', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + 'ramAction' => [ + 'action' => 'live:QueryMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T20:00:00Z', + [ + 'apiName' => 'UpdateCustomLiveStreamTranscode', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateCustomLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '2021-12-10T21:00:00Z', + ], + [ + 'apiName' => 'UpdateCasterSceneConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateCasterSceneConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'DataInterval', - 'in' => 'query', - 'schema' => [ - 'description' => 'The time granularity. Valid values: 300, 3600, 14400, 28800, and 86400. Unit: seconds. The default value is 300. If you specify an invalid value or do not specify this parameter, the default value is used.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => '300', + ], + [ + 'apiName' => 'DeleteLiveLazyPullStreamInfoConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveLazyPullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DomainNameList', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => 'The array of domain names.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'From V2.1.0, all domain names are queried by default. You can also specify specific domain names that you want to query. In this case, separate the domain names with commas (,). You can specify up to 500 domain names in each call.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'a.example.com', - ], - 'required' => false, + ], + [ + 'apiName' => 'DescribeCasterVideoResources', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterVideoResources', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => 'Schema of Response'."\n", - 'type' => 'object', - 'properties' => [ - 'DataInterval' => [ - 'description' => 'The time granularity.'."\n", - 'type' => 'string', - 'example' => '300', - ], - 'EndTime' => [ - 'description' => 'The end of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T21:00:00Z', - ], - 'RequestId' => [ - 'title' => 'Id', - 'description' => 'The ID of the request.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F4CD8', - ], - 'StartTime' => [ - 'description' => 'The beginning of the time range for which the data was queried.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - 'VvData' => [ - 'description' => 'The total number of playbacks and the number of successful playbacks at each interval.'."\n", - 'type' => 'array', - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'TimeStamp' => [ - 'description' => 'The timestamp of the returned data.'."\n", - 'type' => 'string', - 'example' => '2021-12-10T20:00:00Z', - ], - 'VvSuccess' => [ - 'description' => 'The number of successful playbacks within the period of time.'."\n", - 'type' => 'string', - 'example' => '99', - ], - 'VvTotal' => [ - 'description' => 'The total number of playbacks within the period of time.'."\n", - 'type' => 'string', - 'example' => '100', - ], - ], - ], - ], - ], + [ + 'apiName' => 'CheckLiveMessageUsersOnline', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CheckLiveMessageUsersOnline', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'Meter.ParamError', - 'errorMessage' => 'Param Error:%s,Please Check Again.', + [ + 'apiName' => 'ModifyLiveAIStudio', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveAIStudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 403 => [ - [ - 'errorCode' => 'Meter.AuthError', - 'errorMessage' => 'Authentication Failed,Please Try Again.', + ], + [ + 'apiName' => 'RemoveShowFromShowList', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:RemoveShowFromShowList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - 500 => [ - [ - 'errorCode' => 'Meter.ServerInternalError', - 'errorMessage' => 'The Request Processing Has Failed Due To Some Unknown Error.', - ], - [ - 'errorCode' => 'Meter.DataSourceQueryError', - 'errorMessage' => 'Data Source Error:%s,Please Try Again.', + ], + [ + 'apiName' => 'DescribeChannelParticipants', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeChannelParticipants', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - 502 => [ - [ - 'errorCode' => 'Meter.ReadyTsError', - 'errorMessage' => 'Get ReadyTs Failed,Please Try Again.', + ], + [ + 'apiName' => 'DescribeLivePushProxyLog', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePushProxyLog', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"DataInterval\\": \\"300\\",\\n \\"EndTime\\": \\"2021-12-10T21:00:00Z\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F4CD8\\",\\n \\"StartTime\\": \\"2021-12-10T20:00:00Z\\",\\n \\"VvData\\": [\\n {\\n \\"TimeStamp\\": \\"2021-12-10T20:00:00Z\\",\\n \\"VvSuccess\\": \\"99\\",\\n \\"VvTotal\\": \\"100\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'DescribeRTSNativeSDKVvData', - 'description' => 'QPS limit You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see QPS limit.'."\n", - ], - 'DescribeLiveRealtimeLogAuthorized' => [ - 'summary' => 'Queries the status of authorization for real-time log delivery.', - 'methods' => [ - 'get', + [ + 'apiName' => 'DeleteLiveAIStudio', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAIStudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'CreateLivePrivateLine', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLivePrivateLine', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'EnableLiveRealtimeLogDelivery', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:EnableLiveRealtimeLogDelivery', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'DescribeRTSNativeSDKVvData', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATURElive066BXV', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKVvData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DescribeLiveStreamsOnlineList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsOnlineList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'LiveOpenapiReserve', - 'in' => 'query', - 'schema' => [ - 'description' => 'This parameter has no practical significance.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'none', + ], + [ + 'apiName' => 'RecoverLiveMessageDeletedGroup', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:RecoverLiveMessageDeletedGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'AuthorizedStatus' => [ - 'description' => 'The authorization status. **true**: authorized **false**: not authorized'."\n", - 'type' => 'string', - 'example' => 'true', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '5c6a2a0df228-4a64- af62-20e91b******'."\n", - ], - ], - 'description' => '', + [ + 'apiName' => 'DescribeLiveStreamPreloadTasks', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamPreloadTasks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"AuthorizedStatus\\": \\"true\\",\\n \\"RequestId\\": \\"5c6a2a0df228-4a64- af62-20e91b******\\\\n\\"\\n}","type":"json"}]', - 'title' => 'DescribeLiveRealtimeLogAuthorized', - 'description' => 'You can call this operation to query the status of authorization for real-time log delivery.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeUpBpsPeakData' => [ - 'summary' => 'Queries the daily peak inbound bandwidth.', - 'methods' => [ - 'post', - 'get', - ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'UpdateLiveStreamMonitor', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveStreamMonitor', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'ModifyLiveMessageAppCallback', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageAppCallback', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'DescribeLiveDomainTimeShiftData', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainTimeShiftData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'ModifyLiveMessageGroupBand', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageGroupBand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of stream pulling. The time must be in UTC. The maximum time range that can be specified by StartTime and EndTime is 30 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T20:00:00Z', + ], + [ + 'apiName' => 'DeleteLiveDomainPlayMapping', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveDomainPlayMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of stream pulling. The time must be in UTC. The end time must be later than the start time. The maximum time range that can be specified by StartTime and EndTime is 30 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T21:00:00Z', + ], + [ + 'apiName' => 'CheckLiveMessageUsersInGroup', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CheckLiveMessageUsersInGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'DomainSwitch', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to collect statistics at the domain name level. Valid values:'."\n" - ."\n" - .'* on: collects statistics at the domain name level.'."\n" - .'* off: collects statistics at the user level. This is the default value.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'on', - 'enum' => [ - 'on', - 'off', - ], + ], + [ + 'apiName' => 'UpdateEventSub', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:UpdateEventSub', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', + ], + [ + 'apiName' => 'AddCasterEpisodeGroup', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterEpisodeGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'description' => 'The bandwidth information.'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], - 'DescribeUpPeakTraffics' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DescribeUpPeakTraffic' => [ - 'description' => 'The information about peak inbound bandwidth on each day.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about peak inbound bandwidth on each day.'."\n", - 'type' => 'object', - 'properties' => [ - 'QueryTime' => [ - 'description' => 'The time queried on the day.'."\n", - 'type' => 'string', - 'example' => '1522080000000', - ], - 'BandWidth' => [ - 'description' => 'The daily peak inbound bandwidth.'."\n", - 'type' => 'string', - 'example' => '777.2727083333333', - ], - 'StatName' => [ - 'description' => 'The category of the statistical data. If the DomainSwitch parameter is set to on, the value of this parameter is the domain name. If the DomainSwitch parameter is set to off or not specified, the value of this parameter is the user ID.'."\n", - 'type' => 'string', - 'example' => 'push-live.aliyuncs.com', - ], - 'PeakTime' => [ - 'description' => 'The time when the daily peak bandwidth is reached.'."\n", - 'type' => 'string', - 'example' => '1522180000000', - ], - ], - ], - ], - ], - ], - ], + [ + 'apiName' => 'UnbanLiveMessageGroup', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UnbanLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'The specified StartTime is invalid.', + [ + 'apiName' => 'DeleteLiveStreamWatermarkRule', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamWatermarkRule', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', + ], + ], + [ + 'apiName' => 'DescribeLiveStreamWatermarks', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamWatermarks', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', + ], + [ + 'apiName' => 'SendMessageToGroupUsers', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:SendMessageToGroupUsers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', + ], + [ + 'apiName' => 'DescribeDomainWithIntegrity', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeDomainWithIntegrity', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + [ + 'apiName' => 'DescribeLiveEdgeTransfer', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveEdgeTransfer', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"DescribeUpPeakTraffics\\": {\\n \\"DescribeUpPeakTraffic\\": [\\n {\\n \\"QueryTime\\": \\"1522080000000\\",\\n \\"BandWidth\\": \\"777.2727083333333\\",\\n \\"StatName\\": \\"push-live.aliyuncs.com\\",\\n \\"PeakTime\\": \\"1522180000000\\"\\n }\\n ]\\n }\\n}","type":"json"}]', - 'title' => 'DescribeUpBpsPeakData', - 'description' => 'You can call this operation to query the daily peak inbound bandwidth.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 5 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeUpBpsPeakOfLine' => [ - 'summary' => 'Queries the daily peak inbound bandwidth of a leased line.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'CreateMessageGroup', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'CreateCustomTemplate', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateCustomTemplate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'AddLiveMessageGroupBand', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:AddLiveMessageGroupBand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ - 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + [ + 'apiName' => 'RemoveLiveMessageGroupBand', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:RemoveLiveMessageGroupBand', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'UpdateMessageApp', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of stream pulling. The time must be in UTC. The maximum time range that can be specified by StartTime and EndTime is 30 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T20:00:00Z'."\n", + ], + [ + 'apiName' => 'DescribeLiveStreamHistoryUserNum', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamHistoryUserNum', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of stream pulling. The time must be in UTC. The end time must be later than the start time. The maximum time range that can be specified by StartTime and EndTime is 30 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T21:00:00Z'."\n", + ], + [ + 'apiName' => 'BanLiveMessageGroup', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:BanLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'Line', - 'in' => 'query', - 'schema' => [ - 'description' => 'The leased line. Valid values: integers from 0 to 9.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '3', - 'enum' => [ - '0', - '1', - '2', - '3', - '4', - '5', - '6', - '7', - '8', - '9', - ], + ], + [ + 'apiName' => 'ListRtcMPUEventSubRecord', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListRtcMPUEventSubRecord', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'DomainSwitch', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to collect statistics at the domain name level. Valid values:'."\n" - ."\n" - .'* on: collects statistics at the domain name level.'."\n" - .'* off (default): collects statistics at the user level.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'on', - 'enum' => [ - 'on', - 'off', - ], + ], + [ + 'apiName' => 'DescribeCasterSceneAudio', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterSceneAudio', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', + ], + [ + 'apiName' => 'DescribeLivePackageConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLivePackageConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'description' => 'The bandwidth information.'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '6CFDE7AB-571A-14EA-B072-989FF753****', - ], - 'DescribeUpBpsPeakOfLines' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DescribeUpBpsPeakOfLine' => [ - 'description' => 'The information about peak inbound bandwidth of the leased line on each day.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about peak inbound bandwidth of the leased line on each day.'."\n", - 'type' => 'object', - 'properties' => [ - 'QueryTime' => [ - 'description' => 'The time queried on the day.'."\n", - 'type' => 'string', - 'example' => '1522080000000'."\n", - ], - 'StatName' => [ - 'description' => 'The category of the statistical data. If the DomainSwitch parameter is set to on, the value of this parameter is the domain name. If the DomainSwitch parameter is set to off or not specified, the value of this parameter is the user ID.'."\n", - 'type' => 'string', - 'example' => 'push-live.aliyuncs.com'."\n", - ], - 'BandWidth' => [ - 'description' => 'The daily peak inbound bandwidth of the leased line.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '777.2727083333333'."\n", - ], - 'PeakTime' => [ - 'description' => 'The time when the daily peak bandwidth of the leased line is reached.'."\n", - 'type' => 'string', - 'example' => '1522180000000', - ], - ], - ], - ], - ], - ], - ], + [ + 'apiName' => 'SetLiveStreamsNotifyUrlConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:SetLiveStreamsNotifyUrlConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 401 => [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', + [ + 'apiName' => 'CreateLiveMessageGroup', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + [ + 'apiName' => 'AddTrancodeSEI', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddTrancodeSEI', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6CFDE7AB-571A-14EA-B072-989FF753****\\",\\n \\"DescribeUpBpsPeakOfLines\\": {\\n \\"DescribeUpBpsPeakOfLine\\": [\\n {\\n \\"QueryTime\\": \\"1522080000000\\\\n\\",\\n \\"StatName\\": \\"push-live.aliyuncs.com\\",\\n \\"BandWidth\\": 777.2727083333333,\\n \\"PeakTime\\": \\"1522180000000\\"\\n }\\n ]\\n }\\n}","type":"json"}]', - 'title' => 'DescribeUpBpsPeakOfLine', - 'description' => 'You can call this operation to query the daily peak inbound bandwidth of a leased line.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 5 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeUpPeakPublishStreamData' => [ - 'summary' => 'Queries the daily peak number of concurrently ingested streams.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'DescribeRtcCloudRecordingFiles', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRtcCloudRecordingFiles', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'SetLiveLazyPullStreamInfoConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveLazyPullStreamInfoConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'DescribeLiveStreamMetricDetailData', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamMetricDetailData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'GetMessageToken', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveYUZBM3', + 'ramAction' => [ + 'action' => 'live:GetMessageToken', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'DeleteLiveSnapshotDetectPornConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveSnapshotDetectPornConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The start time of stream pulling. The time must be in UTC. The maximum time range that can be specified by StartTime and EndTime is 30 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T20:00:00Z'."\n", + ], + [ + 'apiName' => 'AddRtsLiveStreamTranscode', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddRtsLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end time of stream pulling. The time must be in UTC. The end time must be later than the start time. The maximum time range that can be specified by StartTime and EndTime is 30 days.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T21:00:00Z'."\n", + ], + [ + 'apiName' => 'DeleteMixStream', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteMixStream', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'DomainSwitch', - 'in' => 'query', - 'schema' => [ - 'description' => 'Specifies whether to collect statistics at the domain name level. Valid values:'."\n" - ."\n" - .'* on: collects statistics at the domain name level.'."\n" - .'* off (default): collects statistics at the user level.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'on', - 'enum' => [ - 'on', - 'off', - ], + ], + [ + 'apiName' => 'SendLiveMessageGroup', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:SendLiveMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'DomainName', - 'in' => 'query', - 'schema' => [ - 'description' => 'The accelerated domain name.'."\n", - 'type' => 'string', - 'required' => false, - 'example' => 'example.com', + ], + [ + 'apiName' => 'ListLiveMessageGroupByPage', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListLiveMessageGroupByPage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'description' => 'The stream ingest information.'."\n", - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '6CFDE7AB-571A-14EA-B072-989FF753****'."\n", - ], - 'DescribeUpPeakPublishStreamDatas' => [ - 'type' => 'object', - 'itemNode' => true, - 'properties' => [ - 'DescribeUpPeakPublishStreamData' => [ - 'description' => 'The information about the peak number of concurrently ingested streams on each day.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the peak number of concurrently ingested streams on each day.'."\n", - 'type' => 'object', - 'properties' => [ - 'QueryTime' => [ - 'description' => 'The time queried on the day.'."\n", - 'type' => 'string', - 'example' => '1522080000000'."\n", - ], - 'BandWidth' => [ - 'description' => 'The daily peak inbound bandwidth.'."\n", - 'type' => 'string', - 'example' => '777.2727083333333', - ], - 'StatName' => [ - 'description' => 'The category of the statistical data. If the DomainSwitch parameter is set to on, the value of this parameter is the domain name. If the DomainSwitch parameter is set to off or not specified, the value of this parameter is the user ID.'."\n", - 'type' => 'string', - 'example' => 'push-live.aliyuncs.com', - ], - 'PeakTime' => [ - 'description' => 'The time when the daily peak number of concurrently ingested streams is reached.'."\n", - 'type' => 'string', - 'example' => '1522180000000'."\n", - ], - 'PublishStreamNum' => [ - 'description' => 'The daily peak number of concurrently ingested streams.'."\n", - 'type' => 'integer', - 'format' => 'int32', - 'example' => '36', - ], - ], - ], - ], - ], - ], - ], + [ + 'apiName' => 'DescribeStreamLocationBlock', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeStreamLocationBlock', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidStartTime.Malformed', - 'errorMessage' => 'The specified StartTime is invalid.', + [ + 'apiName' => 'ModifyShowList', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyShowList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - [ - 'errorCode' => 'InvalidEndTime.Malformed', - 'errorMessage' => 'Specified EndTime is malformed.', + ], + ], + [ + 'apiName' => 'UpdateRtcCloudRecording', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateRtcCloudRecording', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - [ - 'errorCode' => 'IllegalOperation', - 'errorMessage' => '%s, please check and try again later.', + ], + [ + 'apiName' => 'DeleteLiveRecordVodConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveRecordVodConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 404 => [ - [ - 'errorCode' => 'InvalidCaster.NotFound', - 'errorMessage' => '%s, please check and try again later.', + ], + [ + 'apiName' => 'ListEventSub', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListEventSub', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s, please try again later.', + ], + [ + 'apiName' => 'DescribeLiveDomainLog', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainLog', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"6CFDE7AB-571A-14EA-B072-989FF753****\\\\n\\",\\n \\"DescribeUpPeakPublishStreamDatas\\": {\\n \\"DescribeUpPeakPublishStreamData\\": [\\n {\\n \\"QueryTime\\": \\"1522080000000\\\\n\\",\\n \\"BandWidth\\": \\"777.2727083333333\\",\\n \\"StatName\\": \\"push-live.aliyuncs.com\\",\\n \\"PeakTime\\": \\"1522180000000\\\\n\\",\\n \\"PublishStreamNum\\": 36\\n }\\n ]\\n }\\n}","type":"json"}]', - 'title' => 'DescribeUpPeakPublishStreamData', - 'description' => 'You can call this operation to query the daily peak number of concurrently ingested streams.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeDomainWithIntegrity' => [ - 'summary' => 'Obtains domain integrity.', - 'methods' => [ - 'get', + [ + 'apiName' => 'ModifyStudioLayout', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyStudioLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'DescribeLiveRecordVodConfigs', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRecordVodConfigs', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'ListEventSubEvent', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListEventSubEvent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'DeleteCasterVideoResource', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterVideoResource', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], + ], + [ + 'apiName' => 'DescribeLiveUserTags', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeCode' => '112159', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:DescribeLiveUserTags', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'AddLiveAIProduceRules', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAIProduceRules', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T20:00:00Z', + ], + [ + 'apiName' => 'DescribeLiveStreamsBlockList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsBlockList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. Specify the time in the ISO 8601 standard. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T20:00:00Z', + ], + [ + 'apiName' => 'CreateRtcAsrTask', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateRtcAsrTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'Integrity', - 'in' => 'query', - 'schema' => [ - 'description' => 'The integrity.'."\n", - 'type' => 'number', - 'format' => 'float', - 'required' => true, - 'example' => '0.95', + ], + [ + 'apiName' => 'SetLiveStreamBlock', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetLiveStreamBlock', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], - 'Content' => [ - 'description' => 'The verification information.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The verification information.'."\n", - 'type' => 'object', - 'properties' => [ - 'Name' => [ - 'description' => 'The table name.'."\n", - 'type' => 'string', - 'example' => '1637825700000', - ], - 'Points' => [ - 'description' => 'The subpoints.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The value of the column.'."\n", - 'type' => 'string', - 'example' => '1637825700000', - ], - ], - 'Columns' => [ - 'description' => 'The column names.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The column name.'."\n", - 'type' => 'string', - 'example' => 'time', - ], - ], - ], - ], - ], - ], - 'description' => '', + [ + 'apiName' => 'SendMessageToGroup', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:SendMessageToGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"Content\\": [\\n {\\n \\"Name\\": \\"1637825700000\\",\\n \\"Points\\": [\\n \\"1637825700000\\"\\n ],\\n \\"Columns\\": [\\n \\"time\\"\\n ]\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'DescribeDomainWithIntegrity', - 'description' => 'You can call this operation to obtain domain integrity.'."\n" - ."\n" - .'## [](#qps-)QPS limits'."\n" - ."\n" - .'You can call this API operation up to 10 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeToutiaoLivePlay' => [ - 'summary' => 'Queries the stream pulling information about a live stream of a headline.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'AddCasterVideoResource', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterVideoResource', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'StopRtcCloudTranscode', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:StopRtcCloudTranscode', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'UpdateLiveDelayConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:UpdateLiveDelayConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'DescribeLiveStreamsNotifyUrlConfig', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamsNotifyUrlConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'AddLiveDomain', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveDomain', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T20:00:00Z', + ], + [ + 'apiName' => 'StartCaster', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. The end time must be later than the start time. The time span cannot be greater than 10 hours. If you do not configure StartTime and EndTime, the data within the previous hour is queried. Specify the time in the ISO 8601 standard. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T20:00:00Z', + ], + [ + 'apiName' => 'UpdateLiveSnapshotNotifyConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveSnapshotNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + ], + [ + 'apiName' => 'BatchGetOnlineUsers', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:BatchGetOnlineUsers', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'Stream', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', + ], + [ + 'apiName' => 'StartCasterScene', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartCasterScene', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', + ], + [ + 'apiName' => 'CreateLiveAIStudio', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveAIStudio', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Description' => [ - 'description' => 'The description of the response status.'."\n", - 'type' => 'string', - 'example' => 'OK', - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], - 'Content' => [ - 'description' => 'The information about the live stream.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The information about the live stream.'."\n", - 'type' => 'object', - 'properties' => [ - 'Domain' => [ - 'description' => 'The streaming domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'Bandwidth' => [ - 'description' => 'The bandwidth. Unit: Mbit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0.0801239013671875', - ], - 'StreamName' => [ - 'description' => 'The name of the live stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'App' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****'."\n", - ], - 'PlayNum' => [ - 'description' => 'The number of viewers.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '452', - ], - 'Timestamp' => [ - 'description' => 'The timestamp.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1625484600', - ], - 'CdnName' => [ - 'description' => 'The Content Delivery Network (CDN) name.'."\n", - 'type' => 'string', - 'example' => 'ali', - ], - ], - ], - ], - ], - 'description' => '', + [ + 'apiName' => 'DeleteSnapshotFiles', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteSnapshotFiles', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"OK\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"Content\\": [\\n {\\n \\"Domain\\": \\"example.com\\",\\n \\"Bandwidth\\": 0.0801239013671875,\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"App\\": \\"liveApp****\\\\n\\",\\n \\"PlayNum\\": 452,\\n \\"Timestamp\\": 1625484600,\\n \\"CdnName\\": \\"ali\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'DescribeToutiaoLivePlay', - 'description' => 'You can call this operation to query the stream pulling information about a live stream of a headline.'."\n" - ."\n" - .'## [](#qps-)QPS limits'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeToutiaoLivePublish' => [ - 'summary' => 'Queries the ingest information of a specified live stream that is ingested to Toutiao.', - 'methods' => [ - 'post', - 'get', + [ + 'apiName' => 'DescribeLiveRecordNotifyConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRecordNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'schemes' => [ - 'http', - 'https', + [ + 'apiName' => 'UpdateLiveAppSnapshotConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLiveAppSnapshotConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'CloseLiveShift', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:CloseLiveShift', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'read', - 'systemTags' => [ + [ + 'apiName' => 'GetMessageGroup', + 'description' => '', 'operationType' => 'get', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveG4SX14', + 'ramAction' => [ + 'action' => 'live:GetMessageGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'parameters' => [ - [ - 'name' => 'RegionId', - 'in' => 'query', - 'schema' => [ - 'type' => 'string', - 'required' => false, - 'default' => 'cn-shanghai', + [ + 'apiName' => 'AddLiveRecordVodConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveRecordVodConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'StartTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The beginning of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T20:00:00Z'."\n", + ], + [ + 'apiName' => 'DescribeLiveDomainOnlineUserNum', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainOnlineUserNum', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], + ], + [ + 'apiName' => 'CreateRtcMPUEventSub', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateRtcMPUEventSub', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'EndTime', - 'in' => 'query', - 'schema' => [ - 'description' => 'The end of the time range to query. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. The end time must be later than the start time. The maximum time range that can be specified is 10 hours. If you specify neither StartTime nor EndTime, the data of the last hour is queried by default.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => '2017-10-10T21:00:00Z'."\n", + ], + [ + 'apiName' => 'DeletePlaylist', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeletePlaylist', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'Domain', - 'in' => 'query', - 'schema' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'example.com', + ], + [ + 'apiName' => 'DeleteLiveStreamWatermark', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamWatermark', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'Stream', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the ingested stream.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveStream****', + ], + [ + 'apiName' => 'ModifyLiveMessageAppAudit', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageAppAudit', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], - [ - 'name' => 'App', - 'in' => 'query', - 'schema' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'required' => true, - 'example' => 'liveApp****', + ], + [ + 'apiName' => 'DescribeLiveAISubtitle', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAISubtitle', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'type' => 'object', - 'properties' => [ - 'Description' => [ - 'description' => 'The description of the response status.'."\n", - 'type' => 'string', - 'example' => 'OK'."\n", - ], - 'RequestId' => [ - 'description' => 'The request ID.'."\n", - 'type' => 'string', - 'example' => '16A96B9A-F203-4EC5-8E43-CB92E68F****', - ], - 'Content' => [ - 'description' => 'The stream ingest details.'."\n", - 'type' => 'array', - 'items' => [ - 'description' => 'The stream ingest details.'."\n", - 'type' => 'object', - 'properties' => [ - 'Domain' => [ - 'description' => 'The ingest domain.'."\n", - 'type' => 'string', - 'example' => 'example.com', - ], - 'StreamName' => [ - 'description' => 'The name of the ingested stream.'."\n", - 'type' => 'string', - 'example' => 'liveStream****', - ], - 'App' => [ - 'description' => 'The name of the application to which the live stream belongs.'."\n", - 'type' => 'string', - 'example' => 'liveApp****'."\n", - ], - 'Fps' => [ - 'description' => 'The frame rate.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '74.4', - ], - 'Flr' => [ - 'description' => 'The number of dropped frames.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0', - ], - 'Timestamp' => [ - 'description' => 'The timestamp.'."\n", - 'type' => 'integer', - 'format' => 'int64', - 'example' => '1624358970', - ], - 'Bitrate' => [ - 'description' => 'The bitrate. Unit: bit/s.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '261587', - ], - 'BwDiff' => [ - 'description' => 'The bitrate difference.'."\n", - 'type' => 'number', - 'format' => 'float', - 'example' => '0', - ], - 'CdnName' => [ - 'description' => 'The name of the content delivery network (CDN) service.'."\n", - 'type' => 'string', - 'example' => 'ali', - ], - ], - ], - ], - ], - 'description' => '', + [ + 'apiName' => 'QueryLiveDomainMultiStreamList', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:QueryLiveDomainMultiStreamList', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Description\\": \\"OK\\\\n\\",\\n \\"RequestId\\": \\"16A96B9A-F203-4EC5-8E43-CB92E68F****\\",\\n \\"Content\\": [\\n {\\n \\"Domain\\": \\"example.com\\",\\n \\"StreamName\\": \\"liveStream****\\",\\n \\"App\\": \\"liveApp****\\\\n\\",\\n \\"Fps\\": 74.4,\\n \\"Flr\\": 0,\\n \\"Timestamp\\": 1624358970,\\n \\"Bitrate\\": 261587,\\n \\"BwDiff\\": 0,\\n \\"CdnName\\": \\"ali\\"\\n }\\n ]\\n}","type":"json"}]', - 'title' => 'DescribeToutiaoLivePublish', - 'description' => 'You can call this operation to query the ingest information of a specified live stream that is ingested to Toutiao.'."\n" - ."\n" - .'## [](#qps-)QPS limit'."\n" - ."\n" - .'You can call this operation up to 100 times per second per account. Requests that exceed this limit are dropped and you will experience service interruptions. We recommend that you take note of this limit when you call this operation. For more information, see [QPS limits](~~343507~~).'."\n", - ], - 'DescribeRtcCloudTranscode' => [ - 'summary' => '查询云端转码任务', - 'path' => '', - 'methods' => [ - 'post', + [ + 'apiName' => 'DescribeCasterProgram', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterProgram', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'schemes' => [ - 'https', + [ + 'apiName' => 'AddStudioLayout', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddStudioLayout', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'RestartLivePullToPush', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:RestartLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', + [ + 'apiName' => 'DescribeLiveDomainPushBpsData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainPushBpsData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], - 'tenantRelevance' => 'tenant', ], - 'parameters' => [ - [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '********-7074-****-9ef5-85c19a4*****', + [ + 'apiName' => 'AddLiveDomainMapping', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveDomainMapping', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'TaskId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '******73-8501-****-8ac1-72295a******', + ], + [ + 'apiName' => 'ModifyLiveMessageAppDisable', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageAppDisable', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => '', - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'TaskInfo' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'AppId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '********-7074-****-9ef5-85c19a4*****', - ], - 'ChannelId' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'myChannel', - ], - 'TaskId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******', - ], - 'Status' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'RUNNING', - ], - 'InputParam' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'SingleSubUserParam' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'userA', - ], - 'StreamType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - 'SourceType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '0', - ], - ], - ], - ], - ], - 'OutputParams' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'ChannelId' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'myChannel', - ], - 'UserId' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'userA_360p', - ], - 'UserToken' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'eyJhcHBpZCI********', - ], - 'TranscodeTemplate' => [ - 'description' => '', - 'type' => 'string', - 'example' => 'lhd', - ], - ], - ], - ], - 'MaxIdleTime' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'example' => '600', - ], - ], - ], - ], + [ + 'apiName' => 'StopLiveMPUTask', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:StopLiveMPUTask', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter%s', - 'errorMessage' => '%s.', + [ + 'apiName' => 'DescribeLiveDelayedStreamingUsage', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDelayedStreamingUsage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], - [ - 'errorCode' => 'MissingParameter%s', - 'errorMessage' => '%s.', + ], + ], + [ + 'apiName' => 'ListMessage', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessage', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'TooManyRequests', - 'errorMessage' => '%s.', + ], + ], + [ + 'apiName' => 'DescribeLiveRecordNotifyRecords', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveRecordNotifyRecords', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 403 => [ - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'UpdateLivePullToPush', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - [ - 'errorCode' => 'NotFound%s', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'GetCustomTemplate', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:GetCustomTemplate', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'ModifyLiveMessageUserInfo', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:ModifyLiveMessageUserInfo', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + [ + 'apiName' => 'DeleteLiveAppSnapshotConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAppSnapshotConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TaskInfo\\": {\\n \\"AppId\\": \\"********-7074-****-9ef5-85c19a4*****\\",\\n \\"ChannelId\\": \\"myChannel\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\",\\n \\"Status\\": \\"RUNNING\\",\\n \\"InputParam\\": {\\n \\"SingleSubUserParam\\": {\\n \\"UserId\\": \\"userA\\",\\n \\"StreamType\\": 0,\\n \\"SourceType\\": 0\\n }\\n },\\n \\"OutputParams\\": [\\n {\\n \\"ChannelId\\": \\"myChannel\\",\\n \\"UserId\\": \\"userA_360p\\",\\n \\"UserToken\\": \\"eyJhcHBpZCI********\\",\\n \\"TranscodeTemplate\\": \\"lhd\\"\\n }\\n ],\\n \\"MaxIdleTime\\": 600\\n }\\n}","type":"json"}]', - ], - 'StartRtcCloudTranscode' => [ - 'summary' => '创建云端转码任务', - 'path' => '', - 'methods' => [ - 'post', + [ + 'apiName' => 'AddLiveAppSnapshotConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveAppSnapshotConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'https', + [ + 'apiName' => 'DescribeLiveDomainPushTrafficData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainPushTrafficData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'ListMessageApp', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', + [ + 'apiName' => 'StopLivePullToPush', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], - 'tenantRelevance' => 'tenant', ], - 'parameters' => [ - [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '********-7074-****-9ef5-85c19a4*****', + [ + 'apiName' => 'DescribeLiveAudioAuditConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveAudioAuditConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - [ - 'name' => 'ChannelId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'myChannel', + ], + [ + 'apiName' => 'DeleteCasterEpisodeGroup', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteCasterEpisodeGroup', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'InputParam', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'SingleSubUserParam' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'UserId' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'userA', - ], - 'StreamType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '0', - ], - 'SourceType' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '0', - ], - ], - 'required' => true, - ], - ], - 'required' => true, + ], + [ + 'apiName' => 'DescribeCasterComponents', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeCasterComponents', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - 'name' => 'OutputParams', - 'in' => 'query', - 'style' => 'json', - 'schema' => [ - 'description' => '', - 'type' => 'array', - 'items' => [ - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'ChannelId' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'myChannel', - ], - 'UserId' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'userA_360p', - ], - 'UserToken' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'eyJhcHBpZCI********', - ], - 'TranscodeTemplate' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => 'lhd', - ], - ], - 'required' => false, - ], - 'required' => true, + ], + [ + 'apiName' => 'PublishLiveStagingConfigToProduction', + 'description' => '', + 'operationType' => 'none', + 'ramAction' => [ + 'action' => 'live:PublishLiveStagingConfigToProduction', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'MaxIdleTime', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'integer', - 'format' => 'int64', - 'required' => false, - 'example' => '600', + ], + [ + 'apiName' => 'StopLiveStreamMonitor', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopLiveStreamMonitor', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => '', - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - 'TaskId' => [ - 'description' => '', - 'type' => 'string', - 'example' => '******73-8501-****-8ac1-72295a******', - ], - ], + [ + 'apiName' => 'DescribeLiveLazyPullStreamConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveLazyPullStreamConfig', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter%s', - 'errorMessage' => '%s.', + [ + 'apiName' => 'DescribeLiveStreamBitRateData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveStreamBitRateData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], - [ - 'errorCode' => 'MissingParameter%s', - 'errorMessage' => '%s.', + ], + ], + [ + 'apiName' => 'ListMuteGroupUser', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:ListMuteGroupUser', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], - [ - 'errorCode' => 'TooManyRequests', - 'errorMessage' => '%s.', + ], + ], + [ + 'apiName' => 'DeleteRtcMPUEventSub', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteRtcMPUEventSub', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 403 => [ - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'AddLiveSnapshotNotifyConfig', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveSnapshotNotifyConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - [ - 'errorCode' => 'NotFound%s', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'DescribeLiveDomainMonitoringUsageData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainMonitoringUsageData', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'DescribeLiveVerifyContent', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveVerifyContent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + [ + 'apiName' => 'DescribeLiveDomainMultiStreamConfig', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainMultiStreamConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\",\\n \\"TaskId\\": \\"******73-8501-****-8ac1-72295a******\\"\\n}","type":"json"}]', - ], - 'StopRtcCloudTranscode' => [ - 'summary' => '停止云端转码任务', - 'path' => '', - 'methods' => [ - 'post', + [ + 'apiName' => 'StartEdgeTranscodeJob', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StartEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], + ], ], - 'schemes' => [ - 'https', + [ + 'apiName' => 'AddLiveStreamWatermark', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddLiveStreamWatermark', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'security' => [ - [ - 'AK' => [], + [ + 'apiName' => 'CreateLivePullToPush', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLivePullToPush', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], ], ], - 'operationType' => 'readAndWrite', - 'deprecated' => false, - 'systemTags' => [ - 'operationType' => 'none', - 'riskType' => 'none', - 'chargeType' => 'free', - 'abilityTreeNodes' => [ - 'FEATUREliveK6LRQR', + [ + 'apiName' => 'ListEdgeTranscodeJob', + 'description' => '', + 'operationType' => 'list', + 'ramAction' => [ + 'action' => 'live:ListEdgeTranscodeJob', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ], ], - 'tenantRelevance' => 'tenant', ], - 'parameters' => [ - [ - 'name' => 'AppId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '********-7074-****-9ef5-85c19a4*****', + [ + 'apiName' => 'DeleteLiveAppRecordConfig', + 'description' => '', + 'operationType' => 'delete', + 'ramAction' => [ + 'action' => 'live:DeleteLiveAppRecordConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - [ - 'name' => 'TaskId', - 'in' => 'query', - 'schema' => [ - 'description' => '', - 'type' => 'string', - 'required' => true, - 'example' => '******73-8501-****-8ac1-72295a******', + ], + [ + 'apiName' => 'AddCasterEpisodeGroupContent', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:AddCasterEpisodeGroupContent', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'responses' => [ - 200 => [ - 'schema' => [ - 'title' => 'Schema of Response', - 'description' => '', - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'title' => 'Id of the request', - 'description' => '', - 'type' => 'string', - 'example' => '******3B-0E1A-586A-AC29-742247******', - ], - ], + [ + 'apiName' => 'DescribeRTSNativeSDKFirstFrameDelay', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeRTSNativeSDKFirstFrameDelay', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], ], ], ], - 'errorCodes' => [ - 400 => [ - [ - 'errorCode' => 'InvalidParameter%s', - 'errorMessage' => '%s.', + [ + 'apiName' => 'SetCasterSceneConfig', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:SetCasterSceneConfig', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - [ - 'errorCode' => 'MissingParameter%s', - 'errorMessage' => '%s.', + ], + ], + [ + 'apiName' => 'StopCaster', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:StopCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], - [ - 'errorCode' => 'TooManyRequests', - 'errorMessage' => '%s.', + ], + ], + [ + 'apiName' => 'CreateLiveMessageApp', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateLiveMessageApp', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], - 403 => [ - [ - 'errorCode' => 'Forbidden', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'CreateCaster', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:CreateCaster', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], ], ], - [ - [ - 'errorCode' => 'NotFound%s', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'UpdateRtsLiveStreamTranscode', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:UpdateRtsLiveStreamTranscode', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], ], ], - 500 => [ - [ - 'errorCode' => 'InternalError', - 'errorMessage' => '%s.', + ], + [ + 'apiName' => 'DescribeLiveDomainStreamTranscodeData', + 'description' => '', + 'operationType' => 'get', + 'ramAction' => [ + 'action' => 'live:DescribeLiveDomainStreamTranscodeData', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], - 'staticInfo' => [ - 'returnType' => 'synchronous', + [ + 'apiName' => 'StartRtcCloudRecording', + 'description' => '', + 'operationType' => 'create', + 'ramAction' => [ + 'action' => 'live:StartRtcCloudRecording', + 'authLevel' => 'operate', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'All Resource', 'arn' => '*'], + ], + ], ], - 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"******3B-0E1A-586A-AC29-742247******\\"\\n}","type":"json"}]', - ], - ], - 'endpoints' => [ - [ - 'regionId' => 'cn-qingdao', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-5', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'ap-northeast-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'ap-northeast-2-pop', - 'endpoint' => 'live.ap-southeast-1.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing-finance-pop', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing-gov-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-beijing-nu16-b01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-edge-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-fujian', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-haidian-cm12-c01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-bj-b01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-internal-prod-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-internal-test-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-internal-test-2', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-internal-test-3', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hangzhou-test-306', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-hongkong-finance-pop', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-huhehaote-nebula-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-north-2-gov-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-qingdao-nebula', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-et15-b01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-et2-b01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-inner', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shanghai-internal-test-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen-inner', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen-st4-d01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-shenzhen-su18-b01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-wuhan', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-yushanfang', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhangbei', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhangbei-na61-b01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhangjiakou-na62-a01', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'cn-zhengzhou-nebula-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'eu-west-1-oxs', - 'endpoint' => 'live.ap-southeast-1.aliyuncs.com', - ], - [ - 'regionId' => 'rus-west-1-pop', - 'endpoint' => 'live.ap-southeast-1.aliyuncs.com', - ], - [ - 'regionId' => 'me-central-1', - 'endpoint' => 'live.aliyuncs.com', - ], - [ - 'regionId' => 'ap-southeast-1', - 'endpoint' => 'live.ap-southeast-1.aliyuncs.com', - ], - [ - 'regionId' => 'eu-central-1', - 'endpoint' => 'live.eu-central-1.aliyuncs.com', + [ + 'apiName' => 'DeleteLiveStreamMerge', + 'description' => '', + 'operationType' => 'update', + 'ramAction' => [ + 'action' => 'live:DeleteLiveStreamMerge', + 'authLevel' => 'resource', + 'actionConditions' => [], + 'resources' => [ + ['validationType' => 'always', 'product' => 'Live', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ], + ], + ], + ], + 'resourceTypes' => [ + ['validationType' => 'always', 'resourceType' => 'Domain', 'arn' => 'acs:live:*:{#accountId}:domain/{#DomainName}'], + ['validationType' => 'always', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:caster/{#CasterId}'], + ['validationType' => 'always', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#DomainName}'], + ['validationType' => 'always', 'resourceType' => 'Caster', 'arn' => 'acs:live:*:{#accountId}:*'], + ['validationType' => 'always', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/{#AppId}'], + ['validationType' => 'always', 'resourceType' => 'MixStream', 'arn' => 'acs:live:*:{#accountId}:mixstream/{#MixStreamId}'], + ['validationType' => 'always', 'resourceType' => 'Domain', 'arn' => 'acs:live::{#accountId}:domain/{#DomainName}'], + ['validationType' => 'always', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#domainId}'], + ['validationType' => 'always', 'resourceType' => 'Rtc', 'arn' => 'acs:live:*:{#accountId}:rtc/{#AppId}'], + ['validationType' => 'always', 'resourceType' => 'Domain', 'arn' => 'acs:cdn:*:{#accountId}:domain/{#Action}'], + ['validationType' => 'always', 'resourceType' => 'Rtc', 'arn' => 'acs:live::{#accountId}:rtc/*'], ], ], ]; -- cgit v1.2.3