액세스 요구사항

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

그림 1. 액세스 요구사항은 구독자가 앱 또는 플랫폼의 콘텐츠에 액세스하는 데 도움이 됩니다.

콘텐츠 액세스 요구사항 파악하기

카탈로그에서 각 콘텐츠 패키지의 액세스 요구사항을 지정해야 합니다. 이때 다음 질문을 고려하세요.

  • 사용자가 콘텐츠에 액세스하려면 앱이나 플랫폼에 로그인해야 하나요?
  • 사용자에게 구독이 필요한가요?

    시청 작업만 해당:

    • 사용자가 외부 서비스 제공업체의 구독을 사용해야 하나요?
    • 계층형, 다중 패키지, 부가기능 구독을 제공하나요?
  • 시청 작업만 해당: 사용자가 콘텐츠를 대여하거나 구매해야 하나요?

  • 시간이 지나면서 액세스 요구사항이 변경되나요?

  • 액세스 요구사항은 기기 위치에 따라 달라지나요?

액세스 제한 유형

액세스 제한에는 두 가지 유형이 있습니다.

페이월 유형

페이월 유형에 따라 콘텐츠에 대한 액세스를 제한할 수 있습니다. 다음 표에는 다양한 페이월 유형이 나와 있습니다.

페이월 유형 카테고리
구매 또는 로그인이 필요하지 않습니다. 장작불 nologinrequired
사용자가 로그인해야 하지만 유료 구독은 필요하지 않습니다. Vudu (AVOD) free
사용자에게 활성 상태인 구독이 있어야 합니다. 액세스는 정기 결제 등급과는 별개입니다. Netflix

subscription

사용자에게 활성 상태인 구독이 있어야 합니다. 액세스는 구독 등급에 따라 다릅니다. Hulu (부가기능)

subscription

구매 후 일정 기간 동안 콘텐츠를 이용할 수 있습니다. Vudu rental
구매 후 무기한으로 콘텐츠를 사용할 수 있습니다. Vudu purchase
케이블 구독으로 콘텐츠를 이용할 수 있습니다. 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"
    }
  },
  ...
}

듣기 작업의 페이월 유형

수신 대기 작업의 콘텐츠 페이월 유형을 지정하려면 쿠폰 객체에서 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에 지정된 리전 내에 있지 않으면 사용자가 콘텐츠에 액세스할 수 있습니다.

eligibleRegionineligibleRegion 속성은 다음 값을 허용합니다.

전 세계에서 콘텐츠를 사용할 수 있는 경우 eligibleRegion에 다음과 같은 특수 값을 사용합니다.

"eligibleRegion": "EARTH",

운영 가능 지역 사용 사례

다음은 eligibleRegion 속성의 사용 사례입니다.

  • 예 1: eligibleRegion를 사용하여 국가 목록을 표시합니다.
  • 예 2: eligibleRegion(우편번호 목록이 포함된 GeoShape 객체 포함)
  • 예 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

정방향 정렬 영역 (FSA) 코드 목록이 포함된 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/area2",
    "addressCountry": "CA",
    "postalCode": [
      "1A1",
      "K1A"
    ]
  }
}

예 4

eligibleRegion를 DMA ID가 포함된 GeoShape 객체로 바꿉니다.


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

예시 5

eligibleRegion: GeoShape 객체 목록 각각 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
  },
 "eligibleRegion":   {
      "@type": "Country",
      "name": "US"
    },
  "ineligibleRegion": {
    "@type": "GeoShape",
    "@id": "http://example.com/area1",
    "addressCountry": "US",
    "postalCode": [
      "94118",
      "94119"
    ]
  }
}

사용 권한 식별자

사용 권한 식별자 entitlementId은 미디어 카탈로그의 콘텐츠 그룹에 대한 액세스를 나타내는 문자열을 나타냅니다. 사용자가 내 콘텐츠에 액세스할 수 있는지 확인하기 위해 Google은 다음 단계를 따릅니다.

  1. Google은 사용 권한 엔드포인트를 API 호출하여 사용자의 사용 권한 식별자를 수신합니다.
  2. Google은 미디어 작업 피드에서 콘텐츠의 필수 사용 권한 식별자를 찾습니다.
  3. 사용자의 entitlementId를 피드의 미디어 구독 객체의 identifier 속성과 일치시킵니다. 하나 이상의 entitlementId가 일치하면 사용자가 콘텐츠에 액세스할 수 있다고 결정됩니다.
그림 2. 사용자의 사용 권한 식별자 중 하나가 콘텐츠의 필수 사용 권한 식별자와 일치합니다.

