본문으로 건너뛰기

보호자 이메일 주소 변경을 알리는 새 웹훅

보호자는 k-ID 계정의 이메일 주소를 변경할 수 있으며, 새로운 Session.ApproverEmailUpdate 웹훅이 그 시점을 프로덕트에 알려 줍니다.

새로운 기능

  • Session.ApproverEmailUpdate. 보호자가 이메일 변경을 확정할 때 자녀 세션마다 한 번씩 발생하므로, 해당 플레이어에 대해 저장해 둔 보호자 이메일 주소를 서버에서 갱신할 수 있습니다. 페이로드에는 id(세션), productId, oldEmail, newEmail이 담깁니다.
  • 세션은 그 외에는 달라지지 않습니다. ACTIVE 상태를 유지하고 동일한 sessionId와 권한을 그대로 가지며, 자녀는 중단 없이 계속 이용할 수 있습니다. 플레이어를 연령 확인이나 동의 절차로 되돌려 보내지 마세요.
  • 활성 세션이 있는 자녀만 해당됩니다. 귀사 프로덕트에 활성 세션이 없는 자녀는 옮길 대상이 없으므로 이벤트가 발생하지 않습니다. 그 자녀가 이후에 세션을 갖게 되면, 그 세션은 새 주소를 기준으로 생성됩니다.
  • 엔드포인트별로 구독해야 합니다. Compliance Studio에서 해당 프로덕트의 Developer Settings 페이지에 들어가 웹훅 엔드포인트에 Session.ApproverEmailUpdate를 선택하세요. 선택하지 않으면 k-ID는 전송을 시도하지도, 오류를 반환하지도 않고 이벤트를 폐기합니다. 이 항목은 조직에서 보호자 이메일 변경이 활성화된 경우에만 목록에 표시됩니다.

문서

트랜잭션 및 결제 기반 확인 가이드

트랜잭션과 결제 기반 확인이 이제 개발자 허브에 완전히 문서화되었습니다.

새로운 기능

  • 트랜잭션. 제품은 자녀의 구매를 k-ID에 보고하며, k-ID는 이를 연결된 부모에게 Family Connect의 자녀별 구매 화면과 정기 활동 다이제스트에 표시합니다. 청구 전에 부모가 개입하기를 원하는 경우, 구매 승인 요청이 부모에게 먼저 승인을 요청하고 결과는 Transaction.PurchaseApprovalResult 웹훅으로 도착합니다. 두 부분 모두 Compliance Studio에서 제품별로 구성합니다.
  • 결제 기반 확인. 완료된 카드 결제가 부모 동의 단계를 대신할 수 있으며, 신용카드 확인 방법을 일대일로 그대로 따릅니다. 즉, 세션에 대해 해당 방법이 활성화된 곳에서 정확히 인정되고, 신용카드 자금만 인정되며, 그 외의 모든 곳에서는 부모가 변경 없이 표준 검증된 부모 동의 흐름을 완료합니다.

문서

Verified Parent Linking, 스크린 타임, 활동 수집 가이드

세 가지 부모 관리 기능이 이제 개발자 허브에 완전히 문서화되었습니다. Verified Parent Linking, 스크린 타임, 활동 수집입니다.

새로운 기능

  • Verified Parent Linking (VPL). 플레이어는 자신의 부모를 제품에 초대할 수 있습니다. 부모가 본인 인증을 완료하면 해당 플레이어의 컨트롤(예: 스크린 타임)을 보고 설정할 수 있습니다. VPL은 게이트가 아니라 링크입니다. 아무것도 차단되지 않으며, 부모가 수락하든 안 하든 제품은 계속 작동합니다. Session.Unlink 웹훅이 어느 한쪽이 연결을 해제했을 때 이를 알려줍니다. VPL은 개발자 조직 단위로 활성화됩니다.
  • 스크린 타임. 부모는 Family Connect에서 자녀의 일일 한도, 조용한 시간, 휴식 알림을 설정합니다. 제품은 사용 현황을 보고하고 k-ID가 반환하는 판정을 따릅니다. k-ID는 규칙을 보유하고, 자녀별·하루별로 사용 시간을 세며, 일정을 평가합니다. 각 한도에 앞서 경고 이벤트가 도착하므로 플레이어가 저장 지점에 도달할 수 있으며, 자녀는 스크린 타임 예외를 요청하여 더 많은 시간을 요청할 수 있습니다.
  • 활동 수집. 제품은 Compliance Studio에서 제품별로 선언한 활동 유형에 대해 레코드를 푸시하여 자녀가 무엇을 했는지 보고합니다. k-ID는 이러한 레코드를 저장하고 집계하여 Family Connect에서 신뢰할 수 있는 성인이 읽는 화면(정기 다이제스트 이메일 포함)에 반영합니다. 활동은 수신 전용입니다.

문서

Version history and rollback in Compliance Studio

