사용자는 기존 구독 콘텐츠와 같이 이미 액세스할 수 있는 콘텐츠를 시청하거나 듣는 것을 선호합니다. Google이 사용자가 앱이나 플랫폼에서 액세스할 수 있는 콘텐츠를 알고 있다면 사용자를 해당 콘텐츠로 안내하는 더 나은 검색 결과나 응답을 구성할 수 있습니다.

콘텐츠 액세스 요구사항 식별
카탈로그에 있는 각 콘텐츠 패키지의 액세스 요구사항을 식별해야 합니다. 이때 다음 질문을 고려하세요.
- 사용자가 콘텐츠에 액세스하려면 앱이나 플랫폼에 로그인해야 하나요?
사용자에게 구독이 필요한가요?
시청 작업만 해당:
- 사용자에게 외부 서비스 제공업체의 구독이 필요한가요?
- 단계별, 멀티 패키지 또는 애드온 정기 결제를 제공하시나요?
보기 작업만 해당: 사용자가 콘텐츠를 대여하거나 구매해야 하나요?
액세스 요구사항은 시간이 지남에 따라 변경되나요?
액세스 요구사항이 기기 위치에 따라 달라지나요?
액세스 제한 유형
액세스 제한에는 두 가지 종류가 있습니다.
페이월 유형
방화벽 유형별로 콘텐츠 액세스를 제한할 수 있습니다. 다음 표에는 다양한 페이월 유형이 자세히 나와 있습니다.
페이월 유형 | 예 | 카테고리 |
---|---|---|
구매나 로그인이 필요하지 않습니다. | Crackle | nologinrequired |
사용자가 로그인해야 하지만 유료 구독은 필요하지 않습니다. | Vudu (AVOD) | free |
사용자에게 활성 상태인 정기 결제가 있어야 합니다. 액세스는 구독 등급과 무관합니다. | Netflix |
|
사용자에게 활성 상태인 정기 결제가 있어야 합니다. 액세스 권한은 구독 등급에 따라 다릅니다. | Hulu (부가기능) |
|
구매 후 일정 기간 콘텐츠를 이용할 수 있습니다. | Vudu | rental |
콘텐츠는 구매 후 무기한으로 이용할 수 있습니다. | Vudu | purchase |
콘텐츠는 케이블 TV 구독을 통해 이용할 수 있습니다. | HBO Go | externalSubscription |
시청 작업의 페이월 유형
보기 작업의 콘텐츠 페이월 유형을 지정하려면 작업 액세스 사양에서 category
속성을 사용하세요.
"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"
}
},
...
}
듣기 작업의 페이월 유형
듣기 작업의 콘텐츠 페이월 유형을 지정하려면 offer object에서 category
속성을 사용하세요.
"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"
}
},
...
}
지리적 영역
콘텐츠를 사용할 수 있는 지역을 지정해야 합니다. 다음 속성 중 하나 또는 둘 다를 사용하세요.
기기 위치가 eligibleRegion
에 지정된 리전 내에 있고 ineligibleRegion
에 지정된 리전 내에 있지 않으면 사용자가 콘텐츠에 액세스할 수 있습니다.
eligibleRegion
및 ineligibleRegion
속성은 다음 값을 허용합니다.
Country
,City
,State
목록GeoShape
객체. 자세한 요구사항은GeoShape
속성 섹션을 참고하세요.GeoShape
객체 목록입니다.
콘텐츠를 전 세계에서 사용할 수 있는 경우 eligibleRegion
에 다음 특수 값을 사용합니다.
"eligibleRegion": "EARTH",
eligibleRegion 사용 사례
다음은 eligibleRegion
속성의 사용 사례 예입니다.
- 예 1: 국가 목록이 있는
eligibleRegion
- 예 2: 우편번호 목록이 포함된
GeoShape
객체가 있는eligibleRegion
- 예 3: 전방 분류 지역 (FSA) 코드 목록이 포함된
GeoShape
객체가 있는eligibleRegion
- 예 4: DMA ID가 포함된
GeoShape
객체가 있는eligibleRegion
- 예 5:
GeoShape
객체 목록이 있는eligibleRegion
각각 DMA ID를 포함합니다. - 예 6: 우편번호가 차단된
ineligibleRegion
예 1
eligibleRegion
국가 목록이 있는 경우:
"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" } ] }
예 2
우편번호 목록이 포함된 GeoShape
객체가 있는 eligibleRegion
:
"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" ] } }
예시 3
eligibleRegion
(전달 분류 지역(FSA) 코드 목록이 포함된 GeoShape
객체 포함)
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/local_tv_network/subscription" }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area2", "addressCountry": "CA", "postalCode": [ "1A1", "K1A" ] } }
예 4
DMA ID가 포함된 GeoShape
객체가 있는 eligibleRegion
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/abcd/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/abcd/subscription" }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area3", "addressCountry": "US", "identifier": [ { "@type": "PropertyValue", "propertyID": "DMA_ID", "value": "501" } ] } }
예시 5
GeoShape
객체 목록이 포함된 eligibleRegion
각각 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" } } ] }
예시 6
ineligibleRegion
(우편번호가 차단됨):
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/local_tv_network/subscription" }, "eligibleRegion": { "@type": "Country", "name": "US" }, "ineligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
사용 권한 식별자
권한 식별자 entitlementId
는 미디어 카탈로그의 콘텐츠 그룹에 대한 액세스를 나타내는 문자열을 나타냅니다. 사용자가 내 콘텐츠에 액세스할 수 있는지 확인하기 위해 Google은 다음 단계를 따릅니다.
- 사용자의 권한 식별자를 수신하기 위해 Entitlements 엔드포인트에 API 호출을 실행합니다.
- Google은 미디어 작업 피드에서 콘텐츠의 필수 권한 식별자를 조회합니다.
- Google에서는 사용자의
entitlementId
를 피드의 미디어 구독 객체의identifier
속성과 일치시킵니다.entitlementId
가 하나 이상 일치하면 사용자가 콘텐츠에 액세스할 수 있다고 판단합니다.

