Deployed 9a5fc67 to 5.x with MkDocs 1.3.1 and mike 1.1.2

This commit is contained in:
ci-bot 2022-08-25 09:51:45 +00:00
parent 7c43e55d5c
commit 12e9256884
19 changed files with 192 additions and 186 deletions

View File

@ -967,7 +967,7 @@ or they will not get a component file.</p>
All the community server configurations can be found in All the community server configurations can be found in
the <a href="https://github.com/CommunitySolidServer/CommunitySolidServer/tree/main/config/"><code>config</code> folder</a>. the <a href="https://github.com/CommunitySolidServer/CommunitySolidServer/tree/main/config/"><code>config</code> folder</a>.
That folder also contains information about how different pre-defined configurations can be used.</p> That folder also contains information about how different pre-defined configurations can be used.</p>
<p>A single component in such a configuration file might look as follows: <p>A single component in such a configuration file might look as follows:</p>
<div class="highlight"><pre><span></span><code><span class="p">{</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;comment&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Storage used for account management.&quot;</span><span class="p">,</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;comment&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Storage used for account management.&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;@id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;urn:solid-server:default:AccountStorage&quot;</span><span class="p">,</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;@id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;urn:solid-server:default:AccountStorage&quot;</span><span class="p">,</span><span class="w"></span>
@ -976,14 +976,17 @@ That folder also contains information about how different pre-defined configurat
<span class="w"> </span><span class="nt">&quot;baseUrl&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;@id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;urn:solid-server:default:variable:baseUrl&quot;</span><span class="w"> </span><span class="p">},</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;baseUrl&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nt">&quot;@id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;urn:solid-server:default:variable:baseUrl&quot;</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;container&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;/.internal/accounts/&quot;</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;container&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;/.internal/accounts/&quot;</span><span class="w"></span>
<span class="p">}</span><span class="w"></span> <span class="p">}</span><span class="w"></span>
</code></pre></div></p> </code></pre></div>
<p>With the corresponding constructor of the <code>JsonResourceStorage</code> class: <p>With the corresponding constructor of the <code>JsonResourceStorage</code> class:</p>
<div class="highlight"><pre><span></span><code><span class="k">public</span><span class="w"> </span><span class="kr">constructor</span><span class="p">(</span><span class="nx">source</span><span class="o">:</span><span class="w"> </span><span class="kt">ResourceStore</span><span class="p">,</span><span class="w"> </span><span class="nx">baseUrl</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">,</span><span class="w"> </span><span class="nx">container</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">)</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="k">public</span><span class="w"> </span><span class="kr">constructor</span><span class="p">(</span><span class="nx">source</span><span class="o">:</span><span class="w"> </span><span class="kt">ResourceStore</span><span class="p">,</span><span class="w"> </span><span class="nx">baseUrl</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">,</span><span class="w"> </span><span class="nx">container</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">)</span><span class="w"></span>
</code></pre></div></p> </code></pre></div>
<p>The important elements here are the following: <p>The important elements here are the following:</p>
* <code>"comment"</code>: <em>(optional)</em> A description of this component. <ul>
* <code>"@id"</code>: <em>(optional)</em> A unique identifier of this component, which allows it to be used as parameter values in different places. <li><code>"comment"</code>: <em>(optional)</em> A description of this component.</li>
* <code>"@type"</code>: The class name of the component. This must be a TypeScript class name that is exported via <code>index.ts</code>.</p> <li><code>"@id"</code>: <em>(optional)</em> A unique identifier of this component, which allows it to be used as parameter values in
different places.</li>
<li><code>"@type"</code>: The class name of the component. This must be a TypeScript class name that is exported via <code>index.ts</code>.</li>
</ul>
<p>As you can see from the constructor, the other fields are direct mappings from the constructor parameters. <p>As you can see from the constructor, the other fields are direct mappings from the constructor parameters.
<code>source</code> references another object, which we refer to using its identifier <code>urn:solid-server:default:ResourceStore</code>. <code>source</code> references another object, which we refer to using its identifier <code>urn:solid-server:default:ResourceStore</code>.
<code>baseUrl</code> is just a string, but here we use a variable that was set before calling Components.js <code>baseUrl</code> is just a string, but here we use a variable that was set before calling Components.js

View File

@ -1004,7 +1004,7 @@
<h1 id="handling-http-requests">Handling HTTP requests<a class="headerlink" href="#handling-http-requests" title="Permanent link">&para;</a></h1> <h1 id="handling-http-requests">Handling HTTP requests<a class="headerlink" href="#handling-http-requests" title="Permanent link">&para;</a></h1>
<p>The direction of the arrows was changed slightly here to make the graph readable. <p>The direction of the arrows was changed slightly here to make the graph readable.</p>
<pre class="mermaid"><code>flowchart LR <pre class="mermaid"><code>flowchart LR
HttpHandler("&lt;strong&gt;HttpHandler&lt;/strong&gt;&lt;br&gt;SequenceHandler") HttpHandler("&lt;strong&gt;HttpHandler&lt;/strong&gt;&lt;br&gt;SequenceHandler")
HttpHandler --&gt; HttpHandlerArgs HttpHandler --&gt; HttpHandlerArgs
@ -1032,7 +1032,7 @@
SetupHandler --&gt; OidcHandler SetupHandler --&gt; OidcHandler
OidcHandler --&gt; AuthResourceHttpHandler OidcHandler --&gt; AuthResourceHttpHandler
AuthResourceHttpHandler --&gt; IdentityProviderHttpHandler AuthResourceHttpHandler --&gt; IdentityProviderHttpHandler
IdentityProviderHttpHandler --&gt; LdpHandler</code></pre></p> IdentityProviderHttpHandler --&gt; LdpHandler</code></pre>
<p>The <code>HttpHandler</code> is responsible for handling an incoming HTTP request. <p>The <code>HttpHandler</code> is responsible for handling an incoming HTTP request.
The request will always first go through the <code>Middleware</code>, The request will always first go through the <code>Middleware</code>,
where certain required headers will be added such as CORS headers.</p> where certain required headers will be added such as CORS headers.</p>

View File

