Currently there is no canonical syntax for a <strong>Fediverse ID</strong>.
However, we can infer a syntax for the <strong>Fediverse ID</strong> given that it has to be used with <ziba-linkdir=".."transform="lowercase">WebFinger</ziba-link>.
</p>
</section>
<section>
<h2>De Facto </h2>
<p>
Currently, the syntax of a <strong>Fediverse ID</strong> is whatever each <ziba-linkdir=".."name="software">Fediverse software</ziba-link> supports.
The final say for what is and is not a valid <strong>Fediverse ID</strong> are the many implementations of <ziba-linkdir=".."transform="lowercase">WebFinger</ziba-link> in-the-wild for all the different <ziba-linkdir=".."name="software">Fediverse software</ziba-link> out there.
The reason being because, from a technical point-of-view, a <strong>Fediverse ID</strong> is turned into an <ziba-linkdir=".."transform="lowercase">acct URI</ziba-link> and then resolved with <ziba-linkdir=".."transform="lowercase">WebFinger</ziba-link>.
But, having said that, we can infer a <em>minimum syntax</em> and a <em>maximum syntax</em> for what should be considered a valid<strong>Fediverse ID</strong>.
I.e., the syntax that any implmentation for <strong>Fediverse ID</strong>s <em>should</em> support.
But, to say it explicitly, an implemention for <strong>Fediverse ID</strong>s <em>could</em> support more than just what is given by thes syntaxes.
An <ziba-linkdir=".."transform="lowercase">acct URI</ziba-link> has some constraints according to the IETF RFC-7565 (The 'acct' URI Scheme) specification.
But — software, such as <ziba-linkdir=".."name="software">Fediverse software</ziba-link>, don't have to implement those constraints.
I.e., they can accept more than just what IETF RFC-7565 (The 'acct' URI Scheme) specifies.
</p>
<p>
Given that, here is a more <em>maximal</em> syntax for a <strong>Fediverse ID</strong>:
</p>
<pre>
fediverseID = "@" [ actor ] "@" host
</pre>
<p>
Where, given that ‘NOTATSIGN’ (i.e., <em>not at-sign</em>) is any Unicode character that isn't the U+0040 ("@") at-signs —
</p>
<p>
‘actor’ is defined as:
</p>
<pre>
actor = NOTATSIGN *NOTATSIGN ; one or more characters that are not an at-sign ("@") (U+0040)
</pre>
<p>
And ‘host’ is defined as:
</p>
<pre>
host = NOTATSIGN *NOTATSIGN ; one or more characters that are not an at-sign ("@") (U+0040)
</pre>
<p>
Note in this <em>maximal</em><strong>Fediverse ID</strong> syntax ‘actor’ is optional.
But when ‘actor’ isn't included there still needs to be 2 U+0040 ("@") at-signs.
</p>
<p>
Here are some <strong>Fediverse ID</strong>s that fit this <em>maximal</em><strong>Fediverse ID</strong> syntax:
Part of the process of <strong>resolving</strong> a <strong>Fediverse ID</strong> transfomrs a <strong>Fediverse ID</strong> into an <ziba-link>acct URI</ziba-link>.
(And then using that <ziba-link>acct URI</ziba-link> version of the <strong>Fediverse ID</strong> makes a request to <ziba-linkdir=".."transform="lowercase">WebFinger</ziba-link>.)
Let us consider what a <em>minimal</em><strong>Fediverse ID</strong> syntax would be if we constrained ourselves to what the IETF RFC-7565 (The 'acct' URI Scheme) specificaiton says.