Google에서는 entitlementId
에 다음 구문을 사용할 것을 권장합니다.
<domain name> + colon (:) + <access level to content>
구문 예:
example.com:basic
example.com:premium
example.com:sports
사용 권한 식별자 예
MediaExampleCompany의 피드는 다음과 같이 Movie XYZ
에 example.com:basic
entitlementId
이 필요하다고 지정합니다.
{ "@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 ... }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/basic_subscription" }, ... } }, ... }
일반적인 액세스 사용 사례
다음은 일반적인 액세스 사용 사례입니다.
- 무료 (로그인 필요 없음): 로그인, 구독 또는 구매 없이 콘텐츠를 이용할 수 있습니다.
- 무료 (로그인 필요): 콘텐츠를 이용하려면 사용자가 로그인해야 하지만 정기 결제는 필요하지 않습니다.
- 단일 등급 구독: 콘텐츠에 구독이 필요합니다. 모든 구독자는 구독 패키지와 관계없이 영화든 에피소드든 동일한 콘텐츠에 액세스할 수 있습니다.
- 다단계 구독: 콘텐츠에 구독이 필요합니다. 구독자는 구독 등급에 따라 영화 또는 에피소드 등 다양한 콘텐츠에 액세스할 수 있습니다. 예를 들어 실버와 골드를 비교할 수 있습니다.
- 애드온 구독: 콘텐츠에 구독이 필요합니다. 구독자는 일반 구독에 프리미엄 콘텐츠를 추가할 수 있습니다.
- 일회성 구매: 콘텐츠를 구매한 후 사용자가 무기한으로 액세스할 수 있습니다.
- 라이브 TV: 구독 시 지역, 전국, 프리미엄 채널을 이용할 수 있습니다.
- 서드 파티 구독: 콘텐츠를 이용하려면 사용자가 케이블 제공업체로 로그인해야 합니다.
무료 (로그인 필요 없음)
로그인 필요 없음
로그인이나 구독 없이 콘텐츠를 이용할 수 있습니다.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
category
를nologinrequired
로 설정합니다.expectAcceptanceOf
을 포함하지 마세요.
무료 (로그인 필요)
로그인 필요
콘텐츠에 사용자가 로그인해야 하지만 정기 결제는 필요하지 않습니다.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
category
를free
로 설정합니다.expectAcceptanceOf
을 포함하지 마세요.
단일 등급 구독
단일 등급 정기 결제 모델에서 서비스 제공업체는 하나의 정기 결제 등급을 갖습니다. 모든 구독자는 구독 패키지와 관계없이 영화든 에피소드든 동일한 콘텐츠에 액세스할 수 있습니다.
{ "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" }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/example_package" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
다단계 구독
등급이 있는 정기 결제 모델에서 서비스 제공업체는 골드, 실버, 브론즈와 같은 여러 정기 결제 등급을 보유합니다. 상위 등급 구독이 있는 사용자는 하위 등급 콘텐츠에 모두 액세스할 수 있습니다. 하지만 하위 등급 정기 결제를 이용하는 사용자는 상위 등급 콘텐츠에 액세스할 수 없습니다.

