Requisiti di accesso

Gli utenti preferiscono guardare o ascoltare contenuti a cui possono già accedere, come ai contenuti in abbonamento esistenti. Se Google sa quali contenuti un utente può sulla tua app o piattaforma, Google può creare un risultato di ricerca migliore o una risposta per indirizzare l'utente a quei contenuti.

Figura 1. I requisiti di accesso consentono ai tuoi abbonati di accedere i contenuti sulla tua app o piattaforma.

Identificare i requisiti di accesso ai contenuti

Devi identificare il requisito di accesso per ciascun pacchetto di contenuti nel tuo catalogo. A questo scopo, poniti le seguenti domande:

  • Gli utenti devono eseguire l'accesso nella tua app o piattaforma per accedere ai contenuti?
  • Gli utenti hanno bisogno di un abbonamento?

    Solo azioni dell'orologio:

    • Gli utenti hanno bisogno di un abbonamento a un fornitore di servizi esterno?
    • Offri un abbonamento a più livelli, con più pacchetti o aggiuntivi?
  • Solo azioni nell'orologio: gli utenti devono noleggiare o acquistare i contenuti?

  • Il requisito di accesso cambia nel tempo?

  • Il requisito di accesso dipende dalla posizione del dispositivo?

Tipi di limitazioni dell'accesso

Esistono due tipi di limitazioni di accesso:

Tipo di paywall

Puoi limitare l'accesso ai contenuti in base al tipo di paywall. La tabella seguente descrive nel dettaglio i diversi tipi di paywall:

Tipo di paywall Esempio Categoria
Non è richiesto alcun acquisto o accesso. Crackle nologinrequired
L'utente deve aver eseguito l'accesso, ma non ha bisogno di un abbonamento a pagamento. Vudu (AVOD) free
L'utente deve avere un abbonamento attivo. L'accesso è indipendente il livello di abbonamento. Netflix

subscription

L'utente deve avere un abbonamento attivo. L'accesso dipende dal livello di abbonamento. Hulu (componenti aggiuntivi)

subscription

I contenuti sono disponibili per un periodo di tempo limitato dopo il acquisto. Vudu rental
I contenuti sono disponibili per un periodo di tempo indefinito dopo il acquisto. Vudu purchase
I contenuti sono disponibili tramite abbonamento via cavo. HBO Go externalSubscription

Tipo di paywall per Azioni di visualizzazione

Per specificare il tipo di paywall per i contenuti per le azioni di visualizzazione, utilizza il metodo category nel Specifica dell'accesso alle azioni:

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

Tipo di paywall per le azioni di ascolto

Per specificare il tipo di paywall dei contenuti per le azioni di ascolto, utilizza il metodo category nel oggetto offer:

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

Area geografica

Devi specificare le aree geografiche in cui i contenuti sono disponibili. Utilizza uno o per entrambe le seguenti proprietà:

Un utente può accedere ai contenuti se la posizione del dispositivo si trova all'interno di una qualsiasi regione specificato in eligibleRegion e non si trova in nessuna regione specificata in ineligibleRegion.

Le proprietà eligibleRegion e ineligibleRegion consentono quanto segue valori:

Se i contenuti sono disponibili a livello globale, utilizza il seguente valore speciale per eligibleRegion:

"eligibleRegion": "EARTH",

casi d'uso idonei per le regioni

Di seguito sono riportati alcuni esempi di casi d'uso della proprietà eligibleRegion:

  • Esempio 1: eligibleRegion con un elenco di paesi.
  • Esempio 2: eligibleRegion con un oggetto GeoShape che contiene un elenco di codici postali.
  • Esempio 3: eligibleRegion con un oggetto GeoShape che contiene un elenco di codici FSA (Forward Sortation Area).
  • Esempio 4: eligibleRegion con un oggetto GeoShape che contiene un ID DMA.
  • Esempio 5: eligibleRegion con un elenco di GeoShape oggetti. Ciascuno di essi contiene un ID DMA.
  • Esempio 6: ineligibleRegion con codici postali bloccati.

Esempio 1

eligibleRegion con un elenco di paesi:


"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"
    }
  ]
}

Esempio 2

eligibleRegion con un oggetto GeoShape che contiene un elenco di codici postali:


"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"
    ]
  }
}

Esempio 3

eligibleRegion con un oggetto GeoShape che contiene un elenco di codici FSA (Forward Sortation Area):


