Registers the engagement set R7 put in v1: thirteen triggers, four push streams, three audiences, four bodies (two triggers, email and in-app) and thirteen disabled rules in seven groups (PLAN.md §25, D59-D68). The raid alert goes to everyone authorised on the tool cupboard, one emit per linked person with ownerUserId, so the owner ceiling holds per emit. It covers doors and walls (protocol 7), never names the raider, alerts nobody when there is no cupboard, and carries ownerOnline so "offline only" is the seeded rule's condition rather than code. The fan-out runs off ingest before a frame is applied, since applying a disband deletes the roster the notice is sent to. A replayed event is told only while it is news: 15 minutes for broadcasts, 24 hours for personal and staff events. Dedupe keys come from the event, not the sidecar's row id. Server online/offline and a new kills leader are in-memory transitions, never on first sight, and a tie is not a lead. A login with no approval within a minute becomes a staff notice via a query, so a restart loses nothing. Also fixes a phase-4 gap (D68): the refresh now asks /health, so a game that hung, or whose bridge was unloaded, while the sidecar stayed up no longer reads as online. It stops naming players as online, and a stale board no longer moves "last seen". engagement-triggers.json is the committed freeze of all of it, checked in CI with line endings normalised. The check was verified by breaking it both ways. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
1022 lines
28 KiB
JSON
1022 lines
28 KiB
JSON
{
|
|
"_comment": "Generated freeze of module-rust's engagement contract (docs/modules/rust/PLAN.md §25). Regenerate with `npm run engagement:manifest` in server/. A renamed variable, a changed type or a widened ceiling breaks stored templates and rules, so the diff here is the review signal.",
|
|
"coreApi": "^1.10.0",
|
|
"triggers": [
|
|
{
|
|
"id": "rust.base.destroyed",
|
|
"label": "Your base was raided",
|
|
"description": "Part of a base you are authorised on was destroyed by another player: a wall, a door, an external wall or gate, or the tool cupboard.",
|
|
"kind": "event",
|
|
"subjectKey": "building",
|
|
"audience": "owner",
|
|
"ceiling": "owner",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "building",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "8113",
|
|
"description": "The base, as the id of its tool cupboard. The cooldown subject."
|
|
},
|
|
{
|
|
"name": "structure",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "door",
|
|
"description": "What was destroyed: \"building block\", \"door\", \"external wall\" or \"tool cupboard\"."
|
|
},
|
|
{
|
|
"name": "grid",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "H7",
|
|
"description": "The map grid square. Absent when the server could not work one out."
|
|
},
|
|
{
|
|
"name": "atGrid",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": " in H7",
|
|
"description": "Sentence fragment: \" in H7\" with its own leading space, or nothing when the grid is unknown."
|
|
},
|
|
{
|
|
"name": "ownerOnline",
|
|
"type": "boolean",
|
|
"required": true,
|
|
"example": false,
|
|
"description": "Whether YOU were online when it happened. The seeded rule alerts only when this is false."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.clan.disbanded",
|
|
"label": "Your clan was disbanded",
|
|
"description": "A clan you were in was disbanded.",
|
|
"kind": "event",
|
|
"subjectKey": "clanKey",
|
|
"audience": "members",
|
|
"ceiling": "members",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "clanKey",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main:12:1790142840000",
|
|
"description": "The clan's stable identity. The cooldown subject; not meant for display."
|
|
},
|
|
{
|
|
"name": "clan",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "The Rust Belt",
|
|
"description": "The clan's name."
|
|
},
|
|
{
|
|
"name": "clanUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/clans/main%3A12%3A1790142840000",
|
|
"description": "Site-relative path to the clan's page."
|
|
},
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "by",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Marisol",
|
|
"description": "Who disbanded it."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.clan.member.kicked",
|
|
"label": "Someone was removed from your clan",
|
|
"description": "A member was removed from a clan you are in — or you were.",
|
|
"kind": "event",
|
|
"subjectKey": "clanKey",
|
|
"audience": "members",
|
|
"ceiling": "members",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "clanKey",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main:12:1790142840000",
|
|
"description": "The clan's stable identity. The cooldown subject; not meant for display."
|
|
},
|
|
{
|
|
"name": "clan",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "The Rust Belt",
|
|
"description": "The clan's name."
|
|
},
|
|
{
|
|
"name": "clanUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/clans/main%3A12%3A1790142840000",
|
|
"description": "Site-relative path to the clan's page."
|
|
},
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "member",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Darrow",
|
|
"description": "Who was removed."
|
|
},
|
|
{
|
|
"name": "by",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Marisol",
|
|
"description": "Who removed them."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.clan.member.left",
|
|
"label": "Someone left your clan",
|
|
"description": "A member left a clan you are in.",
|
|
"kind": "event",
|
|
"subjectKey": "clanKey",
|
|
"audience": "members",
|
|
"ceiling": "members",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "clanKey",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main:12:1790142840000",
|
|
"description": "The clan's stable identity. The cooldown subject; not meant for display."
|
|
},
|
|
{
|
|
"name": "clan",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "The Rust Belt",
|
|
"description": "The clan's name."
|
|
},
|
|
{
|
|
"name": "clanUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/clans/main%3A12%3A1790142840000",
|
|
"description": "Site-relative path to the clan's page."
|
|
},
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "member",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Darrow",
|
|
"description": "Who left."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.leaderboard.topped",
|
|
"label": "A new kills leader",
|
|
"description": "Somebody new leads the current wipe's kills on a server.",
|
|
"kind": "event",
|
|
"subjectKey": "serverId",
|
|
"audience": "subscribers",
|
|
"ceiling": "everyone",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "leader",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Marisol",
|
|
"description": "The new leader's in-game name."
|
|
},
|
|
{
|
|
"name": "kills",
|
|
"type": "int",
|
|
"required": true,
|
|
"example": 42,
|
|
"description": "Their kills this wipe."
|
|
},
|
|
{
|
|
"name": "leaderboardUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main?tab=leaderboard",
|
|
"description": "Site-relative path to the server's leaderboard."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.login.denied",
|
|
"label": "A login was not approved",
|
|
"description": "Somebody tried to join a server and was not let in within a minute: a ban, a failed authentication, or a player who gave up while connecting.",
|
|
"kind": "event",
|
|
"subjectKey": "steamId",
|
|
"audience": "staff",
|
|
"ceiling": "staff",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "steamId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "76561198000000002",
|
|
"description": "The Steam id that tried to connect. The cooldown subject."
|
|
},
|
|
{
|
|
"name": "player",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Darrow",
|
|
"description": "The name it connected with."
|
|
},
|
|
{
|
|
"name": "attemptedAt",
|
|
"type": "datetime",
|
|
"required": true,
|
|
"example": "2026-09-23T03:10:00Z",
|
|
"description": "When the attempt was made."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.player.banned",
|
|
"label": "A player was banned",
|
|
"description": "A player was banned on a server.",
|
|
"kind": "event",
|
|
"subjectKey": "steamId",
|
|
"audience": "staff",
|
|
"ceiling": "staff",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "steamId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "76561198000000002",
|
|
"description": "The banned player's Steam id. The cooldown subject."
|
|
},
|
|
{
|
|
"name": "player",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Darrow",
|
|
"description": "The banned player's name."
|
|
},
|
|
{
|
|
"name": "reason",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Cheating",
|
|
"description": "The reason given."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.player.linked",
|
|
"label": "A Steam account was linked",
|
|
"description": "A Steam account was linked to your website account with an in-game code.",
|
|
"kind": "event",
|
|
"subjectKey": "steamId",
|
|
"audience": "owner",
|
|
"ceiling": "owner",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "steamId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "76561198000000001",
|
|
"description": "The Steam account that was linked. Also the cooldown subject."
|
|
},
|
|
{
|
|
"name": "player",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Marisol",
|
|
"description": "The in-game name the game reported when it was linked."
|
|
},
|
|
{
|
|
"name": "accountUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/player/rust",
|
|
"description": "Site-relative path to your Rust account page."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.player.reported",
|
|
"label": "A player was reported",
|
|
"description": "A player filed an in-game report against another.",
|
|
"kind": "event",
|
|
"subjectKey": "steamId",
|
|
"audience": "staff",
|
|
"ceiling": "staff",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "steamId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "76561198000000002",
|
|
"description": "The reported player's Steam id. The cooldown subject."
|
|
},
|
|
{
|
|
"name": "player",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Darrow",
|
|
"description": "The reported player's name."
|
|
},
|
|
{
|
|
"name": "reporter",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Marisol",
|
|
"description": "Who filed the report."
|
|
},
|
|
{
|
|
"name": "reportType",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "cheat",
|
|
"description": "The category the reporter chose."
|
|
},
|
|
{
|
|
"name": "topic",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Aimbot at the dome",
|
|
"description": "The report's subject line."
|
|
},
|
|
{
|
|
"name": "message",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Headshots through two walls.",
|
|
"description": "The report's text."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.player.unbanned",
|
|
"label": "A player was unbanned",
|
|
"description": "A ban on a server was lifted.",
|
|
"kind": "event",
|
|
"subjectKey": "steamId",
|
|
"audience": "staff",
|
|
"ceiling": "staff",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "steamId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "76561198000000002",
|
|
"description": "The player's Steam id. The cooldown subject."
|
|
},
|
|
{
|
|
"name": "player",
|
|
"type": "string",
|
|
"required": false,
|
|
"example": "Darrow",
|
|
"description": "The player's name."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.server.offline",
|
|
"label": "A server went offline",
|
|
"description": "A server's game stopped, crashed, or stopped talking to the website.",
|
|
"kind": "event",
|
|
"subjectKey": "serverId",
|
|
"audience": "subscribers",
|
|
"ceiling": "everyone",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.server.online",
|
|
"label": "A server came online",
|
|
"description": "A server's game started, or came back after being unreachable.",
|
|
"kind": "event",
|
|
"subjectKey": "serverId",
|
|
"audience": "subscribers",
|
|
"ceiling": "everyone",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "rust.wipe.started",
|
|
"label": "A server wiped",
|
|
"description": "A server started a new wipe: a fresh map, and everything built on the old one gone.",
|
|
"kind": "event",
|
|
"subjectKey": "serverId",
|
|
"audience": "subscribers",
|
|
"ceiling": "everyone",
|
|
"version": 1,
|
|
"variables": [
|
|
{
|
|
"name": "serverId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "main",
|
|
"description": "The server the event happened on, as configured in Admin -> Rust. Also the cooldown subject for broadcasts."
|
|
},
|
|
{
|
|
"name": "server",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "Runic Gateway | Main",
|
|
"description": "The server's display name."
|
|
},
|
|
{
|
|
"name": "serverUrl",
|
|
"type": "url",
|
|
"required": false,
|
|
"example": "/rust/servers/main",
|
|
"description": "Site-relative path to the server's page."
|
|
},
|
|
{
|
|
"name": "wipeId",
|
|
"type": "string",
|
|
"required": true,
|
|
"example": "1790142840-3000-1234",
|
|
"description": "The new wipe's identity."
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"streams": [
|
|
{
|
|
"id": "rust.base.destroyed",
|
|
"label": "Your base was raided",
|
|
"personal": true,
|
|
"requiresLinkedAccount": true
|
|
},
|
|
{
|
|
"id": "rust.server.offline",
|
|
"label": "A server went offline",
|
|
"personal": false,
|
|
"requiresLinkedAccount": false
|
|
},
|
|
{
|
|
"id": "rust.server.online",
|
|
"label": "A server came online",
|
|
"personal": false,
|
|
"requiresLinkedAccount": false
|
|
},
|
|
{
|
|
"id": "rust.wipe.started",
|
|
"label": "A server wiped",
|
|
"personal": false,
|
|
"requiresLinkedAccount": false
|
|
}
|
|
],
|
|
"audiences": [
|
|
{
|
|
"id": "rust.clan.members",
|
|
"label": "Members of a clan",
|
|
"params": [
|
|
{
|
|
"id": "clan",
|
|
"type": "string",
|
|
"required": true
|
|
}
|
|
],
|
|
"ceiling": "members"
|
|
},
|
|
{
|
|
"id": "rust.server.players",
|
|
"label": "Everyone who has played on a server",
|
|
"params": [
|
|
{
|
|
"id": "serverId",
|
|
"type": "string",
|
|
"required": true
|
|
}
|
|
],
|
|
"ceiling": "authenticated"
|
|
},
|
|
{
|
|
"id": "rust.wipe.participants",
|
|
"label": "Everyone playing a server's current wipe",
|
|
"params": [
|
|
{
|
|
"id": "serverId",
|
|
"type": "string",
|
|
"required": true
|
|
}
|
|
],
|
|
"ceiling": "authenticated"
|
|
}
|
|
],
|
|
"ruleGroups": [
|
|
{
|
|
"key": "raid-v1",
|
|
"rules": [
|
|
{
|
|
"trigger_id": "rust.base.destroyed",
|
|
"audience": "owner",
|
|
"channels": [
|
|
"email",
|
|
"inapp",
|
|
"push"
|
|
],
|
|
"template_keys": {
|
|
"email": "rust.base.destroyed",
|
|
"inapp": "rust.base.destroyed-inapp",
|
|
"digest": "notify.digest"
|
|
},
|
|
"conditions": {
|
|
"variable": "ownerOnline",
|
|
"cmp": "eq",
|
|
"value": false
|
|
},
|
|
"cooldown_seconds": 1800,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": "wipe-v1",
|
|
"rules": [
|
|
{
|
|
"trigger_id": "rust.wipe.started",
|
|
"audience": "subscribers",
|
|
"channels": [
|
|
"email",
|
|
"inapp",
|
|
"push"
|
|
],
|
|
"template_keys": {
|
|
"email": "rust.wipe.started",
|
|
"inapp": "rust.wipe.started-inapp",
|
|
"digest": "notify.digest"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 21600,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": "server-v1",
|
|
"rules": [
|
|
{
|
|
"trigger_id": "rust.server.online",
|
|
"audience": "subscribers",
|
|
"channels": [
|
|
"inapp",
|
|
"push"
|
|
],
|
|
"template_keys": {
|
|
"inapp": "inapp.event"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 3600,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
},
|
|
{
|
|
"trigger_id": "rust.server.offline",
|
|
"audience": "subscribers",
|
|
"channels": [
|
|
"inapp",
|
|
"push"
|
|
],
|
|
"template_keys": {
|
|
"inapp": "inapp.event"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 3600,
|
|
"delay_seconds": 300,
|
|
"cancel_on": [
|
|
"rust.server.online"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": "leaderboard-v1",
|
|
"rules": [
|
|
{
|
|
"trigger_id": "rust.leaderboard.topped",
|
|
"audience": "subscribers",
|
|
"channels": [
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"inapp": "inapp.event"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 3600,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": "account-v1",
|
|
"rules": [
|
|
{
|
|
"trigger_id": "rust.player.linked",
|
|
"audience": "owner",
|
|
"channels": [
|
|
"email",
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"email": "notify.event",
|
|
"inapp": "inapp.event",
|
|
"digest": "notify.digest"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 0,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": "clans-v1",
|
|
"rules": [
|
|
{
|
|
"trigger_id": "rust.clan.member.left",
|
|
"audience": "members",
|
|
"channels": [
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"inapp": "inapp.event"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 0,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
},
|
|
{
|
|
"trigger_id": "rust.clan.member.kicked",
|
|
"audience": "members",
|
|
"channels": [
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"inapp": "inapp.event"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 0,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
},
|
|
{
|
|
"trigger_id": "rust.clan.disbanded",
|
|
"audience": "members",
|
|
"channels": [
|
|
"email",
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"email": "notify.event",
|
|
"inapp": "inapp.event",
|
|
"digest": "notify.digest"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 0,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": "moderation-v1",
|
|
"rules": [
|
|
{
|
|
"trigger_id": "rust.player.reported",
|
|
"audience": "staff",
|
|
"channels": [
|
|
"email",
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"email": "notify.event",
|
|
"inapp": "inapp.event",
|
|
"digest": "notify.digest"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 3600,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
},
|
|
{
|
|
"trigger_id": "rust.player.banned",
|
|
"audience": "staff",
|
|
"channels": [
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"inapp": "inapp.event"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 0,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
},
|
|
{
|
|
"trigger_id": "rust.player.unbanned",
|
|
"audience": "staff",
|
|
"channels": [
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"inapp": "inapp.event"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 0,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
},
|
|
{
|
|
"trigger_id": "rust.login.denied",
|
|
"audience": "staff",
|
|
"channels": [
|
|
"inapp"
|
|
],
|
|
"template_keys": {
|
|
"inapp": "inapp.event"
|
|
},
|
|
"conditions": null,
|
|
"cooldown_seconds": 3600,
|
|
"delay_seconds": 0,
|
|
"cancel_on": []
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"templates": [
|
|
{
|
|
"key": "rust.base.destroyed",
|
|
"channel": "email",
|
|
"triggerId": "rust.base.destroyed",
|
|
"seedVersion": 1
|
|
},
|
|
{
|
|
"key": "rust.base.destroyed-inapp",
|
|
"channel": "inapp",
|
|
"triggerId": "rust.base.destroyed",
|
|
"seedVersion": 1
|
|
},
|
|
{
|
|
"key": "rust.wipe.started",
|
|
"channel": "email",
|
|
"triggerId": "rust.wipe.started",
|
|
"seedVersion": 1
|
|
},
|
|
{
|
|
"key": "rust.wipe.started-inapp",
|
|
"channel": "inapp",
|
|
"triggerId": "rust.wipe.started",
|
|
"seedVersion": 1
|
|
}
|
|
]
|
|
}
|