{
  "typeName" : "AWS::MediaPackageV2::OriginEndpoint",
  "description" : "<p>Represents an origin endpoint that is associated with a channel, offering a dynamically repackaged version of its content through various streaming media protocols. The content can be efficiently disseminated to end-users via a Content Delivery Network (CDN), like Amazon CloudFront.</p>",
  "definitions" : {
    "AdMarkerDash" : {
      "type" : "string",
      "enum" : [ "BINARY", "XML" ]
    },
    "AdMarkerHls" : {
      "type" : "string",
      "enum" : [ "DATERANGE", "SCTE35_ENHANCED" ]
    },
    "CmafEncryptionMethod" : {
      "type" : "string",
      "enum" : [ "CENC", "CBCS" ]
    },
    "ContainerType" : {
      "type" : "string",
      "enum" : [ "TS", "CMAF", "ISM" ]
    },
    "DashBaseUrl" : {
      "type" : "object",
      "description" : "<p>The base URLs to use for retrieving segments. You can specify multiple locations and indicate the priority and weight for when each should be used, for use in mutli-CDN workflows.</p>",
      "properties" : {
        "Url" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>A source location for segments.</p>"
        },
        "ServiceLocation" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>The name of the source location.</p>"
        },
        "DvbPriority" : {
          "type" : "integer",
          "maximum" : 15000,
          "minimum" : 1,
          "description" : "<p>For use with DVB-DASH profiles only. The priority of this location for servings segments. The lower the number, the higher the priority.</p>"
        },
        "DvbWeight" : {
          "type" : "integer",
          "maximum" : 15000,
          "minimum" : 1,
          "description" : "<p>For use with DVB-DASH profiles only. The weighting for source locations that have the same priority. </p>"
        }
      },
      "required" : [ "Url" ],
      "additionalProperties" : false
    },
    "DashCompactness" : {
      "type" : "string",
      "enum" : [ "STANDARD", "NONE" ]
    },
    "DashDrmSignaling" : {
      "type" : "string",
      "enum" : [ "INDIVIDUAL", "REFERENCED" ]
    },
    "DashDvbFontDownload" : {
      "type" : "object",
      "description" : "<p>For use with DVB-DASH profiles only. The settings for font downloads that you want Elemental MediaPackage to pass through to the manifest.</p>",
      "properties" : {
        "Url" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>The URL for downloading fonts for subtitles.</p>"
        },
        "MimeType" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9][a-zA-Z0-9_/-]*[a-zA-Z0-9]$",
          "description" : "<p>The <code>mimeType</code> of the resource that's at the font download URL.</p> <p>For information about font MIME types, see the <a href=\"https://dvb.org/wp-content/uploads/2021/06/A168r4_MPEG-DASH-Profile-for-Transport-of-ISO-BMFF-Based-DVB-Services_Draft-ts_103-285-v140_November_2021.pdf\">MPEG-DASH Profile for Transport of ISO BMFF Based DVB Services over IP Based Networks</a> document. </p>"
        },
        "FontFamily" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "description" : "<p>The <code>fontFamily</code> name for subtitles, as described in <a href=\"https://tech.ebu.ch/publications/tech3380\">EBU-TT-D Subtitling Distribution Format</a>. </p>"
        }
      },
      "additionalProperties" : false
    },
    "DashDvbMetricsReporting" : {
      "type" : "object",
      "description" : "<p>For use with DVB-DASH profiles only. The settings for error reporting from the playback device that you want Elemental MediaPackage to pass through to the manifest.</p>",
      "properties" : {
        "ReportingUrl" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>The URL where playback devices send error reports.</p>"
        },
        "Probability" : {
          "type" : "integer",
          "maximum" : 1000,
          "minimum" : 1,
          "description" : "<p>The number of playback devices per 1000 that will send error reports to the reporting URL. This represents the probability that a playback device will be a reporting player for this session.</p>"
        }
      },
      "required" : [ "ReportingUrl" ],
      "additionalProperties" : false
    },
    "DashDvbSettings" : {
      "type" : "object",
      "description" : "<p>For endpoints that use the DVB-DASH profile only. The font download and error reporting information that you want MediaPackage to pass through to the manifest.</p>",
      "properties" : {
        "FontDownload" : {
          "$ref" : "#/definitions/DashDvbFontDownload"
        },
        "ErrorMetrics" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/DashDvbMetricsReporting"
          },
          "maxItems" : 20,
          "minItems" : 0,
          "description" : "<p>Playback device error reporting settings.</p>"
        }
      },
      "additionalProperties" : false
    },
    "DashPeriodTrigger" : {
      "type" : "string",
      "enum" : [ "AVAILS", "DRM_KEY_ROTATION", "SOURCE_CHANGES", "SOURCE_DISRUPTIONS", "NONE" ]
    },
    "DashProfile" : {
      "type" : "string",
      "enum" : [ "DVB_DASH" ]
    },
    "DashProgramInformation" : {
      "type" : "object",
      "description" : "<p>Details about the content that you want MediaPackage to pass through in the manifest to the playback device.</p>",
      "properties" : {
        "Title" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>The title for the manifest.</p>"
        },
        "Source" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>Information about the content provider.</p>"
        },
        "Copyright" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>A copyright statement about the content.</p>"
        },
        "LanguageCode" : {
          "type" : "string",
          "maxLength" : 5,
          "minLength" : 2,
          "pattern" : "^[a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9]$",
          "description" : "<p>The language code for this manifest.</p>"
        },
        "MoreInformationUrl" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>An absolute URL that contains more information about this content.</p>"
        }
      },
      "additionalProperties" : false
    },
    "DashSegmentTemplateFormat" : {
      "type" : "string",
      "enum" : [ "NUMBER_WITH_TIMELINE" ]
    },
    "DashSubtitleConfiguration" : {
      "type" : "object",
      "description" : "<p>The configuration for DASH subtitles.</p>",
      "properties" : {
        "TtmlConfiguration" : {
          "$ref" : "#/definitions/DashTtmlConfiguration"
        }
      },
      "additionalProperties" : false
    },
    "DashTtmlConfiguration" : {
      "type" : "object",
      "description" : "<p>The settings for TTML subtitles.</p>",
      "properties" : {
        "TtmlProfile" : {
          "$ref" : "#/definitions/DashTtmlProfile"
        }
      },
      "required" : [ "TtmlProfile" ],
      "additionalProperties" : false
    },
    "DashTtmlProfile" : {
      "type" : "string",
      "enum" : [ "IMSC_1", "EBU_TT_D_101" ]
    },
    "DashUtcTiming" : {
      "type" : "object",
      "description" : "<p>Determines the type of UTC timing included in the DASH Media Presentation Description (MPD).</p>",
      "properties" : {
        "TimingMode" : {
          "$ref" : "#/definitions/DashUtcTimingMode"
        },
        "TimingSource" : {
          "type" : "string",
          "maxLength" : 1024,
          "minLength" : 1,
          "description" : "<p>The the method that the player uses to synchronize to coordinated universal time (UTC) wall clock time.</p>"
        }
      },
      "additionalProperties" : false
    },
    "DashUtcTimingMode" : {
      "type" : "string",
      "enum" : [ "HTTP_HEAD", "HTTP_ISO", "HTTP_XSDATE", "UTC_DIRECT" ]
    },
    "DrmSystem" : {
      "type" : "string",
      "enum" : [ "CLEAR_KEY_AES_128", "FAIRPLAY", "PLAYREADY", "WIDEVINE", "IRDETO" ]
    },
    "Encryption" : {
      "type" : "object",
      "description" : "<p>The parameters for encrypting content.</p>",
      "properties" : {
        "ConstantInitializationVector" : {
          "type" : "string",
          "maxLength" : 32,
          "minLength" : 32,
          "pattern" : "^[0-9a-fA-F]+$",
          "description" : "<p>A 128-bit, 16-byte hex value represented by a 32-character string, used in conjunction with the key for encrypting content. If you don't specify a value, then MediaPackage creates the constant initialization vector (IV).</p>"
        },
        "EncryptionMethod" : {
          "$ref" : "#/definitions/EncryptionMethod"
        },
        "KeyRotationIntervalSeconds" : {
          "type" : "integer",
          "maximum" : 31536000,
          "minimum" : 300,
          "description" : "<p>The frequency (in seconds) of key changes for live workflows, in which content is streamed real time. The service retrieves content keys before the live content begins streaming, and then retrieves them as needed over the lifetime of the workflow. By default, key rotation is set to 300 seconds (5 minutes), the minimum rotation interval, which is equivalent to setting it to 300. If you don't enter an interval, content keys aren't rotated.</p> <p>The following example setting causes the service to rotate keys every thirty minutes: <code>1800</code> </p>"
        },
        "CmafExcludeSegmentDrmMetadata" : {
          "type" : "boolean",
          "description" : "<p>Excludes SEIG and SGPD boxes from segment metadata in CMAF containers.</p> <p>When set to <code>true</code>, MediaPackage omits these DRM metadata boxes from CMAF segments, which can improve compatibility with certain devices and players that don't support these boxes.</p> <p>Important considerations:</p> <ul> <li> <p>This setting only affects CMAF container formats</p> </li> <li> <p>Key rotation can still be handled through media playlist signaling</p> </li> <li> <p>PSSH and TENC boxes remain unaffected</p> </li> <li> <p>Default behavior is preserved when this setting is disabled</p> </li> </ul> <p>Valid values: <code>true</code> | <code>false</code> </p> <p>Default: <code>false</code> </p>"
        },
        "SpekeKeyProvider" : {
          "$ref" : "#/definitions/SpekeKeyProvider"
        }
      },
      "required" : [ "EncryptionMethod", "SpekeKeyProvider" ],
      "additionalProperties" : false
    },
    "EncryptionContractConfiguration" : {
      "type" : "object",
      "description" : "<p>Configure one or more content encryption keys for your endpoints that use SPEKE Version 2.0. The encryption contract defines which content keys are used to encrypt the audio and video tracks in your stream. To configure the encryption contract, specify which audio and video encryption presets to use.</p>",
      "properties" : {
        "PresetSpeke20Audio" : {
          "$ref" : "#/definitions/PresetSpeke20Audio"
        },
        "PresetSpeke20Video" : {
          "$ref" : "#/definitions/PresetSpeke20Video"
        }
      },
      "required" : [ "PresetSpeke20Audio", "PresetSpeke20Video" ],
      "additionalProperties" : false
    },
    "EncryptionMethod" : {
      "type" : "object",
      "description" : "<p>The encryption type.</p>",
      "properties" : {
        "TsEncryptionMethod" : {
          "$ref" : "#/definitions/TsEncryptionMethod"
        },
        "CmafEncryptionMethod" : {
          "$ref" : "#/definitions/CmafEncryptionMethod"
        },
        "IsmEncryptionMethod" : {
          "$ref" : "#/definitions/IsmEncryptionMethod"
        }
      },
      "additionalProperties" : false
    },
    "EndpointErrorCondition" : {
      "type" : "string",
      "enum" : [ "STALE_MANIFEST", "INCOMPLETE_MANIFEST", "MISSING_DRM_KEY", "SLATE_INPUT" ]
    },
    "FilterConfiguration" : {
      "type" : "object",
      "description" : "<p>Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. </p>",
      "properties" : {
        "ManifestFilter" : {
          "type" : "string",
          "maxLength" : 1024,
          "minLength" : 1,
          "description" : "<p>Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL.</p>"
        },
        "DrmSettings" : {
          "type" : "string",
          "maxLength" : 1024,
          "minLength" : 1,
          "description" : "<p>Optionally specify one or more DRM settings for all of your manifest egress requests. When you include a DRM setting, note that you cannot use an identical DRM setting query parameter for this manifest's endpoint URL.</p>"
        },
        "Start" : {
          "type" : "string",
          "description" : "<p>Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL.</p>",
          "format" : "date-time"
        },
        "End" : {
          "type" : "string",
          "description" : "<p>Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL.</p>",
          "format" : "date-time"
        },
        "TimeDelaySeconds" : {
          "type" : "integer",
          "maximum" : 1209600,
          "minimum" : 0,
          "description" : "<p>Optionally specify the time delay for all of your manifest egress requests. Enter a value that is smaller than your endpoint's startover window. When you include time delay, note that you cannot use time delay query parameters for this manifest's endpoint URL.</p>"
        },
        "ClipStartTime" : {
          "type" : "string",
          "description" : "<p>Optionally specify the clip start time for all of your manifest egress requests. When you include clip start time, note that you cannot use clip start time query parameters for this manifest's endpoint URL.</p>",
          "format" : "date-time"
        }
      },
      "additionalProperties" : false
    },
    "ForceEndpointErrorConfiguration" : {
      "type" : "object",
      "description" : "<p>The failover settings for the endpoint.</p>",
      "properties" : {
        "EndpointErrorConditions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/EndpointErrorCondition"
          },
          "description" : "<p>The failover conditions for the endpoint. The options are:</p> <ul> <li> <p> <code>STALE_MANIFEST</code> - The manifest stalled and there are no new segments or parts.</p> </li> <li> <p> <code>INCOMPLETE_MANIFEST</code> - There is a gap in the manifest.</p> </li> <li> <p> <code>MISSING_DRM_KEY</code> - Key rotation is enabled but we're unable to fetch the key for the current key period.</p> </li> <li> <p> <code>SLATE_INPUT</code> - The segments which contain slate content are considered to be missing content.</p> </li> </ul>"
        }
      },
      "additionalProperties" : false
    },
    "DashManifestConfiguration" : {
      "type" : "object",
      "description" : "<p>Retrieve the DASH manifest configuration.</p>",
      "properties" : {
        "ManifestName" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9_-]+$",
          "description" : "<p>A short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. </p>"
        },
        "ManifestWindowSeconds" : {
          "type" : "integer",
          "description" : "<p>The total duration (in seconds) of the manifest's content.</p>"
        },
        "FilterConfiguration" : {
          "$ref" : "#/definitions/FilterConfiguration"
        },
        "MinUpdatePeriodSeconds" : {
          "type" : "integer",
          "description" : "<p>Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest.</p>"
        },
        "MinBufferTimeSeconds" : {
          "type" : "integer",
          "description" : "<p>Minimum amount of content (in seconds) that a player must keep available in the buffer.</p>"
        },
        "SuggestedPresentationDelaySeconds" : {
          "type" : "integer",
          "description" : "<p>The amount of time (in seconds) that the player should be from the end of the manifest.</p>"
        },
        "SegmentTemplateFormat" : {
          "$ref" : "#/definitions/DashSegmentTemplateFormat"
        },
        "PeriodTriggers" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/DashPeriodTrigger"
          },
          "maxItems" : 100,
          "minItems" : 0,
          "description" : "<p>A list of triggers that controls when AWS Elemental MediaPackage separates the MPEG-DASH manifest into multiple periods. Leave this value empty to indicate that the manifest is contained all in one period. For more information about periods in the DASH manifest, see <a href=\"https://docs.aws.amazon.com/mediapackage/latest/userguide/multi-period.html\">Multi-period DASH in AWS Elemental MediaPackage</a>.</p>"
        },
        "ScteDash" : {
          "$ref" : "#/definitions/ScteDash"
        },
        "DrmSignaling" : {
          "$ref" : "#/definitions/DashDrmSignaling"
        },
        "UtcTiming" : {
          "$ref" : "#/definitions/DashUtcTiming"
        },
        "Profiles" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/DashProfile"
          },
          "maxItems" : 5,
          "minItems" : 0,
          "description" : "<p>The profile that the output is compliant with.</p>"
        },
        "BaseUrls" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/DashBaseUrl"
          },
          "maxItems" : 20,
          "minItems" : 0,
          "description" : "<p>The base URL to use for retrieving segments.</p>"
        },
        "ProgramInformation" : {
          "$ref" : "#/definitions/DashProgramInformation"
        },
        "DvbSettings" : {
          "$ref" : "#/definitions/DashDvbSettings"
        },
        "Compactness" : {
          "$ref" : "#/definitions/DashCompactness"
        },
        "SubtitleConfiguration" : {
          "$ref" : "#/definitions/DashSubtitleConfiguration"
        }
      },
      "required" : [ "ManifestName" ],
      "additionalProperties" : false
    },
    "HlsManifestConfiguration" : {
      "type" : "object",
      "description" : "<p>Retrieve the HTTP live streaming (HLS) manifest configuration.</p>",
      "properties" : {
        "ManifestName" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9_-]+$",
          "description" : "<p>A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.</p>"
        },
        "Url" : {
          "type" : "string",
          "description" : "<p>The egress domain URL for stream delivery from MediaPackage.</p>"
        },
        "ChildManifestName" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9_-]+$",
          "description" : "<p>A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.</p>"
        },
        "ManifestWindowSeconds" : {
          "type" : "integer",
          "description" : "<p>The total duration (in seconds) of the manifest's content.</p>"
        },
        "ProgramDateTimeIntervalSeconds" : {
          "type" : "integer",
          "description" : "<p>Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval, EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest. The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.</p> <p>Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.</p>"
        },
        "ScteHls" : {
          "$ref" : "#/definitions/ScteHls"
        },
        "FilterConfiguration" : {
          "$ref" : "#/definitions/FilterConfiguration"
        },
        "StartTag" : {
          "$ref" : "#/definitions/StartTag"
        },
        "UrlEncodeChildManifest" : {
          "type" : "boolean",
          "description" : "<p>When enabled, MediaPackage URL-encodes the query string for API requests for HLS child manifests to comply with Amazon Web Services Signature Version 4 (SigV4) signature signing protocol. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html\">Amazon Web Services Signature Version 4 for API requests</a> in <i>Identity and Access Management User Guide</i>.</p>"
        }
      },
      "required" : [ "ManifestName" ],
      "additionalProperties" : false
    },
    "LowLatencyHlsManifestConfiguration" : {
      "type" : "object",
      "description" : "<p>Retrieve the low-latency HTTP live streaming (HLS) manifest configuration.</p>",
      "properties" : {
        "ManifestName" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9_-]+$",
          "description" : "<p>A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.</p>"
        },
        "Url" : {
          "type" : "string",
          "description" : "<p>The egress domain URL for stream delivery from MediaPackage.</p>"
        },
        "ChildManifestName" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9_-]+$",
          "description" : "<p>A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.</p>"
        },
        "ManifestWindowSeconds" : {
          "type" : "integer",
          "description" : "<p>The total duration (in seconds) of the manifest's content.</p>"
        },
        "ProgramDateTimeIntervalSeconds" : {
          "type" : "integer",
          "description" : "<p>Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval, EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest. The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.</p> <p>Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.</p>"
        },
        "ScteHls" : {
          "$ref" : "#/definitions/ScteHls"
        },
        "FilterConfiguration" : {
          "$ref" : "#/definitions/FilterConfiguration"
        },
        "StartTag" : {
          "$ref" : "#/definitions/StartTag"
        },
        "UrlEncodeChildManifest" : {
          "type" : "boolean",
          "description" : "<p>When enabled, MediaPackage URL-encodes the query string for API requests for LL-HLS child manifests to comply with Amazon Web Services Signature Version 4 (SigV4) signature signing protocol. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html\">Amazon Web Services Signature Version 4 for API requests</a> in <i>Identity and Access Management User Guide</i>.</p>"
        }
      },
      "required" : [ "ManifestName" ],
      "additionalProperties" : false
    },
    "MssManifestConfiguration" : {
      "type" : "object",
      "description" : "<p>Configuration details for a Microsoft Smooth Streaming (MSS) manifest associated with an origin endpoint. This includes all the settings and properties that define how the MSS content is packaged and delivered.</p>",
      "properties" : {
        "ManifestName" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9-]+$",
          "description" : "<p>The name of the MSS manifest. This name is appended to the origin endpoint URL to create the unique path for accessing this specific MSS manifest.</p>"
        },
        "FilterConfiguration" : {
          "$ref" : "#/definitions/FilterConfiguration"
        },
        "ManifestWindowSeconds" : {
          "type" : "integer",
          "description" : "<p>The duration (in seconds) of the manifest window. This represents the total amount of content available in the manifest at any given time.</p>"
        },
        "ManifestLayout" : {
          "$ref" : "#/definitions/MssManifestLayout"
        }
      },
      "required" : [ "ManifestName" ],
      "additionalProperties" : false
    },
    "IsmEncryptionMethod" : {
      "type" : "string",
      "enum" : [ "CENC" ]
    },
    "MssManifestLayout" : {
      "type" : "string",
      "enum" : [ "FULL", "COMPACT" ]
    },
    "PresetSpeke20Audio" : {
      "type" : "string",
      "enum" : [ "PRESET_AUDIO_1", "PRESET_AUDIO_2", "PRESET_AUDIO_3", "SHARED", "UNENCRYPTED" ]
    },
    "PresetSpeke20Video" : {
      "type" : "string",
      "enum" : [ "PRESET_VIDEO_1", "PRESET_VIDEO_2", "PRESET_VIDEO_3", "PRESET_VIDEO_4", "PRESET_VIDEO_5", "PRESET_VIDEO_6", "PRESET_VIDEO_7", "PRESET_VIDEO_8", "SHARED", "UNENCRYPTED" ]
    },
    "Scte" : {
      "type" : "object",
      "description" : "<p>The SCTE configuration.</p>",
      "properties" : {
        "ScteFilter" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/ScteFilter"
          },
          "maxItems" : 100,
          "minItems" : 0,
          "description" : "<p>The SCTE-35 message types that you want to be treated as ad markers in the output.</p>"
        },
        "ScteInSegments" : {
          "$ref" : "#/definitions/ScteInSegments"
        }
      },
      "additionalProperties" : false
    },
    "ScteDash" : {
      "type" : "object",
      "description" : "<p>The SCTE configuration.</p>",
      "properties" : {
        "AdMarkerDash" : {
          "$ref" : "#/definitions/AdMarkerDash"
        }
      },
      "additionalProperties" : false
    },
    "ScteFilter" : {
      "type" : "string",
      "enum" : [ "SPLICE_INSERT", "BREAK", "PROVIDER_ADVERTISEMENT", "DISTRIBUTOR_ADVERTISEMENT", "PROVIDER_PLACEMENT_OPPORTUNITY", "DISTRIBUTOR_PLACEMENT_OPPORTUNITY", "PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY", "DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY", "PROGRAM" ]
    },
    "ScteHls" : {
      "type" : "object",
      "description" : "<p>The SCTE configuration.</p>",
      "properties" : {
        "AdMarkerHls" : {
          "$ref" : "#/definitions/AdMarkerHls"
        }
      },
      "additionalProperties" : false
    },
    "ScteInSegments" : {
      "type" : "string",
      "enum" : [ "NONE", "ALL" ]
    },
    "Segment" : {
      "type" : "object",
      "description" : "<p>The segment configuration, including the segment name, duration, and other configuration values.</p>",
      "properties" : {
        "SegmentDurationSeconds" : {
          "type" : "integer",
          "maximum" : 30,
          "minimum" : 1,
          "description" : "<p>The duration (in seconds) of each segment. Enter a value equal to, or a multiple of, the input segment duration. If the value that you enter is different from the input segment duration, MediaPackage rounds segments to the nearest multiple of the input segment duration.</p>"
        },
        "SegmentName" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[a-zA-Z0-9_-]+$",
          "description" : "<p>The name that describes the segment. The name is the base name of the segment used in all content manifests inside of the endpoint. You can't use spaces in the name.</p>"
        },
        "TsUseAudioRenditionGroup" : {
          "type" : "boolean",
          "description" : "<p>When selected, MediaPackage bundles all audio tracks in a rendition group. All other tracks in the stream can be used with any audio rendition from the group.</p>"
        },
        "IncludeIframeOnlyStreams" : {
          "type" : "boolean",
          "description" : "<p>When selected, the stream set includes an additional I-frame only stream, along with the other tracks. If false, this extra stream is not included. MediaPackage generates an I-frame only stream from the first rendition in the manifest. The service inserts EXT-I-FRAMES-ONLY tags in the output manifest, and then generates and includes an I-frames only playlist in the stream. This playlist permits player functionality like fast forward and rewind.</p>"
        },
        "TsIncludeDvbSubtitles" : {
          "type" : "boolean",
          "description" : "<p>By default, MediaPackage excludes all digital video broadcasting (DVB) subtitles from the output. When selected, MediaPackage passes through DVB subtitles into the output.</p>"
        },
        "Scte" : {
          "$ref" : "#/definitions/Scte"
        },
        "Encryption" : {
          "$ref" : "#/definitions/Encryption"
        }
      },
      "additionalProperties" : false
    },
    "SpekeKeyProvider" : {
      "type" : "object",
      "description" : "<p>The parameters for the SPEKE key provider.</p>",
      "properties" : {
        "EncryptionContractConfiguration" : {
          "$ref" : "#/definitions/EncryptionContractConfiguration"
        },
        "ResourceId" : {
          "type" : "string",
          "maxLength" : 256,
          "minLength" : 1,
          "pattern" : "^[0-9a-zA-Z_-]+$",
          "description" : "<p>The unique identifier for the content. The service sends this to the key server to identify the current endpoint. How unique you make this depends on how fine-grained you want access controls to be. The service does not permit you to use the same ID for two simultaneous encryption processes. The resource ID is also known as the content ID.</p> <p>The following example shows a resource ID: <code>MovieNight20171126093045</code> </p>"
        },
        "DrmSystems" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/DrmSystem"
          },
          "maxItems" : 4,
          "minItems" : 1,
          "description" : "<p>The DRM solution provider you're using to protect your content during distribution.</p>"
        },
        "RoleArn" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 1,
          "description" : "<p>The ARN for the IAM role granted by the key provider that provides access to the key provider API. This role must have a trust policy that allows MediaPackage to assume the role, and it must have a sufficient permissions policy to allow access to the specific key retrieval URL. Get this from your DRM solution provider.</p> <p>Valid format: <code>arn:aws:iam::{accountID}:role/{name}</code>. The following example shows a role ARN: <code>arn:aws:iam::444455556666:role/SpekeAccess</code> </p>"
        },
        "Url" : {
          "type" : "string",
          "maxLength" : 1024,
          "minLength" : 1,
          "description" : "<p>The URL of the API Gateway proxy that you set up to talk to your key server. The API Gateway proxy must reside in the same AWS Region as MediaPackage and must start with https://.</p> <p>The following example shows a URL: <code>https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection</code> </p>"
        },
        "CertificateArn" : {
          "type" : "string",
          "maxLength" : 2048,
          "minLength" : 20,
          "pattern" : "^arn:([^:\\n]+):acm:([^:\\n]+):([0-9]+):certificate/[a-zA-Z0-9-_]+$",
          "description" : "<p>The ARN for the certificate that you imported to AWS Certificate Manager to add content key encryption to this endpoint. For this feature to work, your DRM key provider must support content key encryption.</p>"
        }
      },
      "required" : [ "DrmSystems", "EncryptionContractConfiguration", "ResourceId", "RoleArn", "Url" ],
      "additionalProperties" : false
    },
    "StartTag" : {
      "type" : "object",
      "description" : "<p>To insert an EXT-X-START tag in your HLS playlist, specify a StartTag configuration object with a valid TimeOffset. When you do, you can also optionally specify whether to include a PRECISE value in the EXT-X-START tag.</p>",
      "properties" : {
        "TimeOffset" : {
          "type" : "number",
          "description" : "<p>Specify the value for TIME-OFFSET within your EXT-X-START tag. Enter a signed floating point value which, if positive, must be less than the configured manifest duration minus three times the configured segment target duration. If negative, the absolute value must be larger than three times the configured segment target duration, and the absolute value must be smaller than the configured manifest duration.</p>"
        },
        "Precise" : {
          "type" : "boolean",
          "description" : "<p>Specify the value for PRECISE within your EXT-X-START tag. Leave blank, or choose false, to use the default value NO. Choose yes to use the value YES.</p>"
        }
      },
      "required" : [ "TimeOffset" ],
      "additionalProperties" : false
    },
    "TsEncryptionMethod" : {
      "type" : "string",
      "enum" : [ "AES_128", "SAMPLE_AES" ]
    },
    "Tag" : {
      "type" : "object",
      "properties" : {
        "Key" : {
          "type" : "string"
        },
        "Value" : {
          "type" : "string"
        }
      },
      "additionalProperties" : false
    }
  },
  "properties" : {
    "Arn" : {
      "type" : "string",
      "description" : "<p>The Amazon Resource Name (ARN) associated with the resource.</p>"
    },
    "ChannelGroupName" : {
      "type" : "string",
      "maxLength" : 256,
      "minLength" : 1,
      "pattern" : "^[a-zA-Z0-9_-]+$"
    },
    "ChannelName" : {
      "type" : "string",
      "maxLength" : 256,
      "minLength" : 1,
      "pattern" : "^[a-zA-Z0-9_-]+$"
    },
    "ContainerType" : {
      "$ref" : "#/definitions/ContainerType"
    },
    "CreatedAt" : {
      "type" : "string",
      "description" : "<p>The date and time the origin endpoint was created.</p>",
      "format" : "date-time"
    },
    "DashManifests" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/DashManifestConfiguration"
      },
      "description" : "<p>A DASH manifest configuration.</p>"
    },
    "Description" : {
      "type" : "string",
      "maxLength" : 1024,
      "minLength" : 0,
      "description" : "<p>Enter any descriptive text that helps you to identify the origin endpoint.</p>"
    },
    "ForceEndpointErrorConfiguration" : {
      "$ref" : "#/definitions/ForceEndpointErrorConfiguration"
    },
    "HlsManifests" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/HlsManifestConfiguration"
      },
      "description" : "<p>An HTTP live streaming (HLS) manifest configuration.</p>"
    },
    "LowLatencyHlsManifests" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/LowLatencyHlsManifestConfiguration"
      },
      "description" : "<p>A low-latency HLS manifest configuration.</p>"
    },
    "ModifiedAt" : {
      "type" : "string",
      "description" : "<p>The date and time the origin endpoint was modified.</p>",
      "format" : "date-time"
    },
    "MssManifests" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/MssManifestConfiguration"
      },
      "description" : "<p>The Microsoft Smooth Streaming (MSS) manifest configurations associated with this origin endpoint.</p>"
    },
    "OriginEndpointName" : {
      "type" : "string",
      "maxLength" : 256,
      "minLength" : 1,
      "pattern" : "^[a-zA-Z0-9_-]+$"
    },
    "Segment" : {
      "$ref" : "#/definitions/Segment"
    },
    "StartoverWindowSeconds" : {
      "type" : "integer",
      "maximum" : 1209600,
      "minimum" : 60,
      "description" : "<p>The size of the window (in seconds) to create a window of the live stream that's available for on-demand viewing. Viewers can start-over or catch-up on content that falls within the window. The maximum startover window is 1,209,600 seconds (14 days).</p>"
    },
    "DashManifestUrls" : {
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "MssManifestUrls" : {
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "HlsManifestUrls" : {
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "LowLatencyHlsManifestUrls" : {
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "Tags" : {
      "type" : "array",
      "insertionOrder" : false,
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    }
  },
  "required" : [ "ChannelGroupName", "ChannelName", "OriginEndpointName", "ContainerType" ],
  "readOnlyProperties" : [ "/properties/Arn", "/properties/CreatedAt", "/properties/DashManifestUrls", "/properties/MssManifestUrls", "/properties/HlsManifestUrls", "/properties/LowLatencyHlsManifestUrls", "/properties/ModifiedAt", "/properties/LowLatencyHlsManifests/*/Url", "/properties/HlsManifests/*/Url" ],
  "createOnlyProperties" : [ "/properties/ChannelGroupName", "/properties/ChannelName", "/properties/OriginEndpointName" ],
  "primaryIdentifier" : [ "/properties/Arn" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "mediapackagev2:TagResource", "mediapackagev2:CreateOriginEndpoint", "iam:PassRole", "acm:DescribeCertificate" ]
    },
    "read" : {
      "permissions" : [ "mediapackagev2:GetOriginEndpoint" ]
    },
    "update" : {
      "permissions" : [ "mediapackagev2:TagResource", "mediapackagev2:UntagResource", "mediapackagev2:ListTagsForResource", "mediapackagev2:UpdateOriginEndpoint", "iam:PassRole", "acm:DescribeCertificate" ]
    },
    "delete" : {
      "permissions" : [ "mediapackagev2:GetOriginEndpoint", "mediapackagev2:DeleteOriginEndpoint" ]
    },
    "list" : {
      "handlerSchema" : {
        "properties" : {
          "ChannelGroupName" : {
            "$ref" : "resource-schema.json#/properties/ChannelGroupName"
          },
          "ChannelName" : {
            "$ref" : "resource-schema.json#/properties/ChannelName"
          }
        },
        "required" : [ "ChannelGroupName", "ChannelName" ]
      },
      "permissions" : [ "mediapackagev2:ListOriginEndpoints" ]
    }
  },
  "tagging" : {
    "taggable" : true,
    "tagOnCreate" : true,
    "tagUpdatable" : true,
    "cloudFormationSystemTags" : false,
    "tagProperty" : "/properties/Tags",
    "permissions" : [ "mediapackagev2:TagResource", "mediapackagev2:UntagResource", "mediapackagev2:ListTagsForResource" ]
  },
  "additionalIdentifiers" : [ [ "/properties/ChannelGroupName", "/properties/ChannelName", "/properties/OriginEndpointName" ] ],
  "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediapackagev2",
  "additionalProperties" : false
}