createOriginEndpoint

The endpoint is attached to a channel, and represents the output of the live content. You can associate multiple endpoints to a single channel. Each endpoint gives players and downstream CDNs (such as Amazon CloudFront) access to the content for playback. Content can't be served from a channel until it has an endpoint. You can create only one endpoint with each request.

Samples

import aws.sdk.kotlin.services.mediapackagev2.model.AdMarkerDash
import aws.sdk.kotlin.services.mediapackagev2.model.AdMarkerHls
import aws.sdk.kotlin.services.mediapackagev2.model.CmafEncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.ContainerType
import aws.sdk.kotlin.services.mediapackagev2.model.CreateDashManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateHlsManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateLowLatencyHlsManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateMssManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.DashBaseUrl
import aws.sdk.kotlin.services.mediapackagev2.model.DashCompactness
import aws.sdk.kotlin.services.mediapackagev2.model.DashDrmSignaling
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbFontDownload
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbMetricsReporting
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbSettings
import aws.sdk.kotlin.services.mediapackagev2.model.DashPeriodTrigger
import aws.sdk.kotlin.services.mediapackagev2.model.DashProfile
import aws.sdk.kotlin.services.mediapackagev2.model.DashProgramInformation
import aws.sdk.kotlin.services.mediapackagev2.model.DashSegmentTemplateFormat
import aws.sdk.kotlin.services.mediapackagev2.model.DashUtcTiming
import aws.sdk.kotlin.services.mediapackagev2.model.DashUtcTimingMode
import aws.sdk.kotlin.services.mediapackagev2.model.DrmSystem
import aws.sdk.kotlin.services.mediapackagev2.model.Encryption
import aws.sdk.kotlin.services.mediapackagev2.model.EncryptionContractConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.EncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.EndpointErrorCondition
import aws.sdk.kotlin.services.mediapackagev2.model.ForceEndpointErrorConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.IsmEncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.MssManifestLayout
import aws.sdk.kotlin.services.mediapackagev2.model.PresetSpeke20Audio
import aws.sdk.kotlin.services.mediapackagev2.model.PresetSpeke20Video
import aws.sdk.kotlin.services.mediapackagev2.model.Scte
import aws.sdk.kotlin.services.mediapackagev2.model.ScteDash
import aws.sdk.kotlin.services.mediapackagev2.model.ScteFilter
import aws.sdk.kotlin.services.mediapackagev2.model.ScteHls
import aws.sdk.kotlin.services.mediapackagev2.model.Segment
import aws.sdk.kotlin.services.mediapackagev2.model.SpekeKeyProvider
import aws.sdk.kotlin.services.mediapackagev2.model.TsEncryptionMethod

