Zugriffsanforderungen

Nutzer sehen sich oder hören sich lieber Inhalte an, auf die sie bereits zugreifen können, z. B. Inhalte aus bestehenden Abos. Wenn Google weiß, auf welche Inhalte ein Nutzer in Ihrer App oder auf Ihrer Plattform zugreifen kann, kann Google ein besseres Suchergebnis oder eine bessere Antwort erstellen, um den Nutzer zu diesen Inhalten weiterzuleiten.

Abbildung 1. Zugriffsanforderungen helfen deinen Abonnenten, auf die Inhalte in deiner App oder auf deiner Plattform zuzugreifen.

Anforderungen für den Zugriff auf Inhalte ermitteln

Du musst die Zugriffsanforderungen für jedes Inhaltspaket in deinem Katalog angeben. Berücksichtigen Sie dabei die folgenden Fragen:

  • Müssen sich Nutzer in Ihrer App oder auf Ihrer Plattform anmelden, um auf die Inhalte zuzugreifen?
  • Benötigen Nutzer ein Abo?

    Nur Wiedergabeaktionen:

    • Benötigen Nutzer ein Abo bei einem externen Dienstleister?
    • Bieten Sie ein abgestuftes Abo, ein Abo mit mehreren Paketen oder ein Add-on-Abo an?
  • Nur Wiedergabeaktionen:Müssen Nutzer die Inhalte mieten oder kaufen?

  • Ändert sich die Zugriffsanforderung im Laufe der Zeit?

  • Hängt die Zugriffsanforderung vom Gerätestandort ab?

Arten von Zugriffsbeschränkungen

Es gibt zwei Arten von Zugriffsbeschränkungen:

Paywall-Typ

Sie können den Zugriff auf Inhalte nach Paywall-Typ einschränken. In der folgenden Tabelle werden die verschiedenen Arten von Paywalls beschrieben:

Paywall-Typ Beispiel Kategorie
Es ist kein Kauf oder eine Anmeldung erforderlich. Crackle nologinrequired
Der Nutzer muss angemeldet sein, benötigt aber kein kostenpflichtiges Abo. Vudu (AVOD) free
Der Nutzer muss ein aktives Abo haben. Der Zugriff ist unabhängig von der Abostufe. Netflix

subscription

Der Nutzer muss ein aktives Abo haben. Der Zugriff hängt von der Abostufe ab. Hulu (Add-ons)

subscription

Die Inhalte sind nach dem Kauf für einen begrenzten Zeitraum verfügbar. Vudu rental
Die Inhalte sind nach dem Kauf auf unbestimmte Zeit verfügbar. Vudu purchase
Die Inhalte sind mit einem Kabel-TV-Abo verfügbar. HBO GO externalSubscription

Paywall-Typ für Wiedergabeaktionen

Um den Paywall-Typ für Wiedergabeaktionen anzugeben, verwende die Property category in der Spezifikation für den Aktionszugriff:

"potentialAction": {
  "@type":"WatchAction",
  "target": {  },
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2018-06-01T10:35:29Z",
    "availabilityEnds": "2019-05-31T10:35:29Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  },
  ...
}

Paywall-Typ für Anhör-Aktionen

Verwende die Property category im Angebotsobjekt, um den Paywall-Typ für Inhalte für „Anhören“-Aktionen anzugeben:

"potentialAction": {
  "@type":"ListenAction",
  "target": {  },
  "expectsAcceptanceOf":{
    "@type":"Offer",
    "category":"subscription",
    "availabilityStarts": "2018-06-01T10:35:29Z",
    "availabilityEnds": "2019-05-31T10:35:29Z",
    "eligibleRegion": {
      "@type":"Country",
      "name":"US"
    }
  },
  ...
}

Geografischer Bereich

Sie müssen die Regionen angeben, in denen die Inhalte verfügbar sind. Verwende eine oder beide der folgenden Properties:

Ein Nutzer kann auf Inhalte zugreifen, wenn sich das Gerät in einer Region befindet, die in eligibleRegion angegeben ist, und nicht in einer Region, die in ineligibleRegion angegeben ist.

