diff --git a/consumer/api/c/include/asapo/consumer_c.h b/consumer/api/c/include/asapo/consumer_c.h
index cc6b665e2309e7db735612e9173918a7db2fd744..8b90e5704035653b9016ddafbf01e5f087b00e40 100644
--- a/consumer/api/c/include/asapo/consumer_c.h
+++ b/consumer/api/c/include/asapo/consumer_c.h
@@ -5,20 +5,52 @@
 typedef void* asapoConsumer;
 typedef void* asapoSourceCredentials;
 typedef void* asapoError;
-struct asapoErrorBuffer {
-  asapoError error;
-};
 typedef void* asapoMessageMeta;
 typedef void* asapoMessageData;
 
 #endif
+enum asapoErrorType {
+    kUnknownError = 0,
+    kAsapoError,
+    kHttpError,
+    kIOError,
+    kDBError,
+    kReceiverError,
+    kProducerError,
+    kConsumerError,
+    kMemoryAllocationError,
+    kEndOfFile,
+    kFabricError,
+};
+void asapoErrorExplain(const asapoError error, char *buf, size_t maxSize./modm);
+enum asapoErrorType asapoErrorGetType(const asapoError error);
+void asapoClearError(asapoError* error);
 
 asapoConsumer asapoCreateConsumer(const char* server_name,
 				  const char* source_path,
 				  _Bool has_filesysytem,
 				  asapoSourceCredentials source,
-				  asapoErrorBuffer* error);
+				  asapoError* error);
+void asapoDeleteConsumer(asapoDeleteConsumer* consumer);
+
+asapoSourceCredentials asapoCreateSourceCredentials(const char* type,
+						    const char* beamtime,
+						    const char* beamline,
+						    const char* data_source,
+						    const char* token);
+void asapoDeleteSourceCredentials(asapoSourceCredentials* cred);
+
 asapoMessageMeta asapoCreateMessageMeta();
 void asapoDeleteMessageMeta(asapoMessageMeta* meta);
 
+const char* asapoMessageMetaGetName(const asapoMessageMeta md);
+void asapoMessageMetaGetTimestamp(const asapoMessageMeta md,
+				  struct timespec* stamp);
+uint64_t asapoMessageMetaGetSize(const asapoMessageMeta md);
+uint64_t asapoMessageMetaGetId(const asapoMessageMeta md);
+const char* asapoMessageMetaGetSource(const asapoMessageMeta md);
+const char* asapoMessageMetaGetMetadata(const asapoMessageMeta md);
+uint64_t asapoMessageMetaGetBuf_id(const asapoMessageMeta md);
+uint64_t asapoMessageMetaGetDataset_Substream(const asapoMessageMeta md);
+
 #endif