@ -1040,7 +1040,7 @@ while the <code>WorkerInitializer</code> will trigger for every worker thread.
Although if your server setup is single-threaded, which is the default, Although if your server setup is single-threaded, which is the default,
there is no relevant difference between those two.</p> there is no relevant difference between those two.</p>
<h3 id="primaryinitializer">PrimaryInitializer<a class="headerlink" href="#primaryinitializer" title="Permanent link">&para;</a></h3> <h3 id="primaryinitializer">PrimaryInitializer<a class="headerlink" href="#primaryinitializer" title="Permanent link">&para;</a></h3>
<p><pre class="mermaid"><code>flowchart TD <pre class="mermaid"><code>flowchart TD
PrimaryInitializer("&lt;strong&gt;PrimaryInitializer&lt;/strong&gt;&lt;br&gt;ProcessHandler") PrimaryInitializer("&lt;strong&gt;PrimaryInitializer&lt;/strong&gt;&lt;br&gt;ProcessHandler")
PrimaryInitializer --&gt; PrimarySequenceInitializer("&lt;strong&gt;PrimarySequenceInitializer&lt;/strong&gt;&lt;br&gt;SequenceHandler") PrimaryInitializer --&gt; PrimarySequenceInitializer("&lt;strong&gt;PrimarySequenceInitializer&lt;/strong&gt;&lt;br&gt;SequenceHandler")
PrimarySequenceInitializer --&gt; PrimarySequenceInitializerArgs PrimarySequenceInitializer --&gt; PrimarySequenceInitializerArgs
@ -1054,7 +1054,7 @@ there is no relevant difference between those two.</p>
CleanupInitializer --&gt; PrimaryParallelInitializer CleanupInitializer --&gt; PrimaryParallelInitializer
PrimaryParallelInitializer --&gt; WorkerManager</code></pre> PrimaryParallelInitializer --&gt; WorkerManager</code></pre>
The above is a simplification of all the initializers that are present in the <code>PrimaryInitializer</code> <p>The above is a simplification of all the initializers that are present in the <code>PrimaryInitializer</code>
as there are several smaller initializers that also trigger but are less relevant here.</p> as there are several smaller initializers that also trigger but are less relevant here.</p>
<p>The <code>CleanupInitializer</code> is an initializer that cleans up anything <p>The <code>CleanupInitializer</code> is an initializer that cleans up anything
that might have remained from a previous server start that might have remained from a previous server start
@ -1065,7 +1065,7 @@ An example of this is file-based locking components which might need to remove a
This makes it easier for users to add initializers by being able to append to its handlers.</p> This makes it easier for users to add initializers by being able to append to its handlers.</p>
<p>The <code>WorkerManager</code> is responsible for setting up the worker threads, if any.</p> <p>The <code>WorkerManager</code> is responsible for setting up the worker threads, if any.</p>
<h3 id="workerinitializer">WorkerInitializer<a class="headerlink" href="#workerinitializer" title="Permanent link">&para;</a></h3> <h3 id="workerinitializer">WorkerInitializer<a class="headerlink" href="#workerinitializer" title="Permanent link">&para;</a></h3>
<p><pre class="mermaid"><code>flowchart TD <pre class="mermaid"><code>flowchart TD
WorkerInitializer("&lt;strong&gt;WorkerInitializer&lt;/strong&gt;&lt;br&gt;ProcessHandler") WorkerInitializer("&lt;strong&gt;WorkerInitializer&lt;/strong&gt;&lt;br&gt;ProcessHandler")
WorkerInitializer --&gt; WorkerSequenceInitializer("&lt;strong&gt;WorkerSequenceInitializer&lt;/strong&gt;&lt;br&gt;SequenceHandler") WorkerInitializer --&gt; WorkerSequenceInitializer("&lt;strong&gt;WorkerSequenceInitializer&lt;/strong&gt;&lt;br&gt;SequenceHandler")
WorkerSequenceInitializer --&gt; WorkerSequenceInitializerArgs WorkerSequenceInitializer --&gt; WorkerSequenceInitializerArgs
@ -1077,13 +1077,13 @@ This makes it easier for users to add initializers by being able to append to it
end end
WorkerParallelInitializer --&gt; ServerInitializer</code></pre> WorkerParallelInitializer --&gt; ServerInitializer</code></pre>
The <code>WorkerInitializer</code> is quite similar to the <code>PrimaryInitializer</code> but triggers once per worker thread. <p>The <code>WorkerInitializer</code> is quite similar to the <code>PrimaryInitializer</code> but triggers once per worker thread.
Like the <code>PrimaryParallelInitializer</code>, the <code>WorkerParallelInitializer</code> can be used Like the <code>PrimaryParallelInitializer</code>, the <code>WorkerParallelInitializer</code> can be used
to add any custom initializers that need to run.</p> to add any custom initializers that need to run.</p>
<h3 id="serverinitializer">ServerInitializer<a class="headerlink" href="#serverinitializer" title="Permanent link">&para;</a></h3> <h3 id="serverinitializer">ServerInitializer<a class="headerlink" href="#serverinitializer" title="Permanent link">&para;</a></h3>
<p>The <code>ServerInitializer</code> is the initializer that finally starts up the server by listening to the relevant port, <p>The <code>ServerInitializer</code> is the initializer that finally starts up the server by listening to the relevant port,
once all the initialization described above is finished. once all the initialization described above is finished.
This is an example of a component that differs based on some of the choices made during configuration. This is an example of a component that differs based on some of the choices made during configuration.</p>
<pre class="mermaid"><code>flowchart TD <pre class="mermaid"><code>flowchart TD
ServerInitializer("&lt;strong&gt;ServerInitializer&lt;/strong&gt;&lt;br&gt;ServerInitializer") ServerInitializer("&lt;strong&gt;ServerInitializer&lt;/strong&gt;&lt;br&gt;ServerInitializer")
ServerInitializer --&gt; WebSocketServerFactory("&lt;strong&gt;ServerFactory&lt;/strong&gt;&lt;br&gt;WebSocketServerFactory") ServerInitializer --&gt; WebSocketServerFactory("&lt;strong&gt;ServerFactory&lt;/strong&gt;&lt;br&gt;WebSocketServerFactory")
@ -1092,7 +1092,7 @@ This is an example of a component that differs based on some of the choices made
ServerInitializer2("&lt;strong&gt;ServerInitializer&lt;/strong&gt;&lt;br&gt;ServerInitializer") ServerInitializer2("&lt;strong&gt;ServerInitializer&lt;/strong&gt;&lt;br&gt;ServerInitializer")
ServerInitializer2 ---&gt; BaseHttpServerFactory2("&lt;strong&gt;ServerFactory&lt;/strong&gt;&lt;br&gt;BaseHttpServerFactory") ServerInitializer2 ---&gt; BaseHttpServerFactory2("&lt;strong&gt;ServerFactory&lt;/strong&gt;&lt;br&gt;BaseHttpServerFactory")
BaseHttpServerFactory2 --&gt; HttpHandler2("&lt;strong&gt;HttpHandler&lt;/strong&gt;&lt;br&gt;&lt;i&gt;HttpHandler&lt;/i&gt;")</code></pre></p> BaseHttpServerFactory2 --&gt; HttpHandler2("&lt;strong&gt;HttpHandler&lt;/strong&gt;&lt;br&gt;&lt;i&gt;HttpHandler&lt;/i&gt;")</code></pre>
<p>Depending on if the configurations necessary for websockets are imported or not, <p>Depending on if the configurations necessary for websockets are imported or not,
the <code>urn:solid-server:default:ServerFactory</code> identifier will point to a different resource. the <code>urn:solid-server:default:ServerFactory</code> identifier will point to a different resource.
There will always be a <code>BaseHttpServerFactory</code> that starts the HTTP(S) server, There will always be a <code>BaseHttpServerFactory</code> that starts the HTTP(S) server,

View File