Für die Eigenschaften eligibleRegion und ineligibleRegion sind die folgenden Werte zulässig:

Wenn die Inhalte weltweit verfügbar sind, verwende für eligibleRegion den folgenden Sonderwert:

"eligibleRegion": "EARTH",

Anwendungsfälle für „eligibleRegion“

Im Folgenden finden Sie Anwendungsbeispiele für die eligibleRegion-Property:

  • Beispiel 1:eligibleRegion mit einer Liste von Ländern
  • Beispiel 2:eligibleRegion mit einem GeoShape-Objekt, das eine Liste von Postleitzahlen enthält.
  • Beispiel 3:eligibleRegion mit einem GeoShape-Objekt, das eine Liste von FSA-Codes (Forward Sortation Area) enthält.
  • Beispiel 4:eligibleRegion mit einem GeoShape-Objekt, das eine DMA-ID enthält.
  • Beispiel 5:eligibleRegion mit einer Liste von GeoShape-Objekten Jede enthält eine DMA-ID.
  • Beispiel 6:ineligibleRegion mit unkenntlich gemachten Postleitzahlen.

Beispiel 1

eligibleRegion durch eine Liste von Ländern ersetzen:


"actionAccessibilityRequirement": {
  "@type": "ActionAccessSpecification",
  "category": "subscription",
  "requiresSubscription": {
    "@type": "MediaSubscription",
    "@id": "http://www.example.com/north_america_network/subscription",
    "name": "Example Subscription",
    "commonTier": true
  },
  "eligibleRegion": [
    {
      "@type": "Country",
      "name": "US"
    },
    {
      "@type": "Country",
      "name": "CA"
    }
  ]
}

Beispiel 2

eligibleRegion mit einem GeoShape-Objekt, das eine Liste von Postleitzahlen enthält:


"actionAccessibilityRequirement": {
  "@type": "ActionAccessSpecification",
  "category": "subscription",
  "requiresSubscription": {
    "@type": "MediaSubscription",
    "@id": "http://www.example.com/local_tv_network/subscription",
    "name": "Example Subscription",
    "commonTier": true
  },
  "eligibleRegion": {
    "@type": "GeoShape",
    "@id": "http://example.com/area1",
    "addressCountry": "US",
    "postalCode": [
      "94118",
      "94119"
    ]
  }
}

Beispiel 3

eligibleRegion mit einem GeoShape-Objekt, das eine Liste von FSA-Codes (Forward Sortation Area) enthält:


"actionAccessibilityRequirement": {
  "@type": "ActionAccessSpecification",
  "category": "subscription",
  "requiresSubscription": {
    "@type": "MediaSubscription",
    "@id": "http://www.example.com/local_tv_network/subscription",
    "name": "Example Subscription",
    "commonTier": true
  },
  "eligibleRegion":{
    "@type": "GeoShape",
    "@id": "http://example.com/area2",
    "addressCountry": "CA",
    "postalCode": [
      "1A1",
      "K1A"
    ]
  }
}

Beispiel 4

eligibleRegion mit einem GeoShape-Objekt, das eine DMA-ID enthält:


"actionAccessibilityRequirement": {
  "@type": "ActionAccessSpecification",
  "category": "subscription",
  "requiresSubscription": {
    "@type": "MediaSubscription",
    "@id": "http://www.example.com/abcd/subscription",
    "name": "Example Subscription",
    "commonTier": true
  },
  "eligibleRegion":{
    "@type": "GeoShape",
    "@id": "http://example.com/area3",
    "addressCountry": "US",
    "identifier": [
      {
        "@type": "PropertyValue",
        "propertyID": "DMA_ID",
        "value": "501"
      }
    ]
  }
}

Beispiel 5

eligibleRegion mit einer Liste von GeoShape-Objekten. Jede enthält eine DMA-ID:


"actionAccessibilityRequirement" : {
   "@type" : "ActionAccessSpecification",
   "eligibleRegion" : [
      {
         "@id" : "http://example.com/dma/601",
         "@type" : "GeoShape",
         "addressCountry" : "US",
         "identifier" : {
            "@type" : "PropertyValue",
            "propertyID" : "DMA_ID",
            "value" : "601"
         }
      },
      {
         "@id" : "http://example.com/dma/602",
         "@type" : "GeoShape",
         "addressCountry" : "US",
         "identifier" : {
            "@type" : "PropertyValue",
            "propertyID" : "DMA_ID",
            "value" : "602"
         }
      }
   ]
}