entitlementId에 다음 구문을 사용하는 것이 좋습니다.

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

구문 예:

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

사용 권한 식별자 예시

MediaExampleCompany의 피드는 아래와 같이 Movie XYZexample.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
        ...
      },
      ...
    }
  },
  ...
}

일반적인 액세스 사용 사례

다음은 일반적인 액세스 사용 사례입니다.

  • 무료 (로그인 필요 없음): 로그인, 구독, 구매 없이도 콘텐츠를 이용할 수 있습니다.
  • 무료 (로그인 필요): 이 콘텐츠는 사용자가 로그인해야 하지만 구독이 필요하지는 않습니다.
  • 단일 등급 정기 결제: 콘텐츠를 이용하려면 정기 결제가 필요합니다. 모든 정기 결제 사용자는 정기 결제 패키지에 관계없이 영화나 에피소드와 같은 동일한 콘텐츠에 액세스할 수 있습니다.
  • 다중 계층 정기 결제: 콘텐츠를 이용하려면 정기 결제가 필요합니다. 정기 결제 사용자는 정기 결제 등급에 따라 영화 또는 에피소드와 같은 다양한 콘텐츠에 액세스할 수 있습니다. 예: 실버골드
  • 부가기능 구독: 콘텐츠를 이용하려면 구독이 필요합니다. 정기 결제는 일반 정기 결제 외에 프리미엄 콘텐츠를 추가할 수도 있습니다.
  • 일회성 구매: 콘텐츠를 구매한 후 사용자가 무기한으로 액세스할 수 있습니다.
  • 실시간 TV: 지역, 전국, 프리미엄 채널을 시청할 수 있습니다.
  • 서드 파티 구독: 이 콘텐츠를 사용하려면 사용자가 케이블 업체로 로그인해야 합니다.

무료 (로그인 필요 없음)

로그인할 필요 없음

콘텐츠는 로그인 또는 가입 없이 사용할 수 있습니다.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • categorynologinrequired로 설정합니다.
  • expectAcceptanceOf는 포함하지 마세요.

무료 (로그인 필요)

로그인 필요

이 콘텐츠에는 사용자가 로그인해야 하지만 구독이 필요하지는 않습니다.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • categoryfree로 설정합니다.
  • 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"
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

다중 등급 정기 결제

단계식 구독 모델에서는 서비스 제공업체에 골드, 실버, 브론즈와 같은 여러 구독 등급이 있습니다. 상위 등급의 정기 결제를 이용하는 사용자는 모든 하위 등급 콘텐츠에 액세스할 수 있습니다. 그러나 하위 등급의 정기 결제 사용자는 상위 등급 콘텐츠에 액세스할 수 없습니다.

그림 3. 단계식 구독 모델 및 사용 권한 표현

다음 상황을 살펴보세요.

  • Jane은 골드 등급을 구독합니다. 사용 권한 엔드포인트는 다음과 같은 entitlementId 식별자를 반환합니다.
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • 존은 브론즈 등급을 구독하고 있습니다. 사용 권한 엔드포인트는 다음 entitlementId를 반환합니다.
    • example.com:bronze
  • 미디어 작업 피드에는 다음 요구사항이 설명되어 있습니다.
    • 영화 A에는 example.com:bronze이 필요합니다.
    • 영화 B에는 example.com:silver이 필요합니다.

이 시나리오에서 Google은 Jane과 John의 다음과 같은 액세스 수준을 결정합니다.

  • Jane과 John 모두 영화 A에 액세스할 수 있습니다.
  • Jane은 영화 B에 액세스할 수 있지만 존은 그렇게 하지 않습니다.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

부가기능 구독

부가기능 구독 모델에서 서비스 제공업체는 사용자가 사용 권한을 확대하고 기본 구독에 채널을 추가할 수 있게 해줍니다. 사용자는 원하는 만큼 채널을 추가할 수 있습니다.

그림 4. 부가기능 구독 모델 및 사용 권한 표현

다음 상황을 살펴보세요.

  • Jane은 PROSportzBasic 정기 결제와 함께 제공합니다. 사용 권한 엔드포인트는 다음과 같은 entitlementId 식별자를 반환합니다.
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • 서환님은 기본 요금제만 사용 중입니다. 사용 권한 엔드포인트는 다음 entitlementId를 반환합니다.
    • example.com:basic
  • 미디어 작업 피드에는 다음 요구사항이 설명되어 있습니다.
    • 영화 A에는 example.com:basic이 필요합니다.
    • 영화 B에는 example.com:pro이 필요합니다.