@ -1019,7 +1019,7 @@ making a requesting agent have multiple credentials.</p>
DPoPWebIdExtractor("&lt;br&gt;DPoPWebIdExtractor") --&gt; BearerWebIdExtractor("&lt;br&gt;BearerWebIdExtractor") DPoPWebIdExtractor("&lt;br&gt;DPoPWebIdExtractor") --&gt; BearerWebIdExtractor("&lt;br&gt;BearerWebIdExtractor")
end</code></pre> end</code></pre>
<p>Both of the WebID extractors make use of <p>Both of the WebID extractors make use of
the (<code>access-token-verifier</code>)[https://github.com/CommunitySolidServer/access-token-verifier] library the <a href="https://github.com/CommunitySolidServer/access-token-verifier"><code>access-token-verifier</code></a> library
to parse incoming tokens based on the <a href="https://solid.github.io/solid-oidc/">Solid-OIDC specification</a>. to parse incoming tokens based on the <a href="https://solid.github.io/solid-oidc/">Solid-OIDC specification</a>.
Besides those there are always the public credentials, which everyone has. Besides those there are always the public credentials, which everyone has.
All these credentials then get combined into a single union object.</p> All these credentials then get combined into a single union object.</p>
@ -1042,7 +1042,8 @@ based on the request contents.</p>
PatchModesExtractor("&lt;strong&gt;PatchModesExtractor&lt;/strong&gt;&lt;br&gt;&lt;i&gt;ModesExtractor&lt;/i&gt;") --&gt; MethodModesExtractor("&lt;br&gt;MethodModesExtractor") PatchModesExtractor("&lt;strong&gt;PatchModesExtractor&lt;/strong&gt;&lt;br&gt;&lt;i&gt;ModesExtractor&lt;/i&gt;") --&gt; MethodModesExtractor("&lt;br&gt;MethodModesExtractor")
end</code></pre> end</code></pre>
<p>The <code>IntermediateCreateExtractor</code> is responsible if requests try to create intermediate containers with a single request. <p>The <code>IntermediateCreateExtractor</code> is responsible if requests try to create intermediate containers with a single request.
E.g., a PUT request to <code>/foo/bar/baz</code> should create both the <code>/foo/</code> and <code>/foo/bar/</code> containers in case they do not exist yet. E.g., a PUT request to <code>/foo/bar/baz</code> should create both the <code>/foo/</code> and <code>/foo/bar/</code> containers in case they do not
exist yet.
This extractor makes sure that <code>create</code> permissions are also checked on those containers.</p> This extractor makes sure that <code>create</code> permissions are also checked on those containers.</p>
<p>Modes can usually be determined based on just the HTTP methods, <p>Modes can usually be determined based on just the HTTP methods,
which is what the <code>MethodModesExtractor</code> does. which is what the <code>MethodModesExtractor</code> does.

View File

@ -1047,12 +1047,14 @@ It follows these 3 steps:</p>
<ol> <ol>
<li>Use the <code>RequestParser</code> to convert the incoming data into an <code>Operation</code>.</li> <li>Use the <code>RequestParser</code> to convert the incoming data into an <code>Operation</code>.</li>
<li>Send the <code>Operation</code> to the <code>AuthorizingHttpHandler</code> to receive either a <code>Representation</code> if the operation was a success, <li>Send the <code>Operation</code> to the <code>AuthorizingHttpHandler</code> to receive either a <code>Representation</code> if the operation was a success,
or an <code>Error</code> in case something went wrong.</li> or an <code>Error</code> in case something went wrong.<ul>
<li>In case of an error the <code>ErrorHandler</code> will convert the <code>Error</code> into a <code>ResponseDescription</code>.</li> <li>In case of an error the <code>ErrorHandler</code> will convert the <code>Error</code> into a <code>ResponseDescription</code>.</li>
</ul>
</li>
<li>Use the <code>ResponseWriter</code> to output the <code>ResponseDescription</code> as an HTTP response.</li> <li>Use the <code>ResponseWriter</code> to output the <code>ResponseDescription</code> as an HTTP response.</li>
</ol> </ol>
<h2 id="parsing-the-request">Parsing the request<a class="headerlink" href="#parsing-the-request" title="Permanent link">&para;</a></h2> <h2 id="parsing-the-request">Parsing the request<a class="headerlink" href="#parsing-the-request" title="Permanent link">&para;</a></h2>
<p><pre class="mermaid"><code>flowchart TD <pre class="mermaid"><code>flowchart TD
RequestParser("&lt;strong&gt;RequestParser&lt;/strong&gt;&lt;br&gt;BasicRequestParser") --&gt; RequestParserArgs RequestParser("&lt;strong&gt;RequestParser&lt;/strong&gt;&lt;br&gt;BasicRequestParser") --&gt; RequestParserArgs
subgraph RequestParserArgs[" "] subgraph RequestParserArgs[" "]
TargetExtractor("&lt;strong&gt;TargetExtractor&lt;/strong&gt;&lt;br&gt;OriginalUrlExtractor") TargetExtractor("&lt;strong&gt;TargetExtractor&lt;/strong&gt;&lt;br&gt;OriginalUrlExtractor")
@ -1063,7 +1065,7 @@ It follows these 3 steps:</p>
end end
OriginalUrlExtractor --&gt; IdentifierStrategy("&lt;strong&gt;IdentifierStrategy&lt;/strong&gt;&lt;br&gt;&lt;i&gt;IdentifierStrategy&lt;/i&gt;")</code></pre> OriginalUrlExtractor --&gt; IdentifierStrategy("&lt;strong&gt;IdentifierStrategy&lt;/strong&gt;&lt;br&gt;&lt;i&gt;IdentifierStrategy&lt;/i&gt;")</code></pre>
The <code>BasicRequestParser</code> is mostly an aggregator of multiple smaller parsers that each handle a very specific part.</p> <p>The <code>BasicRequestParser</code> is mostly an aggregator of multiple smaller parsers that each handle a very specific part.</p>
<h3 id="url">URL<a class="headerlink" href="#url" title="Permanent link">&para;</a></h3> <h3 id="url">URL<a class="headerlink" href="#url" title="Permanent link">&para;</a></h3>
<p>This is a single class, the <code>OriginalUrlExtractor</code>, but fulfills the very important role <p>This is a single class, the <code>OriginalUrlExtractor</code>, but fulfills the very important role
of making sure input URLs are handled consistently.</p> of making sure input URLs are handled consistently.</p>

View File

@ -1031,15 +1031,18 @@ The default configurations come with the following stores:</p>
and all the entries in <code>config/storage/backend</code>.</p> and all the entries in <code>config/storage/backend</code>.</p>
<h2 id="monitoringstore">MonitoringStore<a class="headerlink" href="#monitoringstore" title="Permanent link">&para;</a></h2> <h2 id="monitoringstore">MonitoringStore<a class="headerlink" href="#monitoringstore" title="Permanent link">&para;</a></h2>
<p>This store emits the events that are necessary to emit notifications when resources change.</p> <p>This store emits the events that are necessary to emit notifications when resources change.</p>
<p>There are 4 different events that can be emitted: <p>There are 4 different events that can be emitted:</p>
- <code>this.emit('changed', identifier, activity)</code>: is emitted for every resource that was changed/effected by a call to the store. <ul>
With activity being undefined or one of the available ActivityStream terms. <li><code>this.emit('changed', identifier, activity)</code>: is emitted for every resource that was changed/effected by a
- <code>this.emit(AS.Create, identifier)</code>: is emitted for every resource that was created by the call to the store. call to the store.
- <code>this.emit(AS.Update, identifier)</code>: is emitted for every resource that was updated by the call to the store. With activity being undefined or one of the available ActivityStream terms.</li>
- <code>this.emit(AS.Delete, identifier)</code>: is emitted for every resource that was deleted by the call to the store.</p> <li><code>this.emit(AS.Create, identifier)</code>: is emitted for every resource that was created by the call to the store.</li>
<li><code>this.emit(AS.Update, identifier)</code>: is emitted for every resource that was updated by the call to the store.</li>
<li><code>this.emit(AS.Delete, identifier)</code>: is emitted for every resource that was deleted by the call to the store.</li>
</ul>
<p>A <code>changed</code> event will always be emitted if a resource was changed. <p>A <code>changed</code> event will always be emitted if a resource was changed.
If the correct metadata was set by the source <code>ResourceStore</code>, an additional field will be sent along indicating the type of change, If the correct metadata was set by the source <code>ResourceStore</code>, an additional field will be sent along indicating the
and an additional corresponding event will be emitted, depending on what the change is.</p> type of change, and an additional corresponding event will be emitted, depending on what the change is.</p>
<h2 id="indexrepresentationstore">IndexRepresentationStore<a class="headerlink" href="#indexrepresentationstore" title="Permanent link">&para;</a></h2> <h2 id="indexrepresentationstore">IndexRepresentationStore<a class="headerlink" href="#indexrepresentationstore" title="Permanent link">&para;</a></h2>
<p>When doing a GET request on a container <code>/container/</code>, <p>When doing a GET request on a container <code>/container/</code>,
this container returns the contents of <code>/container/index.html</code> instead if HTML is the preferred response type. this container returns the contents of <code>/container/index.html</code> instead if HTML is the preferred response type.
@ -1070,15 +1073,13 @@ the SPARQL backend only accepts triples for example,
that is also handled here</p> that is also handled here</p>
<h2 id="dataaccessorbasedstore">DataAccessorBasedStore<a class="headerlink" href="#dataaccessorbasedstore" title="Permanent link">&para;</a></h2> <h2 id="dataaccessorbasedstore">DataAccessorBasedStore<a class="headerlink" href="#dataaccessorbasedstore" title="Permanent link">&para;</a></h2>
<p>Large parts of the requirements of the Solid protocol specification are resolved by the <code>DataAccessorBasedStore</code>: <p>Large parts of the requirements of the Solid protocol specification are resolved by the <code>DataAccessorBasedStore</code>:
POST only working on containers, POST only working on containers, DELETE not working on non-empty containers,
DELETE not working on non-empty containers,
generating <code>ldp:contains</code> triples for containers, etc. generating <code>ldp:contains</code> triples for containers, etc.
Most of this behaviour is independent of how the data is stored which is why it can be generalized here. Most of this behaviour is independent of how the data is stored which is why it can be generalized here.
The store's name comes from the fact that it makes use of <code>DataAccessor</code>s to handle the read/write of resources. The store's name comes from the fact that it makes use of <code>DataAccessor</code>s to handle the read/write of resources.
A <code>DataAccessor</code> is a simple interface that only focuses on handling the data. A <code>DataAccessor</code> is a simple interface that only focuses on handling the data.
It does not concern itself with any of the necessary Solid checks as it assumes those have already been made. It does not concern itself with any of the necessary Solid checks as it assumes those have already been made.
This means that if a storage method needs to be supported, This means that if a storage method needs to be supported, only a new <code>DataAccessor</code> needs to be made,
only a new <code>DataAccessor</code> needs to be made,
after which it can be plugged into the rest of the server.</p> after which it can be plugged into the rest of the server.</p>

View File

@ -572,6 +572,13 @@
Architecture diagrams Architecture diagrams
</a> </a>
</li>
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
Features
</a>
</li> </li>
</ul> </ul>
@ -915,6 +922,13 @@
Architecture diagrams Architecture diagrams
</a> </a>
</li>
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
Features
</a>
</li> </li>
</ul> </ul>
@ -961,17 +975,19 @@ We will use an example below to explain the formatting used throughout the archi
end</code></pre> end</code></pre>
<p>Below is a summary of how to interpret such diagrams:</p> <p>Below is a summary of how to interpret such diagrams:</p>
<ul> <ul>
<li>Rounded red box: component instantiated in the Components.js <a href="../dependency-injection/">configuration</a>.</li> <li>Rounded red box: component instantiated in the Components.js <a href="../dependency-injection/">configuration</a>.<ul>
<li>First line: <ul> <li>First line:<ul>
<li><strong>Bold text</strong>: shorthand of the instance identifier. In case the full URI is not specified, <li><strong>Bold text</strong>: shorthand of the instance identifier. In case the full URI is not specified,
it can usually be found by prepending <code>urn:solid-server:default:</code> to the shorthand identifier.</li> it can usually be found by prepending <code>urn:solid-server:default:</code> to the shorthand identifier.</li>
<li>(empty): this instance has no identifier and is defined in the same place as its parent.</li> <li>(empty): this instance has no identifier and is defined in the same place as its parent.</li>
</ul> </ul>
</li> </li>
<li>Second line: <ul> <li>Second line:<ul>
<li>Regular text: The class of this instance.</li> <li>Regular text: The class of this instance.</li>
<li><em>Italic text</em>: The interface of this instance. <li><em>Italic text</em>: The interface of this instance.
Will be used if the actual class is not relevant for the explanation or can differ.</li> Will be used if the actual class is not relevant for the explanation or can differ.</li>
</ul>
</li>
</ul> </ul>
</li> </li>
<li>Square grey box: the parameters of the linked instance.</li> <li>Square grey box: the parameters of the linked instance.</li>
@ -980,7 +996,7 @@ We will use an example below to explain the formatting used throughout the archi
<p>For example, in the above, <strong>LdpHandler</strong> is a shorthand for the actual identifier <code>urn:solid-server:default:LdpHandler</code> <p>For example, in the above, <strong>LdpHandler</strong> is a shorthand for the actual identifier <code>urn:solid-server:default:LdpHandler</code>
and is an instance of <code>ParsingHttpHandler</code>. It has 4 parameters, and is an instance of <code>ParsingHttpHandler</code>. It has 4 parameters,
one of which has no identifier but is an instance of <code>AuthorizingHttpHandler</code>.</p> one of which has no identifier but is an instance of <code>AuthorizingHttpHandler</code>.</p>
<h1 id="features">Features<a class="headerlink" href="#features" title="Permanent link">&para;</a></h1> <h2 id="features">Features<a class="headerlink" href="#features" title="Permanent link">&para;</a></h2>
<p>Below are the sections that go deeper into the features of the server and how those work.</p> <p>Below are the sections that go deeper into the features of the server and how those work.</p>
<ul> <ul>
<li><a href="../features/cli/">How Command Line Arguments are parsed and used</a></li> <li><a href="../features/cli/">How Command Line Arguments are parsed and used</a></li>

View File

@ -888,7 +888,7 @@
<h1 id="pull-requests">Pull requests<a class="headerlink" href="#pull-requests" title="Permanent link">&para;</a></h1> <h1 id="pull-requests">Pull requests<a class="headerlink" href="#pull-requests" title="Permanent link">&para;</a></h1>
<p>The community server is fully written in <a href="https://www.typescriptlang.org/docs/home.html">Typescript</a>.</p> <p>The community server is fully written in <a href="https://www.typescriptlang.org/docs/home.html">Typescript</a>.</p>
<p>All changes should be done through <p>All changes should be done through
<a href="https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork">pull requests</a>. </p> <a href="https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork">pull requests</a>.</p>
<p>We recommend first discussing a possible solution in the relevant issue <p>We recommend first discussing a possible solution in the relevant issue
to reduce the amount of changes that will be requested.</p> to reduce the amount of changes that will be requested.</p>
<p>In case any of your changes are breaking, make sure you target the next major branch (<code>versions/x.0.0</code>) <p>In case any of your changes are breaking, make sure you target the next major branch (<code>versions/x.0.0</code>)

View File

@ -899,14 +899,18 @@
</li> </li>
<li>Verify that the <code>RELEASE_NOTES.md</code> are correct.</li> <li>Verify that the <code>RELEASE_NOTES.md</code> are correct.</li>
<li><code>npm run release -- -r major</code><ul> <li><code>npm run release -- -r major</code><ul>
<li>Automatically updates Components.js references to the new version. Committed with <code>chore(release): Update configs to vx.0.0</code>.</li> <li>Automatically updates Components.js references to the new version.
<li>Updates the <code>package.json</code>, and generates the new entries in <code>CHANGELOG.md</code>. Commited with <code>chore(release): Release version vx.0.0 of the npm package</code></li> Committed with <code>chore(release): Update configs to vx.0.0</code>.</li>
<li>Optionally run <code>npx commit-and-tag-version -r major --dry-run</code> to preview the commands that will be run and the changes to <code>CHANGELOG.md</code>.</li> <li>Updates the <code>package.json</code>, and generates the new entries in <code>CHANGELOG.md</code>.
Commited with <code>chore(release): Release version vx.0.0 of the npm package</code></li>
<li>Optionally run <code>npx commit-and-tag-version -r major --dry-run</code> to preview the commands that will be run
and the changes to <code>CHANGELOG.md</code>.</li>
</ul> </ul>
</li> </li>
<li>The <code>postrelease</code> script will now prompt you to manually edit the <code>CHANGELOG.md</code>.<ul> <li>The <code>postrelease</code> script will now prompt you to manually edit the <code>CHANGELOG.md</code>.<ul>
<li>All entries are added in separate sections of the new release according to their commit prefixes.</li> <li>All entries are added in separate sections of the new release according to their commit prefixes.</li>
<li>Re-organize the entries accordingly, referencing previous releases. Most of the entries in Chores and Documentation can be removed.</li> <li>Re-organize the entries accordingly, referencing previous releases. Most of the entries in Chores and
Documentation can be removed.</li>
<li>Press any key in your terminal when your changes are ready.</li> <li>Press any key in your terminal when your changes are ready.</li>
<li>The <code>postrelease</code> script will amend the release commit, create an annotated tag and push changes to origin.</li> <li>The <code>postrelease</code> script will amend the release commit, create an annotated tag and push changes to origin.</li>
</ul> </ul>

View File

@ -944,7 +944,7 @@ the <a href="https://github.com/CommunitySolidServer/CommunitySolidServer/blob/m
<ul> <ul>
<li><a href="contributing/making-changes/">How to make changes to the repository</a></li> <li><a href="contributing/making-changes/">How to make changes to the repository</a></li>
</ul> </ul>
<p>For core developers with push access only: </p> <p>For core developers with push access only:</p>
<ul> <ul>
<li><a href="contributing/release/">How to release a new version</a></li> <li><a href="contributing/release/">How to release a new version</a></li>
</ul> </ul>

File diff suppressed because one or more lines are too long

View File

@ -2,92 +2,92 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/core/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/core/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/dependency-injection/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/dependency-injection/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/overview/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/overview/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/cli/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/cli/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/http-handler/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/http-handler/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/initialization/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/initialization/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/protocol/authorization/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/protocol/authorization/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/protocol/overview/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/protocol/overview/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/protocol/parsing/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/protocol/parsing/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/protocol/resource-store/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/architecture/features/protocol/resource-store/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/contributing/making-changes/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/contributing/making-changes/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/contributing/release/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/contributing/release/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/client-credentials/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/client-credentials/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/example-requests/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/example-requests/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/identity-provider/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/identity-provider/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/metadata/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/metadata/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
<url> <url>
<loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/seeding-pods/</loc> <loc>https://communitysolidserver.github.io/CommunitySolidServer/5.x/usage/seeding-pods/</loc>
<lastmod>2022-08-22</lastmod> <lastmod>2022-08-25</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
</urlset> </urlset>

Binary file not shown.

View File

@ -1036,7 +1036,7 @@ This Access Token is only valid for a certain amount of time, after which a new
<span class="p">});</span><span class="w"></span> <span class="p">});</span><span class="w"></span>
<span class="c1">// This is the Access token that will be used to do an authenticated request to the server.</span><span class="w"></span> <span class="c1">// This is the Access token that will be used to do an authenticated request to the server.</span><span class="w"></span>
<span class="c1">// The JSON also contains an &quot;expires_in&quot; field in seconds, </span><span class="w"></span> <span class="c1">// The JSON also contains an &quot;expires_in&quot; field in seconds,</span><span class="w"></span>
<span class="c1">// which you can use to know when you need request a new Access token.</span><span class="w"></span> <span class="c1">// which you can use to know when you need request a new Access token.</span><span class="w"></span>
<span class="kd">const</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">access_token</span><span class="o">:</span><span class="w"> </span><span class="kt">accessToken</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">();</span><span class="w"></span> <span class="kd">const</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">access_token</span><span class="o">:</span><span class="w"> </span><span class="kt">accessToken</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">();</span><span class="w"></span>
</code></pre></div> </code></pre></div>