Beispiel 6

ineligibleRegion mit ausgeblendeten Postleitzahlen:


"actionAccessibilityRequirement": {
  "@type": "ActionAccessSpecification",
  "category": "subscription",
  "requiresSubscription": {
    "@type": "MediaSubscription",
    "@id": "http://www.example.com/local_tv_network/subscription",
    "name": "Example Subscription",
    "commonTier": true
  },
 "eligibleRegion":   {
      "@type": "Country",
      "name": "US"
    },
  "ineligibleRegion": {
    "@type": "GeoShape",
    "@id": "http://example.com/area1",
    "addressCountry": "US",
    "postalCode": [
      "94118",
      "94119"
    ]
  }
}

Berechtigungs-ID

Die Berechtigungs-ID entitlementId bezieht sich auf einen String, der den Zugriff auf eine Gruppe von Inhalten in deinem Medienkatalog darstellt. So ermittelt Google, ob ein Nutzer Zugriff auf deine Inhalte hat:

  1. Wir senden einen API-Aufruf an deinen Berechtigungsendpunkt, um die Berechtigungs-IDs des Nutzers zu erhalten.
  2. Wir suchen die erforderlichen Berechtigungs-IDs der Inhalte in deinem Media Actions-Feed.
  3. Wir gleichen die entitlementId eines Nutzers mit der Eigenschaft identifier des Objekts Medienabo in deinem Feed ab. Wenn mindestens eine entitlementId übereinstimmt, können wir feststellen, dass der Nutzer auf die Inhalte zugreifen kann.
Abbildung 2. Eine der Berechtigungs-IDs des Nutzers stimmt mit der erforderlichen Berechtigungs-ID des Inhalts überein.

Google empfiehlt die folgende Syntax für entitlementId:

<domain name> + colon (:) + <access level to content>

Syntaxbeispiele:

  • example.com:basic
  • example.com:premium
  • example.com:sports

Beispiel für eine Berechtigungs-ID

Im Feed von MediaExampleCompany ist angegeben, dass für Movie XYZ die example.com:basic entitlementId erforderlich ist, wie hier gezeigt:

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "Movie",
  "@id": "www.example.com/movie_xyz",
  "url": "www.example.com/movie_xyz",
  "name": "Movie XYZ",
  "potentialAction": {
    "@type": "WatchAction",
    "target": [  ],
    "actionAccessibilityRequirement": {
      "@type": "ActionAccessSpecification",
      "category": "subscription",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "@id": "http://www.example.com/basic_subscription",
        "name": "Basic subscription",
        "commonTier": true
        ...
      },
      ...
    }
  },
  ...
}

Gängige Anwendungsfälle für den Zugriff

Im Folgenden sind einige gängige Anwendungsfälle für den Zugriff aufgeführt:

  • Kostenlos (keine Anmeldung erforderlich): Die Inhalte sind ohne Anmeldung, Abo oder Kauf verfügbar.
  • Kostenlos (Anmeldung erforderlich): Für die Inhalte müssen Nutzer angemeldet sein, benötigen aber kein Abo.
  • Einstufiges Abo: Für die Inhalte ist ein Abo erforderlich. Alle Abonnenten können unabhängig von ihrem Abopaket auf dieselben Inhalte zugreifen, unabhängig davon, ob es sich um Filme oder Folgen handelt.
  • Mehrere Abostufen:Für die Inhalte ist ein Abo erforderlich. Abonnenten können je nach Abostufe auf unterschiedliche Inhalte zugreifen, z. B. Filme oder Folgen. Beispiel: Silber im Vergleich zu Gold.
  • Add-on-Abo:Für die Inhalte ist ein Abo erforderlich. Abonnenten können Premium-Inhalte zu ihrem regulären Abo hinzufügen.
  • Einmaliger Kauf:Die Inhalte können gekauft werden, woraufhin der Nutzer unbegrenzt darauf zugreifen kann.
  • Live-TV:Ein Abo umfasst den Zugriff auf lokale, nationale und Premium-Kanäle.
  • Drittanbieter-Abo:Der Nutzer muss sich für die Inhalte bei seinem Kabelanbieter anmelden.

