diff --git a/include/ccaosdb.h b/include/ccaosdb.h
index 4704c22ddd2235bbbe979198e48b45a43a4a7d6c..91ca1fad2fe843e3ea8e8f4cd11cf901eb4b6247 100644
--- a/include/ccaosdb.h
+++ b/include/ccaosdb.h
@@ -419,6 +419,12 @@ int caosdb_entity_message_get_code(caosdb_entity_message *message, int *out);
 int caosdb_entity_message_get_description(caosdb_entity_message *message, char **out);
 
 // TODO(fspreck) getters for value and datatypes
+int caosdb_entity_value_is_null(caosdb_entity_value *value, bool *out);
+int caosdb_entity_value_is_string(caosdb_entity_value *value, bool *out);
+int caosdb_entity_value_is_double(caosdb_entity_value *value, bool *out);
+int caosdb_entity_value_is_integer(caosdb_entity_value *value, bool *out);
+int caosdb_entity_value_is_bool(caosdb_entity_value *value, bool *out);
+int caosdb_entity_value_is_list(caosdb_entity_value *value, bool *out);
 
 // CONSTRUCTORS AND DESTRUCTORS
 int caosdb_entity_create_entity(caosdb_entity_entity *out);
@@ -478,7 +484,7 @@ int caosdb_entity_property_set_value(caosdb_entity_property *property, caosdb_en
 int caosdb_entity_parent_set_id(caosdb_entity_parent *parent, const char *id);
 int caosdb_entity_parent_set_name(caosdb_entity_parent *parent, const char *name);
 
-// TODO(fspreck) setters for value and datatype
+// TODO(fspreck) setters for datatype
 
 #ifdef __cplusplus
 }
diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp
index fce4f969779fb1dbb6ee8cdd00642347b3b1e913..2b10c7ac17f1a89b1157b0a050252b8e447a5e57 100644
--- a/test/test_ccaosdb.cpp
+++ b/test/test_ccaosdb.cpp
@@ -145,6 +145,26 @@ TEST_F(test_ccaosdb, test_value) {
   return_code = caosdb_entity_create_double_value(&double_value, 2.7);
   EXPECT_EQ(return_code, 0);
 
+  caosdb_entity_value string_list_value;
+  const char *string_values[] = {"a", "b", "c"}; // NOLINT
+  return_code = caosdb_entity_create_string_list_value(&string_list_value, string_values, 3);
+  EXPECT_EQ(return_code, 0);
+
+  caosdb_entity_value int_list_value;
+  const int64_t int_values[] = {1, 2, 3}; // NOLINT
+  return_code = caosdb_entity_create_int_list_value(&int_list_value, int_values, 3);
+  EXPECT_EQ(return_code, 0);
+
+  caosdb_entity_value double_list_value;
+  const double double_values[] = {1.1, 2.2, 3.3}; // NOLINT
+  return_code = caosdb_entity_create_double_list_value(&double_list_value, double_values, 3);
+  EXPECT_EQ(return_code, 0);
+
+  caosdb_entity_value bool_list_value;
+  const bool bool_values[] = {true, false, false}; // NOLINT
+  return_code = caosdb_entity_create_bool_list_value(&bool_list_value, bool_values, 3);
+  EXPECT_EQ(return_code, 0);
+
   // TODO(fspreck) Test is... and as... functions
 
   return_code = caosdb_entity_delete_value(&string_value);
@@ -155,6 +175,14 @@ TEST_F(test_ccaosdb, test_value) {
   EXPECT_EQ(return_code, 0);
   return_code = caosdb_entity_delete_value(&double_value);
   EXPECT_EQ(return_code, 0);
+  return_code = caosdb_entity_delete_value(&string_list_value);
+  EXPECT_EQ(return_code, 0);
+  return_code = caosdb_entity_delete_value(&int_list_value);
+  EXPECT_EQ(return_code, 0);
+  return_code = caosdb_entity_delete_value(&double_list_value);
+  EXPECT_EQ(return_code, 0);
+  return_code = caosdb_entity_delete_value(&bool_list_value);
+  EXPECT_EQ(return_code, 0);
 }
 
 TEST_F(test_ccaosdb, test_entity) {