View File

@ -427,6 +427,8 @@
<label class="md-nav__link md-nav__link--active" for="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc">
Example request Example request
<span class="md-nav__icon md-icon"></span> <span class="md-nav__icon md-icon"></span>
@ -443,6 +445,8 @@
<label class="md-nav__title" for="__toc"> <label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span> <span class="md-nav__icon md-icon"></span>
Table of contents Table of contents
@ -450,65 +454,52 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#interacting-with-the-server" class="md-nav__link">
Interacting with the server
</a>
<nav class="md-nav" aria-label="Interacting with the server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#put-creating-resources-for-a-given-url" class="md-nav__link"> <a href="#put-creating-resources-for-a-given-url" class="md-nav__link">
PUT: Creating resources for a given URL PUT: Creating resources for a given URL
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#post-creating-resources-at-a-generated-url" class="md-nav__link"> <a href="#post-creating-resources-at-a-generated-url" class="md-nav__link">
POST: Creating resources at a generated URL POST: Creating resources at a generated URL
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#get-retrieving-resources" class="md-nav__link"> <a href="#get-retrieving-resources" class="md-nav__link">
GET: Retrieving resources GET: Retrieving resources
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#delete-deleting-resources" class="md-nav__link"> <a href="#delete-deleting-resources" class="md-nav__link">
DELETE: Deleting resources DELETE: Deleting resources
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#patch-modifying-resources" class="md-nav__link"> <a href="#patch-modifying-resources" class="md-nav__link">
PATCH: Modifying resources PATCH: Modifying resources
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#head-retrieve-resources-headers" class="md-nav__link"> <a href="#head-retrieve-resources-headers" class="md-nav__link">
HEAD: Retrieve resources headers HEAD: Retrieve resources headers
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#options-retrieve-resources-communication-options" class="md-nav__link"> <a href="#options-retrieve-resources-communication-options" class="md-nav__link">
OPTIONS: Retrieve resources communication options OPTIONS: Retrieve resources communication options
</a> </a>
</li>
</ul>
</nav>
</li> </li>
</ul> </ul>
@ -953,6 +944,8 @@
<label class="md-nav__title" for="__toc"> <label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span> <span class="md-nav__icon md-icon"></span>
Table of contents Table of contents
@ -960,65 +953,52 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#interacting-with-the-server" class="md-nav__link">
Interacting with the server
</a>
<nav class="md-nav" aria-label="Interacting with the server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#put-creating-resources-for-a-given-url" class="md-nav__link"> <a href="#put-creating-resources-for-a-given-url" class="md-nav__link">
PUT: Creating resources for a given URL PUT: Creating resources for a given URL
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#post-creating-resources-at-a-generated-url" class="md-nav__link"> <a href="#post-creating-resources-at-a-generated-url" class="md-nav__link">
POST: Creating resources at a generated URL POST: Creating resources at a generated URL
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#get-retrieving-resources" class="md-nav__link"> <a href="#get-retrieving-resources" class="md-nav__link">
GET: Retrieving resources GET: Retrieving resources
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#delete-deleting-resources" class="md-nav__link"> <a href="#delete-deleting-resources" class="md-nav__link">
DELETE: Deleting resources DELETE: Deleting resources
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#patch-modifying-resources" class="md-nav__link"> <a href="#patch-modifying-resources" class="md-nav__link">
PATCH: Modifying resources PATCH: Modifying resources
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#head-retrieve-resources-headers" class="md-nav__link"> <a href="#head-retrieve-resources-headers" class="md-nav__link">
HEAD: Retrieve resources headers HEAD: Retrieve resources headers
</a> </a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
<a href="#options-retrieve-resources-communication-options" class="md-nav__link"> <a href="#options-retrieve-resources-communication-options" class="md-nav__link">
OPTIONS: Retrieve resources communication options OPTIONS: Retrieve resources communication options
</a> </a>
</li>
</ul>
</nav>
</li> </li>
</ul> </ul>
@ -1035,49 +1015,47 @@
<h1>Example request</h1> <h1 id="interacting-with-the-server">Interacting with the server<a class="headerlink" href="#interacting-with-the-server" title="Permanent link">&para;</a></h1>
<h2 id="put-creating-resources-for-a-given-url"><code>PUT</code>: Creating resources for a given URL<a class="headerlink" href="#put-creating-resources-for-a-given-url" title="Permanent link">&para;</a></h2>
<h2 id="interacting-with-the-server">Interacting with the server<a class="headerlink" href="#interacting-with-the-server" title="Permanent link">&para;</a></h2> <p>Create a plain text file:</p>
<h3 id="put-creating-resources-for-a-given-url"><code>PUT</code>: Creating resources for a given URL<a class="headerlink" href="#put-creating-resources-for-a-given-url" title="Permanent link">&para;</a></h3>
<p>Create a plain text file:
<div class="highlight"><pre><span></span><code>curl -X PUT -H <span class="s2">&quot;Content-Type: text/plain&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -X PUT -H <span class="s2">&quot;Content-Type: text/plain&quot;</span> <span class="se">\</span>
-d <span class="s2">&quot;abc&quot;</span> <span class="se">\</span> -d <span class="s2">&quot;abc&quot;</span> <span class="se">\</span>
http://localhost:3000/myfile.txt http://localhost:3000/myfile.txt
</code></pre></div></p> </code></pre></div>
<p>Create a turtle file: <p>Create a turtle file:</p>
<div class="highlight"><pre><span></span><code>curl -X PUT -H <span class="s2">&quot;Content-Type: text/turtle&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -X PUT -H <span class="s2">&quot;Content-Type: text/turtle&quot;</span> <span class="se">\</span>
-d <span class="s2">&quot;&lt;ex:s&gt; &lt;ex:p&gt; &lt;ex:o&gt;.&quot;</span> <span class="se">\</span> -d <span class="s2">&quot;&lt;ex:s&gt; &lt;ex:p&gt; &lt;ex:o&gt;.&quot;</span> <span class="se">\</span>
http://localhost:3000/myfile.ttl http://localhost:3000/myfile.ttl
</code></pre></div></p> </code></pre></div>
<h3 id="post-creating-resources-at-a-generated-url"><code>POST</code>: Creating resources at a generated URL<a class="headerlink" href="#post-creating-resources-at-a-generated-url" title="Permanent link">&para;</a></h3> <h2 id="post-creating-resources-at-a-generated-url"><code>POST</code>: Creating resources at a generated URL<a class="headerlink" href="#post-creating-resources-at-a-generated-url" title="Permanent link">&para;</a></h2>
<p>Create a plain text file: <p>Create a plain text file:</p>
<div class="highlight"><pre><span></span><code>curl -X POST -H <span class="s2">&quot;Content-Type: text/plain&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -X POST -H <span class="s2">&quot;Content-Type: text/plain&quot;</span> <span class="se">\</span>
-d <span class="s2">&quot;abc&quot;</span> <span class="se">\</span> -d <span class="s2">&quot;abc&quot;</span> <span class="se">\</span>
http://localhost:3000/ http://localhost:3000/
</code></pre></div></p> </code></pre></div>
<p>Create a turtle file: <p>Create a turtle file:</p>
<div class="highlight"><pre><span></span><code>curl -X POST -H <span class="s2">&quot;Content-Type: text/turtle&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -X POST -H <span class="s2">&quot;Content-Type: text/turtle&quot;</span> <span class="se">\</span>
-d <span class="s2">&quot;&lt;ex:s&gt; &lt;ex:p&gt; &lt;ex:o&gt;.&quot;</span> <span class="se">\</span> -d <span class="s2">&quot;&lt;ex:s&gt; &lt;ex:p&gt; &lt;ex:o&gt;.&quot;</span> <span class="se">\</span>
http://localhost:3000/ http://localhost:3000/
</code></pre></div></p> </code></pre></div>
<p>The response's <code>Location</code> header will contain the URL of the created resource.</p> <p>The response's <code>Location</code> header will contain the URL of the created resource.</p>
<h3 id="get-retrieving-resources"><code>GET</code>: Retrieving resources<a class="headerlink" href="#get-retrieving-resources" title="Permanent link">&para;</a></h3> <h2 id="get-retrieving-resources"><code>GET</code>: Retrieving resources<a class="headerlink" href="#get-retrieving-resources" title="Permanent link">&para;</a></h2>
<p>Retrieve a plain text file: <p>Retrieve a plain text file:</p>
<div class="highlight"><pre><span></span><code>curl -H <span class="s2">&quot;Accept: text/plain&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -H <span class="s2">&quot;Accept: text/plain&quot;</span> <span class="se">\</span>
http://localhost:3000/myfile.txt http://localhost:3000/myfile.txt
</code></pre></div></p> </code></pre></div>
<p>Retrieve a turtle file: <p>Retrieve a turtle file:</p>
<div class="highlight"><pre><span></span><code>curl -H <span class="s2">&quot;Accept: text/turtle&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -H <span class="s2">&quot;Accept: text/turtle&quot;</span> <span class="se">\</span>
http://localhost:3000/myfile.ttl http://localhost:3000/myfile.ttl
</code></pre></div></p> </code></pre></div>
<p>Retrieve a turtle file in a different serialization: <p>Retrieve a turtle file in a different serialization:</p>
<div class="highlight"><pre><span></span><code>curl -H <span class="s2">&quot;Accept: application/ld+json&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -H <span class="s2">&quot;Accept: application/ld+json&quot;</span> <span class="se">\</span>
http://localhost:3000/myfile.ttl http://localhost:3000/myfile.ttl
</code></pre></div></p> </code></pre></div>
<h3 id="delete-deleting-resources"><code>DELETE</code>: Deleting resources<a class="headerlink" href="#delete-deleting-resources" title="Permanent link">&para;</a></h3> <h2 id="delete-deleting-resources"><code>DELETE</code>: Deleting resources<a class="headerlink" href="#delete-deleting-resources" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>curl -X DELETE http://localhost:3000/myfile.txt <div class="highlight"><pre><span></span><code>curl -X DELETE http://localhost:3000/myfile.txt
</code></pre></div> </code></pre></div>
<h3 id="patch-modifying-resources"><code>PATCH</code>: Modifying resources<a class="headerlink" href="#patch-modifying-resources" title="Permanent link">&para;</a></h3> <h2 id="patch-modifying-resources"><code>PATCH</code>: Modifying resources<a class="headerlink" href="#patch-modifying-resources" title="Permanent link">&para;</a></h2>
<p>Modify a resource using <a href="https://solidproject.org/TR/protocol#n3-patch">N3 Patch</a>:</p> <p>Modify a resource using <a href="https://solidproject.org/TR/protocol#n3-patch">N3 Patch</a>:</p>
<div class="highlight"><pre><span></span><code>curl -X PATCH -H <span class="s2">&quot;Content-Type: text/n3&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -X PATCH -H <span class="s2">&quot;Content-Type: text/n3&quot;</span> <span class="se">\</span>
--data-raw <span class="s2">&quot;@prefix solid: &lt;http://www.w3.org/ns/solid/terms#&gt;. _:rename a solid:InsertDeletePatch; solid:inserts { &lt;ex:s2&gt; &lt;ex:p2&gt; &lt;ex:o2&gt;. }.&quot;</span> <span class="se">\</span> --data-raw <span class="s2">&quot;@prefix solid: &lt;http://www.w3.org/ns/solid/terms#&gt;. _:rename a solid:InsertDeletePatch; solid:inserts { &lt;ex:s2&gt; &lt;ex:p2&gt; &lt;ex:o2&gt;. }.&quot;</span> <span class="se">\</span>
@ -1088,11 +1066,11 @@
-d <span class="s2">&quot;INSERT DATA { &lt;ex:s2&gt; &lt;ex:p2&gt; &lt;ex:o2&gt; }&quot;</span> <span class="se">\</span> -d <span class="s2">&quot;INSERT DATA { &lt;ex:s2&gt; &lt;ex:p2&gt; &lt;ex:o2&gt; }&quot;</span> <span class="se">\</span>
http://localhost:3000/myfile.ttl http://localhost:3000/myfile.ttl
</code></pre></div> </code></pre></div>
<h3 id="head-retrieve-resources-headers"><code>HEAD</code>: Retrieve resources headers<a class="headerlink" href="#head-retrieve-resources-headers" title="Permanent link">&para;</a></h3> <h2 id="head-retrieve-resources-headers"><code>HEAD</code>: Retrieve resources headers<a class="headerlink" href="#head-retrieve-resources-headers" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>curl -I -H <span class="s2">&quot;Accept: text/plain&quot;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -I -H <span class="s2">&quot;Accept: text/plain&quot;</span> <span class="se">\</span>
http://localhost:3000/myfile.txt http://localhost:3000/myfile.txt
</code></pre></div> </code></pre></div>
<h3 id="options-retrieve-resources-communication-options"><code>OPTIONS</code>: Retrieve resources communication options<a class="headerlink" href="#options-retrieve-resources-communication-options" title="Permanent link">&para;</a></h3> <h2 id="options-retrieve-resources-communication-options"><code>OPTIONS</code>: Retrieve resources communication options<a class="headerlink" href="#options-retrieve-resources-communication-options" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>curl -X OPTIONS -i http://localhost:3000/myfile.txt <div class="highlight"><pre><span></span><code>curl -X OPTIONS -i http://localhost:3000/myfile.txt
</code></pre></div> </code></pre></div>

