diff --git a/pom.xml b/pom.xml
index a4326792681c1674bc8a0365a1d4f7448664bee9..146670110e4407f810b479e8cb07e0425c7987b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.9.0</version>
+                <version>3.8.1</version>
                 <inherited>true</inherited>
                 <configuration>
                   <release>11</release>
diff --git a/src/main/java/fr/ulille/iut/tva/Main.java b/src/main/java/fr/ulille/iut/tva/Main.java
index 62da555ebf892c9910b55e2700400f5229364411..3c0e88152442dee1696bacd25ced19a0fba0dc8d 100644
--- a/src/main/java/fr/ulille/iut/tva/Main.java
+++ b/src/main/java/fr/ulille/iut/tva/Main.java
@@ -16,7 +16,7 @@ import java.util.logging.Logger;
  */
 public class Main {
     // Base URI the Grizzly HTTP server will listen on
-    public static final String BASE_URI = "http://localhost:8080/myapp/";
+    public static final String BASE_URI = "http://localhost:8080/api/v1/";
 
     /**
      * Starts Grizzly HTTP server exposing JAX-RS resources defined in this application.
diff --git a/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java b/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..7547e472034b88356e6ed5985fca7a19d1f78f02
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
@@ -0,0 +1,34 @@
+package fr.ulille.iut.tva.dto;
+
+import jakarta.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class InfoTauxDto {
+    private String label;
+    private double taux;
+    
+    public InfoTauxDto() {}
+
+    public InfoTauxDto(String label, double taux) {
+        this.label = label;
+        this.taux = taux;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+    public double getTaux() {
+        return taux;
+    }
+
+    public void setTaux(double taux) {
+        this.taux = taux;
+    }
+
+
+}
diff --git a/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java b/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java
new file mode 100644
index 0000000000000000000000000000000000000000..831b2f48002cf61e51463973737055abb734d74d
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java
@@ -0,0 +1,12 @@
+package fr.ulille.iut.tva.ressource;
+
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Response;
+
+public class NiveauTvaInexistantException extends WebApplicationException {
+	private static final long serialVersionUID = 939875418210403804L;
+
+	public NiveauTvaInexistantException() {
+        super(Response.status(Response.Status.NOT_ACCEPTABLE).entity("Niveau de TVA inexistant").build());
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java b/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
index 4c63ca69564a00810016eb92cc55ec8116b80faa..8decb9e5e6f1d1d52cf5174bcbe434d99abd7676 100644
--- a/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
+++ b/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
@@ -1,12 +1,74 @@
 package fr.ulille.iut.tva.ressource;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import fr.ulille.iut.tva.dto.InfoTauxDto;
 import fr.ulille.iut.tva.service.CalculTva;
 import fr.ulille.iut.tva.service.TauxTva;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.QueryParam;
 
 /**
  * TvaRessource
  */
+@Path("tva")
 public class TvaRessource {
-    private CalculTva calculTva = new CalculTva();
+	private CalculTva calculTva = new CalculTva();
+
+
+	@GET
+	@Path("tauxpardefaut")
+	public double getValeurTauxParDefaut() {
+		try {
+			return TauxTva.NORMAL.taux;			
+		} catch (Exception e) {
+			throw new NiveauTvaInexistantException();
+		}
+	}
+
+	@GET
+	@Path("valeur/{niveauTva}")
+	public double getValeurTaux(@PathParam("niveauTva") String niveau) {
+		try {
+			return TauxTva.valueOf(niveau.toUpperCase()).taux;		
+		} catch (Exception e) {
+			throw new NiveauTvaInexistantException();
+		}
+	}
+
+
+	@GET
+	@Path("/{montantTotal}")
+	public double getMontantTotal(@PathParam("montantTotal") String niveau, @QueryParam("somme") int somme) {
+		return (new CalculTva()).calculerMontant(TauxTva.valueOf(niveau.toUpperCase()) , somme);
+	}
+	
+    @GET
+    @Path("lestaux")
+    public List<InfoTauxDto> getInfoTaux() {
+      ArrayList<InfoTauxDto> result = new ArrayList<InfoTauxDto>();
+      for ( TauxTva t : TauxTva.values() ) {
+        result.add(new InfoTauxDto(t.name(), t.taux));
+      }
+      return result;
+    }
+    
+    @GET
+    @Path("details/{taux}")
+    public List<String> getDetail(@PathParam("taux") String niveau, @QueryParam("somme") int somme) {
+		List<String> res = new ArrayList<String>();
+		double montantTotal =  (new CalculTva()).calculerMontant(TauxTva.valueOf(niveau.toUpperCase()) , somme);
+    	res.add("Montant total: " + montantTotal ) ;
+		double montantTVA = somme * (TauxTva.valueOf(niveau.toUpperCase()).taux / 100);
+    	res.add("Montant TVA: " + montantTVA     );
+    	res.add("Somme: " + somme);
+    	res.add("tauxLabel: " + TauxTva.valueOf(niveau.toUpperCase())      );	
+    	res.add("tauxValue: " + TauxTva.valueOf(niveau.toUpperCase()).taux );	
+
+    	return res;
+    }
 
 }