Every configuration a product has published is now kept and listed, and an administrator can point Live back at a configuration it served before without waiting on k-ID.

What's new

  • The History tab. A product now has a History tab holding two sections. Activity lists everything that has happened to the product, and any entry that changed the configuration carries a View changes link showing exactly what that one entry changed. Versions lists every configuration published to Live and to Test, newest first, with the one being served marked Current.
  • Rollback. The version Live is serving offers Rollback, which repoints Live at the configuration published before it. It doesn't create a new version, so numbering is unaffected and the version you rolled off stays in the list and can be made current again. A rollback takes effect within minutes, with no review step, so the confirmation shows the full diff of what Live would serve.
  • Reset to published. A working copy with unpublished edits can be reset back to whatever Live or Test is serving, previewed the same way. This is separate from a rollback: a rollback changes what players are served and leaves your working copy alone, a reset does the opposite.
  • Naming a version. Versions can be given a name, so Live v7 can also read as "pre-launch tuning" when someone comes looking a month later.

Documentation

/session/delete의 새 모드로 필수 프로덕트 의존성 보호

/session/delete가 이제 삭제되는 세션에 의존하는 다른 프로덕트를 보호(또는 함께 정리)할 수 있습니다.

새로운 기능

  • POST /session/deleteessentialDependencies. 어떤 프로덕트가 다른 프로덕트에 *필수(essential)*로 구성된 경우, 지금까지는 해당 세션을 삭제하면 의존하는 프로덕트의 세션이 의존하던 동의 기반을 잃은 채 조용히 남겨졌습니다. 새 필드를 사용하면 기본 취소와 hardDelete 두 경로 모두에서 대신 어떤 동작을 할지 선택할 수 있습니다.
  • block은 의존 프로덕트를 고립시키는 대신 삭제를 거부합니다. 플레이어가 삭제 대상 프로덕트에 의존하는 활성 프로덕트를 아직 보유하고 있는 동안, 호출은 ESSENTIAL_DEPENDENTS_EXIST를 반환하고 의존 프로덕트 ID를 명시합니다. 별도의 활성화가 필요 없습니다.
  • cascade는 의존하는 세션도 삭제한 다음 지정된 세션을 삭제하며, 각 세션마다 자체 웹훅이 발송되고 (하드 삭제의 경우) 자체 삭제 기록이 생성됩니다. 지정하지 않은 세션을 삭제하기 때문에 개발자별 옵트인이며(활성화 없이 전송하면 FEATURE_DISABLED가 반환됩니다), 클라이언트 액세스 토큰이 아닌 서버 측 API 키가 필요합니다.
  • 기존의 모든 호출은 영향을 받지 않습니다. 필드를 생략하거나 ignore를 전송하면 /session/delete는 지금까지와 정확히 동일하게 동작하며, 앞으로도 항상 그렇습니다. 이는 기본값 변경을 앞둔 단계가 아니라 안정적인 옵트인 기능입니다.

문서

Google Play Age Signals v0.0.4 `ageRangeSource` 지원

이제 k-ID는 google-play 플랫폼 연령 신호에 대해 Google Play Age Signals v0.0.4의 ageRangeSource 값을 declarationType으로 받아들입니다.

새로운 기능

  • google-play 신호의 ageRangeSource. Google Play Age Signals v0.0.4에서는 userStatusageRangeSource로 대체되었습니다. 연령 게이트 및 세션 엔드포인트를 호출할 때 Google Play age signals responsesageRangeSource 값을 PlatformAgeSignaldeclarationType으로 제공하세요.
  • 지원이 중단된 userStatus 값도 계속 작동합니다. k-ID는 이전 스키마를 사용하는 스토어를 위해 기존 userStatus 값을 계속 허용하므로, 아직 마이그레이션하지 않은 앱의 신호도 영향을 받지 않습니다.

문서

이메일 연령 추정 전용 연령 확인 엔드포인트

이제 이메일 연령 추정만을 방식으로 사용하여 연령 확인을 수행하는 전용 엔드포인트 /age-verification/perform-email-age-estimation가 제공됩니다. 이는 기존 단일 방식 엔드포인트(ID, AgeKey, ConnectID)와 함께 사용할 수 있습니다.

새로운 기능

  • POST /age-verification/perform-email-age-estimation. 자동 방식 선택을 우회하고 이메일 연령 추정만으로 사용자를 확인합니다. 다른 단일 방식 엔드포인트와 동일한 요청 형식(jurisdiction, subject, criteria 및 선택적 options.redirectUrl / options.locale)을 받으며 id, url, shortUrl을 반환합니다. subject.email 필드는 선택 사항입니다. 생략하면 사용자가 호스팅된 확인 페이지에서 이메일을 입력합니다.
  • 18세 이상 신호. 이메일 연령 추정은 정확한 연령 추정이 아니라 18세 이상 신호입니다. 대상이 18세 이상인지만 확인할 수 있으며 그보다 어린 연령대를 구분할 수 없으므로, 요청 기준을 이 기능에 맞추는 것은 사용자의 책임입니다.
  • 상태 및 결과는 변경되지 않음. 평소와 같이 /age-verification/get-status를 폴링하거나 Verification.Result webhook을 처리하세요.