이 시나리오에서 Google은 Jane과 John의 다음과 같은 액세스 수준을 결정합니다.

  • Jane과 John 모두 영화 A에 액세스할 수 있습니다.
  • Jane은 영화 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
        }
    }
  }
}

일회성 구매

구매

구매 후 무기한으로 콘텐츠를 사용할 수 있습니다.


{
  "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/"
      }
    }
  }
}
  • categorypurchase로 설정합니다.
  • actionAccessibilityRequirementexpectAcceptanceOf를 포함하여 구매 가격을 표시합니다.

대여

구매 후 일정 기간 동안 콘텐츠를 이용할 수 있습니다.


{
  "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/"
      }
    }
  }
}
  • categoryrental로 설정합니다.
  • actionAccessibilityRequirementexpectAcceptanceOf를 포함하여 대여 가격을 표시합니다.

실시간 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"
      }
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • authenticator을 추가하여 다른 서비스가 구독자를 인증한다는 것을 표시합니다. 예를 들어 HBO GO를 사용하려면 케이블 제공업체의 구독이 필요합니다.

일반 등급 패키지

일반 등급 콘텐츠는 정기 결제 패키지에 관계없이 모든 정기 결제 사용자에게 제공됩니다. 공통 등급은 categorysubscription인 모든 콘텐츠에 적용됩니다. category 속성에 대한 자세한 내용은 페이월 유형 섹션을 확인하세요.

공통 등급 패키지가 필요한 이유는 무엇인가요?

Google 검색, Android TV, Google 어시스턴트가 포함된 여러 Google 제품으로 TV 및 영화 추천을 사용자에게 제공합니다. 비용에 관한 사용자 기대치를 설정하려면 Google은 공통 등급을 사용하여 모든 정기 결제 사용자가 사용할 수 있는 콘텐츠를 파악해야 합니다. 또한 Google은 특정 정기 결제 패키지가 있는 구독자에게 제공되는 콘텐츠를 파악해야 합니다.

자격 API를 지원하지 않는 경우 공통 등급에서 사용할 수 있는 타이틀을 사용하는 것이 좋습니다. Google은 이 API를 통해 각 사용자가 액세스할 수 있는 일반적이지 않은 제목을 파악합니다.

공통 등급 패키지는 언제 만들어야 하나요?

서비스가 모든 정기 결제 사용자가 사용할 수 있는 콘텐츠를 제공하는 경우 공통 등급 패키지가 필요합니다. 여기에는 하나의 패키지만 제공하는 서비스와 여러 패키지 또는 부가기능을 제공하는 서비스가 포함됩니다.

모든 구독자에게 제공되는 콘텐츠가 없는 제공자는 공통 등급 패키지를 만들 필요가 없습니다. 모든 패키지에 상호 배타적인 콘텐츠를 제공하는 서비스 제공업체를 예로 들 수 있습니다.

일반적인 등급의 예

다음은 일반적인 등급의 예입니다.

정기 결제

단계식 구독 모델에서는 서비스 제공업체에 골드, 실버, 브론즈 등급과 같은 여러 구독 등급이 있습니다. 상위 등급의 정기 결제 사용자는 하위 등급의 모든 콘텐츠에 액세스할 수 있습니다. 하위 등급 정기 결제 사용자는 상위 등급의 콘텐츠에 액세스할 수 없습니다. 다음 이미지는 패키지 구조의 예입니다.

골드 등급에는 브론즈 등급이 모두 포함된 실버 등급 콘텐츠가 모두 포함되어 있습니다.
그림 5. 정기 결제 패키지 구조.

다음 코드 예에서는 모든 사용자가 해당 등급의 모든 콘텐츠에 액세스할 수 있으므로 브론즈 패키지가 일반적인 등급입니다.

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

부가기능

부가기능 구독 모델에서는 서비스 제공업체를 통해 사용자가 자신의 자격을 확대하고 기본 구독에 채널을 추가할 수 있습니다. 사용자는 원하는 만큼 채널을 추가할 수 있습니다. 다음 이미지는 패키지 구조의 예시입니다.

모든 사용자는 기본 채널로 시작하며 PRO, Sportz, Moviemax 채널을 어떤 조합으로든 추가할 수 있습니다.
그림 6. 부가기능 구독 패키지 구조

모든 사용자가 사용할 수 있는 채널이 있고 채널에 비용이 들지 않는 경우 패키지를 일반 등급 패키지와 병합할 수 있습니다.

다음 코드 예에서는 모든 사용자가 이 패키지의 모든 콘텐츠에 액세스할 수 있으므로 기본 패키지가 공통 등급입니다.

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