"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"
    ]
  }
}

Esempio 4

eligibleRegion con un oggetto GeoShape che contiene un ID DMA:


"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"
      }
    ]
  }
}

Esempio 5

eligibleRegion con un elenco di GeoShape oggetti. Ciascuno contiene un ID DMA:


"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"
         }
      }
   ]
}

Esempio 6

ineligibleRegion con codici postali bloccati:


"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"
    ]
  }
}

Identificatore diritto

L'identificatore del diritto, entitlementId, si riferisce a una stringa che rappresenta l'accesso a un gruppo di contenuti nel tuo catalogo multimediale. Per determinare se un utente ha accesso ai tuoi contenuti, Google procede nel seguente modo:

  1. Effettuiamo una chiamata API L'endpoint dei diritti che deve ricevere i dati dell'utente identificatori dei diritti.
  2. Cerchiamo gli identificatori dei diritti richiesti per i contenuti dai tuoi contenuti multimediali Feed di azioni.
  3. Associamo il valore entitlementId di un utente identifier proprietà del abbonamento multimediale nel tuo feed. Se almeno una corrispondenza di entitlementId, determiniamo che l'utente può accedere ai contenuti.
Figura 2. Uno degli identificatori dei diritti dell'utente corrisponde l'identificatore del diritto richiesto per i contenuti.

Google consiglia di utilizzare la seguente sintassi per entitlementId:

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

Esempi di sintassi:

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

Esempio di identificatore del diritto

Nel feed di MediaExampleCompany specifica che Movie XYZ richiede la proprietà example.com:basic entitlementId, come mostrato:

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

Casi d'uso comuni relativi all'accesso

Di seguito sono riportati alcuni casi d'uso di accesso comuni:

  • Senza costi (non è richiesto l'accesso): la I contenuti sono disponibili senza accesso, abbonamento o acquisto.
  • Senza costi (accesso richiesto): per i contenuti è necessario che gli utenti abbiano effettuato l'accesso, ma non richiedono un abbonamento.
  • Abbonamento a un livello: I contenuti richiedono un abbonamento. Tutti gli abbonati possono accedere allo stesso contenuti, siano film o puntate, indipendentemente dall'abbonamento pacchetto.
  • Abbonamento multi-livello: richiede un abbonamento. Gli iscritti possono accedere a diversi contenuti, film o puntate, in base al livello di abbonamento. Ad esempio: Argento e Oro.
  • Abbonamento aggiuntivo: i contenuti richiede un abbonamento. Gli abbonati possono aggiungere contenuti premium ai propri abbonamento standard.
  • Acquisto una tantum: i contenuti possono essere acquistato, dopodiché l'utente potrà accedervi a tempo indeterminato.
  • TV in diretta:un abbonamento include l'accesso a locali, nazionali e premium.
  • Abbonamento di terze parti: I contenuti richiedono all'utente di accedere con il proprio fornitore di servizi via cavo.

Senza costi (non è richiesto l'accesso)

Non è richiesto l'accesso

I contenuti sono disponibili senza accesso o abbonamento.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • Imposta category su nologinrequired.
  • Non includere expectAcceptanceOf.

Senza costi (accesso richiesto)

Accesso richiesto

I contenuti richiedono che gli utenti siano collegati, ma non un abbonamento.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • Imposta category su free.
  • Non includere expectAcceptanceOf.

Abbonamento a un livello

In un modello di abbonamento a un livello, un fornitore di servizi ha livello di abbonamento. Tutti gli abbonati possono accedere agli stessi contenuti, a prescindere dal fatto che film o puntate, indipendentemente dal pacchetto di abbonamento.


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

Abbonamento multi-livello

In un modello di abbonamento a più livelli, un fornitore di servizi ha ai livelli di abbonamento principali, come Gold, Silver e Bronzo. Gli utenti che hanno l'abbonamento di livello superiore possono accedere a tutti per i contenuti di livello inferiore. Tuttavia, gli utenti con il livello inferiore abbonamento non può accedere ai contenuti di livello superiore.

Figura 3. Un modello di abbonamento a più livelli e i relativi una rappresentazione dei diritti.

Tieni presente il seguente scenario:

  • Giovanna si abbona al livello Oro. I tuoi diritti l'endpoint restituisce i seguenti identificatori entitlementId:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • John si abbona al livello Bronzo. I tuoi diritti l'endpoint restituisce il seguente entitlementId:
    • example.com:bronze
  • Il feed Azioni multimediali descrive i seguenti requisiti:
    • Il filmato A richiede example.com:bronze.
    • Il Filmato B richiede example.com:silver.

In questo scenario, Google determina i seguenti livelli di accesso per Jane e John:

  • Sia Gianna che Giovanni hanno accesso al Filmato A.
  • Gianna ha accesso al Film B, ma Giovanni no.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

Abbonamento aggiuntivo

In un modello di abbonamento aggiuntivo, un fornitore di servizi consente agli utenti espandere i propri diritti e aggiungere canali a un abbonamento di base. Utenti possono aggiungere tutti i canali che vogliono.

Figura 4. Un modello di abbonamento per componenti aggiuntivi e i relativi una rappresentazione dei diritti.

Tieni presente il seguente scenario:

  • Jane dispone di PRO e Sportz oltre al Abbonamento Basic. L'endpoint dei diritti restituisce seguenti identificatori entitlementId:
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • Mario ha solo l'abbonamento Basic. I tuoi diritti l'endpoint restituisce il seguente entitlementId:
    • example.com:basic
  • Il feed Azioni multimediali descrive i seguenti requisiti:
    • Il filmato A richiede example.com:basic.
    • Il Filmato B richiede example.com:pro.

In questo scenario, Google determina i seguenti livelli di accesso per Jane e John:

  • Sia Gianna che Giovanni hanno accesso al Filmato A.
  • Gianna ha accesso al Film B, ma Giovanni no.
{
  "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
        }
    }
  }
}

