Zugriffsanforderungen

Nutzer bevorzugen es, Inhalte anzusehen oder anzuhören, auf die sie bereits zugreifen können, z. B. ihre vorhandenen Aboinhalte. Wenn Google weiß, auf welche Inhalte ein Nutzer in Ihrer App oder Plattform zugreifen kann, kann Google ein besseres Suchergebnis oder eine bessere Antwort erstellen und den Nutzer zu diesen Inhalten weiterleiten.

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

Anforderungen für den Zugriff auf Inhalte ermitteln

Sie müssen die Zugriffsanforderung für jedes Inhaltspaket in Ihrem Katalog angeben. Dabei solltest du die folgenden Fragen berücksichtigen:

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

    Nur Smartwatch-Aktionen:

    • Benötigen Nutzer ein Abo bei einem externen Dienstanbieter?
    • Bieten Sie ein gestaffeltes Abo mit mehreren Paketen oder Add-on an?
  • Nur Smartwatch-Aktionen: Müssen Nutzer die Inhalte ausleihen oder kaufen?

  • Ändert sich die Zugriffsanforderung im Laufe der Zeit?

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

Zugriffseinschränkungen

Es gibt zwei Arten von Zugriffsbeschränkungen:

Paywall-Typ

Du kannst den Zugriff auf Inhalte anhand des Paywall-Typs einschränken. In der folgenden Tabelle sind die verschiedenen Arten der Paywall aufgeführt:

Paywall-Typ Beispiel Kategorie
Es ist kein Kauf und keine Anmeldung erforderlich. Knistern 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 per Kabelabo verfügbar. HBO GO externalSubscription

Paywall-Typ für Smartwatch-Aktionen

Wenn du den Paywall-Typ für „WatchActions“ angeben möchtest, 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 „Listen Actions“

Um den Paywall-Typ für „Listen Actions“ anzugeben, verwende die category Property im Angebotsobjekt:

"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"
    }
  },
  ...
}

Region

Sie müssen die Regionen angeben, in denen die Inhalte verfügbar sind. Verwenden Sie eines oder beide der folgenden Attribute:

Ein Nutzer kann auf Inhalte zugreifen, wenn sich der Gerätestandort in einer Region befindet, die in eligibleRegion festgelegt ist, und in keiner Region, die in ineligibleRegion angegeben ist.

Für die Attribute eligibleRegion und ineligibleRegion sind folgende Werte zulässig:

Wenn die Inhalte weltweit verfügbar sind, verwenden Sie den folgenden speziellen Wert für eligibleRegion:

"eligibleRegion": "EARTH",

berechtigte Anwendungsfälle für Regionen

