games-development-ai/contracts/ad-slot.schema.json
lili b550a297ea
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
docs(contracts): ad-slot callback 描述措辞修正——真验签走 MD5 桩算法非直通放行(防误读,R4-17 终审定稿)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 20:07:53 -07:00

54 lines
2.2 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://wanxiang.ai/contracts/ad-slot.schema.json",
"title": "AdSlotConfig",
"description": "契约 #7 广告位配置owner=WS5。ad 模块 CRUD + SDK Plugin.Ad 据此拉取广告。provider=mock 时走桩,真实联盟审核通过后注入真实 appId/广告位 idMVP 默认 mock见执行 spec 风险#6。",
"type": "object",
"required": ["slotId", "type", "provider", "enabled"],
"additionalProperties": false,
"properties": {
"slotId": {
"description": "广告位逻辑 ID平台内唯一埋点 ad_impression.slot_id 引用)",
"type": "string",
"minLength": 1
},
"type": {
"description": "广告形式",
"type": "string",
"enum": ["rewarded", "interstitial", "banner"]
},
"provider": {
"description": "广告联盟csj=穿山甲 / gdt=优量汇 / mock=桩MVP 默认)/ callback=sandbox 自回调桩M4 服务端回调验签演进,真验签走 MD5 桩算法、空密钥拒绝,非直通放行;见 api-schemas/ad.yaml /app-api/ad/reward/callback 与 ad 模块 CallbackAdProvider",
"type": "string",
"enum": ["csj", "gdt", "mock", "callback"]
},
"placement": {
"description": "触发场景game_end=本局结束 / pause=暂停 / feed=游戏流间隙",
"type": "string",
"enum": ["game_end", "pause", "feed"]
},
"providerSlotId": {
"description": "联盟侧真实广告位 IDprovider!=mock 时必填,由人提供 — 审核闸门后注入)",
"type": "string"
},
"ecpmFloor": {
"description": "eCPM 底价(分),低于此不展示",
"type": "number",
"minimum": 0
},
"enabled": {
"description": "是否启用",
"type": "boolean"
},
"compliance": {
"description": "合规植入规则(未成年人禁广告等,见 security-and-reliability 未成年人保护)",
"type": "object",
"additionalProperties": false,
"properties": {
"blockMinor": { "description": "识别为未成年则不展示", "type": "boolean", "default": true },
"maxPerSession": { "description": "单会话最大展示次数", "type": "integer", "minimum": 0 }
}
}
}
}