<p>Chapter 2, which is intended for users and system administrators, presents the building, configuration, and installation process of the PKM and parsers. Chapters 3, 4, and 5, which are intended for developers, present the PKM implementation. Chapter 6 concludes this document. The appendix talks about the Javascript SDK of the PKM server, the generation flow of the REST servers and SDKs for the clients, and the test procedure that was implemented to automate the test of the PKM server and more generally the DECODER Project tool-chain.</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.5 Open source PKM server-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.5 Open source PKM server-side software</a> - 02/17/22</span>
<p>The <em>PKM REST API</em> provides access to the PKM over HTTP/HTTPS. The PKM has an <ahref="https://www.openapis.org">OpenAPI</a> 3 specification available at <ahref="https://gitlab.ow2.org/decoder/pkm-api/-/blob/master/api/pkm-openapi.yaml">https://gitlab.ow2.org/decoder/pkm-api/-/blob/master/api/pkm-openapi.yaml</a>, which enables to automatically generate the SDK for many programming languages, see Appendix A.2. Appendix A.2 contains detailed explanations about implementation design of the REST server, which provides front-ends and third party tools developers with the PKM REST API.</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.5 Open source PKM server-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.5 Open source PKM server-side software</a> - 02/17/22</span>
<p>These operations allow deleting Git working trees created with <code>'clone'</code>. These operations can also delete the corresponding files in the PKM. There is no other way to delete Git working trees, and the only way to create a new Git working tree is to run a <code>clone</code> command.</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.5 Open source PKM server-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.5 Open source PKM server-side software</a> - 02/17/22</span>
<p>The PKM server have also its own limitations that deserve attention in future developments. The PKM files, and more generally the artefacts in the PKM, have no revision numbers so that it is not easy to track progressive enhancement of the knowledge in the PKM. The PKM users management, especially concerning the user’s roles, is tightly geared to the MongoDB user’s management, which is database oriented, but it is not necessarily convenient for a SaaS approach. Direct upload (as attachment in a POST HTTP request) toward the database is unsupported due to the limitations of OpenAPI supporting tools.</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.5 Open source PKM server-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.5 Open source PKM server-side software</a> - 02/17/22</span>
<p>Figure 3 shows the logical organization of this document (chapter numbers are highlighted in blue circles), which follows the order of actions to use properly the PKM and the parsers. Chapter 2 shows how to get the general server information such as the version numbers. Chapter 3 presents the management of the user’s session and particularly the way to authenticate with the PKM. Chapters 4 and 5 present the administrative tasks such as the users and project management. Chapter 6 presents how to deal with Git repositories. Chapter 7 shows how to populate the PKM with artefacts. Chapter 8 presents how to invoke parser to generate new artefacts. Chapter 9 shows how to query artefacts of a project. Chapter 10 concludes this document. The Appendix details the REST APIs and the command line interface (CLI).</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/17/22</span>
<p>This document has described the PKM APIs: a command line interface (CLI) and REST APIs. While the command line interface has been historically the first PKM API available, the REST APIs made it obsolete because it was unsuitable for a SaaS deployment where the data and computing resources are deported in the cloud. Indeed, the REST APIs have allowed connecting the DECODER Project tools together over communication networks and creating a GUI front-end as a web application. Every components of the DECODER Project tool-chain, running on separate docker containers, are now able to exchange thanks to these REST APIs. Using the OpenAPI specifications made it easier to document REST APIs and write SDKs for PKM and parsers clients. The REST APIs will permit extending the DECODER Project tool-chain and connecting third party tools to the existing tool-chain. Hopefully, containerized tool-chain components and the REST APIs should enable a SaaS deployment in the future.</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/17/22</span>
<p>This operation creates another the user’s session, and returns a new PKM access key that identifies the new user’s session. The new user’s session is independent from the original user’s session which means that when the later ends, the former is still alive, and vice-versa.</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/17/22</span>
<p>Note that the default behavior of the PKM is to fully synchronize the PKM Files and the Git working trees before and after running a Git command sequence, and after when deleting some files in a Git working tree.</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/17/22</span>
<p>When an Excavator job is running asynchronously, this operation allows polling the Excavator job with the given identifier <code>{jobId}</code> until job completion. The job is dequeued when client polls a completed job (either finished or failed).</p>
</div>
<divid="footer">
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/11/22</span>
<span><ahref="../index.html">D1.4 Open source client-side software</a> - 02/17/22</span>