@ExecuteOn(TaskExecutors.IO)
    @Get(uri = "{key}")
    @Operation(tags = {"KV"}, summary = "Get value for a key")
    public TypedValue get(
        @Parameter(description = "The namespace id") @PathVariable String namespace,
        @Parameter(description = "The key") @PathVariable String key
    ) throws IOException, URISyntaxException, ResourceExpiredException {
        KVValue wrapper = kvStore(namespace)
            .getValue(key)
            .orElseThrow(() -> new NoSuchElementException("No value found for key '" + key + "' in namespace '" + namespace + "'"));
        Object value = wrapper.value();
        return new TypedValue(KVType.from(value), value);
    }
@Test
    void getNotFound() {
        HttpClientResponseException httpClientResponseException = Assertions.assertThrows(HttpClientResponseException.class, () -> client.toBlocking().retrieve(HttpRequest.GET("/api/v1/namespaces/" + NAMESPACE + "/kv/my-key")));
        assertThat(httpClientResponseException.getStatus(), is(HttpStatus.NOT_FOUND));
        assertThat(httpClientResponseException.getMessage(), is("Not Found: No value found for key 'my-key' in namespace '" + NAMESPACE + "'"));
    }