553 lines
55 KiB
HTML
553 lines
55 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>shared/federation.ts - gerbeur documentation</title>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="doc-current-file" content="">
|
|
<link rel="stylesheet" href="../../styles.css">
|
|
<link rel="stylesheet" href="../../page.css">
|
|
<link id="ddocResetStylesheet" rel="stylesheet" href="../../reset.css"><link href="../../comrak.css" rel="stylesheet" /><link href="../../prism.css" rel="stylesheet" /><script src="../../prism.js"></script><script src="../../script.js" defer></script>
|
|
<script src="../../darkmode_toggle.js"></script><script src="../../search_index.js" defer></script>
|
|
<script src="../../fuse.js" defer></script>
|
|
<script src="../../search.js" defer></script></head>
|
|
<body>
|
|
<div class="ddoc">
|
|
<div><nav id="topnav">
|
|
<div class="h-full">
|
|
<div class="flex items-center"><ul class="breadcrumbs">
|
|
<li>
|
|
<a href="../../" class="contextLink">gerbeur</a>
|
|
</li><span class="text-black dark:text-white"><svg
|
|
width="16"
|
|
height="16"
|
|
viewBox="0 0 16 16"
|
|
fill="none"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
<path
|
|
fill-rule="evenodd"
|
|
clip-rule="evenodd"
|
|
d="M5.76748 11.8159C5.5378 11.577 5.54525 11.1972 5.78411 10.9675L8.93431 8L5.78411 5.0325C5.54525 4.80282 5.5378 4.423 5.76748 4.18413C5.99715 3.94527 6.37698 3.93782 6.61584 4.1675L10.2158 7.5675C10.3335 7.68062 10.4 7.83679 10.4 8C10.4 8.16321 10.3335 8.31938 10.2158 8.4325L6.61584 11.8325C6.37698 12.0622 5.99715 12.0547 5.76748 11.8159Z"
|
|
fill="currentColor"
|
|
/>
|
|
</svg>
|
|
</span>shared/federation.ts</ul>
|
|
</div>
|
|
|
|
<div class="flex items-center gap-2">
|
|
<button id="theme-toggle" type="button" aria-label="Toggle dark mode" style="display: none;"><svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
width="14"
|
|
height="14"
|
|
viewBox="0 0 24 24"
|
|
fill="currentColor"
|
|
>
|
|
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
<path
|
|
d="M12 1.992a10 10 0 1 0 9.236 13.838c.341 -.82 -.476 -1.644 -1.298 -1.31a6.5 6.5 0 0 1 -6.864 -10.787l.077 -.08c.551 -.63 .113 -1.653 -.758 -1.653h-.266l-.068 -.006l-.06 -.002z"
|
|
/>
|
|
</svg>
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
width="14"
|
|
height="14"
|
|
viewBox="0 0 24 24"
|
|
fill="currentColor"
|
|
class="hidden"
|
|
>
|
|
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
<path
|
|
d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z"
|
|
/>
|
|
<path
|
|
d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z"
|
|
/>
|
|
<path
|
|
d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z"
|
|
/>
|
|
<path
|
|
d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z"
|
|
/>
|
|
<path
|
|
d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z"
|
|
/>
|
|
<path
|
|
d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z"
|
|
/>
|
|
<path
|
|
d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z"
|
|
/>
|
|
<path
|
|
d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z"
|
|
/>
|
|
<path
|
|
d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z"
|
|
/>
|
|
</svg>
|
|
</button>
|
|
|
|
<input
|
|
type="text"
|
|
id="searchbar"
|
|
style="display: none;"
|
|
class="py-2 px-2.5 mx-1 rounded text-sm border border-gray-300 bg-transparent dark:bg-gray-800 dark:border-gray-700"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<div id="searchResults"></div><div id="content">
|
|
<main><section>
|
|
<div class="space-y-2 flex-1"><div class="space-y-7" id="module_doc"><div class="markdown"><p>Types what crosses the wire for federated sign-in, by which a user signs in
|
|
to one gerbeur instance with their account on another.</p>
|
|
<p>The protocol is a subset of OpenID Connect, the authorization code flow
|
|
with PKCE, with tokens signed by each instance's Ed25519 key. Between the
|
|
instances, and between each instance and its client, travel:</p>
|
|
<ul>
|
|
<li>each instance's metadata, served at <code>/.well-known/openid-configuration</code>;</li>
|
|
<li>the pages' requests to start and finish a sign-in, here
|
|
(<code>/api/federation/*</code>) and on the home instance (<code>/api/oauth/*</code>);</li>
|
|
<li>the claims of an identity, and the events a home instance sends the
|
|
instances its users signed in to;</li>
|
|
<li>the instances an admin trusts or blocks, and the instances a user let
|
|
their account sign in to.</li>
|
|
</ul>
|
|
<p>In the code, the user's own instance is their home, playing the identity
|
|
provider; the instance they sign in to is the client.</p>
|
|
</div><section class="section" id="shared/federation_ts_functions"><div>
|
|
<h2 class="anchorable mb-1"><a href="#shared/federation_ts_functions" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
|
|
width="16"
|
|
height="16"
|
|
viewBox="0 0 14 14"
|
|
fill="none"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
<g clip-path="url(#clip0_1081_1237)">
|
|
<path
|
|
fill-rule="evenodd"
|
|
clip-rule="evenodd"
|
|
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
|
|
fill="currentColor"
|
|
/>
|
|
</g>
|
|
<defs>
|
|
<clipPath id="clip0_1081_1237">
|
|
<rect width="14" height="14" fill="white" />
|
|
</clipPath>
|
|
</defs>
|
|
</svg>
|
|
</a>
|
|
Functions</h2></div><div class="namespaceSection"><div id="namespace_instancehost" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/instanceHost.html" title="instanceHost">
|
|
<span>instanceHost</span><span>(<span><span>issuer<span>: <span class="td-kw">string</span></span></span></span>)<span>: <span class="td-kw">string</span></span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Returns the host of the instance at <code>issuer</code>, with its port if it has one:
|
|
the part after the <code>@</code> of its users' handles here (<code>alice@music.example</code>).</p>
|
|
</div></div></div>
|
|
</div><div id="namespace_isfederationevent" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/isFederationEvent.html" title="isFederationEvent">
|
|
<span>isFederationEvent</span><span>(<span><span>value<span>: <span class="td-kw">unknown</span></span></span></span>)<span>: value <span class="td-kw">is</span> <span class="td-ref">FederationEvent</span></span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Checks whether <code>value</code> is a <a href="../.././shared/federation.ts/~/FederationEvent.html">FederationEvent</a>, as the events endpoint
|
|
must once the signature is verified.</p>
|
|
</div></div></div>
|
|
</div><div id="namespace_isidentityclaims" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/isIdentityClaims.html" title="isIdentityClaims">
|
|
<span>isIdentityClaims</span><span>(<span><span>value<span>: <span class="td-kw">unknown</span></span></span></span>)<span>: value <span class="td-kw">is</span> <span class="td-ref">IdentityClaims</span></span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Checks whether <code>value</code> carries the <a href="../.././shared/federation.ts/~/IdentityClaims.html">IdentityClaims</a>, as a client must
|
|
before creating or updating an account from them.</p>
|
|
</div></div></div>
|
|
</div><div id="namespace_isinstancemetadata" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/isInstanceMetadata.html" title="isInstanceMetadata">
|
|
<span>isInstanceMetadata</span><span>(<span><span>value<span>: <span class="td-kw">unknown</span></span></span></span>)<span>: value <span class="td-kw">is</span> <span class="td-ref">InstanceMetadata</span></span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Checks whether <code>value</code> is an <a href="../.././shared/federation.ts/~/InstanceMetadata.html">InstanceMetadata</a> of this protocol's
|
|
version, as <code>remote/gerbeur-instance.ts</code> must before reading one.</p>
|
|
</div></div></div>
|
|
</div><div id="namespace_ispeerstatus" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/isPeerStatus.html" title="isPeerStatus">
|
|
<span>isPeerStatus</span><span>(<span><span>value<span>: <span class="td-kw">unknown</span></span></span></span>)<span>: value <span class="td-kw">is</span> <span class="td-ref">PeerStatus</span></span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Checks whether <code>value</code> is a <a href="../.././shared/federation.ts/~/PeerStatus.html">PeerStatus</a>.</p>
|
|
</div></div></div>
|
|
</div><div id="namespace_parseinstance" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/parseInstance.html" title="parseInstance">
|
|
<span>parseInstance</span><span>(<span><span>input<span>: <span class="td-kw">string</span></span></span></span>)<span>: <span><span class="td-kw">string</span><span class="td-op"> | </span><span class="td-kw">null</span></span></span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Returns the origin of the instance <code>input</code> names, or null when it names
|
|
none. Someone may type a bare host (<code>music.example</code>, taken as https), a URL,
|
|
or a handle's host with its port (<code>localhost:8001</code>); a URL with a path names
|
|
no instance. Whether plain http is allowed is the server's call.</p>
|
|
</div></div></div>
|
|
</div></div>
|
|
</section>
|
|
<section class="section" id="shared/federation_ts_interfaces"><div>
|
|
<h2 class="anchorable mb-1"><a href="#shared/federation_ts_interfaces" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
|
|
width="16"
|
|
height="16"
|
|
viewBox="0 0 14 14"
|
|
fill="none"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
<g clip-path="url(#clip0_1081_1237)">
|
|
<path
|
|
fill-rule="evenodd"
|
|
clip-rule="evenodd"
|
|
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
|
|
fill="currentColor"
|
|
/>
|
|
</g>
|
|
<defs>
|
|
<clipPath id="clip0_1081_1237">
|
|
<rect width="14" height="14" fill="white" />
|
|
</clipPath>
|
|
</defs>
|
|
</svg>
|
|
</a>
|
|
Interfaces</h2></div><div class="namespaceSection"><div id="namespace_authorizerequest" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/AuthorizeRequest.html" title="AuthorizeRequest">
|
|
<span>AuthorizeRequest</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Sent to <code>POST /api/oauth/codes</code> by the <code>/authorize</code> page once the user
|
|
consents, from the query the client instance sent them with.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/AuthorizeRequest.html#property_clientid">
|
|
<span>clientId</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/AuthorizeRequest.html#property_codechallenge">
|
|
<span>codeChallenge</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/AuthorizeRequest.html#property_codechallengemethod">
|
|
<span>codeChallengeMethod</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/AuthorizeRequest.html#property_nonce">
|
|
<span>nonce</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/AuthorizeRequest.html#property_redirecturi">
|
|
<span>redirectUri</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/AuthorizeRequest.html#property_state">
|
|
<span>state</span><span>: <span class="td-kw">string</span></span></a></li></ul></div>
|
|
</div><div id="namespace_authorizeresponse" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/AuthorizeResponse.html" title="AuthorizeResponse">
|
|
<span>AuthorizeResponse</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Returned by <code>POST /api/oauth/codes</code>: the client's callback page with the
|
|
code, where the <code>/authorize</code> page sends the user.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/AuthorizeResponse.html#property_redirectto">
|
|
<span>redirectTo</span><span>: <span class="td-kw">string</span></span></a></li></ul></div>
|
|
</div><div id="namespace_federationgrant" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/FederationGrant.html" title="FederationGrant">
|
|
<span>FederationGrant</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Returned by <code>GET /api/me/grants</code> to the settings page: an instance the
|
|
user let their account sign in to.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/FederationGrant.html#property_clientid">
|
|
<span>clientId</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationGrant.html#property_grantedat">
|
|
<span>grantedAt</span><span>: <span class="td-ref">Date</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationGrant.html#property_host">
|
|
<span>host</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationGrant.html#property_lastusedat">
|
|
<span>lastUsedAt</span><span>: <span class="td-ref">Date</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationGrant.html#property_name">
|
|
<span>name</span><span>: <span><span class="td-kw">string</span><span class="td-op"> | </span><span class="td-kw">null</span></span></span></a></li></ul></div>
|
|
</div><div id="namespace_federationloginrequest" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/FederationLoginRequest.html" title="FederationLoginRequest">
|
|
<span>FederationLoginRequest</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Sent to <code>POST /api/federation/logins</code> by the login page, or by the register
|
|
page with the invite it was opened with.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/FederationLoginRequest.html#property_instance">
|
|
<span>instance</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>The user's home instance, read with <a href="../.././shared/federation.ts/~/parseInstance.html">parseInstance</a>.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationLoginRequest.html#property_invitetoken">
|
|
<span>inviteToken</span><span>: <span class="td-kw">string</span></span></a></li></ul></div>
|
|
</div><div id="namespace_federationloginresponse" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/FederationLoginResponse.html" title="FederationLoginResponse">
|
|
<span>FederationLoginResponse</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Returned by <code>POST /api/federation/logins</code>: the home instance's <code>/authorize</code>
|
|
page with the request in its query, which the client navigates to.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/FederationLoginResponse.html#property_authorizeurl">
|
|
<span>authorizeUrl</span><span>: <span class="td-kw">string</span></span></a></li></ul></div>
|
|
</div><div id="namespace_federationpeer" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/FederationPeer.html" title="FederationPeer">
|
|
<span>FederationPeer</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Returned by <code>GET /api/federation/peers</code>: the login page offers each trusted
|
|
one, and <code>/manage</code> lists them all.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/FederationPeer.html#property_createdat">
|
|
<span>createdAt</span><span>: <span class="td-ref">Date</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationPeer.html#property_host">
|
|
<span>host</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p><a href="../.././shared/federation.ts/~/instanceHost.html">instanceHost</a> of the issuer.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationPeer.html#property_issuer">
|
|
<span>issuer</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationPeer.html#property_name">
|
|
<span>name</span><span>: <span><span class="td-kw">string</span><span class="td-op"> | </span><span class="td-kw">null</span></span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>The site's name, as its metadata gave it when it was added.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationPeer.html#property_status">
|
|
<span>status</span><span>: <span class="td-ref">PeerStatus</span></span></a></li></ul></div>
|
|
</div><div id="namespace_federationsessionrequest" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/FederationSessionRequest.html" title="FederationSessionRequest">
|
|
<span>FederationSessionRequest</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Sent to <code>POST /api/federation/sessions</code> by the <code>/federation/callback</code> page,
|
|
from the query the home instance sent the user back with. The answer is an
|
|
<code>AuthResponse</code>, as a sign-in's.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/FederationSessionRequest.html#property_code">
|
|
<span>code</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/FederationSessionRequest.html#property_state">
|
|
<span>state</span><span>: <span class="td-kw">string</span></span></a></li></ul></div>
|
|
</div><div id="namespace_identityclaims" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/IdentityClaims.html" title="IdentityClaims">
|
|
<span>IdentityClaims</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Carried by an identity token and by an <code>update</code> event: what a home instance
|
|
tells another of a user. The names are OpenID Connect's.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/IdentityClaims.html#property_email">
|
|
<span>email</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/IdentityClaims.html#property_picture">
|
|
<span>picture</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Their avatar's URL at home, versioned; absent without one.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/IdentityClaims.html#property_preferred_username">
|
|
<span>preferred_username</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>The user's name at home; the client calls them <code><name>@<host></code>.</p>
|
|
</div></div></li></ul></div>
|
|
</div><div id="namespace_instancemetadata" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html" title="InstanceMetadata">
|
|
<span>InstanceMetadata</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Served by every instance at <code>/.well-known/openid-configuration</code>
|
|
(<code>routes/well-known.ts</code>), and read by another before it trusts it, starts a
|
|
sign-in on it or sends it an event. The names are OpenID Connect's, and the
|
|
<code>gerbeur_</code> fields are this protocol's own.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_authorization_endpoint">
|
|
<span>authorization_endpoint</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Its <code>/authorize</code> page, where a user lets another instance sign them in.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_code_challenge_methods_supported">
|
|
<span>code_challenge_methods_supported</span><span>: <span class="td-kw">string</span>[]</span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_gerbeur_events_endpoint">
|
|
<span>gerbeur_events_endpoint</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p><code>POST /api/federation/events</code>, where it receives a home's events.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_gerbeur_federation">
|
|
<span>gerbeur_federation</span><span>: <span class="td-kw">number</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p><a href="../.././shared/federation.ts/~/FEDERATION_VERSION.html">FEDERATION_VERSION</a>.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_gerbeur_outgoing">
|
|
<span>gerbeur_outgoing</span><span>: <span class="td-kw">boolean</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Whether its users may sign in to other instances, so that a client
|
|
refuses at once to send them to its <code>/authorize</code> page, which would. An
|
|
instance that doesn't say lets them.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_gerbeur_redirect_uri">
|
|
<span>gerbeur_redirect_uri</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Where its home instance sends a user back once they consent, as a client:
|
|
its <code>/federation/callback</code> page, on its frontend.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_gerbeur_site_name">
|
|
<span>gerbeur_site_name</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>The site's name, which a consent page and the peer list show.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_grant_types_supported">
|
|
<span>grant_types_supported</span><span>: <span class="td-kw">string</span>[]</span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_id_token_signing_alg_values_supported">
|
|
<span>id_token_signing_alg_values_supported</span><span>: <span class="td-kw">string</span>[]</span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_issuer">
|
|
<span>issuer</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>The instance's public URL, an origin, which names it in every token.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_jwks_uri">
|
|
<span>jwks_uri</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p><code>GET /.well-known/jwks.json</code>, its public keys.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_response_types_supported">
|
|
<span>response_types_supported</span><span>: <span class="td-kw">string</span>[]</span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_scopes_supported">
|
|
<span>scopes_supported</span><span>: <span class="td-kw">string</span>[]</span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_subject_types_supported">
|
|
<span>subject_types_supported</span><span>: <span class="td-kw">string</span>[]</span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html#property_token_endpoint">
|
|
<span>token_endpoint</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p><code>POST /api/oauth/tokens</code>, which trades a code for an identity token.</p>
|
|
</div></div></li></ul></div>
|
|
</div><div id="namespace_oauthclient" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/OAuthClient.html" title="OAuthClient">
|
|
<span>OAuthClient</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Returned by <code>GET /api/oauth/clients?client_id=</code> to the <code>/authorize</code> page,
|
|
which asks the user whether to sign in there.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/OAuthClient.html#property_clientid">
|
|
<span>clientId</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/OAuthClient.html#property_granted">
|
|
<span>granted</span><span>: <span class="td-kw">boolean</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Whether the user already let it sign them in, in which case the page
|
|
doesn't ask again.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/OAuthClient.html#property_host">
|
|
<span>host</span><span>: <span class="td-kw">string</span></span></a></li><li>
|
|
<a href="../.././shared/federation.ts/~/OAuthClient.html#property_name">
|
|
<span>name</span><span>: <span class="td-kw">string</span></span></a></li></ul></div>
|
|
</div><div id="namespace_setpeerrequest" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/SetPeerRequest.html" title="SetPeerRequest">
|
|
<span>SetPeerRequest</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Sent to <code>PUT /api/federation/peers</code> by <code>/manage</code>.</p>
|
|
</div></div><ul class="namespaceItemContentSubItems"><li>
|
|
<a href="../.././shared/federation.ts/~/SetPeerRequest.html#property_instance">
|
|
<span>instance</span><span>: <span class="td-kw">string</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>As someone typed it, read with <a href="../.././shared/federation.ts/~/parseInstance.html">parseInstance</a>.</p>
|
|
</div></div></li><li>
|
|
<a href="../.././shared/federation.ts/~/SetPeerRequest.html#property_status">
|
|
<span>status</span><span>: <span class="td-ref">PeerStatus</span></span></a></li></ul></div>
|
|
</div></div>
|
|
</section>
|
|
<section class="section" id="shared/federation_ts_type-aliases"><div>
|
|
<h2 class="anchorable mb-1"><a href="#shared/federation_ts_type-aliases" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
|
|
width="16"
|
|
height="16"
|
|
viewBox="0 0 14 14"
|
|
fill="none"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
<g clip-path="url(#clip0_1081_1237)">
|
|
<path
|
|
fill-rule="evenodd"
|
|
clip-rule="evenodd"
|
|
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
|
|
fill="currentColor"
|
|
/>
|
|
</g>
|
|
<defs>
|
|
<clipPath id="clip0_1081_1237">
|
|
<rect width="14" height="14" fill="white" />
|
|
</clipPath>
|
|
</defs>
|
|
</svg>
|
|
</a>
|
|
Type Aliases</h2></div><div class="namespaceSection"><div id="namespace_federationevent" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-TypeAlias bg-TypeAlias/15 dark:text-TypeAliasDark dark:bg-TypeAliasDark/15" title="Type Alias">T</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/FederationEvent.html" title="FederationEvent">
|
|
<span>FederationEvent</span><span> = <div class="ml-indent"><span>{ type<span>: <span class="td-str">"update"</span></span>; claims<span>: <span class="td-ref">IdentityClaims</span></span>; }</span><br /><span><span class="td-op"> | </span>{ type<span>: <span class="td-str">"revoke"</span></span>; }</span></div></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>The payload of a signed event, which a home instance sends each instance a
|
|
user signed in to (<code>POST /api/federation/events</code>): <code>update</code> when their name,
|
|
email or avatar changed, <code>revoke</code> when their sessions there must end, after
|
|
a password change or when they withdraw the grant.</p>
|
|
</div></div></div>
|
|
</div><div id="namespace_peerstatus" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-TypeAlias bg-TypeAlias/15 dark:text-TypeAliasDark dark:bg-TypeAliasDark/15" title="Type Alias">T</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/PeerStatus.html" title="PeerStatus">
|
|
<span>PeerStatus</span><span> = <span><span class="td-str">"trusted"</span><span class="td-op"> | </span><span class="td-str">"blocked"</span></span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>What an admin decided about an instance. Users of a trusted one sign in
|
|
here directly; those of a blocked one never do, and its users already here
|
|
are signed out. An instance with neither is invite only: its users sign in
|
|
here with an invite.</p>
|
|
</div></div></div>
|
|
</div></div>
|
|
</section>
|
|
<section class="section" id="shared/federation_ts_variables"><div>
|
|
<h2 class="anchorable mb-1"><a href="#shared/federation_ts_variables" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
|
|
width="16"
|
|
height="16"
|
|
viewBox="0 0 14 14"
|
|
fill="none"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
<g clip-path="url(#clip0_1081_1237)">
|
|
<path
|
|
fill-rule="evenodd"
|
|
clip-rule="evenodd"
|
|
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
|
|
fill="currentColor"
|
|
/>
|
|
</g>
|
|
<defs>
|
|
<clipPath id="clip0_1081_1237">
|
|
<rect width="14" height="14" fill="white" />
|
|
</clipPath>
|
|
</defs>
|
|
</svg>
|
|
</a>
|
|
Variables</h2></div><div class="namespaceSection"><div id="namespace_federation_version" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Variable bg-Variable/15 dark:text-VariableDark dark:bg-VariableDark/15" title="Variable">v</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/FEDERATION_VERSION.html" title="FEDERATION_VERSION">
|
|
<span>FEDERATION_VERSION</span><span>: <span class="td-lit">1</span></span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>The version of the protocol below, which an instance announces in its
|
|
<a href="../.././shared/federation.ts/~/InstanceMetadata.html">InstanceMetadata</a>. An instance refuses one announcing another.</p>
|
|
</div></div></div>
|
|
</div><div id="namespace_peer_statuses" class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Variable bg-Variable/15 dark:text-VariableDark dark:bg-VariableDark/15" title="Variable">v</div></div>
|
|
<div class="namespaceItemContent">
|
|
<a href="../.././shared/federation.ts/~/PEER_STATUSES.html" title="PEER_STATUSES">
|
|
<span>PEER_STATUSES</span><span>: <span class="td-kw">readonly</span> <span class="td-ref">PeerStatus</span>[]</span></a><div class="namespaceItemContentDoc"><div class="markdown_summary"><p>Every <a href="../.././shared/federation.ts/~/PeerStatus.html">PeerStatus</a>.</p>
|
|
</div></div></div>
|
|
</div></div>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main><div class="toc">
|
|
<div><div class="usageContent">
|
|
<h3>Usage</h3><div class="markdown"><pre class="highlight"><code class="language-typescript">import * as mod from "shared/federation.ts";
|
|
</code><button class="copyButton" data-copy="import * as mod from "shared/federation.ts";
|
|
"><svg
|
|
class="copy"
|
|
width="15"
|
|
height="15"
|
|
viewBox="0 0 15 15"
|
|
fill="none"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
<rect x="2" y="2" width="7" height="7" fill="none" />
|
|
<rect x="6" y="6" width="7" height="7" fill="none" />
|
|
<path
|
|
d="M1.55566 2.7C1.55566 2.03726 2.09292 1.5 2.75566 1.5H8.75566C9.41841 1.5 9.95566 2.03726 9.95566 2.7V5.1H12.3557C13.0184 5.1 13.5557 5.63726 13.5557 6.3V12.3C13.5557 12.9627 13.0184 13.5 12.3557 13.5H6.35566C5.69292 13.5 5.15566 12.9627 5.15566 12.3V9.9H2.75566C2.09292 9.9 1.55566 9.36274 1.55566 8.7V2.7ZM6.35566 9.9V12.3H12.3557V6.3H9.95566V8.7C9.95566 9.36274 9.41841 9.9 8.75566 9.9H6.35566ZM8.75566 8.7V2.7H2.75566V8.7H8.75566Z"
|
|
fill="currentColor"
|
|
/>
|
|
</svg>
|
|
<svg
|
|
class="check"
|
|
width="15"
|
|
height="15"
|
|
viewBox="0 0 24 24"
|
|
stroke-width="2"
|
|
stroke="currentColor"
|
|
fill="none"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
<path d="M5 12l5 5l10 -10" />
|
|
</svg>
|
|
</button><code></code></pre>
|
|
</div></div><nav class="topSymbols">
|
|
<h3>Symbols</h3>
|
|
<ul><li>
|
|
<a href="../.././api/middleware/auth.ts/~/AuthState.html" title="AuthState"><div class="docNodeKindIcon"><div class="text-Interface bg-Interface/15 dark:text-InterfaceDark dark:bg-InterfaceDark/15" title="Interface">I</div></div>
|
|
<span class="hover:bg-Interface/15 hover:bg-InterfaceDark/15">
|
|
AuthState
|
|
</span>
|
|
</a>
|
|
</li><li>
|
|
<a href="../.././api/middleware/auth.ts/~/AuthContext.html" title="AuthContext"><div class="docNodeKindIcon"><div class="text-TypeAlias bg-TypeAlias/15 dark:text-TypeAliasDark dark:bg-TypeAliasDark/15" title="Type Alias">T</div></div>
|
|
<span class="hover:bg-TypeAlias/15 hover:bg-TypeAliasDark/15">
|
|
AuthContext
|
|
</span>
|
|
</a>
|
|
</li><li>
|
|
<a href="../.././api/middleware/auth.ts/~/authMiddleware.html" title="authMiddleware"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<span class="hover:bg-Function/15 hover:bg-FunctionDark/15">
|
|
authMiddleware
|
|
</span>
|
|
</a>
|
|
</li><li>
|
|
<a href="../.././api/middleware/auth.ts/~/requirePermission.html" title="requirePermission"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<span class="hover:bg-Function/15 hover:bg-FunctionDark/15">
|
|
requirePermission
|
|
</span>
|
|
</a>
|
|
</li><li>
|
|
<a href="../.././api/middleware/error.ts/~/errorMiddleware.html" title="errorMiddleware"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15 dark:text-FunctionDark dark:bg-FunctionDark/15" title="Function">f</div></div>
|
|
<span class="hover:bg-Function/15 hover:bg-FunctionDark/15">
|
|
errorMiddleware
|
|
</span>
|
|
</a>
|
|
</li></ul><a class="flex items-center gap-0.5" href="../.././all_symbols.html">
|
|
<span class="leading-none">view all 1307 symbols</span><svg
|
|
width="16"
|
|
height="16"
|
|
viewBox="0 0 16 16"
|
|
fill="none"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
>
|
|
<path
|
|
fill-rule="evenodd"
|
|
clip-rule="evenodd"
|
|
d="M5.76748 11.8159C5.5378 11.577 5.54525 11.1972 5.78411 10.9675L8.93431 8L5.78411 5.0325C5.54525 4.80282 5.5378 4.423 5.76748 4.18413C5.99715 3.94527 6.37698 3.93782 6.61584 4.1675L10.2158 7.5675C10.3335 7.68062 10.4 7.83679 10.4 8C10.4 8.16321 10.3335 8.31938 10.2158 8.4325L6.61584 11.8325C6.37698 12.0622 5.99715 12.0547 5.76748 11.8159Z"
|
|
fill="currentColor"
|
|
/>
|
|
</svg>
|
|
</a></nav><nav class="documentNavigation">
|
|
<h3>Document Navigation</h3><ul><li><a href="#shared/federation_ts_functions" title="Functions">Functions</a></li><li><ul><li><a href="#namespace_instancehost" title="instanceHost">instanceHost</a></li><li><a href="#namespace_isfederationevent" title="isFederationEvent">isFederationEvent</a></li><li><a href="#namespace_isidentityclaims" title="isIdentityClaims">isIdentityClaims</a></li><li><a href="#namespace_isinstancemetadata" title="isInstanceMetadata">isInstanceMetadata</a></li><li><a href="#namespace_ispeerstatus" title="isPeerStatus">isPeerStatus</a></li><li><a href="#namespace_parseinstance" title="parseInstance">parseInstance</a></li></ul></li><li><a href="#shared/federation_ts_interfaces" title="Interfaces">Interfaces</a></li><li><ul><li><a href="#namespace_authorizerequest" title="AuthorizeRequest">AuthorizeRequest</a></li><li><a href="#namespace_authorizeresponse" title="AuthorizeResponse">AuthorizeResponse</a></li><li><a href="#namespace_federationgrant" title="FederationGrant">FederationGrant</a></li><li><a href="#namespace_federationloginrequest" title="FederationLoginRequest">FederationLoginRequest</a></li><li><a href="#namespace_federationloginresponse" title="FederationLoginResponse">FederationLoginResponse</a></li><li><a href="#namespace_federationpeer" title="FederationPeer">FederationPeer</a></li><li><a href="#namespace_federationsessionrequest" title="FederationSessionRequest">FederationSessionRequest</a></li><li><a href="#namespace_identityclaims" title="IdentityClaims">IdentityClaims</a></li><li><a href="#namespace_instancemetadata" title="InstanceMetadata">InstanceMetadata</a></li><li><a href="#namespace_oauthclient" title="OAuthClient">OAuthClient</a></li><li><a href="#namespace_setpeerrequest" title="SetPeerRequest">SetPeerRequest</a></li></ul></li><li><a href="#shared/federation_ts_type-aliases" title="Type Aliases">Type Aliases</a></li><li><ul><li><a href="#namespace_federationevent" title="FederationEvent">FederationEvent</a></li><li><a href="#namespace_peerstatus" title="PeerStatus">PeerStatus</a></li></ul></li><li><a href="#shared/federation_ts_variables" title="Variables">Variables</a></li><li><ul><li><a href="#namespace_federation_version" title="FEDERATION_VERSION">FEDERATION_VERSION</a></li><li><a href="#namespace_peer_statuses" title="PEER_STATUSES">PEER_STATUSES</a></li></ul></li></ul></nav></div>
|
|
</div></div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|