Repository: apache/streampipes
Pull request #2358 (2023-12-21 02:40:20)

chore(deps): bump org.javassist:javassist from 3.29.2-GA to 3.30.1-GA
Bumps [org.javassist:javassist](https://github.com/jboss-javassist/javassist) from 3.29.2-GA to 3.30.1-GA.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/jboss-javassist/javassist/releases">org.javassist:javassist's releases</a>.</em></p>
<blockquote>
<h2>Javassist 3.30.1-GA</h2>
<p>Fixes a bug in MANIFEST.MF (Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/471">#471</a> and PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/472">#472</a>)</p>
<h2>Javassist 3.30.0-GA</h2>
<h2>What's Changed</h2>
<ul>
<li>try to fix trivial link error by <a href="https://github.com/fanofxiaofeng"><code>@​fanofxiaofeng</code></a> in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/434">jboss-javassist/javassist#434</a></li>
<li>fixes Issue 462 (In Java21, the ConstPool API throws NPE for MethodParameters attributes without parameter names) by <a href="https://github.com/wuwen5"><code>@​wuwen5</code></a> in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/463">jboss-javassist/javassist#463</a></li>
<li>Fix MemberResolver.lookupMethod bug when super class has more precise… by <a href="https://github.com/shifujun"><code>@​shifujun</code></a> in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/466">jboss-javassist/javassist#466</a></li>
<li>Fix issue in no-standard [new] instruction replace by <a href="https://github.com/catsalty"><code>@​catsalty</code></a> in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/448">jboss-javassist/javassist#448</a></li>
<li>Remove DUP check in TransformNewClass by <a href="https://github.com/shifujun"><code>@​shifujun</code></a> in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/467">jboss-javassist/javassist#467</a></li>
<li>Update tutorial.html: <code>javassist.util.HotSwapper</code> by <a href="https://github.com/vimfun"><code>@​vimfun</code></a> in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/468">jboss-javassist/javassist#468</a></li>
<li>Fix insertAuxInitializer may cause inconsistent stack height problem by <a href="https://github.com/shifujun"><code>@​shifujun</code></a> in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/469">jboss-javassist/javassist#469</a></li>
<li>Minimal changes make IDEA 2023.2 work out-of-box by <a href="https://github.com/shifujun"><code>@​shifujun</code></a> in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/470">jboss-javassist/javassist#470</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/fanofxiaofeng"><code>@​fanofxiaofeng</code></a> made their first contribution in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/434">jboss-javassist/javassist#434</a></li>
<li><a href="https://github.com/catsalty"><code>@​catsalty</code></a> made their first contribution in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/448">jboss-javassist/javassist#448</a></li>
<li><a href="https://github.com/vimfun"><code>@​vimfun</code></a> made their first contribution in <a href="https://redirect.github.com/jboss-javassist/javassist/pull/468">jboss-javassist/javassist#468</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/jboss-javassist/javassist/compare/rel_3_29_2_ga...rel_3_30_0_ga">https://github.com/jboss-javassist/javassist/compare/rel_3_29_2_ga...rel_3_30_0_ga</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/jboss-javassist/javassist/blob/master/Changes.md">org.javassist:javassist's changelog</a>.</em></p>
<blockquote>
<h3>Changes</h3>
<h4>version 3.30.1 on December 17, 2023</h4>
<ul>
<li>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/471">#471</a></li>
</ul>
<h4>version 3.30 on December 17, 2023</h4>
<ul>
<li>GitHub PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/434">#434</a>, 448, 463 (Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/462">#462</a>), 466, 467, 468, 469, 470,</li>
</ul>
<h4>version 3.29.2 on September 14, 2022</h4>
<ul>
<li>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/427">#427</a>.</li>
</ul>
<h4>version 3.29.1 on August 11, 2022</h4>
<ul>
<li>
<p>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/423">#423</a>.</p>
</li>
<li>
<p><code>Readme.html</code> was deleted (GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/414">#414</a>).</p>
</li>
</ul>
<h4>version 3.29 on May 13, 2022</h4>
<ul>
<li>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/378">#378</a>, PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/278">#278</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/299">#299</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/382">#382</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/383">#383</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/390">#390</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/391">#391</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/395">#395</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/399">#399</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/409">#409</a>.</li>
</ul>
<h4>version 3.28 on May 8, 2021</h4>
<ul>
<li>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/305">#305</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/328">#328</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/339">#339</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/350">#350</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/357">#357</a>, and PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/363">#363</a>.</li>
</ul>
<h4>version 3.27 on March 19, 2020</h4>
<ul>
<li>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/271">#271</a> (PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/279">#279</a>), <a href="https://redirect.github.com/jboss-javassist/javassist/issues/280">#280</a> (PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/281">#281</a>), <a href="https://redirect.github.com/jboss-javassist/javassist/issues/282">#282</a>, and PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/294">#294</a>.</li>
</ul>
<h4>version 3.26 on October 3, 2019</h4>
<ul>
<li>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/270">#270</a> (PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/272">#272</a>), <a href="https://redirect.github.com/jboss-javassist/javassist/issues/265">#265</a> (PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/267">#267</a>), <a href="https://redirect.github.com/jboss-javassist/javassist/issues/271">#271</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/222">#222</a>, and <a href="https://redirect.github.com/jboss-javassist/javassist/issues/275">#275</a>.</li>
</ul>
<h4>version 3.25 on April 16, 2019</h4>
<ul>
<li>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/72">#72</a> (PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/231">#231</a>), <a href="https://redirect.github.com/jboss-javassist/javassist/issues/241">#241</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/242">#242</a> (PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/243">#243</a>), PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/244">#244</a>,
<a href="https://redirect.github.com/jboss-javassist/javassist/issues/246">#246</a> (PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/247">#247</a>), PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/250">#250</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/252">#252</a> (PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/253">#253</a>), PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/254">#254</a>.</li>
</ul>
<h4>version 3.24.1 on December 9, 2018</h4>
<ul>
<li>GitHub Issue <a href="https://redirect.github.com/jboss-javassist/javassist/issues/228">#228</a>, <a href="https://redirect.github.com/jboss-javassist/javassist/issues/229">#229</a></li>
</ul>
<h4>version 3.24 on November 1, 2018</h4>
<ul>
<li>Java 11 supports.</li>
<li>JIRA JASSIST-267.</li>
<li>Github PR <a href="https://redirect.github.com/jboss-javassist/javassist/issues/218">#218</a>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/jboss-javassist/javassist/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.javassist:javassist&package-manager=maven&previous-version=3.29.2-GA&new-version=3.30.1-GA)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>


Patch:
diff --git a/pom.xml b/pom.xml
index 773494c785..610fe1bd49 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,7 +81,7 @@
         <jaxb-runtime.version>2.3.2</jaxb-runtime.version>
         <javax-websocket-api.version>1.1</javax-websocket-api.version>
         <jakarta-persistence-api.version>3.0.1</jakarta-persistence-api.version>
-        <javassist.version>3.29.2-GA</javassist.version>
+        <javassist.version>3.30.1-GA</javassist.version>
         <jboss-logging.version>3.5.2.Final</jboss-logging.version>
         <jedis.version>4.4.3</jedis.version>
         <jersey.version>3.1.3</jersey.version>
diff --git a/streampipes-client-python/Makefile b/streampipes-client-python/Makefile
index 682c6c56d4..dc8d5b7ac2 100644
--- a/streampipes-client-python/Makefile
+++ b/streampipes-client-python/Makefile
@@ -17,7 +17,6 @@
 
 .PHONY: check
 check: mypy lint unit-tests
-	poetry run interrogate -c pyproject.toml
 
 .PHONY: doc
 doc:
diff --git a/streampipes-client-python/poetry.lock b/streampipes-client-python/poetry.lock
index 6336d79d7a..85b713f12f 100644
--- a/streampipes-client-python/poetry.lock
+++ b/streampipes-client-python/poetry.lock
@@ -1493,38 +1493,38 @@ files = [
 
 [[package]]
 name = "mypy"
-version = "1.7.0"
+version = "1.8.0"
 description = "Optional static typing for Python"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "mypy-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5da84d7bf257fd8f66b4f759a904fd2c5a765f70d8b52dde62b521972a0a2357"},
-    {file = "mypy-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a3637c03f4025f6405737570d6cbfa4f1400eb3c649317634d273687a09ffc2f"},
-    {file = "mypy-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b633f188fc5ae1b6edca39dae566974d7ef4e9aaaae00bc36efe1f855e5173ac"},
-    {file = "mypy-1.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d6ed9a3997b90c6f891138e3f83fb8f475c74db4ccaa942a1c7bf99e83a989a1"},
-    {file = "mypy-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:1fe46e96ae319df21359c8db77e1aecac8e5949da4773c0274c0ef3d8d1268a9"},
-    {file = "mypy-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:df67fbeb666ee8828f675fee724cc2cbd2e4828cc3df56703e02fe6a421b7401"},
-    {file = "mypy-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a79cdc12a02eb526d808a32a934c6fe6df07b05f3573d210e41808020aed8b5d"},
-    {file = "mypy-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f65f385a6f43211effe8c682e8ec3f55d79391f70a201575def73d08db68ead1"},
-    {file = "mypy-1.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e81ffd120ee24959b449b647c4b2fbfcf8acf3465e082b8d58fd6c4c2b27e46"},
-    {file = "mypy-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:f29386804c3577c83d76520abf18cfcd7d68264c7e431c5907d250ab502658ee"},
-    {file = "mypy-1.7.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:87c076c174e2c7ef8ab416c4e252d94c08cd4980a10967754f91571070bf5fbe"},
-    {file = "mypy-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6cb8d5f6d0fcd9e708bb190b224089e45902cacef6f6915481806b0c77f7786d"},
-    {file = "mypy-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93e76c2256aa50d9c82a88e2f569232e9862c9982095f6d54e13509f01222fc"},
-    {file = "mypy-1.7.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cddee95dea7990e2215576fae95f6b78a8c12f4c089d7e4367564704e99118d3"},
-    {file = "mypy-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:d01921dbd691c4061a3e2ecdbfbfad029410c5c2b1ee88946bf45c62c6c91210"},
-    {file = "mypy-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:185cff9b9a7fec1f9f7d8352dff8a4c713b2e3eea9c6c4b5ff7f0edf46b91e41"},
-    {file = "mypy-1.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7b1e399c47b18feb6f8ad4a3eef3813e28c1e871ea7d4ea5d444b2ac03c418"},
-    {file = "mypy-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc9fe455ad58a20ec68599139ed1113b21f977b536a91b42bef3ffed5cce7391"},
-    {file = "mypy-1.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d0fa29919d2e720c8dbaf07d5578f93d7b313c3e9954c8ec05b6d83da592e5d9"},
-    {file = "mypy-1.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b53655a295c1ed1af9e96b462a736bf083adba7b314ae775563e3fb4e6795f5"},
-    {file = "mypy-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1b06b4b109e342f7dccc9efda965fc3970a604db70f8560ddfdee7ef19afb05"},
-    {file = "mypy-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bf7a2f0a6907f231d5e41adba1a82d7d88cf1f61a70335889412dec99feeb0f8"},
-    {file = "mypy-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551d4a0cdcbd1d2cccdcc7cb516bb4ae888794929f5b040bb51aae1846062901"},
-    {file = "mypy-1.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:55d28d7963bef00c330cb6461db80b0b72afe2f3c4e2963c99517cf06454e665"},
-    {file = "mypy-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:870bd1ffc8a5862e593185a4c169804f2744112b4a7c55b93eb50f48e7a77010"},
-    {file = "mypy-1.7.0-py3-none-any.whl", hash = "sha256:96650d9a4c651bc2a4991cf46f100973f656d69edc7faf91844e87fe627f7e96"},
-    {file = "mypy-1.7.0.tar.gz", hash = "sha256:1e280b5697202efa698372d2f39e9a6713a0395a756b1c6bd48995f8d72690dc"},
+    {file = "mypy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485a8942f671120f76afffff70f259e1cd0f0cfe08f81c05d8816d958d4577d3"},
+    {file = "mypy-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:df9824ac11deaf007443e7ed2a4a26bebff98d2bc43c6da21b2b64185da011c4"},
+    {file = "mypy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afecd6354bbfb6e0160f4e4ad9ba6e4e003b767dd80d85516e71f2e955ab50d"},
+    {file = "mypy-1.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8963b83d53ee733a6e4196954502b33567ad07dfd74851f32be18eb932fb1cb9"},
+    {file = "mypy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e46f44b54ebddbeedbd3d5b289a893219065ef805d95094d16a0af6630f5d410"},
+    {file = "mypy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:855fe27b80375e5c5878492f0729540db47b186509c98dae341254c8f45f42ae"},
+    {file = "mypy-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c886c6cce2d070bd7df4ec4a05a13ee20c0aa60cb587e8d1265b6c03cf91da3"},
+    {file = "mypy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d19c413b3c07cbecf1f991e2221746b0d2a9410b59cb3f4fb9557f0365a1a817"},
+    {file = "mypy-1.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9261ed810972061388918c83c3f5cd46079d875026ba97380f3e3978a72f503d"},
+    {file = "mypy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:51720c776d148bad2372ca21ca29256ed483aa9a4cdefefcef49006dff2a6835"},
+    {file = "mypy-1.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:52825b01f5c4c1c4eb0db253ec09c7aa17e1a7304d247c48b6f3599ef40db8bd"},
+    {file = "mypy-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5ac9a4eeb1ec0f1ccdc6f326bcdb464de5f80eb07fb38b5ddd7b0de6bc61e55"},
+    {file = "mypy-1.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afe3fe972c645b4632c563d3f3eff1cdca2fa058f730df2b93a35e3b0c538218"},
+    {file = "mypy-1.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:42c6680d256ab35637ef88891c6bd02514ccb7e1122133ac96055ff458f93fc3"},
+    {file = "mypy-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:720a5ca70e136b675af3af63db533c1c8c9181314d207568bbe79051f122669e"},
+    {file = "mypy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:028cf9f2cae89e202d7b6593cd98db6759379f17a319b5faf4f9978d7084cdc6"},
+    {file = "mypy-1.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e6d97288757e1ddba10dd9549ac27982e3e74a49d8d0179fc14d4365c7add66"},
+    {file = "mypy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f1478736fcebb90f97e40aff11a5f253af890c845ee0c850fe80aa060a267c6"},
+    {file = "mypy-1.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42419861b43e6962a649068a61f4a4839205a3ef525b858377a960b9e2de6e0d"},
+    {file = "mypy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b5b6c721bd4aabaadead3a5e6fa85c11c6c795e0c81a7215776ef8afc66de02"},
+    {file = "mypy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c1538c38584029352878a0466f03a8ee7547d7bd9f641f57a0f3017a7c905b8"},
+    {file = "mypy-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ef4be7baf08a203170f29e89d79064463b7fc7a0908b9d0d5114e8009c3a259"},
+    {file = "mypy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178def594014aa6c35a8ff411cf37d682f428b3b5617ca79029d8ae72f5402b"},
+    {file = "mypy-1.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab3c84fa13c04aeeeabb2a7f67a25ef5d77ac9d6486ff33ded762ef353aa5592"},
+    {file = "mypy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:99b00bc72855812a60d253420d8a2eae839b0afa4938f09f4d2aa9bb4654263a"},
+    {file = "mypy-1.8.0-py3-none-any.whl", hash = "sha256:538fd81bb5e430cc1381a443971c0475582ff9f434c16cd46d2c66763ce85d9d"},
+    {file = "mypy-1.8.0.tar.gz", hash = "sha256:6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07"},
 ]
 
 [package.dependencies]
@@ -3447,4 +3447,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
 [metadata]
 lock-version = "2.0"
 python-versions = ">3.8.1,<3.12"
-content-hash = "576f9efa8a7781385aa4eac11cc1d3c0d6427f9a71581bacfadedb2cc6d2c2c1"
+content-hash = "59b86b4ea0a7c14c451e701d85873cd96864f7e09c20f78c2f2a325b2d64e299"
diff --git a/streampipes-client-python/pyproject.toml b/streampipes-client-python/pyproject.toml
index d97a5d938e..735db2dcb3 100644
--- a/streampipes-client-python/pyproject.toml
+++ b/streampipes-client-python/pyproject.toml
@@ -71,7 +71,7 @@ blacken-docs = "1.16.0"
 flake8 = "6.1.0"
 interrogate = { version = "1.5.0", extras = ["png"] }
 isort = "5.13.0"
-mypy = "1.7.0"
+mypy = "1.8.0"
 ruff = "0.1.0"
 pre-commit = "3.5.0"
 pytest = "7.4.0"
diff --git a/streampipes-client-python/streampipes/endpoint/endpoint.py b/streampipes-client-python/streampipes/endpoint/endpoint.py
index fa96df79ae..b3572d9d11 100644
--- a/streampipes-client-python/streampipes/endpoint/endpoint.py
+++ b/streampipes-client-python/streampipes/endpoint/endpoint.py
@@ -205,9 +205,12 @@ class APIEndpoint(Endpoint):
             The specified resource as an instance of the corresponding model class.
         """
 
-        response = self._make_request(
-            request_method=self._parent_client.request_session.get, url=f"{self.build_url()}/{identifier}"
-        )
+        query_url = f"{self.build_url()}"
+
+        if identifier:
+            query_url += f"/{identifier}"
+
+        response = self._make_request(request_method=self._parent_client.request_session.get, url=query_url)
 
         return self._container_cls._resource_cls()(**response.json())
 
@@ -226,7 +229,7 @@ class APIEndpoint(Endpoint):
 
         self._make_request(
             request_method=self._parent_client.request_session.post,
-            url=f"{self.build_url()}/",
+            url=f"{self.build_url()}",
             data=json.dumps(resource.to_dict(use_source_names=True)),
             headers={"Content-type": "application/json"},
         )
diff --git a/streampipes-client-python/streampipes/model/resource/version.py b/streampipes-client-python/streampipes/model/resource/version.py
index 0ec557321f..734955c136 100644
--- a/streampipes-client-python/streampipes/model/resource/version.py
+++ b/streampipes-client-python/streampipes/model/resource/version.py
@@ -19,9 +19,9 @@ __all__ = [
     "Version",
 ]
 
-from typing import Dict
+from typing import Dict, Optional
 
-from pydantic import StrictStr
+from pydantic import StrictStr, validator
 
 from streampipes.model.resource.resource import Resource
 
@@ -41,4 +41,12 @@ class Version(Resource):
         """
         return self.to_dict(use_source_names=False)
 
-    backend_version: StrictStr
+    backend_version: Optional[StrictStr] = None
+
+    @validator("backend_version", always=True)
+    def validate_backend_version(cls, backend_version):
+        """Validates the backend version of the StreamPipes.
+        Sets 'development' if none is returned since this the behavior of StreamPipes backend running
+        in development mode.
+        """
+        return backend_version or "development"
diff --git a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/locales/LabelGenerator.java b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/locales/LabelGenerator.java
index 8e47e20923..a1be4db1d0 100644
--- a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/locales/LabelGenerator.java
+++ b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/locales/LabelGenerator.java
@@ -44,9 +44,9 @@ public class LabelGenerator<T extends NamedStreamPipesEntity> {
 
   private static final Logger LOG = LoggerFactory.getLogger(LabelGenerator.class);
 
-  private static final String Delimiter = ".";
-  private static final String Title = "title";
-  private static final String Description = "description";
+  protected static final String DELIMITER = ".";
+  protected static final String TITLE = "title";
+  protected static final String DESCRIPTION = "description";
 
   private T desc;
 
@@ -56,34 +56,51 @@ public class LabelGenerator<T extends NamedStreamPipesEntity> {
 
   public T generateLabels() throws IOException {
     if (existsLocalesFile()) {
-      Properties props = makeProperties();
+      Properties props = laodResourceAndMakeProperties();
       desc.setName(getTitle(props, desc.getAppId()));
       desc.setDescription(getDescription(props, desc.getAppId()));
 
       if (isAdapter()) {
-        ((AdapterDescription) desc).getConfig().forEach(sp -> generateLabels(props, sp));
+        ((AdapterDescription) desc).getConfig()
+                                   .forEach(sp -> generateLabels(props, sp));
       }
 
       if (isConsumable()) {
-        ((ConsumableStreamPipesEntity) desc).getStaticProperties().forEach(sp -> {
-          generateLabels(props, sp);
-        });
+        ((ConsumableStreamPipesEntity) desc).getStaticProperties()
+                                            .forEach(sp -> {
+                                              generateLabels(props, sp);
+                                            });
       }
 
       if (isDataProcessor()) {
-        ((DataProcessorDescription) desc).getOutputStrategies().forEach(os -> {
-          if (os instanceof AppendOutputStrategy) {
-            ((AppendOutputStrategy) os).getEventProperties().forEach(ep -> {
-              ep.setLabel(getTitle(props, ep.getRuntimeId()));
-              ep.setDescription(getDescription(props, ep.getRuntimeId()));
-            });
-          } else if (os instanceof FixedOutputStrategy) {
-            ((FixedOutputStrategy) os).getEventProperties().forEach(ep -> {
-              ep.setLabel(getTitle(props, ep.getRuntimeId()));
-              ep.setDescription(getDescription(props, ep.getRuntimeId()));
-            });
-          }
-        });
+        ((DataProcessorDescription) desc).getOutputStrategies()
+                                         .forEach(os -> {
+                                           if (os instanceof AppendOutputStrategy) {
+                                             ((AppendOutputStrategy) os).getEventProperties()
+                                                                        .forEach(ep -> {
+                                                                          ep.setLabel(getTitle(
+                                                                              props,
+                                                                              ep.getRuntimeId()
+                                                                          ));
+                                                                          ep.setDescription(getDescription(
+                                                                              props,
+                                                                              ep.getRuntimeId()
+                                                                          ));
+                                                                        });
+                                           } else if (os instanceof FixedOutputStrategy) {
+                                             ((FixedOutputStrategy) os).getEventProperties()
+                                                                       .forEach(ep -> {
+                                                                         ep.setLabel(getTitle(
+                                                                             props,
+                                                                             ep.getRuntimeId()
+                                                                         ));
+                                                                         ep.setDescription(getDescription(
+                                                                             props,
+                                                                             ep.getRuntimeId()
+                                                                         ));
+                                                                       });
+                                           }
+                                         });
       }
     } else {
       LOG.error("Could not find assets directory to generate labels for app id:" + desc.getAppId());
@@ -92,31 +109,52 @@ public class LabelGenerator<T extends NamedStreamPipesEntity> {
     return desc;
   }
 
+
+  /**
+   * Returns the tile of the element description based on the data of the resource files
+   */
+  public String getElementTitle() throws IOException {
+    var props = checkIfResourceFileExistsAndMakeProperties();
+    return getTitle(props, desc.getAppId());
+  }
+
+  /**
+   * Returns the description of the element description based on the data of the resource files
+   */
+  public String getElementDescription() throws IOException {
+    var props = checkIfResourceFileExistsAndMakeProperties();
+    return getDescription(props, desc.getAppId());
+  }
+
+
   private StaticProperty generateLabels(Properties props, StaticProperty sp) {
     sp.setLabel(getTitle(props, sp.getInternalName(), sp.getLabel()));
     sp.setDescription(getDescription(props, sp.getInternalName(), sp.getDescription()));
     if (sp instanceof CollectionStaticProperty) {
 
       if (((CollectionStaticProperty) sp).getMembers() != null) {
-        ((CollectionStaticProperty) sp).getMembers().forEach(a -> {
-          generateLabels(props, a);
-        });
+        ((CollectionStaticProperty) sp).getMembers()
+                                       .forEach(a -> {
+                                         generateLabels(props, a);
+                                       });
       } else {
         ((StaticPropertyGroup) ((CollectionStaticProperty) sp).getStaticPropertyTemplate()).getStaticProperties()
-            .forEach(a -> {
-              generateLabels(props, a);
-            });
+                                                                                           .forEach(a -> {
+                                                                                             generateLabels(props, a);
+                                                                                           });
       }
 
     } else if (sp instanceof StaticPropertyGroup) {
-      ((StaticPropertyGroup) sp).getStaticProperties().forEach(g -> {
-        g.setLabel(getTitle(props, g.getInternalName(), g.getLabel()));
-        g.setDescription(getDescription(props, g.getInternalName(), g.getDescription()));
-      });
+      ((StaticPropertyGroup) sp).getStaticProperties()
+                                .forEach(g -> {
+                                  g.setLabel(getTitle(props, g.getInternalName(), g.getLabel()));
+                                  g.setDescription(getDescription(props, g.getInternalName(), g.getDescription()));
+                                });
     } else if (sp instanceof StaticPropertyAlternatives) {
-      ((StaticPropertyAlternatives) sp).getAlternatives().forEach(a -> {
-        generateLabels(props, a);
-      });
+      ((StaticPropertyAlternatives) sp).getAlternatives()
+                                       .forEach(a -> {
+                                         generateLabels(props, a);
+                                       });
     } else if (sp instanceof StaticPropertyAlternative) {
       if (((StaticPropertyAlternative) sp).getStaticProperty() != null) {
         generateLabels(props, ((StaticPropertyAlternative) sp).getStaticProperty());
@@ -126,26 +164,37 @@ public class LabelGenerator<T extends NamedStreamPipesEntity> {
     return sp;
   }
 
-  private Properties makeProperties() throws IOException {
+  protected Properties checkIfResourceFileExistsAndMakeProperties() throws IOException {
+    throwIOExceptionIfResourceDoesNotExist();
+    return laodResourceAndMakeProperties();
+  }
+
+  private Properties laodResourceAndMakeProperties() throws IOException {
     Properties props = new Properties();
     props.load(new InputStreamReader(loadResource(), StandardCharsets.UTF_8));
 
     return props;
   }
 
-  public String getElementTitle() throws IOException {
-    Properties props = makeProperties();
-    return getTitle(props, desc.getAppId());
+  protected boolean existsLocalesFile() {
+    return this.getClass()
+               .getClassLoader()
+               .getResource(
+                   getPath()
+               ) != null;
   }
 
-  public String getElementDescription() throws IOException {
-    Properties props = makeProperties();
-    return getDescription(props, desc.getAppId());
+  private void throwIOExceptionIfResourceDoesNotExist() throws IOException {
+    if (!existsLocalesFile()) {
+      throw new IOException(
+          "Could not find assets directory to generate labels for app id: %s".formatted(desc.getAppId())
+      );
+    }
   }
 
-  private boolean existsLocalesFile() {
-    return this.getClass().getClassLoader().getResourceAsStream(makePath(desc,
-        this.desc.getIncludedLocales().get(0))) != null;
+  private String getPath() {
+    return makePath(desc, desc.getIncludedLocales()
+                              .get(0));
   }
 
   private boolean isConsumable() {
@@ -161,36 +210,41 @@ public class LabelGenerator<T extends NamedStreamPipesEntity> {
   }
 
   private InputStream loadResource() {
-    if (desc.getIncludedLocales().size() > 0) {
-      return getResourceFile(desc.getIncludedLocales().get(0));
+    if (desc.getIncludedLocales()
+            .size() > 0) {
+      return getResourceFile(desc.getIncludedLocales()
+                                 .get(0));
     } else {
-      throw new IllegalArgumentException("Could not find any language files");
+      throw new IllegalArgumentException("Could not find any language files for %s".formatted(desc.getAppId()));
     }
   }
 
   private String getTitle(Properties props, String id, String defaultValue) {
-    return getValue(props, Title, id, defaultValue);
+    return getValue(props, TITLE, id, defaultValue);
   }
 
   private String getTitle(Properties props, String id) {
-    return getValue(props, Title, id, "");
+    return getValue(props, TITLE, id, "");
   }
 
   private String getDescription(Properties props, String id) {
-    return getValue(props, Description, id, "");
+    return getValue(props, DESCRIPTION, id, "");
   }
 
   private String getDescription(Properties props, String id, String defaultValue) {
-    return getValue(props, Description, id, defaultValue);
+    return getValue(props, DESCRIPTION, id, defaultValue);
   }
 
   private String getValue(Properties props, String type, String id, String defaultValue) {
-    return props.getProperty(id + Delimiter + type, defaultValue);
+    return props.getProperty(id + DELIMITER + type, defaultValue);
   }
 
 
   private InputStream getResourceFile(String filename) {
-    return this.getClass().getClassLoader().getResourceAsStream(makePath(desc, filename));
+    var path = makePath(desc, filename);
+    return this.getClass()
+               .getClassLoader()
+               .getResourceAsStream(path);
   }
 
 }
diff --git a/streampipes-rest-extensions/src/main/java/org/apache/streampipes/rest/extensions/html/page/WelcomePageGenerator.java b/streampipes-rest-extensions/src/main/java/org/apache/streampipes/rest/extensions/html/page/WelcomePageGenerator.java
index d4ff6fe381..8aa99727e7 100644
--- a/streampipes-rest-extensions/src/main/java/org/apache/streampipes/rest/extensions/html/page/WelcomePageGenerator.java
+++ b/streampipes-rest-extensions/src/main/java/org/apache/streampipes/rest/extensions/html/page/WelcomePageGenerator.java
@@ -32,6 +32,9 @@ import org.apache.streampipes.model.graph.DataSinkDescription;
 import org.apache.streampipes.rest.extensions.html.model.Description;
 import org.apache.streampipes.sdk.utils.Assets;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -40,6 +43,8 @@ import java.util.List;
 
 public class WelcomePageGenerator {
 
+  private static final Logger LOG = LoggerFactory.getLogger(WelcomePageGenerator.class);
+
   protected List<Description> descriptions;
   protected Collection<IStreamPipesPipelineElement<?>> pipelineElements;
   protected Collection<StreamPipesAdapter> adapters;
@@ -129,7 +134,7 @@ public class WelcomePageGenerator {
         desc.setName(lg.getElementTitle());
         desc.setDescription(lg.getElementDescription());
       } catch (IOException e) {
-        e.printStackTrace();
+        LOG.error("Error while updating description of %s".formatted(entity.getAppId()), e);
       }
     }
   }
diff --git a/ui/package-lock.json b/ui/package-lock.json
index 01e92f4b24..b4baeed0d0 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -25,7 +25,7 @@
         "@circlon/angular-tree-component": "^11.0.4",
         "@ctrl/ngx-codemirror": "6.1.0",
         "@danielmoncada/angular-datetime-picker": "^15.0.2",
-        "@fortawesome/fontawesome-free": "6.4.2",
+        "@fortawesome/fontawesome-free": "6.5.1",
         "@jsplumb/browser-ui": "^6.2.10",
         "@ngbracket/ngx-layout": "^15.0.1-beta.42-aa93e27",
         "@ngx-loading-bar/core": "6.0.2",
@@ -111,7 +111,7 @@
         "karma-jasmine": "~5.1.0",
         "karma-jasmine-html-reporter": "^2.1.0",
         "karma-verbose-reporter": "0.0.8",
-        "lint-staged": "^15.1.0",
+        "lint-staged": "^15.2.0",
         "mustache": "^4.2.0",
         "ng-lint-staged": "^12.0.4",
         "ng-packagr": "^15.1.2",
@@ -4895,9 +4895,9 @@
       "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
     },
     "node_modules/@fortawesome/fontawesome-free": {
-      "version": "6.4.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz",
-      "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==",
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.1.tgz",
+      "integrity": "sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw==",
       "hasInstallScript": true,
       "engines": {
         "node": ">=6"
@@ -14702,6 +14702,18 @@
       "resolved": "https://registry.npmjs.org/get-canvas-context/-/get-canvas-context-1.0.2.tgz",
       "integrity": "sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A=="
     },
+    "node_modules/get-east-asian-width": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz",
+      "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/get-intrinsic": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
@@ -17917,12 +17929,12 @@
       }
     },
     "node_modules/lilconfig": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
-      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
+      "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
       "dev": true,
       "engines": {
-        "node": ">=10"
+        "node": ">=14"
       }
     },
     "node_modules/lines-and-columns": {
@@ -17932,17 +17944,17 @@
       "dev": true
     },
     "node_modules/lint-staged": {
-      "version": "15.1.0",
-      "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.1.0.tgz",
-      "integrity": "sha512-ZPKXWHVlL7uwVpy8OZ7YQjYDAuO5X4kMh0XgZvPNxLcCCngd0PO5jKQyy3+s4TL2EnHoIXIzP1422f/l3nZKMw==",
+      "version": "15.2.0",
+      "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.0.tgz",
+      "integrity": "sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==",
       "dev": true,
       "dependencies": {
         "chalk": "5.3.0",
         "commander": "11.1.0",
         "debug": "4.3.4",
         "execa": "8.0.1",
-        "lilconfig": "2.1.0",
-        "listr2": "7.0.2",
+        "lilconfig": "3.0.0",
+        "listr2": "8.0.0",
         "micromatch": "4.0.5",
         "pidtree": "0.6.0",
         "string-argv": "0.3.2",
@@ -17959,15 +17971,15 @@
       }
     },
     "node_modules/lint-staged/node_modules/ansi-escapes": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz",
-      "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz",
+      "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==",
       "dev": true,
       "dependencies": {
-        "type-fest": "^1.0.2"
+        "type-fest": "^3.0.0"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=14.16"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -18025,16 +18037,16 @@
       }
     },
     "node_modules/lint-staged/node_modules/cli-truncate": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
-      "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
+      "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==",
       "dev": true,
       "dependencies": {
         "slice-ansi": "^5.0.0",
-        "string-width": "^5.0.0"
+        "string-width": "^7.0.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+        "node": ">=18"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -18050,9 +18062,9 @@
       }
     },
     "node_modules/lint-staged/node_modules/emoji-regex": {
-      "version": "9.2.2",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
+      "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
       "dev": true
     },
     "node_modules/lint-staged/node_modules/eventemitter3": {
@@ -18130,41 +18142,72 @@
       }
     },
     "node_modules/lint-staged/node_modules/listr2": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/listr2/-/listr2-7.0.2.tgz",
-      "integrity": "sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==",
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.0.tgz",
+      "integrity": "sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==",
       "dev": true,
       "dependencies": {
-        "cli-truncate": "^3.1.0",
+        "cli-truncate": "^4.0.0",
         "colorette": "^2.0.20",
         "eventemitter3": "^5.0.1",
-        "log-update": "^5.0.1",
+        "log-update": "^6.0.0",
         "rfdc": "^1.3.0",
-        "wrap-ansi": "^8.1.0"
+        "wrap-ansi": "^9.0.0"
       },
       "engines": {
-        "node": ">=16.0.0"
+        "node": ">=18.0.0"
       }
     },
     "node_modules/lint-staged/node_modules/log-update": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz",
-      "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz",
+      "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==",
       "dev": true,
       "dependencies": {
-        "ansi-escapes": "^5.0.0",
+        "ansi-escapes": "^6.2.0",
         "cli-cursor": "^4.0.0",
-        "slice-ansi": "^5.0.0",
-        "strip-ansi": "^7.0.1",
-        "wrap-ansi": "^8.0.1"
+        "slice-ansi": "^7.0.0",
+        "strip-ansi": "^7.1.0",
+        "wrap-ansi": "^9.0.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/lint-staged/node_modules/log-update/node_modules/is-fullwidth-code-point": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz",
+      "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==",
+      "dev": true,
+      "dependencies": {
+        "get-east-asian-width": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=18"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/lint-staged/node_modules/log-update/node_modules/slice-ansi": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz",
+      "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^6.2.1",
+        "is-fullwidth-code-point": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+      }
+    },
     "node_modules/lint-staged/node_modules/mimic-fn": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
@@ -18294,17 +18337,17 @@
       }
     },
     "node_modules/lint-staged/node_modules/string-width": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
-      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.0.0.tgz",
+      "integrity": "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==",
       "dev": true,
       "dependencies": {
-        "eastasianwidth": "^0.2.0",
-        "emoji-regex": "^9.2.2",
-        "strip-ansi": "^7.0.1"
+        "emoji-regex": "^10.3.0",
+        "get-east-asian-width": "^1.0.0",
+        "strip-ansi": "^7.1.0"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -18338,29 +18381,29 @@
       }
     },
     "node_modules/lint-staged/node_modules/type-fest": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
-      "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+      "version": "3.13.1",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+      "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
       "dev": true,
       "engines": {
-        "node": ">=10"
+        "node": ">=14.16"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/lint-staged/node_modules/wrap-ansi": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
-      "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+      "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
       "dev": true,
       "dependencies": {
-        "ansi-styles": "^6.1.0",
-        "string-width": "^5.0.1",
-        "strip-ansi": "^7.0.1"
+        "ansi-styles": "^6.2.1",
+        "string-width": "^7.0.0",
+        "strip-ansi": "^7.1.0"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       },
       "funding": {
         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
@@ -31641,9 +31684,9 @@
       "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
     },
     "@fortawesome/fontawesome-free": {
-      "version": "6.4.2",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz",
-      "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg=="
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.1.tgz",
+      "integrity": "sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw=="
     },
     "@humanwhocodes/config-array": {
       "version": "0.11.13",
@@ -39638,6 +39681,12 @@
       "resolved": "https://registry.npmjs.org/get-canvas-context/-/get-canvas-context-1.0.2.tgz",
       "integrity": "sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A=="
     },
+    "get-east-asian-width": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz",
+      "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==",
+      "dev": true
+    },
     "get-intrinsic": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
@@ -42125,9 +42174,9 @@
       }
     },
     "lilconfig": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
-      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
+      "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
       "dev": true
     },
     "lines-and-columns": {
@@ -42137,17 +42186,17 @@
       "dev": true
     },
     "lint-staged": {
-      "version": "15.1.0",
-      "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.1.0.tgz",
-      "integrity": "sha512-ZPKXWHVlL7uwVpy8OZ7YQjYDAuO5X4kMh0XgZvPNxLcCCngd0PO5jKQyy3+s4TL2EnHoIXIzP1422f/l3nZKMw==",
+      "version": "15.2.0",
+      "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.0.tgz",
+      "integrity": "sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==",
       "dev": true,
       "requires": {
         "chalk": "5.3.0",
         "commander": "11.1.0",
         "debug": "4.3.4",
         "execa": "8.0.1",
-        "lilconfig": "2.1.0",
-        "listr2": "7.0.2",
+        "lilconfig": "3.0.0",
+        "listr2": "8.0.0",
         "micromatch": "4.0.5",
         "pidtree": "0.6.0",
         "string-argv": "0.3.2",
@@ -42155,12 +42204,12 @@
       },
       "dependencies": {
         "ansi-escapes": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz",
-          "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==",
+          "version": "6.2.0",
+          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz",
+          "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==",
           "dev": true,
           "requires": {
-            "type-fest": "^1.0.2"
+            "type-fest": "^3.0.0"
           }
         },
         "ansi-regex": {
@@ -42191,13 +42240,13 @@
           }
         },
         "cli-truncate": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