Kostenlos (keine Anmeldung erforderlich)

Keine Anmeldung erforderlich

Die Inhalte sind ohne Anmeldung oder Abo verfügbar.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • Setzen Sie category auf nologinrequired.
  • Geben Sie expectAcceptanceOf nicht an.

Kostenlos (Anmeldung erforderlich)

Anmeldung erforderlich

Für die Inhalte ist keine Anmeldung, aber kein Abo erforderlich.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • Setzen Sie category auf free.
  • Geben Sie expectAcceptanceOf nicht an.

Einstufiges Abo

Bei einem einstufigen Abomodell hat ein Dienstanbieter eine Abostufe. Alle Abonnenten können unabhängig von ihrem Abopaket auf dieselben Inhalte zugreifen, unabhängig davon, ob es sich um Filme oder Folgen handelt.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "requiresSubscription": {
        "@type": "MediaSubscription",
        "name": "Example Package",
        "commonTier": true,
        "@id": "http://www.example.com/example_package"
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

Mehrstufiges Abo

Bei einem abgestuften Abomodell hat ein Dienstanbieter mehrere Abostufen, z. B. Gold, Silber und Bronze. Nutzer mit dem Abo der höheren Stufe können auf alle Inhalte der niedrigeren Stufe zugreifen. Nutzer mit einem Abo der niedrigeren Stufe können jedoch nicht auf die Inhalte der höheren Stufe zugreifen.

Abbildung 3. Ein mehrstufiges Abomodell und die Darstellung der Berechtigungen.

Stellen Sie sich folgendes Szenario vor:

  • Jana hat das Gold-Abo. Der Endpunkt für Berechtigungen gibt die folgenden entitlementId-IDs zurück:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • Johannes hat das Bronze-Abo. Dein Berechtigungsendpunkt gibt die folgende entitlementId zurück:
    • example.com:bronze
  • Für Ihren Feed mit Media-Aktionen gelten die folgenden Anforderungen:
    • Für Film A ist example.com:bronze erforderlich.
    • Für Film B ist example.com:silver erforderlich.

In diesem Szenario bestimmt Google die folgenden Zugriffsebenen für Jana und Johannes:

  • Sowohl Erika als auch Max haben Zugriff auf Film A.
  • Jana hat Zugriff auf Film B, Johannes nicht.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

Add-on-Abo

Bei einem Abomodell mit Add-ons können Nutzer ihre Berechtigungen erweitern und einem Basisabo Kanäle hinzufügen. Nutzer können beliebig viele Kanäle hinzufügen.

Abbildung 4: Ein Abomodell für Add-ons und die Darstellung der Berechtigungen.

Stellen Sie sich folgendes Szenario vor:

  • Jana hat zusätzlich zum Basic-Abo PRO und Sportz. Dein Berechtigungsendpunkt gibt die folgenden entitlementId-IDs zurück:
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • Johannes hat nur das Basic-Abo. Dein Berechtigungsendpunkt gibt die folgende entitlementId zurück:
    • example.com:basic
  • Für Ihren Feed mit Media-Aktionen gelten die folgenden Anforderungen:
    • Für Film A ist example.com:basic erforderlich.
    • Für Film B ist example.com:pro erforderlich.

In diesem Szenario bestimmt Google die folgenden Zugriffsebenen für Jana und Johannes:

  • Sowohl Erika als auch Max haben Zugriff auf Film A.
  • Jana hat Zugriff auf Film B, Johannes nicht.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    "requiresSubscription": [
      {
          "@type": "MediaSubscription",
          "@id": "https://www.example.com/package/basic",
          "name": "Basic",
          "sameAs": "https://www.example.com/package/basic",
          "commonTier": true
        },
        {
          "@type": "MediaSubscription",
          "@id": "https://www.example.com/packages/basic/pro",
          "name": "PRO",
          "sameAs": "https://www.example.com/package/pro",
          "identifier": "example.com:pro",
          "commonTier": false
        },
        {
          "@type": "MediaSubscription",
          "@id": "https://www.example.com/package/sportz",
          "name": "Sportz",
          "sameAs": "https://www.example.com/package/sports",
          "identifier": "example.com:sportz",
          "commonTier": false
        }
    }
  }
}