콘텐츠가 교차하는 패키지

패키지에 교차하는 콘텐츠가 있는 콘텐츠 모델에서는 서비스 제공업체가 다른 패키지의 콘텐츠가 포함된 패키지를 판매합니다. 다음 이미지는 패키지 구조의 예입니다.

패키지 1, 2, 3 사이의 중첩이 &#39;Common Tier&#39;로 표시되는 벤다이어그램입니다.
그림 7. 교차하는 콘텐츠가 포함된 패키지 구조입니다.

다음 코드 예에서 제공자는 세 가지 패키지를 제공합니다. 이 패키지에서는 모든 콘텐츠가 일부 패키지와 교차합니다. 이 경우 공통 등급을 나타내는 네 번째 패키지가 필요합니다. 3가지 패키지에서 사용 가능한 모든 콘텐츠를 포함해야 합니다.

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

교차하는 콘텐츠가 없는 패키지

모든 콘텐츠 패키지가 교차하지 않는 콘텐츠 모델에서 서비스 제공업체는 다른 패키지의 콘텐츠가 포함되지 않은 패키지를 판매합니다. 다음 이미지는 패키지 구조의 예입니다.

패키지 1, 2, 3은 완전히 별개입니다.
그림 8. 교차하는 콘텐츠가 없는 패키지 구조

다음 예에서 제공자는 모든 패키지에서 콘텐츠를 교차하지 않고 패키지 3개를 제공합니다. 일반 등급 패키지는 필요하지 않습니다.

"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

필수

이 속성은 다음 값을 가질 수 있습니다.

  • ActiveSubscription: 사용자가 제공업체를 구독 중입니다.
  • ActiveTrial: 사용자에게 제공 중인 활성 무료 체험이 있습니다.
  • InactiveSubscription: 사용자에게 활성 정기 결제 또는 활성 체험판이 없습니다.
subscription.expiration_date

Optional

이 사용 권한의 만료일입니다. 시간대는 ISO 8601 형식으로 나타냅니다. 자세한 내용은 만료일을 참조하세요.

entitlements

Optional

이 루트 속성에는 사용자가 보유한 entitlementId 값이 포함되어 있습니다.

entitlements.entitlement

스트리밍 카탈로그에 대한 액세스 권한이 구독 유형에 따라 다른 경우 필수입니다.

이 속성에는 entitlementId이 포함되어 있습니다. 자세한 내용은 사용 권한 식별자를 참고하세요.

entitlements.expiration_date

Optional

이 구독의 만료일로, 시간대가 포함된 ISO 8601 형식입니다. 자세한 내용은 만료일을 참조하세요.

만료일

엔드포인트 응답에는 만료일을 처리하는 두 가지 속성(subscription.expiration_dateentitlements.expiration_date)이 있습니다. 둘 중 하나만 포함하거나 둘 다 포함할 수는 없습니다. 어느 것을 사용할지는 정기 결제 모델에 따라 다릅니다.

구독 모델
스트리밍 카탈로그에 대한 액세스 권한은 모든 구독자에게 동일합니다. entitlements 속성을 지정할 필요가 없으므로 subscription.expiration_date를 지정합니다.

스트리밍 카탈로그에 대한 액세스는 사용자의 구독 세부정보에 따라 다릅니다.

정기 결제 모델에 시간이 지남에 따라 만료되는 등급 또는 부가기능이 여러 개 있는 경우 다음 중 하나를 실행하세요.

  • 모든 entitlements.entitlement 값이 동시에 만료되는 경우 subscription.expiration_date를 지정합니다.
  • 일부 entitlements.entitlement 값이 다른 시간에 만료되는 경우 entitlements.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시간마다 사용자의 사용 권한 정보를 새로고침합니다. Google에서는 최대 쿼리 수 (QPS)를 원활하게 하기 위해 시간 경과에 따라 엔드포인트에 쿼리를 고르게 분산합니다. 따라서 다음 수식을 사용하여 엔드포인트의 예상 평균 QPS를 예측할 수 있습니다.

예상 평균 QPS = <총 사용자 수>/21,600초 (6시간 x 60분 x 60초)

다수의 사용자를 지원하는 경우 6시간 간격을 조정할 수 있습니다. 필요한 경우 구성에 대해 Google에 문의하세요.

Google에 문의

엔드포인트가 준비되면 Google에 문의하여 엔드포인트의 URL을 알립니다.

작업 액세스 사양 속성

참조 정보는 작업 액세스 사양 속성 섹션을 참조하세요.