diff --git a/TD4/src/main/java/fr/miage23/filestore/api/dto/InputNodeDto.java b/TD4/src/main/java/fr/miage23/filestore/api/dto/InputNodeDto.java
index 8ac12404e109ff1a7c28a495a2750c3fe213d47c..c9233ddb0f4065ce4e13fe5e19ac6c7cd240033b 100644
--- a/TD4/src/main/java/fr/miage23/filestore/api/dto/InputNodeDto.java
+++ b/TD4/src/main/java/fr/miage23/filestore/api/dto/InputNodeDto.java
@@ -1,5 +1,6 @@
 package fr.miage23.filestore.api.dto;
 
+import fr.miage23.filestore.api.validation.Filename;
 import jakarta.validation.constraints.Pattern;
 import jakarta.validation.constraints.Size;
 import jakarta.ws.rs.FormParam;
@@ -12,7 +13,7 @@ public class InputNodeDto {
 
     @FormParam("name")
     @PartType(MediaType.TEXT_PLAIN)
-    @Pattern(regexp = "^[^*&%/]+$")
+    @Filename
     private String name;
     @FormParam("data")
     @PartType(MediaType.APPLICATION_OCTET_STREAM)
diff --git a/TD4/src/main/java/fr/miage23/filestore/api/dto/POSTNodeDto.java b/TD4/src/main/java/fr/miage23/filestore/api/dto/POSTNodeDto.java
index 3ee39708caf59c335556e03f2e5159015d691f38..758350cd2a1476b065a697078c650b8bb8613791 100644
--- a/TD4/src/main/java/fr/miage23/filestore/api/dto/POSTNodeDto.java
+++ b/TD4/src/main/java/fr/miage23/filestore/api/dto/POSTNodeDto.java
@@ -5,12 +5,8 @@ import fr.miage23.filestore.TypeNode;
 public class POSTNodeDto {
 
     private String id = null;
-    private String name = null;
-    private TypeNode type = null;
 
-    public POSTNodeDto(String id, String name, TypeNode type) {
+    public POSTNodeDto(String id) {
         this.id = id;
-        this.name = name;
-        this.type = type;
     }
 }
diff --git a/TD4/src/main/java/fr/miage23/filestore/api/filter/VersionFilter.java b/TD4/src/main/java/fr/miage23/filestore/api/filter/VersionFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..92bb75354aaedd0cc65d9229a4411cdda45aaed8
--- /dev/null
+++ b/TD4/src/main/java/fr/miage23/filestore/api/filter/VersionFilter.java
@@ -0,0 +1,17 @@
+package fr.miage23.filestore.api.filter;
+
+import jakarta.ws.rs.container.ContainerRequestContext;
+import jakarta.ws.rs.container.ContainerResponseContext;
+import jakarta.ws.rs.container.ContainerResponseFilter;
+import jakarta.ws.rs.ext.Provider;
+
+@Provider
+public class VersionFilter implements ContainerResponseFilter {
+
+    private static final String VERSION = "1.0.0-SNAPSHOT";
+
+    @Override
+    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
+        responseContext.getHeaders().add("X-FILESTORE-VERSION", VERSION);
+    }
+}
diff --git a/TD4/src/main/java/fr/miage23/filestore/api/resources/NodesResource.java b/TD4/src/main/java/fr/miage23/filestore/api/resources/NodesResource.java
index 202cb7cddb41752a8cf8ca339f55727de0546baf..5d4e53374f88311ee1a5ef5b3adff4dcf6e4ec16 100644
--- a/TD4/src/main/java/fr/miage23/filestore/api/resources/NodesResource.java
+++ b/TD4/src/main/java/fr/miage23/filestore/api/resources/NodesResource.java
@@ -141,7 +141,7 @@ public class NodesResource {
         Node node = service.get(newid);
 
         return Response.ok(gson.toJson(
-                        (new POSTNodeDto(node.getId(), node.getName(), node.getType())),
+                        (new POSTNodeDto(node.getId())),
                         POSTNodeDto.class),
                 MediaType.APPLICATION_JSON).build();
     }
@@ -173,7 +173,7 @@ public class NodesResource {
                 .create();
         Node node = service.get(newid);
         return Response.ok(gson.toJson(
-                        (new POSTNodeDto(node.getId(), node.getName(), node.getType())),
+                        (new POSTNodeDto(node.getId())),
                         POSTNodeDto.class),
                 MediaType.APPLICATION_JSON).build();
     }
diff --git a/TD4/src/main/java/fr/miage23/filestore/api/validation/Filename.java b/TD4/src/main/java/fr/miage23/filestore/api/validation/Filename.java
index c11e79e7c18c2b66681699fce14e13191560134a..1d53b6337cf47e86870c0c74c4078ce61556a3c7 100644
--- a/TD4/src/main/java/fr/miage23/filestore/api/validation/Filename.java
+++ b/TD4/src/main/java/fr/miage23/filestore/api/validation/Filename.java
@@ -9,12 +9,12 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-@Target({ElementType.FIELD, ElementType.PARAMETER})
 @Constraint(validatedBy={})
-@Retention(RetentionPolicy.RUNTIME)
 @Pattern(regexp=ValidationPattern.FILE_PATTERN)
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD, ElementType.PARAMETER})
 public @interface Filename {
-    String message() default "{invalid.filename_FR}";
+    String message() default "{invalid.filename}";
     Class<?>[] groups() default {};
     Class<? extends Payload>[] payload() default {};
 }
diff --git a/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java b/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java
index 96cbd79a07686e82f050c796455a5031068e0466..465b82b0dc3a484740d39c992ccaaba7754f91c2 100644
--- a/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java
+++ b/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java
@@ -1,6 +1,6 @@
 package fr.miage23.filestore.api.validation;
 
 public class ValidationPattern {
-    public static final String FILE_PATTERN = "^[^*&%/]+$";
+    public static final String FILE_PATTERN = "^[^*&%/\\~]+$";
 }
 
diff --git a/TD4/src/main/resources/ValidationMessages.properties b/TD4/src/main/resources/ValidationMessages.properties
index 080da2de5e48fed2c6da5b1839bdf3fcbdda73c7..a58bc6359acb30ffa67e0ccf9b6d735185ef54da 100644
--- a/TD4/src/main/resources/ValidationMessages.properties
+++ b/TD4/src/main/resources/ValidationMessages.properties
@@ -1,7 +1 @@
-invalid.filename_FR=Le nom du fichier contient des caract�res interdits
-invalid.filename_EN=The filename contains forbidden characters
-invalid.filename_ES=El nombre del archivo contiene caracteres no permitidos
-invalid.filename_DE=Der Dateiname enth�lt unzul�ssige Zeichen
-invalid.filename_IT=Il nome del file contiene caratteri non consentiti
-invalid.filename_NL=De bestandsnaam bevat verboden tekens
-invalid.filename_PT=O nome do arquivo cont�m caracteres proibidos
+invalid.filename=Le nom du fichier contient des caract�res interdits