Einmaliger Kauf

Kauf

Die Inhalte sind nach dem Kauf auf unbestimmte Zeit verfügbar.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "purchase",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    },
    "expectsAcceptanceOf": {
      "@type": "Offer",
      "price": 7.99,
      "priceCurrency": "USD",
      "seller": {
        "@type": "Organization",
        "name": "Example",
        "sameAs": "http://www.example.com/"
      }
    }
  }
}
  • Setzen Sie category auf purchase.
  • Füge expectAcceptanceOf in actionAccessibilityRequirement ein, um den Kaufpreis anzugeben.

Miete

Die Inhalte sind nach dem Kauf für einen begrenzten Zeitraum verfügbar.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "rental",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    },
    "expectsAcceptanceOf": {
      "@type": "Offer",
      "price": 7.99,
      "priceCurrency": "USD",
      "seller": {
        "@type": "Organization",
        "name": "Example",
        "sameAs": "http://www.example.com/"
      }
    }
  }
}
  • Setzen Sie category auf rental.
  • Füge expectAcceptanceOf in actionAccessibilityRequirement ein, um den Preis der Ausleihe anzugeben.

Live-TV

In einem Media Actions-Feed kannst du den Zugriff auf einen Live-TV-Kanal oder ein Ereignis basierend auf den folgenden beiden Nutzerbedingungen einschränken:

  • Gerätestandort des Nutzers

    Wenn du den Zugriff auf den TV-Sender einschränken möchtest, gib den Bereich an, in dem Nutzer darauf zugreifen können. Diese Bedingung gilt in der Regel für lokale TV-Sender.

  • Kontostatus des Nutzers

    Wenn der Zugriff auf einen TV-Kanal von der Einstellung eines Nutzers auf Kontoebene abhängt, verwende Berechtigungs-IDs, um die Einschränkung anzugeben.

    Diese Bedingung gilt in der Regel für die folgenden Anwendungsfälle:

    • Paket: Nationale Kanäle sind oft in Paketen enthalten und Nutzer können auswählen, welches Paket sie abonnieren möchten.
    • Add-on:Bei einigen Premium-Kanälen müssen Nutzer ihrem Abo zusätzliche Kanäle hinzufügen.
    • Regional Sports Network (RSN): RSNs sind in der Regel mit dem Wohnort eines Nutzers verknüpft. Nutzer können sich Inhalte des RSN auch ansehen, wenn sie außerhalb ihres „Heimatorts“ reisen.

Abo eines Drittanbieters

Drittanbieter-Abo

