Webhooks事件类型

Screentime.OverrideResult

当屏幕时间豁免请求得到处理时发出:父母批准、父母拒绝,或请求在无人答复的情况下到期。这是对 /screentime/request-override 调用的答复,也是您的产品获知结果的唯一途径。

请为您的端点订阅此事件

k-ID 只会把 Screentime.OverrideResult 投递给已订阅它的端点,其余端点会被丢弃,既不尝试投递也不报错。请在产品的 Developer Settings 页面为您的端点选择它。请参阅开始之前。

一个请求恰好产生一个 Screentime.OverrideResult。请通过 data.id 将它与请求关联,该值就是 /screentime/request-override 返回的 id。

字段

字段类型必需说明
eventTypestring是始终为 "Screentime.OverrideResult"
dataobject是豁免结果数据
data.idstring (UUID)是豁免请求 ID,与 /screentime/request-override 返回的 id 一致
data.sessionIdstring (UUID)是申请豁免的会话 ID
data.productIdnumber是产品 ID
data.statusstring是granted、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.timeLimitTodayMinutes 和 state.state.timeRemainingTodayMinutes。

豁免获批会提高当天的限制,因此 access.allowed 可能在没有任何后续事件的情况下重新变为 true。当玩家用完额外时间并达到提高后的限制时,不会再发出第二次 Screentime.LimitReached,因为该事件对每位玩家每天最多只发出一次。

On this page