fun main() { 
   //sampleStart 
   // Creating an OriginEndpoint with container type TS, and encryption enabled
val resp = mediaPackageV2Client.createOriginEndpoint {
    channelGroupName = "exampleChannelGroup"
    channelName = "exampleChannel"
    originEndpointName = "exampleOriginEndpointTS"
    containerType = ContainerType.fromValue("TS")
    description = "Description for exampleOriginEndpointTS"
    startoverWindowSeconds = 300
    forceEndpointErrorConfiguration = ForceEndpointErrorConfiguration {
        endpointErrorConditions = listOf<EndpointErrorCondition>(
            EndpointErrorCondition.fromValue("STALE_MANIFEST"),
            EndpointErrorCondition.fromValue("INCOMPLETE_MANIFEST"),
            EndpointErrorCondition.fromValue("MISSING_DRM_KEY"),
            EndpointErrorCondition.fromValue("SLATE_INPUT")
        )
    }
    segment = Segment {
        segmentDurationSeconds = 6
        segmentName = "segmentName"
        tsUseAudioRenditionGroup = true
        includeIframeOnlyStreams = true
        tsIncludeDvbSubtitles = true
        scte = Scte {
            scteFilter = listOf<ScteFilter>(
                ScteFilter.fromValue("SPLICE_INSERT"),
                ScteFilter.fromValue("BREAK")
            )
        }
        encryption = Encryption {
            constantInitializationVector = "A382A901F3C1F7718512266CFFBB0B7E"
            encryptionMethod = EncryptionMethod {
                tsEncryptionMethod = TsEncryptionMethod.fromValue("AES_128")
            }
            keyRotationIntervalSeconds = 300
            spekeKeyProvider = SpekeKeyProvider {
                encryptionContractConfiguration = EncryptionContractConfiguration {
                    presetSpeke20Audio = PresetSpeke20Audio.fromValue("SHARED")
                    presetSpeke20Video = PresetSpeke20Video.fromValue("SHARED")
                }
                resourceId = "ResourceId"
                drmSystems = listOf<DrmSystem>(
                    DrmSystem.fromValue("CLEAR_KEY_AES_128")
                )
                roleArn = "arn:aws:iam::123456789012:role/empRole"
                url = "https://foo.com"
            }
        }
    }
    hlsManifests = listOf<CreateHlsManifestConfiguration>(
        CreateHlsManifestConfiguration {
            manifestName = "exampleManifest1"
            childManifestName = "exampleChildManifest1"
            scteHls = ScteHls {
                adMarkerHls = AdMarkerHls.fromValue("DATERANGE")
            }
            manifestWindowSeconds = 30
            programDateTimeIntervalSeconds = 60
        },
        CreateHlsManifestConfiguration {
            manifestName = "exampleManifest2"
            childManifestName = "exampleManifest2"
            scteHls = ScteHls {
                adMarkerHls = AdMarkerHls.fromValue("DATERANGE")
            }
            manifestWindowSeconds = 30
            programDateTimeIntervalSeconds = 60
        }            
    )
    lowLatencyHlsManifests = listOf<CreateLowLatencyHlsManifestConfiguration>(
        CreateLowLatencyHlsManifestConfiguration {
            manifestName = "exampleLLManifest1"
            childManifestName = "exampleLLChildManifest1"
            scteHls = ScteHls {
                adMarkerHls = AdMarkerHls.fromValue("DATERANGE")
            }
            manifestWindowSeconds = 30
            programDateTimeIntervalSeconds = 60
        },
        CreateLowLatencyHlsManifestConfiguration {
            manifestName = "exampleLLManifest2"
            childManifestName = "exampleLLManifest2"
            scteHls = ScteHls {
                adMarkerHls = AdMarkerHls.fromValue("DATERANGE")
            }
            manifestWindowSeconds = 30
            programDateTimeIntervalSeconds = 60
        }            
    )
    tags = mapOf<String, String>(
        "key1" to "value1",
        "key2" to "value2"
    )
} 
   //sampleEnd
}
import aws.sdk.kotlin.services.mediapackagev2.model.AdMarkerDash
import aws.sdk.kotlin.services.mediapackagev2.model.AdMarkerHls
import aws.sdk.kotlin.services.mediapackagev2.model.CmafEncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.ContainerType
import aws.sdk.kotlin.services.mediapackagev2.model.CreateDashManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateHlsManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateLowLatencyHlsManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateMssManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.DashBaseUrl
import aws.sdk.kotlin.services.mediapackagev2.model.DashCompactness
import aws.sdk.kotlin.services.mediapackagev2.model.DashDrmSignaling
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbFontDownload
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbMetricsReporting
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbSettings
import aws.sdk.kotlin.services.mediapackagev2.model.DashPeriodTrigger
import aws.sdk.kotlin.services.mediapackagev2.model.DashProfile
import aws.sdk.kotlin.services.mediapackagev2.model.DashProgramInformation
import aws.sdk.kotlin.services.mediapackagev2.model.DashSegmentTemplateFormat
import aws.sdk.kotlin.services.mediapackagev2.model.DashUtcTiming
import aws.sdk.kotlin.services.mediapackagev2.model.DashUtcTimingMode
import aws.sdk.kotlin.services.mediapackagev2.model.DrmSystem
import aws.sdk.kotlin.services.mediapackagev2.model.Encryption
import aws.sdk.kotlin.services.mediapackagev2.model.EncryptionContractConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.EncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.EndpointErrorCondition
import aws.sdk.kotlin.services.mediapackagev2.model.ForceEndpointErrorConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.IsmEncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.MssManifestLayout
import aws.sdk.kotlin.services.mediapackagev2.model.PresetSpeke20Audio
import aws.sdk.kotlin.services.mediapackagev2.model.PresetSpeke20Video
import aws.sdk.kotlin.services.mediapackagev2.model.Scte
import aws.sdk.kotlin.services.mediapackagev2.model.ScteDash
import aws.sdk.kotlin.services.mediapackagev2.model.ScteFilter
import aws.sdk.kotlin.services.mediapackagev2.model.ScteHls
import aws.sdk.kotlin.services.mediapackagev2.model.Segment
import aws.sdk.kotlin.services.mediapackagev2.model.SpekeKeyProvider
import aws.sdk.kotlin.services.mediapackagev2.model.TsEncryptionMethod