Die Inhalte sind für die Abonnenten über einen anderen Dienst verfügbar.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "externalsubscription"
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "requiresSubscription":{
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/faq",
      "name": "Example",
      "sameAs": "https://www.example.com/faq",
      "authenticator": {
        "@type": "Organization",
        "name": "TVE"
      }
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • Füge authenticator hinzu, um anzugeben, dass die Abonnenten über einen anderen Dienst authentifiziert werden. Für HBO GO ist beispielsweise ein Abo beim Kabelanbieter erforderlich.

Gängige Stufenpakete

Inhalte der gemeinsamen Stufe sind für alle Abonnenten unabhängig von ihrem Abopaket verfügbar. Die gemeinsame Stufe gilt für alle Inhalte mit der category von subscription. Weitere Informationen zur Property category finden Sie im Abschnitt Paywall-Typ.

Warum ist ein Paket mit gemeinsamer Stufe erforderlich?

Mehrere Google-Produkte bieten Nutzern Empfehlungen für Serien und Filme. Dazu gehören die Google Suche, Android TV und Google Assistant. Damit Google die Erwartungen der Nutzer an die Kosten steuern kann, muss es wissen, welche Inhalte allen Abonnenten über die gemeinsame Stufe zur Verfügung stehen. Google muss auch wissen, welche Inhalte Abonnenten mit bestimmten Abopaketen zur Verfügung stehen.

Google empfiehlt Titel, die in der gemeinsamen Stufe verfügbar sind, es sei denn, du unterstützt die Entitlements API. Über die API kann Google ermitteln, auf welche Titel der jeweiligen Stufe ein bestimmter Nutzer zugreifen kann.

Wann sollte ich ein Paket mit einer gemeinsamen Stufe erstellen?

Ein gemeinsames Stufenpaket ist erforderlich, wenn dein Dienst Inhalte anbietet, die für alle Abonnenten verfügbar sind. Dazu gehören Dienste, die nur ein Paket anbieten, und Dienste, die mehrere Pakete oder Add-ons anbieten.

Anbieter, deren Inhalte nicht für alle Abonnenten verfügbar sind, müssen kein gemeinsames Stufenpaket erstellen. Ein Beispiel sind Dienstanbieter, die in all ihren Paketen sich gegenseitig ausschließende Inhalte anbieten.

Beispiele für gängige Stufen

Im Folgenden finden Sie Beispiele für die allgemeine Stufe.

Abo mit Stufen

Bei einem abgestuften Abomodell hat ein Dienstanbieter mehrere Abostufen, z. B. Gold, Silber und Bronze. Nutzer mit dem Abo der höheren Stufe haben Zugriff auf alle Inhalte der niedrigeren Stufen. Nutzer mit dem niedrigeren Abo haben keinen Zugriff auf die Inhalte des höheren Abos. Das folgende Bild ist ein Beispiel für die Paketstruktur.

Die Gold-Stufe enthält alle Inhalte der Silber-Stufe, die wiederum alle Inhalte der Bronze-Stufe enthält.
Abbildung 5. Struktur der abgestuften Abopakete.

Im folgenden Codebeispiel ist das Bronze-Paket die gemeinsame Stufe, da alle Nutzer Zugriff auf alle Inhalte dieser Stufe haben.

"requiresSubscription": [
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/bronze",
      "name": "Bronze",
      "sameAs": "https://www.example.com/package/bronze",
      "commonTier": true
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/silver",
      "name": "Silver",
      "sameAs": "https://www.example.com/package/silver",
      "identifier": "example.com:silver",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/gold",
      "name": "Gold",
      "sameAs": "https://www.example.com/package/gold",
      "identifier": "example.com:gold",
      "commonTier": false
    }
  ],

Add-ons

Bei einem Abomodell mit Add-ons können Nutzer ihre Berechtigungen erweitern und einem Basisabo Kanäle hinzufügen. Nutzer können beliebig viele Kanäle hinzufügen. Das folgende Bild ist ein Beispiel für die Paketstruktur.

Jeder Nutzer beginnt mit dem Basic-Kanal und kann eine beliebige Kombination aus den PRO-, Sportz- und Moviemax-Kanälen hinzufügen.
Abbildung 6: Struktur des Add-on-Abopakets.

Wenn du einen Kanal hast, der für alle Nutzer verfügbar ist und für den keine Kosten anfallen, kannst du das Paket mit dem Paket der gemeinsamen Stufe zusammenführen.

Im folgenden Codebeispiel ist das Basispaket die gemeinsame Stufe, da alle Nutzer Zugriff auf alle Inhalte in diesem Paket haben.

"requiresSubscription": [
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/basic",
      "name": "Basic",
      "sameAs": "https://www.example.com/package/basic",
      "commonTier": true
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/packages/basic/pro",
      "name": "PRO",
      "sameAs": "https://www.example.com/package/pro",
      "identifier": "example.com:pro",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/sportz",
      "name": "Sportz",
      "sameAs": "https://www.example.com/package/sports",
      "identifier": "example.com:sportz",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/moviemax",
      "name": "Moviemax",
      "sameAs": "https://www.example.com/package/moviemax",
      "identifier": "example.com:moviemax",
      "commonTier": false
    }
  ],

Pakete mit sich überschneidenden Inhalten

Bei einem Inhaltsmodell, bei dem sich Inhalte von Paketen überschneiden, verkauft ein Dienstanbieter Pakete, die Inhalte aus anderen Paketen enthalten. Das folgende Bild ist ein Beispiel für die Paketstruktur.