-          "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
+          "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==",
           "dev": true,
           "requires": {
             "slice-ansi": "^5.0.0",
-            "string-width": "^5.0.0"
+            "string-width": "^7.0.0"
           }
         },
         "commander": {
@@ -42207,9 +42256,9 @@
           "dev": true
         },
         "emoji-regex": {
-          "version": "9.2.2",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-          "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+          "version": "10.3.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
+          "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
           "dev": true
         },
         "eventemitter3": {
@@ -42260,30 +42309,51 @@
           "dev": true
         },
         "listr2": {
-          "version": "7.0.2",
-          "resolved": "https://registry.npmjs.org/listr2/-/listr2-7.0.2.tgz",
-          "integrity": "sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==",
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.0.tgz",
+          "integrity": "sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==",
           "dev": true,
           "requires": {
-            "cli-truncate": "^3.1.0",
+            "cli-truncate": "^4.0.0",
             "colorette": "^2.0.20",
             "eventemitter3": "^5.0.1",
-            "log-update": "^5.0.1",
+            "log-update": "^6.0.0",
             "rfdc": "^1.3.0",
-            "wrap-ansi": "^8.1.0"
+            "wrap-ansi": "^9.0.0"
           }
         },
         "log-update": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz",
-          "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==",
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz",
+          "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==",
           "dev": true,
           "requires": {
-            "ansi-escapes": "^5.0.0",
+            "ansi-escapes": "^6.2.0",
             "cli-cursor": "^4.0.0",
-            "slice-ansi": "^5.0.0",
-            "strip-ansi": "^7.0.1",
-            "wrap-ansi": "^8.0.1"
+            "slice-ansi": "^7.0.0",
+            "strip-ansi": "^7.1.0",
+            "wrap-ansi": "^9.0.0"
+          },
+          "dependencies": {
+            "is-fullwidth-code-point": {
+              "version": "5.0.0",
+              "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz",
+              "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==",
+              "dev": true,
+              "requires": {
+                "get-east-asian-width": "^1.0.0"
+              }
+            },
+            "slice-ansi": {
+              "version": "7.1.0",
+              "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz",
+              "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==",
+              "dev": true,
+              "requires": {
+                "ansi-styles": "^6.2.1",
+                "is-fullwidth-code-point": "^5.0.0"
+              }
+            }
           }
         },
         "mimic-fn": {
@@ -42366,14 +42436,14 @@
           }
         },
         "string-width": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