fun main() { 
   //sampleStart 
   // Creating an OriginEndpoint with container type CMAF, and encryption enabled
val resp = mediaPackageV2Client.createOriginEndpoint {
    channelGroupName = "exampleChannelGroup"
    channelName = "exampleChannel"
    originEndpointName = "exampleOriginEndpointCMAF"
    containerType = ContainerType.fromValue("CMAF")
    startoverWindowSeconds = 300
    forceEndpointErrorConfiguration = ForceEndpointErrorConfiguration {
        endpointErrorConditions = listOf<EndpointErrorCondition>(
            EndpointErrorCondition.fromValue("STALE_MANIFEST"),
            EndpointErrorCondition.fromValue("INCOMPLETE_MANIFEST"),
            EndpointErrorCondition.fromValue("MISSING_DRM_KEY"),
            EndpointErrorCondition.fromValue("SLATE_INPUT")
        )
    }
    segment = Segment {
        segmentDurationSeconds = 6
        segmentName = "segmentName"
        includeIframeOnlyStreams = true
        scte = Scte {
            scteFilter = listOf<ScteFilter>(
                ScteFilter.fromValue("SPLICE_INSERT"),
                ScteFilter.fromValue("BREAK")
            )
        }
        encryption = Encryption {
            constantInitializationVector = "A382A901F3C1F7718512266CFFBB0B9F"
            encryptionMethod = EncryptionMethod {
                cmafEncryptionMethod = CmafEncryptionMethod.fromValue("CBCS")
            }
            keyRotationIntervalSeconds = 300
            spekeKeyProvider = SpekeKeyProvider {
                encryptionContractConfiguration = EncryptionContractConfiguration {
                    presetSpeke20Audio = PresetSpeke20Audio.fromValue("PRESET_AUDIO_1")
                    presetSpeke20Video = PresetSpeke20Video.fromValue("PRESET_VIDEO_1")
                }
                resourceId = "ResourceId"
                drmSystems = listOf<DrmSystem>(
                    DrmSystem.fromValue("PLAYREADY"),
                    DrmSystem.fromValue("WIDEVINE")
                )
                roleArn = "arn:aws:iam::123456789012:role/empRole"
                url = "https://foo.com"
            }
        }
    }
    hlsManifests = listOf<CreateHlsManifestConfiguration>(
        CreateHlsManifestConfiguration {
            manifestName = "exampleManifest1"
            childManifestName = "exampleChildManifest1"
            scteHls = ScteHls {
                adMarkerHls = AdMarkerHls.fromValue("DATERANGE")
            }
            manifestWindowSeconds = 30
            programDateTimeIntervalSeconds = 60
        },
        CreateHlsManifestConfiguration {
            manifestName = "exampleManifest2"
            childManifestName = "exampleManifest2"
            scteHls = ScteHls {
                adMarkerHls = AdMarkerHls.fromValue("DATERANGE")
            }
            manifestWindowSeconds = 30
            programDateTimeIntervalSeconds = 60
        }            
    )
    lowLatencyHlsManifests = listOf<CreateLowLatencyHlsManifestConfiguration>(
        CreateLowLatencyHlsManifestConfiguration {
            manifestName = "exampleLLManifest1"
            childManifestName = "exampleLLChildManifest1"
            scteHls = ScteHls {
                adMarkerHls = AdMarkerHls.fromValue("DATERANGE")
            }
            manifestWindowSeconds = 30
            programDateTimeIntervalSeconds = 60
        },
        CreateLowLatencyHlsManifestConfiguration {
            manifestName = "exampleLLManifest2"
            childManifestName = "exampleLLManifest2"
            scteHls = ScteHls {
                adMarkerHls = AdMarkerHls.fromValue("DATERANGE")
            }
            manifestWindowSeconds = 30
            programDateTimeIntervalSeconds = 60
        }            
    )
    dashManifests = listOf<CreateDashManifestConfiguration>(
        CreateDashManifestConfiguration {
            manifestName = "exampleDashManifest1"
            manifestWindowSeconds = 300
            minUpdatePeriodSeconds = 5
            minBufferTimeSeconds = 30
            suggestedPresentationDelaySeconds = 2
            segmentTemplateFormat = DashSegmentTemplateFormat.fromValue("NUMBER_WITH_TIMELINE")
            periodTriggers = listOf<DashPeriodTrigger>(
                DashPeriodTrigger.fromValue("AVAILS")
            )
            scteDash = ScteDash {
                adMarkerDash = AdMarkerDash.fromValue("XML")
            }
            drmSignaling = DashDrmSignaling.fromValue("INDIVIDUAL")
            utcTiming = DashUtcTiming {
                timingMode = DashUtcTimingMode.fromValue("HTTP_HEAD")
                timingSource = "example"
            }
            profiles = listOf<DashProfile>(
                DashProfile.fromValue("DVB_DASH")
            )
            baseUrls = listOf<DashBaseUrl>(
                DashBaseUrl {
                    url = "http://example.com/"
                    serviceLocation = "A"
                    dvbPriority = 1
                    dvbWeight = 3
                }                    
            )
            programInformation = DashProgramInformation {
                title = "exampleTitle"
                source = "exampleSource"
                copyright = "(c) Example. All rights reserved"
                languageCode = "en"
                moreInformationUrl = "https://example.com/more-information"
            }
            dvbSettings = DashDvbSettings {
                fontDownload = DashDvbFontDownload {
                    url = "https://example.com/fonts/SubtitleDisplay.woff"
                    mimeType = "application/font"
                    fontFamily = "SubtitleDisplay"
                }
                errorMetrics = listOf<DashDvbMetricsReporting>(
                    DashDvbMetricsReporting {
                        reportingUrl = "https://example.com/dvb-errors/errors"
                        probability = 500
                    }                        
                )
            }
            compactness = DashCompactness.fromValue("STANDARD")
        },
        CreateDashManifestConfiguration {
            manifestName = "exampleDashManifest2"
            manifestWindowSeconds = 60
            minUpdatePeriodSeconds = 3
            minBufferTimeSeconds = 9
            suggestedPresentationDelaySeconds = 12
            segmentTemplateFormat = DashSegmentTemplateFormat.fromValue("NUMBER_WITH_TIMELINE")
            periodTriggers = listOf<DashPeriodTrigger>(
                DashPeriodTrigger.fromValue("AVAILS"),
                DashPeriodTrigger.fromValue("DRM_KEY_ROTATION"),
                DashPeriodTrigger.fromValue("SOURCE_CHANGES"),
                DashPeriodTrigger.fromValue("SOURCE_DISRUPTIONS")
            )
            scteDash = ScteDash {
                adMarkerDash = AdMarkerDash.fromValue("XML")
            }
            drmSignaling = DashDrmSignaling.fromValue("INDIVIDUAL")
            utcTiming = DashUtcTiming {
                timingMode = DashUtcTimingMode.fromValue("HTTP_HEAD")
                timingSource = "example"
            }
            profiles = listOf<DashProfile>(
                DashProfile.fromValue("DVB_DASH")
            )
            baseUrls = listOf<DashBaseUrl>(
                DashBaseUrl {
                    url = "http://example2.com/"
                    serviceLocation = "B"
                    dvbPriority = 2
                    dvbWeight = 2
                }                    
            )
            programInformation = DashProgramInformation {
                title = "exampleTitle2"
                source = "exampleSource2"
                copyright = "(c) Example. All rights reserved"
                languageCode = "en"
                moreInformationUrl = "https://example2.com/more-information"
            }
            dvbSettings = DashDvbSettings {
                fontDownload = DashDvbFontDownload {
                    url = "https://example.com/fonts/SubtitleDisplay.woff"
                    mimeType = "application/font"
                    fontFamily = "SubtitleDisplay"
                }
                errorMetrics = listOf<DashDvbMetricsReporting>(
                    DashDvbMetricsReporting {
                        reportingUrl = "https://example2.com/dvb-errors/errors"
                        probability = 600
                    }                        
                )
            }
            compactness = DashCompactness.fromValue("STANDARD")
        }            
    )
    tags = mapOf<String, String>(
        "key1" to "value1",
        "key2" to "value2"
    )
} 
   //sampleEnd
}
import aws.sdk.kotlin.services.mediapackagev2.model.AdMarkerDash
import aws.sdk.kotlin.services.mediapackagev2.model.AdMarkerHls
import aws.sdk.kotlin.services.mediapackagev2.model.CmafEncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.ContainerType
import aws.sdk.kotlin.services.mediapackagev2.model.CreateDashManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateHlsManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateLowLatencyHlsManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.CreateMssManifestConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.DashBaseUrl
import aws.sdk.kotlin.services.mediapackagev2.model.DashCompactness
import aws.sdk.kotlin.services.mediapackagev2.model.DashDrmSignaling
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbFontDownload
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbMetricsReporting
import aws.sdk.kotlin.services.mediapackagev2.model.DashDvbSettings
import aws.sdk.kotlin.services.mediapackagev2.model.DashPeriodTrigger
import aws.sdk.kotlin.services.mediapackagev2.model.DashProfile
import aws.sdk.kotlin.services.mediapackagev2.model.DashProgramInformation
import aws.sdk.kotlin.services.mediapackagev2.model.DashSegmentTemplateFormat
import aws.sdk.kotlin.services.mediapackagev2.model.DashUtcTiming
import aws.sdk.kotlin.services.mediapackagev2.model.DashUtcTimingMode
import aws.sdk.kotlin.services.mediapackagev2.model.DrmSystem
import aws.sdk.kotlin.services.mediapackagev2.model.Encryption
import aws.sdk.kotlin.services.mediapackagev2.model.EncryptionContractConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.EncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.EndpointErrorCondition
import aws.sdk.kotlin.services.mediapackagev2.model.ForceEndpointErrorConfiguration
import aws.sdk.kotlin.services.mediapackagev2.model.IsmEncryptionMethod
import aws.sdk.kotlin.services.mediapackagev2.model.MssManifestLayout
import aws.sdk.kotlin.services.mediapackagev2.model.PresetSpeke20Audio
import aws.sdk.kotlin.services.mediapackagev2.model.PresetSpeke20Video
import aws.sdk.kotlin.services.mediapackagev2.model.Scte
import aws.sdk.kotlin.services.mediapackagev2.model.ScteDash
import aws.sdk.kotlin.services.mediapackagev2.model.ScteFilter
import aws.sdk.kotlin.services.mediapackagev2.model.ScteHls
import aws.sdk.kotlin.services.mediapackagev2.model.Segment
import aws.sdk.kotlin.services.mediapackagev2.model.SpekeKeyProvider
import aws.sdk.kotlin.services.mediapackagev2.model.TsEncryptionMethod

