Watch Actions - Examples

The following is a list of examples of some common scenarios for Watch Actions to guide you in your feed development. Many of the examples have omitted details of some of the properties to keep them concise.

Example 1 - Simple example

Movie with the same universal link across all platforms with the same access requirements

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/IOSPlatform",
            "http://schema.googleapis.com/GoogleVideoCast"
          ]
        },
         "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2017-07-21T10:35:29Z",
           "availabilityEnds": "2018-10-21T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
      },
      ... Other properties ...
    }

Movie with an old style link for Android and universal link across all other platforms with the same access requirements

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": {
        "@type": "WatchAction",
        "target": [
          {
            "@type": "EntryPoint",
            "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
            "inLanguage": "en",
            "actionPlatform": [
              "http://schema.org/DesktopWebPlatform",
              "http://schema.org/MobileWebPlatform",
              "http://schema.org/IOSPlatform",
              "http://schema.googleapis.com/GoogleVideoCast"
            ]
          },
          {
            "@type": "EntryPoint",
            "urlTemplate": "android-app://com.example/example-scheme/forrest_gump?autoplay=true",
            "inLanguage": "en",
            "actionPlatform": [
              "http://schema.org/AndroidPlatform"
            ]
          }
        ],
         "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2017-07-21T10:35:29Z",
           "availabilityEnds": "2018-10-21T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
      },
      ... Other properties ...
    }

Example 3 - Multiple access requirements

Access requirement is free for a limited time and subscription afterwards - same across all platforms.

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/IOSPlatform",
            "http://schema.googleapis.com/GoogleVideoCast"
          ]
        },
         "actionAccessibilityRequirement": [
         {
            "@type": "ActionAccessSpecification",
            "category": "free",
            "availabilityStarts": "2018-01-01T00:00Z",
            "availabilityEnds": "2018-05-31T00:00Z",
            "eligibleRegion": {
              "@type": "Country",
              "name": "US"
            }
          },
          {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-06-01T10:35:29Z",
           "availabilityEnds": "2019-06-01T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
       ]
      },
      ... Other properties ...
    }

Example 4 - Different access requirements across different platforms

Access requirement is free for a limited time on Desktop and Mobile platforms and subscription afterwars, and always subscription on Cast

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": [
      {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/IOSPlatform"
          ]
        },
        "actionAccessibilityRequirement": [
         {
            "@type": "ActionAccessSpecification",
            "category": "free",
            "availabilityStarts": "2018-01-01T10:35:29Z",
            "availabilityEnds": "2018-05-31T10:35:29Z",
            "eligibleRegion": {
              "@type": "Country",
              "name": "US"
            }
          },
          {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-06-01T10:35:29Z",
           "availabilityEnds": "2019-05-31T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
       ]
      },
      {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": "http://schema.googleapis.com/GoogleVideoCast",
        },
        "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-01-01T10:35:29Z",
           "availabilityEnds": "2019-05-31T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
      }
      ]
      ... Other properties ...
    }

Example 5 - Catalog has TV Show content

Feed should contain entries for all episodes, a TVSeries entry and TVSeason entry(ies)

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "DataFeed",
      "dateModified": "2015-07-20T00:44:51Z",
      "dataFeedElement": [
        {
          "@type": "TVEpisode",
          "@id": "http://www.example.com/showname/s1/e1",
          "url": "http://www.example.com/showname/s1/e1",
          ... Other properties ...
        },
        {
          "@type": "TVEpisode",
          "@id": "http://www.example.com/showname/s1/e2",
          "url": "http://www.example.com/showname/s1/e2",
          ... Other properties ...
        },
        ... Other episodes ...
        {
          "@type": "TVSeries",
          "@id": "http://www.example.com/showname",
          "url": "http://www.example.com/showname",
          ... Properties for TVSeries action ...
        },
        {
          "@type": "TVSeason",
          "@id": "http://www.example.com/showname/s1",
          "url": "http://www.example.com/showname/s1",
          ... Properties for TVSeason action ...
        }
      ]
    }