문서

Apple iOS "confirmed" 연령 신호 지원

이제 k-ID는 iOS 26.5 이상의 플레이어에 대해 Apple의 confirmed 선언 유형을 확인된 플랫폼 연령 신호로 받아들입니다.

새로운 기능

  • confirmed는 확인된 Apple 선언 유형입니다. iOS 26.5부터 Apple의 Age Range Service는 selfDeclared, guardianDeclared, confirmed만 반환합니다. confirmed는 신용카드나 정부 발급 ID 같은 정밀 검증 방식으로 연령 범위가 설정되었음을 의미합니다. k-ID는 confirmed를 확인된 것으로 취급하므로 연령 게이트 억제, 확인 임계값 충족, ageVerification 기록이 가능합니다.
  • 지원이 중단된 유형도 계속 작동합니다. Apple은 paymentChecked, governmentIDChecked, guardianPaymentChecked, guardianGovernmentIDChecked의 지원을 중단했습니다. k-ID는 하위 호환성을 위해 이 유형들을 계속 허용하므로 이전 iOS 버전의 신호도 영향을 받지 않습니다.
  • selfDeclaredguardianDeclared는 미확인으로 유지됩니다. 이들은 연령 확인 요건을 우회하지 않습니다.

문서

위젯 및 연령 확인을 위한 모바일 통합 안내

모바일에서 k-ID를 가장 잘 통합하는 방법을 명확히 하기 위해 문서를 업데이트했습니다: 연령 게이트와 동의 단계에는 네이티브로 구축한 UX가 플레이어에게 가장 원활한 경험을 제공하며, 연령 확인 및 연령 보증 URL과 같은 웹 임베드는 시스템 브라우저 구성요소를 통해 표시됩니다.

새로운 기능

연령 게이트 및 End-to-End 위젯에 대한 모바일 안내

연령 게이트end-to-end 위젯은 모바일에서 완전히 지원됩니다. 연령 게이트와 동의 단계의 경우, 가장 브랜드에 통합된 경험을 위해 사용자 정의 워크플로를 사용하고 CDK UX 가이드라인에 따라 UX를 네이티브로 구축하는 것을 권장합니다.

k-ID API가 반환하는 연령 확인 및 연령 보증 URL도 동일한 방식으로 표시됩니다. 특정 엔드포인트와 챌린지 유형은 모바일 앱 가이드를 참조하세요.

개편된 모바일 앱 가이드

모바일 앱 가이드는 모바일에서 가장 일반적인 웹 임베드인 연령 확인을 중심으로 재구성되었습니다:

기본 브라우저 방법

기본 외부 브라우저 방법이 모바일 구현 방법에 문서화되었습니다. 이 방법은 Android(Intent.ACTION_VIEW)와 iOS(UIApplication.open) 모두에서 작동하고, AgeKeys를 완전히 지원하며, redirectUrl 콜백을 통해 앱으로 포커스를 반환합니다.

기기 방향 안내

연령 확인은 세로 방향에서 가장 잘 작동합니다. 인앱 브라우저 환경은 앱의 방향 고정을 상속하므로, 가로 방향으로 고정된 앱은 기본 외부 브라우저에서 확인 URL을 열어야 합니다. 브라우저는 자체 방향을 관리하므로 사용자가 세로로 회전할 수 있으며, 흐름이 완료되면 redirectUrl 콜백이 사용자를 앱으로 반환합니다.

업데이트된 문서

다음 단계

  • 모바일에서 통합하는 경우 가장 원활한 경험을 위해 사용자 정의 워크플로CDK UX 가이드라인을 사용하여 연령 게이트와 동의 UX를 네이티브로 구축하는 것을 고려하세요
  • 확인 URL을 표시할 때 가로 고정 앱에는 기본 브라우저 방법을 사용하세요

Permanently erase a session with a new flag on /session/delete

/session/delete can now permanently erase a session instead of only revoking it.

What's new

  • hardDelete on POST /session/delete. Set to true to permanently delete a player session and its embedded consent, scoped to the calling product. Unlike the default revoke (which is internally retained), this physically removes the record and can't be undone.
  • Opt-in per developer. Available only to developers explicitly enabled for hard delete. Setting hardDelete: true without enablement returns FEATURE_DISABLED.
  • Every existing call is unaffected. Omitting hardDelete, or setting it to false, behaves exactly as /session/delete always has: a reversible revoke.
  • In-flight challenges are failed too. Any pending challenge tied to that exact session is set to FAIL, scoped to that session only (other sessions for the same player are untouched).

Documentation