fun main() { 
   //sampleStart 
   // Creating an OriginEndpoint with container type ISM, and encryption enabled
val resp = mediaPackageV2Client.createOriginEndpoint {
    channelGroupName = "exampleChannelGroup"
    channelName = "exampleChannel"
    originEndpointName = "exampleOriginEndpointISM"
    containerType = ContainerType.fromValue("ISM")
    description = "Description for exampleOriginEndpointISM"
    startoverWindowSeconds = 300
    forceEndpointErrorConfiguration = ForceEndpointErrorConfiguration {
        endpointErrorConditions = listOf<EndpointErrorCondition>(
            EndpointErrorCondition.fromValue("STALE_MANIFEST"),
            EndpointErrorCondition.fromValue("INCOMPLETE_MANIFEST"),
            EndpointErrorCondition.fromValue("MISSING_DRM_KEY"),
            EndpointErrorCondition.fromValue("SLATE_INPUT")
        )
    }
    segment = Segment {
        segmentDurationSeconds = 2
        segmentName = "segmentName"
        encryption = Encryption {
            encryptionMethod = EncryptionMethod {
                ismEncryptionMethod = IsmEncryptionMethod.fromValue("CENC")
            }
            spekeKeyProvider = SpekeKeyProvider {
                encryptionContractConfiguration = EncryptionContractConfiguration {
                    presetSpeke20Audio = PresetSpeke20Audio.fromValue("SHARED")
                    presetSpeke20Video = PresetSpeke20Video.fromValue("SHARED")
                }
                resourceId = "ResourceId"
                drmSystems = listOf<DrmSystem>(
                    DrmSystem.fromValue("PLAYREADY")
                )
                roleArn = "arn:aws:iam::123456789012:role/empRole"
                url = "https://speke-key-provider.example.com"
            }
        }
    }
    mssManifests = listOf<CreateMssManifestConfiguration>(
        CreateMssManifestConfiguration {
            manifestName = "exampleMssManifest1"
            manifestWindowSeconds = 60
            manifestLayout = MssManifestLayout.fromValue("FULL")
        }            
    )
    tags = mapOf<String, String>(
        "key1" to "value1",
        "key2" to "value2"
    )
} 
   //sampleEnd
}