Ein Venn-Diagramm, in dem die Überschneidung zwischen den Paketen 1, 2 und 3 als „Gemeinsame Stufe“ gekennzeichnet ist.
Abbildung 7. Paketstruktur mit sich überschneidenden Inhalten.

Im folgenden Codebeispiel bietet der Anbieter drei Pakete an, bei denen sich einige Inhalte über alle Pakete hinweg überschneiden. In diesem Fall ist ein viertes Paket erforderlich, das die gemeinsame Stufe darstellt. Er muss alle Inhalte enthalten, die in allen drei Paketen verfügbar sind.

"requiresSubscription": [
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/1",
      "name": "Package 1",
      "sameAs": "https://www.example.com/package/1",
      "identifier": "example.com:package1",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/2",
      "name": "Package 2",
      "sameAs": "https://www.example.com/package/2",
      "identifier": "example.com:package2",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/3",
      "name": "Package 3",
      "sameAs": "https://www.example.com/package/3",
      "identifier": "example.com:package3",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/common",
      "name": "Common Tier Package",
      "sameAs": "https://www.example.com/package/common",
      "commonTier": true
    }
  ],

Pakete ohne sich überschneidende Inhalte

Bei einem Inhaltsmodell, bei dem sich nicht alle Inhaltspakete überschneiden, verkauft ein Dienstanbieter Pakete, die keine Inhalte aus anderen Paketen enthalten. Das folgende Bild ist ein Beispiel für die Paketstruktur.

Pakete 1, 2 und 3 sind völlig unabhängig voneinander.
Abbildung 8. Paketstruktur ohne sich überschneidende Inhalte.

Im folgenden Beispiel bietet der Anbieter drei Pakete an, die sich nicht überschneiden. Es ist kein Paket der gemeinsamen Stufe erforderlich.

"requiresSubscription": [
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/1",
      "name": "Package 1",
      "sameAs": "https://www.example.com/package/1",
      "identifier": "example.com:package1",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/2",
      "name": "Package 2",
      "sameAs": "https://www.example.com/package/2",
      "identifier": "example.com:package2",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/3",
      "name": "Package 3",
      "sameAs": "https://www.example.com/package/3",
      "identifier": "example.com:package3",
      "commonTier": false
    }
  ],

Berechtigungsendpunkt

Verwende die Informationen in diesem Abschnitt, um einen HTTPS-Endpunkt zu hosten, der die mit einem Nutzer verknüpften Berechtigungen zurückgibt.

Voraussetzungen

Prüfe zuerst, ob dein Dienst den OAuth 2.0-Vorgang mit Google unterstützt.

Anfrage

Um die Berechtigungen eines Nutzers zu erhalten, sendet Google eine Anfrage, die das OAuth-Token des Nutzers enthält. Ihr Endpunkt muss den Nutzer anhand dieses OAuth-Tokens identifizieren. Sehen Sie sich folgendes Beispiel an:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>

Antwort

Ihr Endpunkt muss eine Antwort mit den folgenden Eigenschaften zurückgeben:

Attribut
subscription

Erforderlich

Dies ist ein Feld in der Stammantwort.

subscription.type

Erforderlich

Diese Eigenschaft kann die folgenden Werte haben:

  • ActiveSubscription: Der Nutzer hat ein aktives Abo beim Anbieter.
  • ActiveTrial: Der Nutzer hat einen aktiven Testzeitraum für den Anbieter.
  • InactiveSubscription: Der Nutzer hat kein aktives Abo oder kein aktives Probeabo.
subscription.expiration_date

Optional

Das Ablaufdatum dieser Berechtigung im ISO 8601-Format, einschließlich Zeitzone. Weitere Informationen finden Sie unter Ablaufsdatum.

entitlements

Optional

Diese Stammeigenschaft enthält die entitlementId-Werte, die der Nutzer hat.

entitlements.entitlement

Erforderlich, wenn der Zugriff auf deinen Streamingkatalog je nach Abotyp variiert.

Diese Eigenschaft enthält die entitlementId. Weitere Informationen finden Sie unter Berechtigungs-ID.

