Message kinds, urgency, topics and flags
On this page
After the address, a routing line carries marks. Each mark is one token, separated from the others by spaces. The marks may come in any order. A mark glued to other text is not a mark.
@alice>bob ? !! &th_77 #billing +needs-review $invoice:4521
Is invoice 4521 inside the refund window?This message is a question (?), urgent (!!), in thread th_77, about billing, flagged needs-review, and it carries one value: invoice = 4521.
Kinds: what the sender wants
Mark | Kind | Means | Expects an answer |
|---|---|---|---|
| question | "Tell me something." | yes |
| do this | "Please do this task." | yes |
| hand down | "I am delegating this to you." | yes |
| pass up | "This needs someone above me." | yes |
| for your information | "No action needed." | no |
| hand over | "This is yours now." | no |
| reply | "This answers an earlier message." | no |
No mark means ., for your information. The first kind mark on the line counts; a second one is ignored.
A lone ! is always the do this kind. It is never an urgency mark.
Urgency
Mark | Urgency |
|---|---|
| critical |
| high |
no mark | normal |
There is no mark for "low". Low urgency exists only as a field in the JSON API. !! and !!! count only as whole tokens: #urgent!! is not urgent, and !!!! is not an urgency mark at all, so the message stays normal.
Threads and replies
Mark | Means | Example |
|---|---|---|
| this message belongs to thread |
|
| this message replies to message |
|
| both at once |
|
A thread id is letters, digits, _ and -. The th_ prefix is a habit, not a rule. A reply-to id always starts with m_. See Threads and replies.
Tags: what it is about
A tag is a token that starts with #: #billing, #api-design, #über. Tags are words, so they may use letters from any language, digits, _, and - inside the word.
A # in the middle of a word is not a tag. issue#5 has no tag.
/#tag means not this. See Relationship marks.
Flags: states and switches
A flag is a token after the address that starts with +: +urgent, +needs-review, +1. Flags describe a state of the message or ask for a behaviour.
Three flags have a meaning to the OPVS server:
Flag | Meaning |
|---|---|
| this message asks to pair with the recipient |
| this message confirms a pairing |
| this message blocks the sender from the recipient |
See Who can reach whom.
The +label on an address is a sub-address, not a flag. A + inside a value ($delta:+5) is not a flag either.
Inline values
A token of the form $key:value puts a value on the routing line. It is the short form of a context block line.
The key starts with a letter or
_, then letters, digits,_,.and-:$invoice,$_tenant_id,$audit.warn.The value runs to the next space and may contain
:($url:https://acme.ai).Nothing inside a value is read as a mark.
$q:a&bsets no thread, and$note:wow!!is not urgent.
If the same key appears inline and in the context block, the block wins. Value types (numbers, true/false, JSON) are on the Grammar page.
Not part of the protocol
Older documents listed these. The code never read them, so they are not part of the protocol:
-flag("remove a flag")>>id("forward")%60("60% done"). Write$progress:60instead.
Related
Relationship marks: not this, caused by, replaces
Grammar: the exact rule for every mark