웹훅이벤트 유형

Screentime.OverrideResult

스크린 타임 예외 요청이 해결될 때 발생합니다. 부모가 승인했거나, 부모가 거부했거나, 답변 없이 만료된 경우입니다. 이것은 /screentime/request-override 호출에 대한 답변이며 제품이 결과를 알 수 있는 유일한 방법입니다.

엔드포인트를 이 이벤트에 구독하세요

k-ID는 Screentime.OverrideResult를 구독한 엔드포인트에만 전달하고, 나머지에는 전달 시도나 오류 없이 버립니다. 제품의 Developer Settings 페이지에서 엔드포인트에 대해 선택하세요. 시작하기 전에를 참조하세요.

하나의 요청에 대해 Screentime.OverrideResult는 정확히 한 번 발생합니다. /screentime/request-override가 반환한 id와 같은 값인 data.id로 요청과 연결하세요.

필드

필드유형필수설명
eventTypestring항상 "Screentime.OverrideResult"
dataobject예외 결과 데이터
data.idstring (UUID)예외 요청 ID로, /screentime/request-override가 반환한 id와 일치합니다
data.sessionIdstring (UUID)예외가 요청된 세션 ID
data.productIdnumber제품 ID
data.statusstringgranted, denied 또는 expired
data.stateobject결정 후의 스크린 타임 상태로, GET /screentime/get-state 응답과 같은 형태입니다

예시

{
  "eventType": "Screentime.OverrideResult",
  "data": {
    "id": "2e9b7c41-8d6a-4f23-bc15-3a8e9d0f1b62",
    "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672",
    "productId": 42,
    "status": "granted",
    "state": {
      "enabled": true,
      "access": {
        "allowed": true
      },
      "state": {
        "timeUsedTodayMinutes": 120,
        "continuousUsageMinutes": 45,
        "timeLimitTodayMinutes": 150,
        "timeRemainingTodayMinutes": 30,
        "dayResetsAt": "2026-06-25T00:00:00Z"
      },
      "schedule": {
        "timezone": "UTC",
        "breakReminderIntervalMinutes": 45,
        "dailyLimits": [
          { "day": "mon", "limitMinutes": 120 },
          { "day": "sat", "limitMinutes": 180 }
        ],
        "quietHours": [
          {
            "name": "Bedtime",
            "days": ["mon", "tue", "wed", "thu", "fri"],
            "start": "21:00",
            "end": "07:00"
          }
        ]
      }
    }
  }
}

거부된 결과도 같은 형태이며 규칙은 변경되지 않습니다.

{
  "eventType": "Screentime.OverrideResult",
  "data": {
    "id": "2e9b7c41-8d6a-4f23-bc15-3a8e9d0f1b62",
    "sessionId": "b1a6482d-5242-4b4a-aa88-3fa52595a672",
    "productId": 42,
    "status": "denied",
    "state": {
      "enabled": true,
      "access": {
        "allowed": false,
        "details": {
          "reason": "limit_reached",
          "resumesAt": "2026-06-25T00:00:00Z"
        }
      },
      "state": {
        "timeUsedTodayMinutes": 120,
        "continuousUsageMinutes": 45,
        "timeLimitTodayMinutes": 120,
        "timeRemainingTodayMinutes": 0,
        "dayResetsAt": "2026-06-25T00:00:00Z"
      }
    }
  }
}

상태

status의미
granted부모가 요청을 승인했습니다. 오늘의 허용 시간에 추가 분이 더해졌습니다.
denied부모가 요청을 거부했습니다. 오늘의 규칙은 변경되지 않았습니다.
expired요청 후 24시간 안에 부모가 답변하지 않았습니다. 오늘의 규칙은 변경되지 않았습니다.

expired는 오류가 아니며 전달 실패도 아닙니다. 만료된 후 플레이어는 새 요청을 보낼 수 있습니다.

상태가 페이로드에 담겨 있습니다

data.state에는 결정이 적용된 후 계산된, GET /screentime/get-state 응답과 같은 형태의 내용이 담깁니다. 플레이어가 다시 플레이할 수 있는지 확인하기 위해 추가 조회는 필요하지 않습니다. state.access.allowed를 읽고, 승인된 경우에는 올라간 state.state.timeLimitTodayMinutesstate.state.timeRemainingTodayMinutes를 읽으세요.

예외가 승인되면 오늘의 한도가 올라가므로 추가 이벤트 없이 access.allowed가 다시 true가 될 수 있습니다. 플레이어가 추가 시간을 모두 쓰고 올라간 한도에 도달해도 두 번째 Screentime.LimitReached는 발생하지 않습니다. 이 이벤트는 플레이어별로 하루에 최대 한 번만 발생하기 때문입니다.

On this page