Acquisto una tantum

Acquisto

I contenuti sono disponibili per un periodo di tempo indefinito dopo il acquisto.


{
  "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/"
      }
    }
  }
}
  • Imposta category su purchase.
  • Includi expectAcceptanceOf in actionAccessibilityRequirement per indicare il prezzo del acquisto.

Noleggio

I contenuti sono disponibili per un periodo di tempo limitato dopo il acquisto.


{
  "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/"
      }
    }
  }
}
  • Imposta category su rental.
  • Includi expectAcceptanceOf in actionAccessibilityRequirement per indicare il prezzo del noleggio.

TV in diretta

In un feed Azioni multimediali, puoi limitare l'accesso a una TV in diretta channel o evento in base al le seguenti due condizioni utente:

  • La posizione del dispositivo dell'utente

    Per limitare l'accesso al canale TV, specifica l'area in cui gli utenti vi abbiano accesso. Questa condizione di solito si applica alla trasmissione locale Canali TV.

  • Lo stato dell'account dell'utente

    Se l'accesso a un canale TV dipende dall'impostazione a livello di account dell'utente, utilizzare identificatori di diritti per che rappresentano la restrizione.

    Questa condizione si applica in genere ai seguenti casi d'uso:

    • Pacchetto: i canali nazionali sono spesso inclusi in i pacchetti, mentre gli utenti scelgono a quale bundle vogliono abbonarsi.
    • Componente aggiuntivo:alcuni canali premium richiedono agli utenti di aggiungere canali extra alle proprie iscrizioni in modo selettivo.
    • Regional Sports Network (RSN): generalmente gli RSN associata alla "casa" di un utente in ogni località. Gli utenti possono guardare i contenuti sull'RSN anche quando sono fuori casa in ogni località.

Abbonamento di terze parti

Abbonamento di terze parti

I contenuti sono disponibili per gli abbonati da un servizio diverso.


{
  "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"
    }
  }
}
  • Aggiungi authenticator per indicare che un altro servizio autentica gli abbonati. Ad esempio, HBO GO richiede un dell'abbonamento del fornitore della TV via cavo.

Pacchetti di livelli comuni

I contenuti di livello comune sono disponibili per tutti gli abbonati, indipendentemente dalla loro pacchetto di abbonamento. Il livello comune si applica a tutti i contenuti con category di subscription. Per ulteriori informazioni sulla proprietà category, controlla le Sezione Tipo di paywall.

Perché è necessario un pacchetto di livelli comune?

Diversi prodotti Google offrono TV e consigli sui film agli utenti; questo include Ricerca Google, Android TV e l'Assistente Google. Per impostare l'utente aspettative in termini di costi, Google deve capire quali contenuti sono disponibili tramite l'uso del livello comune. Google deve inoltre comprendere i contenuti sono disponibili per gli abbonati con pacchetti di abbonamento specifici.

