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.

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 |
|
Der Nutzer muss ein aktives Abo haben. Der Zugriff hängt von der Abostufe ab. | Hulu (Add-ons) |
|
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:
- Die Property
eligibleRegion
eines Objekts für die Zugriffsspezifikation für Aktionen. Dieses Attribut ist erforderlich. - Die Property
ineligibleRegion
eines Objekts für die Zugriffsspezifikation für Aktionen.
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:
- Eine Liste von
Country
,City
undState
. - Ein
GeoShape
-Objekt. Ausführliche Anforderungen finden Sie im Abschnitt zuGeoShape
-Properties. - Eine Liste mit
GeoShape
-Objekten.
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 einemGeoShape
-Objekt, das eine Liste von Postleitzahlen enthält. - Beispiel 3:
eligibleRegion
mit einemGeoShape
-Objekt, das eine Liste von FSA-Codes (Forward Sortation Area) enthält. - Beispiel 4:
eligibleRegion
mit einemGeoShape
-Objekt, das eine DMA-ID enthält. - Beispiel 5:
eligibleRegion
mit einer Liste vonGeoShape
-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:
- Wir senden einen API-Aufruf an deinen Berechtigungsendpunkt, um die Berechtigungs-IDs des Nutzers zu erhalten.
- Wir suchen die erforderlichen Berechtigungs-IDs der Inhalte in deinem Media Actions-Feed.
- Wir gleichen die
entitlementId
eines Nutzers mit der Eigenschaftidentifier
des Objekts Medienabo in deinem Feed ab. Wenn mindestens eineentitlementId
übereinstimmt, können wir feststellen, dass der Nutzer auf die Inhalte zugreifen kann.

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
aufnologinrequired
. - 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
auffree
. - 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.

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.
- Für Film A ist
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.

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.
- Für Film A ist
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
aufpurchase
. - Füge
expectAcceptanceOf
inactionAccessibilityRequirement
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
aufrental
. - Füge
expectAcceptanceOf
inactionAccessibilityRequirement
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.

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.

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.

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.

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:
|
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 |
entitlements.entitlement |
Erforderlich, wenn der Zugriff auf deinen Streamingkatalog je nach Abotyp variiert. Diese Eigenschaft enthält die |
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:
|
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.