View File

@ -1190,7 +1190,7 @@ By default, the server uses the templates found in <code>/templates/identity/ema
but different templates can be used through configuration.</p> but different templates can be used through configuration.</p>
<p>These templates all make use of a JSON API exposed by the server. <p>These templates all make use of a JSON API exposed by the server.
For example, when doing a GET request to <code>http://localhost:3000/idp/register/</code> For example, when doing a GET request to <code>http://localhost:3000/idp/register/</code>
with a JSON accept header, the following JSON is returned: with a JSON accept header, the following JSON is returned:</p>
<div class="highlight"><pre><span></span><code><span class="p">{</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;required&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;required&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;email&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;string&quot;</span><span class="p">,</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;email&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;string&quot;</span><span class="p">,</span><span class="w"></span>
@ -1216,9 +1216,9 @@ with a JSON accept header, the following JSON is returned:
<span class="w"> </span><span class="nt">&quot;apiVersion&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0.3&quot;</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;apiVersion&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;0.3&quot;</span><span class="w"></span>
<span class="p">}</span><span class="w"></span> <span class="p">}</span><span class="w"></span>
</code></pre></div> </code></pre></div>
The <code>required</code> and <code>optional</code> fields indicate which input fields are expected by the API. <p>The <code>required</code> and <code>optional</code> fields indicate which input fields are expected by the API.
These correspond to the fields of the HTML registration page. These correspond to the fields of the HTML registration page.
To register a user, you can do a POST request with a JSON body containing the correct fields: To register a user, you can do a POST request with a JSON body containing the correct fields:</p>
<div class="highlight"><pre><span></span><code><span class="p">{</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;email&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test@example.com&quot;</span><span class="p">,</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;email&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test@example.com&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;password&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;secret&quot;</span><span class="p">,</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;password&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;secret&quot;</span><span class="p">,</span><span class="w"></span>
@ -1230,7 +1230,7 @@ To register a user, you can do a POST request with a JSON body containing the co
<span class="w"> </span><span class="nt">&quot;podName&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;podName&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test&quot;</span><span class="w"></span>
<span class="p">}</span><span class="w"></span> <span class="p">}</span><span class="w"></span>
</code></pre></div> </code></pre></div>
Two fields here that are not covered on the HTML page above are <code>rootPod</code> and <code>template</code>. <p>Two fields here that are not covered on the HTML page above are <code>rootPod</code> and <code>template</code>.
<code>rootPod</code> tells the server to put the pod in the root of the server instead of a location based on the <code>podName</code>. <code>rootPod</code> tells the server to put the pod in the root of the server instead of a location based on the <code>podName</code>.
By default the server will reject requests where this is <code>true</code>, except during setup. By default the server will reject requests where this is <code>true</code>, except during setup.
<code>template</code> is only used by servers running the <code>config/dynamic.json</code> configuration, <code>template</code> is only used by servers running the <code>config/dynamic.json</code> configuration,