Google consiglia titoli disponibili nel livello comune, a meno che tu non supporti i API entitlement. L'API consente a Google di comprendere i titoli di livello non comune in ogni a cui l'utente può accedere.

Quando devo creare un pacchetto di livelli comune?

È richiesto un pacchetto di livelli comune se il servizio offre contenuti disponibili per tutti gli abbonati. Sono inclusi i servizi che offrono un solo pacchetto e servizi che offrono diversi pacchetti o componenti aggiuntivi.

I fornitori che non hanno contenuti disponibili per tutti gli abbonati non devono creare un pacchetto di livelli comune. Un esempio sono i fornitori di servizi che si escludono a vicenda in tutti i pacchetti.

Esempi di livelli comuni

Di seguito sono riportati alcuni esempi del livello comune.

Abbonamento a più livelli

In un modello di abbonamento a più livelli, un fornitore di servizi ha più abbonamenti ad esempio Gold, Silver e Bronzo. Utenti con abbonamento di livello superiore ha accesso a tutti i contenuti dei livelli inferiori. Utenti con l'abbonamento di livello inferiore non hanno accesso ai contenuti nella parte superiore livello. L'immagine seguente è un esempio della struttura del pacchetto.

Il livello Oro include tutti i contenuti del livello Argento, che
            a sua volta contiene tutto il livello Bronzo.
Figura 5. Struttura del pacchetto di abbonamenti a più livelli.

Nel codice di esempio riportato di seguito, il pacchetto Bronze è il livello comune perché gli utenti hanno accesso a tutti i contenuti di quel livello.

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

Componenti aggiuntivi

In un modello di abbonamento aggiuntivo, un fornitore di servizi consente agli utenti di espandere i propri diritti e aggiungere canali a un abbonamento di base. Gli utenti possono aggiungere come quanti canali desiderano. L'immagine seguente è un esempio del pacchetto alla struttura del centro di costo.

Ogni utente inizia con il canale Basic e può scegliere di aggiungere
            qualsiasi combinazione di canali PRO, Sportz e Moviemax.
Figura 6. Struttura del pacchetto di abbonamento per i componenti aggiuntivi.

Se hai un canale disponibile per tutti gli utenti e non sono previsti costi per canale, puoi unire il pacchetto al pacchetto di livelli comune.

Nel codice di esempio riportato di seguito, il pacchetto base è il livello comune perché Gli utenti hanno accesso a tutti i contenuti di questo pacchetto.

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

Pacchetti con contenuti che si intersecano

In un modello di contenuti in cui i pacchetti hanno contenuti che si intersecano, un servizio fornitore vende pacchetti che includono alcuni contenuti di altri pacchetti. La Nell'immagine seguente è riportato un esempio della struttura del pacchetto.

Un diagramma di Venn in cui la sovrapposizione tra i pacchetti 1, 2 e 3 è
            con l&#39;etichetta &quot;Livello comune&quot;.
Figura 7. Struttura del pacchetto con contenuti intersecati.

Nel codice di esempio che segue, il provider offre tre pacchetti in cui il contenuto si interseca in tutti i pacchetti. In questo caso, un quarto pacchetto che rappresenta il livello comune. Deve includere tutti i contenuti. disponibili in tutti e tre i pacchetti.

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

Pacchetti senza contenuti che si intersecano

In un modello di contenuti in cui tutti i pacchetti di contenuti non si intersecano, fornitore vende pacchetti che non includono contenuti di altri pacchetti. La Nell'immagine seguente è riportato un esempio della struttura del pacchetto.

I pacchetti 1, 2 e 3 sono completamente separati.
Figura 8. Struttura del pacchetto senza intersezioni contenuti.

Nell'esempio seguente, il fornitore offre tre pacchetti senza contenuti che si intersecano in tutti i pacchetti. Non è richiesto alcun pacchetto di livelli comuni.

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

Endpoint dei diritti

Utilizza le informazioni di questa sezione per ospitare un endpoint HTTPS che restituisce dei diritti associati a un utente.

Prerequisito

Prima di iniziare, verifica che il servizio supporti Flusso OAuth 2.0 con Google.

Richiesta