-          "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.0.0.tgz",
+          "integrity": "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==",
           "dev": true,
           "requires": {
-            "eastasianwidth": "^0.2.0",
-            "emoji-regex": "^9.2.2",
-            "strip-ansi": "^7.0.1"
+            "emoji-regex": "^10.3.0",
+            "get-east-asian-width": "^1.0.0",
+            "strip-ansi": "^7.1.0"
           }
         },
         "strip-ansi": {
@@ -42392,20 +42462,20 @@
           "dev": true
         },
         "type-fest": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
-          "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+          "version": "3.13.1",
+          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+          "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
           "dev": true
         },
         "wrap-ansi": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
-          "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+          "version": "9.0.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+          "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
           "dev": true,
           "requires": {
-            "ansi-styles": "^6.1.0",
-            "string-width": "^5.0.1",
-            "strip-ansi": "^7.0.1"
+            "ansi-styles": "^6.2.1",
+            "string-width": "^7.0.0",
+            "strip-ansi": "^7.1.0"
           }
         },
         "yaml": {
diff --git a/ui/package.json b/ui/package.json
index 37c8e2c516..d4dd638438 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -48,7 +48,7 @@
     "@circlon/angular-tree-component": "^11.0.4",
     "@ctrl/ngx-codemirror": "6.1.0",
     "@danielmoncada/angular-datetime-picker": "^15.0.2",
-    "@fortawesome/fontawesome-free": "6.4.2",
+    "@fortawesome/fontawesome-free": "6.5.1",
     "@jsplumb/browser-ui": "^6.2.10",
     "@ngx-loading-bar/core": "6.0.2",
     "@ngx-loading-bar/http-client": "6.0.2",
@@ -133,7 +133,7 @@
     "karma-jasmine": "~5.1.0",
     "karma-jasmine-html-reporter": "^2.1.0",
     "karma-verbose-reporter": "0.0.8",
-    "lint-staged": "^15.1.0",
+    "lint-staged": "^15.2.0",
     "mustache": "^4.2.0",
     "ng-lint-staged": "^12.0.4",
     "ng-packagr": "^15.1.2",


Test patch:
diff --git a/streampipes-client-python/tests/client/test_endpoint.py b/streampipes-client-python/tests/client/test_endpoint.py
index c610339ee1..2f63a781ed 100644
--- a/streampipes-client-python/tests/client/test_endpoint.py
+++ b/streampipes-client-python/tests/client/test_endpoint.py
@@ -235,7 +235,7 @@ class TestStreamPipesEndpoints(TestCase):
         client.dataStreamApi.post(DataStream(**self.data_stream_get))
 
         http_session_mock.post.assert_called_with(
-            url="https://localhost:80/streampipes-backend/api/v2/streams/",
+            url="https://localhost:80/streampipes-backend/api/v2/streams",
             data=json.dumps(self.data_stream_get),
             headers={"Content-type": "application/json"},
         )
diff --git a/streampipes-client-python/tests/client/test_versions.py b/streampipes-client-python/tests/client/test_versions.py
new file mode 100644
index 0000000000..0dc78a3f3f
--- /dev/null
+++ b/streampipes-client-python/tests/client/test_versions.py
@@ -0,0 +1,48 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+from unittest import TestCase
+from unittest.mock import patch, MagicMock, call
+
+from streampipes.client import StreamPipesClient
+from streampipes.client.config import StreamPipesClientConfig
+from streampipes.client.credential_provider import StreamPipesApiKeyCredentials
+
+
+class TestVersions(TestCase):
+
+    @patch("streampipes.client.client.Session", autospec=True)
+    def test_get_development_version(self, http_session: MagicMock) -> None:
+        http_session_mock = MagicMock()
+        http_session_mock.get.return_value.json.return_value = {"backendVersion": None}
+        http_session.return_value = http_session_mock
+
+        client = StreamPipesClient(
+            client_config=StreamPipesClientConfig(
+                credential_provider=StreamPipesApiKeyCredentials(username="user", api_key="key"),
+                host_address="localhost"
+            )
+        )
+
+        result = client.versionApi.get("")
+
+        http_session.assert_has_calls(
+            [call().get(url="https://localhost:80/streampipes-backend/api/v2/info/versions")],
+            any_order=True
+        )
+
+        self.assertEqual("development", result.backend_version)
diff --git a/streampipes-extensions-management/src/test/java/org/apache/streampipes/extensions/management/locales/LabelGeneratorTest.java b/streampipes-extensions-management/src/test/java/org/apache/streampipes/extensions/management/locales/LabelGeneratorTest.java
new file mode 100644
index 0000000000..5e193da3a8
--- /dev/null
+++ b/streampipes-extensions-management/src/test/java/org/apache/streampipes/extensions/management/locales/LabelGeneratorTest.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.extensions.management.locales;
+
+import org.apache.streampipes.model.base.NamedStreamPipesEntity;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+public class LabelGeneratorTest {
+
+  private static final String TEST_APP_ID = "test-app-id";
+
+  @Test
+  public void getElementDescriptionThrowExceptiojn() {
+    var labelGenerator = getLabelGeneratorWithoutLocalesFile();
+    assertThrows(IOException.class, labelGenerator::getElementDescription);
+  }
+
+  @Test
+  public void getElementDescriptionReturnsCorrectDescription() throws IOException {
+    var expectedDescription = "test-description";
+    var properties = getProperties(LabelGenerator.DESCRIPTION, expectedDescription);
+
+    var labelGenerator = getLabelGeneratorWithProperties(properties);
+
+    assertEquals(expectedDescription, labelGenerator.getElementDescription());
+  }
+
+  @Test
+  public void getElementTitleThrowExceptiojn() {
+    var labelGenerator = getLabelGeneratorWithoutLocalesFile();
+    assertThrows(IOException.class, labelGenerator::getElementTitle);
+  }
+
+  @Test
+  public void getElementTitleReturnsCorrectDescription() throws IOException {
+    var expectedTitle = "test-title";
+    var properties = getProperties(LabelGenerator.TITLE, expectedTitle);
+
+    var labelGenerator = getLabelGeneratorWithProperties(properties);
+
+    assertEquals(expectedTitle, labelGenerator.getElementTitle());
+  }
+
+
+  private LabelGenerator getLabelGeneratorWithoutLocalesFile() {
+    var mockDescription = Mockito.mock(NamedStreamPipesEntity.class);
+    when(mockDescription.getAppId()).thenReturn(TEST_APP_ID);
+
+    var labelGenerator = new LabelGenerator(mockDescription);
+    var labelGeneratorMock = spy(labelGenerator);
+    doReturn(false).when(labelGeneratorMock)
+                   .existsLocalesFile();
+    return labelGeneratorMock;
+  }
+
+  private LabelGenerator getLabelGeneratorWithProperties(Properties properties) throws IOException {
+    var mockDescription = Mockito.mock(NamedStreamPipesEntity.class);
+    when(mockDescription.getAppId()).thenReturn(TEST_APP_ID);
+
+    var labelGenerator = new LabelGenerator(mockDescription);
+    var labelGeneratorMock = spy(labelGenerator);
+    doReturn(properties).when(labelGeneratorMock)
+                        .checkIfResourceFileExistsAndMakeProperties();
+    return labelGeneratorMock;
+  }
+
+  private Properties getProperties(String key, String value) {
+    var result = new Properties();
+    result.setProperty(TEST_APP_ID + LabelGenerator.DELIMITER + key, value);
+
+    return result;
+  }
+}
\ No newline at end of file