diff --git a/src/coscine/resource.py b/src/coscine/resource.py
index f54570dede762ad69cf5cc924d4b3b7e8da45988..97497859b15ab982031162b956adc9b395d1be98 100644
--- a/src/coscine/resource.py
+++ b/src/coscine/resource.py
@@ -1242,6 +1242,48 @@ class FileObject:
             raise ValueError("unrecognized metadata format")
         self.resource.update_metadata(metadata)
 
+    def post_metadata(self, metadata: MetadataForm | dict | rdflib.Graph) -> None:
+        """
+        Creates metadata for a file object for the first time.
+        There shall be no metadata assigned to the file already - in that
+        case use put_metadata()!
+        """
+        if isinstance(metadata, MetadataForm):
+            metadata = metadata.serialize(self.path)
+        elif isinstance(metadata, dict):
+            raise NotImplementedError("Fill MetadataForm")
+        elif isinstance(metadata, rdflib.Graph):
+            metadata = {
+                    "path": self.path,
+                    "definition": {
+                        "content": metadata.serialize(format="turtle"),
+                        "type": "text/turtle"
+                    }
+                }
+        else: 
+            raise ValueError("unrecognized metadata format")
+        self.resource.post_metadata(metadata)
+
+    def put_metadata(self, metadata: MetadataForm | dict | rdflib.Graph) -> None:
+        """
+        Updates existing metadata of a file object. If the file object
+        does not yet have metadata, use post_metadata()!
+        """
+        if isinstance(metadata, MetadataForm):
+            metadata = metadata.serialize(self.path)
+        elif isinstance(metadata, dict):
+            raise NotImplementedError("Fill MetadataForm")
+        elif isinstance(metadata, rdflib.Graph):
+            metadata = {
+                    "path": self.path,
+                    "definition": {
+                        "content": metadata.serialize(format="turtle"),
+                        "type": "text/turtle"
+                    }
+                }
+        else: 
+            raise ValueError("unrecognized metadata format")
+        self.resource.put_metadata(metadata)
 
     def assign_metadata(self, metadata: list[FileMetadata]) -> None:
         """