View File

@ -1044,7 +1044,8 @@ The CSS will throw an error (409 <code>ConflictHttpError</code>) when trying to
<p><code>PUT</code> requests on a resource will reset the description resource. <p><code>PUT</code> requests on a resource will reset the description resource.
There is however a way to keep the contents of description resource prior to the <code>PUT</code> request: There is however a way to keep the contents of description resource prior to the <code>PUT</code> request:
adding the HTTP <code>Link</code> header targeting the description resource with <code>rel="preserve"</code>.</p> adding the HTTP <code>Link</code> header targeting the description resource with <code>rel="preserve"</code>.</p>
<p>When the resource URL is <code>http://localhost:3000/foobar</code>, preserving its description resource when updating its contents can be achieved like in the following example:</p> <p>When the resource URL is <code>http://localhost:3000/foobar</code>, preserving its description resource when updating its contents
can be achieved like in the following example:</p>
<div class="highlight"><pre><span></span><code>curl -X PUT <span class="s1">&#39;http://localhost:3000/foobar&#39;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -X PUT <span class="s1">&#39;http://localhost:3000/foobar&#39;</span> <span class="se">\</span>
-H <span class="s1">&#39;Content-Type: text/turtle&#39;</span> <span class="se">\</span> -H <span class="s1">&#39;Content-Type: text/turtle&#39;</span> <span class="se">\</span>
-H <span class="s1">&#39;Link: &lt;http://localhost:3000/foobar.meta&gt;;rel=&quot;preserve&quot;&#39;</span> <span class="se">\</span> -H <span class="s1">&#39;Link: &lt;http://localhost:3000/foobar.meta&gt;;rel=&quot;preserve&quot;&#39;</span> <span class="se">\</span>
@ -1066,10 +1067,10 @@ we first send a <code>HEAD</code> request to the resource to obtain the URL of i
<div class="highlight"><pre><span></span><code>curl --head <span class="s1">&#39;http://localhost:3000/foo/&#39;</span> <div class="highlight"><pre><span></span><code>curl --head <span class="s1">&#39;http://localhost:3000/foo/&#39;</span>
</code></pre></div> </code></pre></div>
<p>which will produce a response with at least these headers:</p> <p>which will produce a response with at least these headers:</p>
<p><div class="highlight"><pre><span></span><code>HTTP/1.1 <span class="m">200</span> OK <div class="highlight"><pre><span></span><code>HTTP/1.1 <span class="m">200</span> OK
Link: &lt;http://localhost:3000/foo/.meta&gt;<span class="p">;</span> <span class="nv">rel</span><span class="o">=</span><span class="s2">&quot;describedby&quot;</span> Link: &lt;http://localhost:3000/foo/.meta&gt;<span class="p">;</span> <span class="nv">rel</span><span class="o">=</span><span class="s2">&quot;describedby&quot;</span>
</code></pre></div> </code></pre></div>
Now that we have the URL of the description resource, <p>Now that we have the URL of the description resource,
we create a patch for adding the inbox in the description of the resource.</p> we create a patch for adding the inbox in the description of the resource.</p>
<div class="highlight"><pre><span></span><code>curl -X PATCH <span class="s1">&#39;http://localhost:3000/foo/.meta&#39;</span> <span class="se">\</span> <div class="highlight"><pre><span></span><code>curl -X PATCH <span class="s1">&#39;http://localhost:3000/foo/.meta&#39;</span> <span class="se">\</span>
-H <span class="s1">&#39;Content-Type: text/n3&#39;</span> <span class="se">\</span> -H <span class="s1">&#39;Content-Type: text/n3&#39;</span> <span class="se">\</span>
@ -1078,9 +1079,9 @@ we create a patch for adding the inbox in the description of the resource.</p>
<span class="s1">solid:inserts { &lt;http://localhost:3000/foo/&gt; &lt;http://www.w3.org/ns/ldp#inbox&gt; &lt;http://localhost:3000/inbox/&gt;. }.&#39;</span> <span class="s1">solid:inserts { &lt;http://localhost:3000/foo/&gt; &lt;http://www.w3.org/ns/ldp#inbox&gt; &lt;http://localhost:3000/inbox/&gt;. }.&#39;</span>
</code></pre></div> </code></pre></div>
<p>After this update, we can verify that the inbox is added by performing a GET request to the description resource</p> <p>After this update, we can verify that the inbox is added by performing a GET request to the description resource</p>
<p><div class="highlight"><pre><span></span><code>curl <span class="s1">&#39;http://localhost:3000/foo/.meta&#39;</span> <div class="highlight"><pre><span></span><code>curl <span class="s1">&#39;http://localhost:3000/foo/.meta&#39;</span>
</code></pre></div> </code></pre></div>
With as result for the body <p>With as result for the body</p>
<div class="highlight"><pre><span></span><code><span class="k">@prefix</span><span class="w"> </span><span class="nn">dc:</span><span class="w"> </span><span class="nv">&lt;http://purl.org/dc/terms/&gt;</span><span class="p">.</span> <div class="highlight"><pre><span></span><code><span class="k">@prefix</span><span class="w"> </span><span class="nn">dc:</span><span class="w"> </span><span class="nv">&lt;http://purl.org/dc/terms/&gt;</span><span class="p">.</span>
<span class="k">@prefix</span><span class="w"> </span><span class="nn">ldp:</span><span class="w"> </span><span class="nv">&lt;http://www.w3.org/ns/ldp#&gt;</span><span class="p">.</span> <span class="k">@prefix</span><span class="w"> </span><span class="nn">ldp:</span><span class="w"> </span><span class="nv">&lt;http://www.w3.org/ns/ldp#&gt;</span><span class="p">.</span>
<span class="k">@prefix</span><span class="w"> </span><span class="nn">posix:</span><span class="w"> </span><span class="nv">&lt;http://www.w3.org/ns/posix/stat#&gt;</span><span class="p">.</span> <span class="k">@prefix</span><span class="w"> </span><span class="nn">posix:</span><span class="w"> </span><span class="nv">&lt;http://www.w3.org/ns/posix/stat#&gt;</span><span class="p">.</span>
@ -1089,7 +1090,7 @@ With as result for the body
<span class="nv">&lt;http://localhost:3000/foo/&gt;</span> <span class="kt">a</span> <span class="nn">ldp</span><span class="p">:</span><span class="nt">Container</span><span class="p">,</span> <span class="nn">ldp</span><span class="p">:</span><span class="nt">BasicContainer</span><span class="p">,</span> <span class="nn">ldp</span><span class="p">:</span><span class="nt">Resource</span><span class="p">;</span> <span class="nv">&lt;http://localhost:3000/foo/&gt;</span> <span class="kt">a</span> <span class="nn">ldp</span><span class="p">:</span><span class="nt">Container</span><span class="p">,</span> <span class="nn">ldp</span><span class="p">:</span><span class="nt">BasicContainer</span><span class="p">,</span> <span class="nn">ldp</span><span class="p">:</span><span class="nt">Resource</span><span class="p">;</span>
<span class="nn">dc</span><span class="p">:</span><span class="nt">modified</span> <span class="s">&quot;2022-06-09T08:17:07.000Z&quot;</span><span class="p">^^</span><span class="nn">xsd</span><span class="p">:</span><span class="nt">dateTime</span><span class="p">;</span> <span class="nn">dc</span><span class="p">:</span><span class="nt">modified</span> <span class="s">&quot;2022-06-09T08:17:07.000Z&quot;</span><span class="p">^^</span><span class="nn">xsd</span><span class="p">:</span><span class="nt">dateTime</span><span class="p">;</span>
<span class="nn">ldp</span><span class="p">:</span><span class="nt">inbox</span> <span class="nv">&lt;http://localhost:3000/inbox/&gt;</span><span class="p">;.</span> <span class="nn">ldp</span><span class="p">:</span><span class="nt">inbox</span> <span class="nv">&lt;http://localhost:3000/inbox/&gt;</span><span class="p">;.</span>
</code></pre></div></p> </code></pre></div>
<p>This can also be verified by sending a GET request to the subject resource itself. <p>This can also be verified by sending a GET request to the subject resource itself.
The inbox location can also be found in the Link headers.</p> The inbox location can also be found in the Link headers.</p>
<div class="highlight"><pre><span></span><code>curl -v <span class="s1">&#39;http://localhost:3000/foo/&#39;</span> <div class="highlight"><pre><span></span><code>curl -v <span class="s1">&#39;http://localhost:3000/foo/&#39;</span>

View File

@ -890,8 +890,8 @@
the <code>--seededPodConfigJson</code> command line option can be used the <code>--seededPodConfigJson</code> command line option can be used
with as value the path to a JSON file containing configurations for every required pod. with as value the path to a JSON file containing configurations for every required pod.
The file needs to contain an array of JSON objects, The file needs to contain an array of JSON objects,
with each object containing at least a <code>podName</code>, <code>email</code>, and <code>password</code> field. </p> with each object containing at least a <code>podName</code>, <code>email</code>, and <code>password</code> field.</p>
<p>For example: <p>For example:</p>
<div class="highlight"><pre><span></span><code><span class="p">[</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;podName&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;example&quot;</span><span class="p">,</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;podName&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;example&quot;</span><span class="p">,</span><span class="w"></span>
@ -899,10 +899,10 @@ with each object containing at least a <code>podName</code>, <code>email</code>,
<span class="w"> </span><span class="nt">&quot;password&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;abc123&quot;</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;password&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;abc123&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">]</span><span class="w"></span> <span class="p">]</span><span class="w"></span>
</code></pre></div></p> </code></pre></div>
<p>You may optionally specify other parameters <p>You may optionally specify other parameters
as described in the <a href="../identity-provider/#json-api">Identity Provider documentation</a>.</p> as described in the <a href="../identity-provider/#json-api">Identity Provider documentation</a>.</p>
<p>For example, to set up a pod without registering the generated WebID with the Identity Provider: <p>For example, to set up a pod without registering the generated WebID with the Identity Provider:</p>
<div class="highlight"><pre><span></span><code><span class="p">[</span><span class="w"></span> <div class="highlight"><pre><span></span><code><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;podName&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;example&quot;</span><span class="p">,</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;podName&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;example&quot;</span><span class="p">,</span><span class="w"></span>
@ -912,7 +912,7 @@ as described in the <a href="../identity-provider/#json-api">Identity Provider d
<span class="w"> </span><span class="nt">&quot;register&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"></span> <span class="w"> </span><span class="nt">&quot;register&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">]</span><span class="w"></span> <span class="p">]</span><span class="w"></span>
</code></pre></div></p> </code></pre></div>
<p>This feature cannot be used to register pods with pre-existing WebIDs, <p>This feature cannot be used to register pods with pre-existing WebIDs,
which requires an interactive validation step.</p> which requires an interactive validation step.</p>