다음 상황을 살펴보세요.
- 제인이 골드 등급에 가입합니다. 권한 엔드포인트는 다음
entitlementId
식별자를 반환합니다.example.com:bronze
example.com:silver
example.com:gold
- 존이 브론즈 등급을 구독합니다. 사용 권한 엔드포인트에서 다음
entitlementId
를 반환합니다.example.com:bronze
- 미디어 작업 피드에는 다음 요구사항이 설명되어 있습니다.
- 영화 A에는
example.com:bronze
가 필요합니다. - 영화 B에는
example.com:silver
이 필요합니다.
- 영화 A에는
이 시나리오에서 Google은 Jane과 John의 액세스 수준을 다음과 같이 결정합니다.
- 제인과 존 모두 영화 A에 액세스할 수 있습니다.
- 제인은 영화 B에 액세스할 수 있지만 존은 액세스할 수 없습니다.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/basic_subscription" }, ... } }
부가기능 구독
부가기능 구독 모델에서 서비스 제공업체는 사용자가 권한을 확장하고 기본 구독에 채널을 추가할 수 있도록 허용합니다. 사용자는 원하는 만큼 채널을 추가할 수 있습니다.

다음 상황을 살펴보세요.
- 수지는 Basic 구독 외에 PRO 및 Sportz도 구독하고 있습니다. 권한 엔드포인트는 다음
entitlementId
식별자를 반환합니다.example.com:basic
example.com:pro
example.com:sportz
- 존은 Basic 요금제에만 가입되어 있습니다. 사용 권한 엔드포인트에서 다음
entitlementId
를 반환합니다.example.com:basic
- 미디어 작업 피드에는 다음 요구사항이 설명되어 있습니다.
- 영화 A에는
example.com:basic
가 필요합니다. - 영화 B에는
example.com:pro
이 필요합니다.
- 영화 A에는
이 시나리오에서 Google은 Jane과 John의 액세스 수준을 다음과 같이 결정합니다.
- 제인과 존 모두 영화 A에 액세스할 수 있습니다.
- 제인은 영화 B에 액세스할 수 있지만 존은 액세스할 수 없습니다.
{ "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 } ], "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/package/basic" }, } } }
일회성 구매
구매
콘텐츠는 구매 후 무기한으로 이용할 수 있습니다.
{ "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/" } } } }
category
를purchase
로 설정합니다.actionAccessibilityRequirement
에expectAcceptanceOf
를 포함하여 구매 가격을 나타냅니다.
대여
콘텐츠는 구매 후 일정 기간 동안 사용할 수 있습니다.
{ "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/" } } } }
category
를rental
로 설정합니다.actionAccessibilityRequirement
에expectAcceptanceOf
를 포함하여 대여 가격을 나타냅니다.
라이브 TV
미디어 작업 피드에서 다음 두 가지 사용자 조건을 기반으로 라이브 TV 채널 또는 이벤트에 대한 액세스를 제한할 수 있습니다.
-
사용자의 기기 위치
TV 채널에 대한 액세스를 제한하려면 사용자가 액세스할 수 있는 지역을 지정하세요. 이 조건은 일반적으로 지역 방송 TV 채널에 적용됩니다.
-
사용자 계정 상태
TV 채널 액세스가 사용자의 계정 수준 설정에 따라 달라지는 경우 권한 식별자를 사용하여 제한을 나타냅니다.
이 조건은 일반적으로 다음 사용 사례에 적용됩니다.
- 번들: 국가 채널은 번들에 포함되는 경우가 많으며 사용자는 구독할 번들을 선택합니다.
- 애드온: 일부 프리미엄 채널에서는 사용자가 정기 결제에 추가 채널을 선택적으로 추가해야 합니다.
- 지역 스포츠 네트워크 (RSN): RSN은 일반적으로 사용자의 '홈' 위치와 연결됩니다. 사용자는 '홈' 위치를 벗어나 여행하는 경우에도 RSN에서 콘텐츠를 시청할 수 있습니다.
서드 파티 구독
서드 파티 구독
콘텐츠를 다른 서비스의 구독자가 사용할 수 있습니다.
{ "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" } }, "additionalProperty": { "@type": "PropertyValue", "name": "DisplaySubscriptionIdentifier", "value": "http://www.example.com/faq" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
- 다른 서비스가 구독자를 인증함을 나타내기 위해
authenticator
를 추가합니다. 예를 들어 HBO GO에는 케이블 제공업체의 구독이 필요합니다.
일반 등급 패키지
공통 등급 콘텐츠는 구독 패키지와 관계없이 모든 구독자가 이용할 수 있습니다. 일반 등급은 subscription
의 category
가 있는 모든 콘텐츠에 적용됩니다. category
속성에 대한 자세한 내용은 페이월 유형 섹션을 참고하세요.
공통 등급 패키지가 필요한 이유는 무엇인가요?
여러 Google 제품에서 사용자에게 TV 및 영화 추천을 제공합니다. 여기에는 Google 검색, Android TV, Google 어시스턴트가 포함됩니다. 비용에 관한 사용자 기대치를 설정하려면 Google에서 공통 등급을 사용하여 모든 구독자가 이용할 수 있는 콘텐츠를 파악해야 합니다. 또한 Google은 특정 구독 패키지를 사용하는 구독자가 이용할 수 있는 콘텐츠를 파악해야 합니다.
권한 API를 지원하지 않는 경우 일반 등급에서 사용할 수 있는 콘텐츠를 추천합니다. 이 API를 통해 Google은 각 특정 사용자가 액세스할 수 있는 비공통 등급 콘텐츠를 파악할 수 있습니다.
공통 등급 패키지는 언제 만들어야 하나요?
서비스에서 모든 구독자가 이용할 수 있는 콘텐츠를 제공하는 경우 공통 등급 패키지가 필요합니다. 여기에는 패키지를 하나만 제공하는 서비스와 여러 패키지 또는 부가기능을 제공하는 서비스가 포함됩니다.
모든 구독자가 이용할 수 있는 콘텐츠가 없는 제공업체는 공통 등급 패키지를 만들지 않아도 됩니다. 예를 들어 모든 패키지에 상호 배타적인 콘텐츠를 제공하는 서비스 제공업체가 있습니다.
일반적인 등급 예
다음은 일반 등급의 예입니다.
등급별 구독
등급별 정기 결제 모델에서 서비스 제공업체는 골드, 실버, 브론즈 등급과 같은 여러 정기 결제 등급을 보유합니다. 상위 등급 구독을 보유한 사용자는 하위 등급의 모든 콘텐츠에 액세스할 수 있습니다. 하위 등급 정기 결제 사용자는 상위 등급의 콘텐츠에 액세스할 수 없습니다. 다음 이미지는 패키지 구조의 예입니다.

다음 코드 예시에서 브론즈 패키지는 모든 사용자가 해당 등급의 모든 콘텐츠에 액세스할 수 있으므로 공통 등급입니다.
"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 } ],
부가기능
부가기능 구독 모델에서 서비스 제공업체는 사용자가 권한을 확장하고 기본 구독에 채널을 추가할 수 있도록 허용합니다. 사용자는 원하는 만큼 채널을 추가할 수 있습니다. 다음 이미지는 패키지 구조의 예입니다.

모든 사용자가 사용할 수 있는 채널이 있고 채널 비용이 없는 경우 패키지를 공통 등급 패키지와 병합할 수 있습니다.
다음 코드 예시에서 기본 패키지는 모든 사용자가 이 패키지의 모든 콘텐츠에 액세스할 수 있으므로 공통 등급입니다.
"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 } ],
교차하는 콘텐츠가 있는 패키지
패키지에 교차하는 콘텐츠가 있는 콘텐츠 모델에서 서비스 제공업체는 다른 패키지의 일부 콘텐츠가 포함된 패키지를 판매합니다. 다음 이미지는 패키지 구조의 예입니다.

다음 코드 예시에서 공급자는 일부 콘텐츠가 모든 패키지에서 교차하는 세 개의 패키지를 제공합니다. 이 경우 일반 등급을 나타내는 네 번째 패키지가 필요합니다. 세 패키지 모두에서 사용할 수 있는 모든 콘텐츠가 포함되어야 합니다.
"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 } ],
교차하는 콘텐츠가 없는 패키지
모든 콘텐츠 패키지가 교차하지 않는 콘텐츠 모델에서 서비스 제공업체는 다른 패키지의 콘텐츠가 포함되지 않은 패키지를 판매합니다. 다음 이미지는 패키지 구조의 예입니다.

다음 예시에서 제공자는 모든 패키지에 걸쳐 교차하는 콘텐츠가 없는 세 개의 패키지를 제공합니다. 공통 등급 패키지는 필요하지 않습니다.
"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 } ],
권한 엔드포인트
이 섹션의 정보를 사용하여 사용자와 연결된 권한을 반환하는 HTTPS 엔드포인트를 호스팅합니다.
기본 요건
시작하기 전에 서비스가 Google과의 OAuth 2.0 흐름을 지원하는지 확인하세요.
요청
사용자의 권한을 수신하기 위해 Google은 사용자의 OAuth 토큰이 포함된 요청을 전송합니다. 엔드포인트는 해당 OAuth 토큰을 기반으로 사용자를 식별해야 합니다. 아래 예시를 참조하세요.
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
응답
엔드포인트는 다음 속성이 포함된 응답을 반환해야 합니다.
속성 | |
---|---|
subscription |
필수 루트 응답 내의 필드입니다. |
subscription.type |
필수 이 속성은 다음 값을 가질 수 있습니다.
|
subscription.expiration_date |
선택사항 이 혜택의 만료일입니다. ISO 8601 형식이며 시간대가 포함됩니다. 자세한 내용은 만료일을 참고하세요. |
entitlements |
선택사항 이 루트 속성에는 사용자가 보유한 |
entitlements.entitlement |
구독 유형에 따라 스트리밍 카탈로그에 대한 액세스가 달라지는 경우 필수입니다. 이 속성에는 |
entitlements.expiration_date |
선택사항 이 정기 결제의 만료일입니다. 시간대가 포함된 ISO 8601 형식입니다. 자세한 내용은 만료일을 참고하세요. |
만료일
엔드포인트 응답에는 만료 날짜를 다루는 두 가지 속성(subscription.expiration_date
및 entitlements.expiration_date
)이 있습니다. 둘 중 하나를 포함하거나 둘 다 포함하지 않을 수 있지만 둘 다 포함할 수는 없습니다. 어떤 방법을 사용할지는 구독 모델에 따라 다릅니다.
구독 모델 | |
---|---|
스트리밍 카탈로그에 대한 액세스는 모든 구독자에게 동일합니다. | entitlements 속성을 지정할 필요가 없으므로 subscription.expiration_date 을 지정합니다. |
스트리밍 카탈로그에 대한 액세스는 사용자의 구독 세부정보에 따라 다릅니다. |
구독 모델에 시간이 지남에 따라 만료되는 등급 또는 부가기능이 여러 개 있는 경우 다음 중 하나를 수행합니다.
|
응답 예
다음은 다양한 정기 결제 상태의 응답 예시입니다.
- 사용 중인 구독
- 만료일이 있는 활성 구독
- 구독 없음
- 여러 등급 또는 부가기능의 활성 정기 결제
사용 중인 구독
활성 구독
사용자가 example.com을 구독하고 있습니다. 이 경우 모든 구독자는 구독 유형에 관계없이 전체 스트리밍 카탈로그에 액세스할 수 있습니다.
{ "subscription" : { "type": "ActiveSubscription", } }
만료일이 있는 활성 구독
만료일이 있는 활성 상태의 정기 결제
사용자가 example.com을 활성 상태로 구독하고 있으며 구독에 만료일이 있습니다. 이 경우 모든 구독자는 구독 유형과 관계없이 전체 스트리밍 카탈로그에 액세스할 수 있습니다.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
구독 없음
구독 안 함
사용자가 example.com을 구독하지 않습니다.
{ "subscription" : { "type": "InactiveSubscription" } }
여러 등급 또는 부가기능의 활성 정기 결제
여러 등급 또는 부가기능의 활성 구독
사용자가 특정 날짜까지 example.com:premium
을 구독하고 있습니다.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
비율 제한
Google은 최대 6시간마다 사용자의 권한 정보를 새로고침합니다. 초당 최대 쿼리 수 (QPS)를 원활하게 처리하기 위해 Google에서는 시간에 따라 엔드포인트에 쿼리를 균등하게 분산합니다. 따라서 다음 수식을 사용하여 엔드포인트의 예상 평균 QPS를 추정할 수 있습니다.
예상 평균 QPS = <총 사용자 수>/21,600초 (6시간 x 60분 x 60초)
많은 사용자를 지원하는 경우 Google에서 6시간 간격을 조정할 수 있습니다. 필요한 경우 Google에 문의하여 구성을 논의하세요.
Google에 문의
엔드포인트가 준비되면 Google에 연락하여 엔드포인트의 URL을 알립니다.
작업 액세스 사양 속성
참조 정보는 작업 액세스 사양 속성 섹션을 참고하세요.