entitlements.expiration_date

Optional

Das Ablaufdatum dieses Abos im ISO 8601-Format, einschließlich der Zeitzone. Weitere Informationen finden Sie unter Ablaufsdatum.

Ablaufdaten

In einer Endpunktantwort gibt es zwei Properties, die sich auf Ablaufdaten beziehen: subscription.expiration_date und entitlements.expiration_date. Sie können entweder eine oder keine der beiden Optionen verwenden, aber nicht beide. Welches Sie verwenden, hängt von Ihrem Abomodell ab.

Abomodell
Der Zugriff auf deinen Streamingkatalog ist für alle Abonnenten gleich. Da Sie das Attribut entitlements nicht angeben müssen, geben Sie subscription.expiration_date an.

Der Zugriff auf deinen Streamingkatalog hängt von den Details des Abos eines Nutzers ab.

Wenn Ihr Abomodell mehrere Stufen oder Add-ons hat, die im Laufe der Zeit ablaufen, gehen Sie so vor:

  • Wenn alle entitlements.entitlement-Werte gleichzeitig ablaufen, geben Sie subscription.expiration_date an.
  • Wenn einige entitlements.entitlement-Werte zu unterschiedlichen Zeiten ablaufen, geben Sie entitlements.expiration_date an.

Beispielantworten

Im Folgenden findest du Beispiele für Antworten bei verschiedenen Abostatus:

  • Aktives Abo
  • Aktives Abo mit Ablaufdatum
  • Kein Abo
  • Aktive Abos für mehrere Stufen oder Add-ons

Aktives Abo

Aktives Abo

Ein Nutzer hat ein aktives Abo bei example.com. In diesem Fall haben alle Abonnenten unabhängig von ihrem Abotyp Zugriff auf deinen gesamten Streamingkatalog.


{
  "subscription" : {
    "type": "ActiveSubscription",
  }
}

Aktives Abo mit Ablaufdatum

Aktives Abo mit Ablaufdatum

Ein Nutzer hat ein aktives Abo für example.com, das ein Ablaufdatum hat. In diesem Fall haben alle Abonnenten unabhängig von ihrem Abotyp Zugriff auf deinen gesamten Streamingkatalog.


{
  "subscription" : {
    "type": "ActiveSubscription",
    "expiration_date": "2019-11-10T10:00:00Z"
  }
}

Kein Abo

Kein Abo

Ein Nutzer hat kein Abo für example.com.


{
  "subscription" : {
    "type": "InactiveSubscription"
  }
}

Aktive Abos für mehrere Stufen oder Add-ons

Aktive Abos für mehrere Stufen oder Add-ons

Ein Nutzer hat bis zu einem bestimmten Datum ein Abo für example.com:premium.


{
  "subscription" : {
    "type": "ActiveSubscription",
  }
  "entitlements": [
    {
      "entitlement": "example.com:premium",
      "expiration": "2019-11-10T10:00:00Z"
    }
  ]
}

Ratenbegrenzung

Google aktualisiert die Berechtigungsinformationen eines Nutzers bis zu alle sechs Stunden. Um die maximale Anzahl von Abfragen pro Sekunde (QPS) zu glätten, verteilt Google die Abfragen gleichmäßig über die Zeit auf Ihren Endpunkt. So können Sie die erwartete durchschnittliche QPS für Ihren Endpunkt mit der folgenden Formel schätzen:

Erwartete durchschnittliche QPS = <Gesamtzahl der Nutzer> ÷ 21.600 Sekunden (6 Stunden × 60 Minuten × 60 Sekunden)

Wenn Sie eine große Anzahl von Nutzern unterstützen, kann Google das Intervall von 6 Stunden anpassen. Wenden Sie sich bei Bedarf an Google, um die Konfiguration zu besprechen.

Google kontaktieren

Wenn Ihr Endpunkt bereit ist, wenden Sie sich an Google, um die URL des Endpunkts mitzuteilen.

Eigenschaften der Spezifikation für den Aktionszugriff

Weitere Informationen finden Sie im Abschnitt Eigenschaften der Spezifikation für den Aktionszugriff.