Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
54 lines
2.2 KiB
JSON
54 lines
2.2 KiB
JSON
{
|
||
"$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/广告位 id(MVP 默认 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": "联盟侧真实广告位 ID(provider!=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 }
|
||
}
|
||
}
|
||
}
|
||
}
|