{ "rules": { "rooms": { ".read": true, "default": { "$roomId": { ".read": true, ".write": true, "name": { ".validate": "newData.isString()" }, "type": { ".validate": "newData.isString()" }, "created": { ".validate": "newData.isNumber()" }, "participants": { ".read": true, "$userId": { ".write": true, ".validate": "newData.hasChildren(['username', 'joined', 'muted'])", "username": { ".validate": "newData.isString() && newData.val().length > 0" }, "joined": { ".validate": "newData.isNumber()" }, "muted": { ".validate": "newData.isBoolean()" } } }, "signals": { ".read": true, ".write": true, "$targetUserId": { "$signalId": { ".validate": "newData.hasChildren(['type', 'from'])" } } } } }, "public": { "$roomId": { ".read": true, ".write": true, "name": { ".validate": "newData.isString()" }, "type": { ".validate": "newData.isString()" }, "creator": { ".validate": "newData.isString()" }, "created": { ".validate": "newData.isNumber()" }, "participants": { ".read": true, "$userId": { ".write": true, ".validate": "newData.hasChildren(['username', 'joined', 'muted'])", "username": { ".validate": "newData.isString() && newData.val().length > 0" }, "joined": { ".validate": "newData.isNumber()" }, "muted": { ".validate": "newData.isBoolean()" } } }, "signals": { ".read": true, ".write": true, "$targetUserId": { "$signalId": { ".validate": "newData.hasChildren(['type', 'from'])" } } } } }, "private": { "$roomId": { ".read": true, ".write": true, "name": { ".validate": "newData.isString()" }, "type": { ".validate": "newData.isString()" }, "creator": { ".validate": "newData.isString()" }, "password": { ".validate": "newData.isString()" }, "created": { ".validate": "newData.isNumber()" }, "participants": { ".read": true, "$userId": { ".write": true, ".validate": "newData.hasChildren(['username', 'joined', 'muted'])", "username": { ".validate": "newData.isString() && newData.val().length > 0" }, "joined": { ".validate": "newData.isNumber()" }, "muted": { ".validate": "newData.isBoolean()" } } }, "signals": { ".read": true, ".write": true, "$targetUserId": { "$signalId": { ".validate": "newData.hasChildren(['type', 'from'])" } } } } } } } }