Endpoints

    Endpoints


    Article summary

    Base URLs

    Site

    URL

    Notes

    Production Back Office

    http://bo.prod.merlin.ccp.xcal.tv:9018/mmpWebService/

    For internal Comcast network calls

    Codebig Prod

    https://compass-mmpwebservice-prod.codebig2.net

    Codebig QA

    https://compass-ingest-mmp-qa.codebig2.net

    QA

    http://qa.merlin.comcast.com:9018/mmpWebService

    Dev

    http://dev.merlin.comcast.com:9018/mmpWebService

    Obtaining a SAT Token

    The Open Ingest Endpoint will only accept SAT tokens with one specified allowedPartner (this is based on the configuration of the SAT client and has probably been done for you).

    Request

    curl -v -X POST -H "x-client-id: <your_client_id>" -H "x-client-secret: <your_secret>" 'https://sat-prod.codebig2.net/oauth/token'
    

    Response

    {
      "access_token": "<base64 token value>",
      "expires_in": 86400,
      "scope": "x1:compass:piws:read x1:compass:piws:write",
      "token_type": "Bearer"
    }
    

    The contents of the access_token field will be used in the Authorization header in the OpenIngest request. Tokens expire after 24 hours and must be refreshed.

    Sample Call

    Your request should include a parameter ("partner") that specifies which partner account the content belongs to. The sample request below indicates the asset should be ingested under the generic OTT partner.

    curl -v -X POST -H "Content-Type: application/xml" -H "Authorization: Bearer <your_SAT_token>" https://compass-mmpwebservice-prod.codebig2.net/openingestproxy/openIngestMerlin1?schema=1.0&form=xml&partner=globalott \
    
    --data
    
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <rss xmlns:gmrss="urn:uri:merlin-gold-FIXME" xmlns:media=http://search.yahoo.com/mrss/ xmlns:dcterms=http://purl.org/dc/terms/>
       <channel>
         <generator>NBC OTT Feed Generator</generator>
         <item>
             <title>Basketball</title>
             <gmrss:seriesTitle>The Office</gmrss:seriesTitle>
             <gmrss:shortDescription>Basketball</gmrss:shortDescription>
             <gmrss:mediumDescription>Basketball medium Description</gmrss:mediumDescription>
             <gmrss:longDescription>Facing a basketball game against the warehouse employees, Michael raises the stakes and bets on his handpicked team.</gmrss:longDescription>
             <pubDate>1312416000000</pubDate>
             <gmrss:videoAssetId namespace="SkyShowtime" provider="NBC">GMO_14713006559</gmrss:videoAssetId>
             <gmrss:programVariantId namespace="SkyShowtime:en-US" provider="NBC">GTM1234</gmrss:programVariantId>
             <gmrss:videoForm>long</gmrss:videoForm>
             <gmrss:brand>nbcentertainment</gmrss:brand>
             <gmrss:distributor>SkyShowtime</gmrss:distributor>
             <gmrss:durableAppId>appId</gmrss:durableAppId>
             <gmrss:entityType>Episode</gmrss:entityType>
             <gmrss:seasonNumber>1</gmrss:seasonNumber>
             <gmrss:episodeNumber>5</gmrss:episodeNumber>
             <gmrss:duration>3800</gmrss:duration>
             <gmrss:externalEntityId>entity123</gmrss:externalEntityId>
             <gmrss:externalSeriesId>series123</gmrss:externalSeriesId>
             <!--If we needed both ratings included on the primary program -->
             <media:rating scheme="urn:sky:bskybca:gb">-5</media:rating>
             <!-- tags: from NBC will of 2 types: without type for Genre/Subgenre and with Type for ProviderPlacement. NBC tags will be plain text. Gracenote be video descriptor id -->
             <gmrss:tagReference provider="NBC">Genre:Movies</gmrss:tagReference>
             <gmrss:tagReference provider="NBC">Subgenre:Sci-Fi &amp; Fantasy</gmrss:tagReference>
             <gmrss:tagReference provider="GRACENOTE_VIDEO_DESCRIPTOR">GN164S651XQJ19N</gmrss:tagReference>
             <gmrss:tagReference provider="NBC" type="ProviderPlacement">action</gmrss:tagReference>
             <!-- Reference to the Gracenote episode -->
             <gmrss:entityReference provider="GRACENOTE" entityType="Episode">EP034829100019</gmrss:entityReference>
             <!-- Reference to english series -->
             <gmrss:entityReference provider="NBC" entityType="SeriesMaster">SM5678</gmrss:entityReference>
             <!-- Entity Collection Reference links multi-language programs together. They should reference the programVariant id of the primary program -->
             <gmrss:entityReference provider="NBC" entityType="EntityCollection">GTMV0000645117</gmrss:entityReference>
             <!-- If this asset represents LIVOD content -->
             <gmrss:playableStartDate>2022-03-19T11:00:00Z</gmrss:playableStartDate>
             <gmrss:playableEndDate>2022-03-19T10:00:00Z</gmrss:playableEndDate>
             <gmrss:hasReplay>False</gmrss:hasReplay>
             <!-- Content metadata: repeated for each content type-->
             <media:group>
                 <media:content duration="5047" lang="en-US" gmrss:videoQuality="HD" gmrss:framerate="23.976" gmrss:sap="false" gmrss:dvs="true" gmrss:subtitle="true" gmrss:cc="true" type="M3U" url=[https://$%7bUS_VOD_PROD%7d/pub/global/%20xYh/EIw/SKYSHOWTIME_1611852294372.3757_01/cmaf/mpeg_cenc/master_cmaf.m3u8]https://${US_VOD_PROD}/pub/global/ xYh/EIw/SKYSHOWTIME_1611852294372.3757_01/cmaf/mpeg_cenc/master_cmaf.m3u8>
                     <gmrss:audioTrack dvs="false" index="0" lang="en-US" audioType="Surround" original="true"/>
                     <gmrss:audioTrack dvs="false" index="1" lang="en-US" audioType="Stereo"/>
                     <gmrss:audioTrack dvs="false" index="2" lang="es-ES" audioType="Surround"/>
                     <gmrss:audioTrack dvs="false" index="3" lang="es-ES" audioType="Stereo"/>
                     <gmrss:subtitle lang="en-US" role="cc" />
                     <gmrss:subtitle lang="pl-PL" role="subtitle" />
                     <gmrss:subtitle lang="pl-PL" role="forcedNarrative" />
                     <gmrss:subtitle lang="nl-NL" role="subtitle" />
                     <gmrss:subtitle lang="nb-NO" role="subtitle" />
                     <gmrss:subtitle lang="sv-SE" role="subtitle" />
                     <gmrss:subtitle lang="da-DK" role="subtitle" />
                     <gmrss:subtitle lang="fi-FI" role="subtitle" />
                     <gmrss:videoCodec>H264</gmrss:videoCodec>
                     <gmrss:audioCodec>AAC</gmrss:audioCodec>
                     <gmrss:transport>HLS</gmrss:transport>
                     <gmrss:playerConfig key="ad_compatibility_encoding_profile">cmaf-hls-24fps-peacock-v1</gmrss:playerConfig>
                     <gmrss:transferMode>Streaming</gmrss:transferMode>
                     <gmrss:container>ISOBMFF</gmrss:container>
                     <gmrss:protectionScheme>CBCS</gmrss:protectionScheme>
                     <gmrss:protectionSystem>CKS</gmrss:protectionSystem>
                     <gmrss:protectionMethod>PLAYREADY</gmrss:protectionMethod>
                     <gmrss:protectionMethod>WIDEVINE</gmrss:protectionMethod>
                     <gmrss:protectionKey>"TEST-US-SLE-1-CENC:peacock_801363"</gmrss:protectionKey>
                     <gmrss:optimizedFor>STREAMING</gmrss:optimizedFor>
                     <gmrss:adInstructions key="test">break1</gmrss:adInstructions>
                     <gmrss:adInstructions key="real">break2</gmrss:adInstructions>
                 </media:content>
             </media:group>
         <!-- Rights metadata. Proposition should be supplied for each territory with windowing-->
             <gmrss:contentRights>
                 <gmrss:segment>
                     <gmrss:segmentCode>SKYSHOWTIME</gmrss:segmentCode>
                     <gmrss:accessRole>base_d2c</gmrss:accessRole>
                 </gmrss:segment>
                 <gmrss:proposition>
                     <gmrss:territory>PL</gmrss:territory>
                     <gmrss:serviceProviderCode>SKYSHOWTIME</gmrss:serviceProviderCode>
                     <gmrss:propositionCode>SKYSHOWTIME</gmrss:propositionCode>
                 </gmrss:proposition>
                 <gmrss:windowType>ARCHIVE</gmrss:windowType>
                 <gmrss:windowMode>SVOD</gmrss:windowMode>
                 <gmrss:valid>start=2021-01-01T00:00Z;end=2021-12-31T00:00Z;scheme=W3C-DTF</gmrss:valid>
                 <gmrss:restriction type="REST:PLAYTERR">
                     <gmrss:playRegion>PL</gmrss:playRegion>
                     <gmrss:usage>inclusive</gmrss:usage>
                 </gmrss:restriction>
                 <gmrss:restriction type="REST:PLATFORMCAPABILITY">
                     <gmrss:platformCapability>RECS</gmrss:platformCapability>
                     <gmrss:usage>exclusive</gmrss:usage>
                 </gmrss:restriction>
                 <gmrss:downloadable>true</gmrss:downloadable>
                 <gmrss:streamable>true</gmrss:streamable>
             <!-- Device Restrictions will be hardcoded downstream for MVP and do not need to be sent via OpenIngest-->
             </gmrss:contentRights>
             <media:status reason="add" state="active"/>
             <gmrss:languageDetails title="en-US" description="en-US" episodeTitle="en-US" originalAudio="en-GB" intendedAudience="en-US"/>
         </item>
       </channel>
    </rss>'
    

    Open Ingest Result

    OpenIngestResult will be returned without a wrapper through openIngestMerlin1.

    Field

    Notes

    First Schema Version

    Final Schema Version

    failureCounts

    A map containing the number of failures per OpenIngestFailure stage. OpenIngestFailures include CreateProgramInfo, CreateOfferInfo, CreateTvSeasonInfo, IngestProgram, IngestOffer, IngestTvSeason, CreateIngestMedia, IngestMedia, CallIngest, SaveOfferedItem, DeleteOfferedItem

    1.0

    1.4

    outcomeInfo

    A map of the OpenIngestAssetId (comprised of asset id, namespace, and provider) to the AssetIngestResult (see AssetIngestResult table)

    1.4

    failureReasons

    A set containing reasons for failures related to this asset

    1.0

    1.4

    outcomeMap

    A map of the OpenIngestAssetId (comprised of asset id, namespace, and provider) to the AssetIngestResult (see AssetIngestResult table)

    1.2

    1.4

    failed

    Whether the asset failed or was successfully ingested into Merlin

    1.5

    AssetIngestResult

    Field

    Notes

    First Schema Version

    Final Schema Version

    outcome

    The status of the asset after open ingest submission. Possible values include processed, failed, processedWithErrors, skipped

    1.0

    failures

    A description of the error in a certain phase of open ingest processing

    1.0

    1.4

    failureInfo

    See OpenIngestFailureInfo table

    1.4

    OpenIngestFailureInfo

    Field

    Notes

    First Schema Version

    Final Schema Version

    failedURI

    The identifier of the failed entity

    1.4

    reason

    The reason for the failure

    1.4

    info

    Additional information about the failure

    1.4

    hardFailure

    Whether this failure prevented ingest. If true, it's considered a hard failure. A failure which allows processing to continue is considered soft

    1.6

    phase

    The phase in which failure occurred. Phases include CreateProgramInfo, CreateOfferInfo, CreateTvSeasonInfo, IngestProgram, IngestOffer, IngestTvSeason, CreateIngestMedia, IngestMedia, CallIngest, SaveOfferedItem, DeleteOfferedItem

    1.4

    Sample Response

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <openIngestResult>
        <failed>true</failed>
        <outcomeInfo>
            <entry>
                <key>
                    <namespace>SkyShowtime</namespace>
                    <provider>NBC</provider>
                    <value>GMO_14713006559</value>
                </key>
                <value>
                    <failureInfo>
                        <hardFailure>true</hardFailure>
                        <phase>IngestProgram</phase>
                        <reason>Failed to create ProgramInfo guid=SkyShowtime:GMO_14713006559, provider=NBC, details=null null</reason>
                    </failureInfo>
                    <failureInfo>
                        <hardFailure>true</hardFailure>
                        <phase>IngestProgram</phase>
                        <reason>IngestWebService exception guid=SkyShowtime:GMO_14713006559, provider=NBC, details=com.theplatform.web.tv.ingest.api.IngestException: -5 is not a valid value for rating when scheme==urn:sky:bskybca:gb null</reason>
                    </failureInfo>
                    <failures>
                        <description>Failed to create ProgramInfo guid=SkyShowtime:GMO_14713006559, provider=NBC, details=null null</description>
                        <phase>IngestProgram</phase>
                    </failures>
                    <failures>
                        <description>IngestWebService exception guid=SkyShowtime:GMO_14713006559, provider=NBC, details=com.theplatform.web.tv.ingest.api.IngestException: -5 is not a valid value for rating when scheme==urn:sky:bskybca:gb null</description>
                        <phase>IngestProgram</phase>
                    </failures>
                    <outcome>failed</outcome>
                </value>
            </entry>
        </outcomeInfo>
        <outcomeMap>
            <entry>
                <key>
                    <namespace>SkyShowtime</namespace>
                    <provider>NBC</provider>
                    <value>GMO_14713006559</value>
                </key>
                <value>
                    <failureInfo>
                        <hardFailure>true</hardFailure>
                        <phase>IngestProgram</phase>
                        <reason>Failed to create ProgramInfo guid=SkyShowtime:GMO_14713006559, provider=NBC, details=null null</reason>
                    </failureInfo>
                    <failureInfo>
                        <hardFailure>true</hardFailure>
                        <phase>IngestProgram</phase>
                        <reason>IngestWebService exception guid=SkyShowtime:GMO_14713006559, provider=NBC, details=com.theplatform.web.tv.ingest.api.IngestException: -5 is not a valid value for rating when scheme==urn:sky:bskybca:gb null</reason>
                    </failureInfo>
                    <failures>
                        <description>Failed to create ProgramInfo guid=SkyShowtime:GMO_14713006559, provider=NBC, details=null null</description>
                        <phase>IngestProgram</phase>
                    </failures>
                    <failures>
                        <description>IngestWebService exception guid=SkyShowtime:GMO_14713006559, provider=NBC, details=com.theplatform.web.tv.ingest.api.IngestException: -5 is not a valid value for rating when scheme==urn:sky:bskybca:gb null</description>
                        <phase>IngestProgram</phase>
                    </failures>
                    <outcome>failed</outcome>
                </value>
            </entry>
        </outcomeMap>
    </openIngestResult>
    


    Was this article helpful?

    What's Next