Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document MSC3758, MSC3966, MSC3873, and MSC3980. #1464

Merged
merged 11 commits into from Apr 4, 2023
50 changes: 47 additions & 3 deletions content/client-server-api/modules/push.md
Expand Up @@ -212,15 +212,15 @@ The following conditions are defined:

**`event_match`**

This is a glob pattern match on a field of the event. Parameters:
This is a glob pattern match on a property of the event. Parameters:

- `key`: The dot-separated path of the property of the event to match, e.g.
`content.body`.

- `pattern`: The [glob-style pattern](/appendices#glob-style-matching) to match against.

The match is performed case-insensitively, and must match the entire value of
the event field given by `key` (though see below regarding `content.body`). The
the event property given by `key` (though see below regarding `content.body`). The
exact meaning of "case insensitive" is defined by the implementation of the
homeserver.

Expand Down Expand Up @@ -267,7 +267,7 @@ following event will match:
```json
{
"content": {
"body": "An example event.",
"body": "An example event."
},
"event_id": "$143273976499sgjks:example.org",
"room_id": "!636q39766251:example.com",
Expand All @@ -293,6 +293,50 @@ For an example of this, see the default rule
[`.m.rule.tombstone`](#mruletombstone) below.
{{% /boxes/warning %}}

**`event_property_is`**

This is an exact value match on a property of the event. Parameters:

- `key`: The dot-separated path of the property of the event to match, e.g.
`content.body`.

- `value`: The value to match against.

The match is performed exactly and only supports strings, integers, booleans, and
`null`.
clokep marked this conversation as resolved.
Show resolved Hide resolved

If the property specified by `key` is completely absent from the event, or does
not have a string, integer, boolean, or `null` value, then the condition will not
match.

{{% boxes/note %}}
For example, if `key` is `content.m.federate`, and `value` is `true`, then
clokep marked this conversation as resolved.
Show resolved Hide resolved
the following event will match:

```json
{
"content": {
"creator": "@example:example.org",
"m.federate": true,
"predecessor": {
"event_id": "$something:example.org",
"room_id": "!oldroom:example.org"
},
"room_version": "1"
},
"event_id": "$143273582443PhrSn:example.org",
"room_id": "!636q39766251:example.com",
"sender": "@example:example.org",
"state_key": "",
"type": "m.room.create"
}
```

The following `m.federate` values will NOT match:
* `"true"` (note the string value)
* `1` (do not cast types)
{{% /boxes/note %}}

**`contains_display_name`**

This matches messages where `content.body` contains the owner's display name in
Expand Down