Hier sind Anwendungsfälle aus der eligibleRegion-Property:

  • Beispiel 1: eligibleRegion mit einer Liste von Ländern.
  • Beispiel 2:eligibleRegion mit einem GeoShape-Objekt, das eine Liste mit Postleitzahlen enthält.
  • Beispiel 3: eligibleRegion mit einem GeoShape-Objekt, das eine Liste der FSA-Codes (Forward Sort 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 blockierten Postleitzahlen.

Beispiel 1

eligibleRegion mit einer Liste von Ländern:


"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 mit 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 Sort 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 durch ein 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 durch eine 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 blockierten 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 Berechtigungskennung entitlementId bezieht sich auf einen String, der den Zugriff auf eine Gruppe von Inhalten in Ihrem Medienkatalog darstellt. So ermitteln Sie, ob ein Nutzer Zugriff auf Ihre Inhalte hat:

  1. Wir senden einen API-Aufruf an deinen Berechtigungsendpunkt, um die Berechtigungskennungen des Nutzers zu erhalten.
  2. Die erforderlichen Berechtigungskennungen des Inhalts werden aus deinem Media Actions-Feed abgerufen.
  3. Wir gleichen die entitlementId eines Nutzers mit der identifier-Property des Medienaboobjekts in Ihrem Feed ab. Wenn mindestens eine Übereinstimmung mit entitlementId übereinstimmt, stellen wir fest, dass der Nutzer auf den Inhalt zugreifen kann.
Abbildung 2: Eine der Berechtigungskennungen des Nutzers stimmt mit der erforderlichen Berechtigungskennung des Inhalts überein.

Google empfiehlt die Verwendung der folgenden 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

Der Feed von MediaExampleCompany gibt an, dass Movie XYZ die example.com:basic entitlementId benötigt, 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

Gängige Anwendungsfälle für den Zugriff:

  • 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, es ist jedoch kein Abo erforderlich.
  • Einstufiges Abo:Für die Inhalte ist ein Abo erforderlich. Alle Abonnenten können unabhängig vom Abopaket auf dieselben Inhalte zugreifen, unabhängig davon, ob sie Filme oder Folgen ansehen.
  • Mehrstufiges Abo:Für den Inhalt ist ein Abo erforderlich. Abonnenten können je nach Abostufe auf verschiedene Inhalte wie Filme oder Folgen zugreifen. Beispiel: Silver im Vergleich zu Gold.
  • Add-on-Abo: Für den Inhalt ist ein Abo erforderlich. Abonnenten können zusätzlich zu ihrem regulären Abo Premium-Inhalte hinzufügen.
  • Einmaliger Kauf:Die Inhalte können erworben werden, danach kann der Nutzer unbegrenzt darauf zugreifen.
  • Live-TV: Ein Abo bietet Zugriff auf lokale, nationale und Premium-Kanäle.
  • Abo eines Drittanbieters: Für die Inhalte muss sich der Nutzer 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.
  • Gib expectAcceptanceOf nicht an.

Kostenlos (Anmeldung erforderlich)

Anmeldung erforderlich

Die Inhalte erfordern, dass Nutzer angemeldet sind, aber kein Abo.


{
  "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.
  • Gib expectAcceptanceOf nicht an.

Einstufiges Abo

Bei einem einstufigen Abomodell hat ein Dienstanbieter eine Abostufe. Alle Abonnenten können unabhängig vom Abopaket auf dieselben Inhalte zugreifen, unabhängig davon, ob sie Filme oder Folgen ansehen.


{
  "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

Ein Abomodell besteht aus mehreren Abostufen wie Gold, Silber und Bronze. Nutzer mit dem Abo der obersten Ebene können auf alle Inhalte der niedrigeren Ebene zugreifen. Nutzer mit einem Abo der unteren Ebene können jedoch nicht auf den Inhalt der höheren Ebene zugreifen.

Abbildung 3: Ein gestaffeltes Abomodell und dessen Darstellung von Berechtigungen.

Stellen Sie sich folgendes Szenario vor:

  • Jane abonniert die Stufe Gold. Dein Berechtigungsendpunkt gibt die folgenden entitlementId-IDs zurück:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • Jan abonniert die Stufe Bronze. Dein Berechtigungsendpunkt gibt das folgende entitlementId zurück:
    • example.com:bronze
  • In Ihrem Media Actions-Feed werden die folgenden Anforderungen beschrieben:
    • Für Film A ist example.com:bronze erforderlich.
    • Für Film B ist example.com:silver erforderlich.

In diesem Szenario ermittelt Google die folgenden Zugriffsebenen für Jane und John:

  • Sowohl Jane als auch John haben Zugriff auf Film A.
  • Jane hat Zugriff auf Film B, John aber 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 Add-on-Abomodell können Nutzer ihre Berechtigungen erweitern und Kanäle einem Basisabo hinzufügen. Nutzer können beliebig viele Kanäle hinzufügen.

Abbildung 4: Ein Add-on-Abomodell und dessen Darstellung von Berechtigungen.

Stellen Sie sich folgendes Szenario vor:

  • Jane hat zusätzlich zum Basic-Abo noch PRO und Sportz. Dein Berechtigungsendpunkt gibt die folgenden entitlementId-IDs zurück:
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • Jan hat nur das Basis-Abo. Dein Berechtigungsendpunkt gibt das folgende entitlementId zurück:
    • example.com:basic
  • In Ihrem Media Actions-Feed werden die folgenden Anforderungen beschrieben:
    • Für Film A ist example.com:basic erforderlich.
    • Für Film B ist example.com:pro erforderlich.

In diesem Szenario ermittelt Google die folgenden Zugriffsebenen für Jane und John:

  • Sowohl Jane als auch John haben Zugriff auf Film A.
  • Jane hat Zugriff auf Film B, John aber 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.
  • Gib expectAcceptanceOf in actionAccessibilityRequirement an, um den Preis des Kaufs anzugeben.

Ausleihe

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.
  • Gib expectAcceptanceOf in actionAccessibilityRequirement an, um den Leihpreis anzugeben.

Live-TV

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

  • Gerätestandort des Nutzers

    Wenn du den Zugriff auf den TV-Kanal einschränken möchtest, gib den Bereich an, in dem Nutzer Zugriff haben. Diese Bedingung gilt in der Regel für lokale Fernsehsender.

  • Kontostatus des Nutzers

    Wenn der Zugriff auf einen TV-Kanal von der Einstellung auf Kontoebene eines Nutzers abhängt, stelle die Einschränkung mithilfe von Berechtigungskennungen dar.

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

    • Set: Nationale Kanäle sind häufig in Sets enthalten und Nutzer entscheiden, welches Set sie abonnieren möchten.
    • Add-on:Bei einigen Premium-Kanälen müssen Nutzer ihrem Abo selektiv zusätzliche Kanäle hinzufügen.
    • Regional Sports Network (RSN): RSNs werden normalerweise dem Standort „Zuhause“ eines Nutzers zugeordnet. Nutzer können sich Inhalte der RSN auch dann ansehen, wenn sie ihren Wohnort verlassen.

Drittanbieterabo

Drittanbieter-Abo

Die Inhalte sind für die Abonnenten eines anderen Dienstes 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ügen Sie authenticator hinzu, um anzugeben, dass ein anderer Dienst die Abonnenten authentifiziert. Für HBO GO ist beispielsweise ein Abo beim Kabelanbieter erforderlich.

Gängige Pakete

Allgemeine Inhalte sind für alle Abonnenten verfügbar, unabhängig von ihrem Abopaket. Die allgemeine Stufe gilt für alle Inhalte mit der category von subscription. Weitere Informationen zum Attribut category findest du im Abschnitt Paywall-Typ.

Warum ist ein allgemeines Tier-Paket erforderlich?

Nutzer erhalten in mehreren Google-Produkten TV- und Filmempfehlungen. Dazu gehören die Google Suche, Android TV und Google Assistant. Um die Erwartungen der Nutzer an die Kosten festzulegen, muss Google verstehen, welche Inhalte für alle Abonnenten über die gemeinsame Stufe verfügbar sind. Google muss auch verstehen, welche Inhalte Abonnenten mit bestimmten Abopaketen zur Verfügung stehen.

Google empfiehlt Titel, die auf der gemeinsamen Stufe verfügbar sind, es sei denn, Sie unterstützen die entitlement API. Mithilfe der API kann Google die nicht allgemeingültigen Titel der einzelnen Nutzer verstehen.

Wann sollte ich ein allgemeines Tier-Paket erstellen?

Ein „Common Tier“-Paket 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 mit mehreren Paketen oder Add-ons.

Anbieter ohne Inhalte, die nicht für alle Abonnenten verfügbar sind, müssen kein allgemeines Paket erstellen. Ein Beispiel sind Dienstleister, die sich gegenseitig ausschließende Inhalte in allen ihren Paketen zur Verfügung stellen.

Allgemeine Beispiele

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

Gestaffeltes Abo

Ein Abomodell hat mehrere Abostufen, z. B. Gold, Silver und Bronze. Nutzer mit dem höheren Abo haben Zugriff auf alle Inhalte in den niedrigeren Stufen. Nutzer mit einem niedrigeren Abo haben keinen Zugriff auf den Inhalt des höheren Levels. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.

Die Stufe „Gold“ enthält den gesamten Inhalt der Stufe „Silber“, zu der selbst auch die Stufe „Bronze“ gehört.
Abbildung 5. Abgestufte Abopaketstruktur.

Im folgenden Codebeispiel ist das Bronzepaket die übliche Stufe, da alle Nutzer Zugriff auf alle Inhalte in 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 Add-on-Abomodell ermöglicht ein Dienstanbieter Nutzern, ihre Berechtigungen zu erweitern und einem einfachen Abo Kanäle hinzuzufügen. Nutzer können beliebig viele Kanäle hinzufügen. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.

Jeder Nutzer beginnt mit der Basisversion und kann eine beliebige Kombination der Kanäle PRO, Sportz und Moviemax hinzufügen.
Abbildung 6: Add-on-Abopaketstruktur.

Wenn ein Kanal für alle Nutzer verfügbar ist und keine Kosten für den Kanal anfallen, können Sie das Paket mit dem Paket mit der allgemeinen Stufe zusammenführen.

Im folgenden Codebeispiel ist das Basispaket die übliche 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 Inhalten, die sich überschneiden

Bei einem Inhaltsmodell, bei dem Pakete Inhalte überschneiden, verkauft ein Dienstanbieter Pakete mit Inhalten aus anderen Paketen. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.

Ein Venn-Diagramm, bei dem die Überschneidung zwischen den Paketen 1, 2 und 3 mit „Common Tier“ 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 erstrecken. In diesem Fall ist ein viertes Paket erforderlich, das die allgemeine Stufe darstellt. Er muss den gesamten Inhalt aller drei Pakete enthalten.

"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 Inhalte, die sich überschneiden

Bei einem Inhaltsmodell, bei dem sich keines der Inhaltspakete überschneidet, verkauft ein Dienstanbieter Pakete, die keinen Inhalt aus anderen Paketen enthalten. Die folgende Abbildung zeigt ein Beispiel für die Paketstruktur.

Die Pakete 1, 2 und 3 sind vollständig unabhängig.
Abbildung 8. Paketstruktur ohne überlappende Inhalte.

Im folgenden Beispiel bietet der Anbieter drei Pakete an, die sich nicht über alle Pakete überschneiden. Es ist kein allgemeines Tier-Paket 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 aus diesem Abschnitt, um einen HTTPS-Endpunkt zu hosten, der die mit einem Nutzer verknüpften Berechtigungen zurückgibt.

Voraussetzung

Prüfen Sie zuerst, ob Ihr Dienst den OAuth 2.0-Vorgang mit Google unterstützt.

Anfragen

Zum Empfangen der Berechtigungen eines Nutzers sendet Google eine Anfrage mit dem OAuth-Token des Nutzers. Der 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 Attributen zurückgeben:

Attribut
subscription

Erforderlich

Dies ist ein Feld in der Stammantwort.

subscription.type

Erforderlich

Dieses Attribut 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 Probeabo.
subscription.expiration_date

Optional

Das Ablaufdatum dieser Berechtigung im ISO 8601-Format, das die Zeitzone enthält. Weitere Informationen finden Sie unter Ablaufdaten.

entitlements

Optional

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

entitlements.entitlement

Erforderlich, wenn der Zugriff auf Ihren Streamingkatalog je nach Art des Abos variiert.

Dieses Attribut enthält das entitlementId. Weitere Informationen finden Sie unter Entitlement-ID.

entitlements.expiration_date

Optional

Das Ablaufdatum des Abos im ISO 8601-Format, das die Zeitzone enthält. Weitere Informationen finden Sie unter Ablaufdaten.

Ablaufdaten

In einer Endpunktantwort gibt es zwei Attribute, die sich auf das Ablaufdatum beziehen: subscription.expiration_date und entitlements.expiration_date. Sie können eine davon oder keines von beiden auswählen, aber nicht beides. Welches Modell du verwendest, hängt von deinem Abomodell ab.

Abomodell
Der Zugriff auf deinen Streamingkatalog ist für alle Abonnenten gleich. Da du die Property entitlements nicht angeben musst, gib subscription.expiration_date an.

Der Zugriff auf Ihren Streamingkatalog hängt von den Abodetails eines Nutzers ab.

Wenn Ihr Abomodell mehrere Ebenen oder Add-ons hat, die im Laufe der Zeit ablaufen, führen Sie einen der folgenden Schritte aus:

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

Beispielantworten

Hier sind einige Beispielantworten für verschiedene Abostatus:

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

Aktives Abo

Aktives Abo

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


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

Aktives Abo mit Ablaufdatum

Aktives Abo mit Ablaufdatum

Ein Nutzer hat ein aktives Abo für example.com und das Abo hat ein Ablaufdatum. In diesem Fall haben alle Abonnenten unabhängig vom 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 beispiel.de.


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

Aktive Abos für mehrere Ebenen oder Add-ons

Aktive Abos für mehrere Ebenen oder Add-ons

Ein Nutzer hat ein example.com:premium-Abo bis zu einem bestimmten Datum.


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

Ratenbegrenzung

Google aktualisiert die Berechtigungsinformationen des Nutzers alle sechs Stunden. Zum Ausgleich der maximalen Anzahl von Abfragen pro Sekunde verteilt Google die Abfragen gleichmäßig auf den Endpunkt. Mit der folgenden Formel können Sie daher den erwarteten durchschnittlichen Wert für Abfragen für Ihren Endpunkt schätzen:

Erwartete durchschnittliche Abfragen pro Sekunde = <Gesamtzahl der Nutzer>/21.600 Sekunden (6 Stunden x 60 Minuten x 60 Sekunden)

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

Kontaktaufnahme mit Google

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

Eigenschaften der Aktionszugriffsspezifikation

Weitere Informationen finden Sie im Abschnitt Eigenschaften der Aktionszugriffsspezifikation.