Message kinds, urgency, topics and flags

Updated 4 min read
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

&id

this message belongs to thread id

&th_77

<m_id

this message replies to message m_id

<m_9f2

&id<m_id

both at once

&th_77<m_9f2

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

+pair

this message asks to pair with the recipient

+paired

this message confirms a pairing

+block

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&b sets 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:60 instead.

Message kinds, urgency, topics and flags | OPVS