Per ricevere i diritti di un utente, Google invia una richiesta contenente il campo il token OAuth dell'utente. Il tuo endpoint deve identificare l'utente in base a tale OAuth di accesso. Vedi il seguente esempio:

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

Risposta

Il tuo endpoint deve restituire una risposta con le seguenti proprietà:

Proprietà
subscription

Obbligatorio

Questo è un campo all'interno della risposta principale.

subscription.type

Obbligatorio

Questa proprietà può avere i seguenti valori:

  • ActiveSubscription: l'utente ha un abbonamento attivo al provider.
  • ActiveTrial: l'utente ha una prova attiva per o il provider di servizi di terze parti.
  • InactiveSubscription: l'utente non ha un elemento attivo un abbonamento o una prova attiva.
subscription.expiration_date

Facoltativo

La data di scadenza di questo diritto, in Formato ISO 8601, che include il fuso orario. Per ulteriori dettagli, vedi Date di scadenza.

entitlements

Facoltativo

Questa proprietà principale contiene i valori entitlementId che e conservazioni utente.

entitlements.entitlement

Obbligatorio se l'accesso al tuo catalogo di streaming può variare in base al tipo di abbonamento.

Questa proprietà contiene entitlementId. Per maggiori informazioni le informazioni, vedi Identificatore diritto.

entitlements.expiration_date

Facoltativo

La data di scadenza di questo abbonamento, nel formato Formato ISO 8601, che include il fuso orario. Per ulteriori dettagli, vedi Date di scadenza.

Date di scadenza

In una risposta dell'endpoint ci sono due proprietà che riguardano la scadenza date: subscription.expiration_date e entitlements.expiration_date. Tu può includerne uno o nessuno, ma non entrambi. Quale opzione utilizzi dipende modello di abbonamento.

Modello di abbonamento
L'accesso al tuo catalogo di streaming è uguale per tutti gli abbonati. Poiché non è necessario specificare il entitlements specifica subscription.expiration_date.

L'accesso al tuo catalogo di streaming varia in base ai dettagli di un abbonamento dell'utente.

Se il modello di abbonamento prevede più livelli o componenti aggiuntivi che scadono nel tempo, procedi in uno dei seguenti modi:

  • Se tutti i valori entitlements.entitlement scadono in data contemporaneamente, specifica subscription.expiration_date.
  • Se alcuni valori entitlements.entitlement scadono in data in orari diversi, specifica entitlements.expiration_date.

Risposte di esempio

Di seguito sono riportati alcuni esempi di risposte relative a diversi stati dell'abbonamento:

  • Abbonamento attivo
  • Abbonamento attivo con una data di scadenza
  • Nessun abbonamento
  • Abbonamenti attivi a più livelli o componenti aggiuntivi

Abbonamento attivo

Abbonamento attivo

Un utente ha un abbonamento attivo a example.com. In questo caso, tutti gli abbonati hanno accesso all'intero catalogo di streaming a prescindere dal tipo di abbonamento.


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

Abbonamento attivo con una data di scadenza

Abbonamento attivo con una data di scadenza

Un utente ha un abbonamento attivo a example.com e abbonamento ha una data di scadenza. In questo caso, tutti gli abbonati hanno l'accesso all'intero catalogo di streaming indipendentemente dall'abbonamento di testo.


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

Nessun abbonamento

Nessun abbonamento

Un utente non ha un abbonamento a example.com.


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

Abbonamenti attivi a più livelli o componenti aggiuntivi

Abbonamenti attivi per più livelli o componenti aggiuntivi

Un utente ha un abbonamento a example.com:premium fino a una determinata data.


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

Limite di frequenza

Google aggiorna le informazioni sui diritti di un utente fino a un massimo di sei ore. A il numero massimo di query al secondo (QPS), Google distribuisce le query all'endpoint in modo uniforme nel tempo. In questo modo, puoi stimare la media prevista QPS per il tuo endpoint con la seguente formula:

Media prevista di QPS = <numero totale di utenti> / 21.600 secondi (6 ore x 60 minuti x 60 secondi)

Se il numero di utenti è elevato, Google può regolare l'intervallo di 6 ore. Se necessario, contatta Google per discutere della configurazione.

Contatta Google

Quando l'endpoint è pronto, contatta Google per fornire informazioni al suo URL.

Proprietà della specifica di accesso all'azione

Consulta le sezione relativa alle proprietà della specifica di accesso alle azioni come riferimento informazioni.