diff --git a/pom.xml b/pom.xml
index 8cf7bd35d528e6fb354b1229bb1a0f8f25d7768d..00ff76fa41304abd8fb88f512011543fc517977a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -199,7 +199,7 @@
             <plugin>
                 <groupId>org.openapitools</groupId>
                 <artifactId>openapi-generator-maven-plugin</artifactId>
-                <version>5.4.0</version>
+                <version>6.0.0</version>
                 <executions>
                     <execution>
                         <goals>
@@ -218,6 +218,7 @@
                             </modelPackage>
                             <configOptions>
                                 <sourceFolder>src/main/kotlin</sourceFolder>
+                                <documentationProvider>none</documentationProvider>
                                 <dateLibrary>java8</dateLibrary>
                                 <interfaceOnly>true</interfaceOnly>
                                 <useTags>true</useTags>
diff --git a/src/main/kotlin/fr/gouv/stopc/submissioncode/controller/RestExceptionHandler.kt b/src/main/kotlin/fr/gouv/stopc/submissioncode/controller/RestExceptionHandler.kt
index 4847ab7ddeeea55b34040fe0b276677a3ba0214e..0b22c1fc729c7a74fd70bc2cd8c2e11e2362a92a 100644
--- a/src/main/kotlin/fr/gouv/stopc/submissioncode/controller/RestExceptionHandler.kt
+++ b/src/main/kotlin/fr/gouv/stopc/submissioncode/controller/RestExceptionHandler.kt
@@ -1,8 +1,8 @@
 package fr.gouv.stopc.submissioncode.controller
 
 import com.fasterxml.jackson.databind.exc.MismatchedInputException
+import fr.gouv.stopc.submissioncode.api.model.ErrorDetails
 import fr.gouv.stopc.submissioncode.api.model.ErrorResponse
-import fr.gouv.stopc.submissioncode.api.model.ErrorResponseErrors
 import org.slf4j.LoggerFactory.getLogger
 import org.springframework.http.HttpHeaders
 import org.springframework.http.HttpStatus
@@ -38,9 +38,9 @@ class RestExceptionHandler(private val servletRequest: HttpServletRequest) : Res
     ): ResponseEntity<Any> {
         return badRequestAndLogErrors(
             ex.fieldErrors.map {
-                ErrorResponseErrors(it.field, it.code, it.defaultMessage)
+                ErrorDetails(it.field, it.code ?: "", it.defaultMessage ?: "")
             } + ex.globalErrors.map {
-                ErrorResponseErrors("", it.code, it.defaultMessage)
+                ErrorDetails("", it.code ?: "", it.defaultMessage ?: "")
             }
         )
     }
@@ -48,9 +48,9 @@ class RestExceptionHandler(private val servletRequest: HttpServletRequest) : Res
     @ExceptionHandler
     fun handle(ex: ConstraintViolationException): ResponseEntity<Any> {
         val errors = ex.constraintViolations.map {
-            ErrorResponseErrors(
+            ErrorDetails(
                 field = it.propertyPath.toString(),
-                code = it.constraintDescriptor.annotation.annotationClass.simpleName,
+                code = it.constraintDescriptor.annotation.annotationClass.java.simpleName,
                 message = it.message
             )
         }
@@ -65,25 +65,25 @@ class RestExceptionHandler(private val servletRequest: HttpServletRequest) : Res
     ): ResponseEntity<Any> {
         val cause = ex.cause
         val error = if (cause is MismatchedInputException) {
-            ErrorResponseErrors(
+            ErrorDetails(
                 field = cause.path
                     .map { if (it.fieldName != null) ".${it.fieldName}" else "[${it.index}]" }
                     .joinToString("")
                     .removePrefix("."),
                 code = "HttpMessageNotReadable",
-                message = ex.rootCause!!.message
+                message = ex.rootCause?.message ?: ""
             )
         } else {
-            ErrorResponseErrors(
+            ErrorDetails(
                 field = "",
-                code = ex::class.simpleName,
-                message = ex.message
+                code = ex::class.java.simpleName,
+                message = ex.message ?: ""
             )
         }
         return badRequestAndLogErrors(listOf(error))
     }
 
-    private fun badRequestAndLogErrors(errors: List<ErrorResponseErrors>): ResponseEntity<Any> {
+    private fun badRequestAndLogErrors(errors: List<ErrorDetails>): ResponseEntity<Any> {
         val errorResponseBody = ErrorResponse(
             status = HttpStatus.BAD_REQUEST.value(),
             error = HttpStatus.BAD_REQUEST.reasonPhrase,
diff --git a/src/main/resources/openapi-errors-v1.yml b/src/main/resources/openapi-errors-v1.yml
index 330d6f4e43b732dd420f325f52d8dff6d4f0c015..415da46f34049e98f8f808e967509835d34f1625 100644
--- a/src/main/resources/openapi-errors-v1.yml
+++ b/src/main/resources/openapi-errors-v1.yml
@@ -42,6 +42,23 @@ components:
             path: /api/v1/resource
             timestamp: "2021-06-01T11:28:23.603Z"
   schemas:
+    ErrorDetails:
+      type: object
+      description: details about the error
+      properties:
+        field:
+          type: string
+          description: the field name having an error
+        code:
+          type: string
+          description: an error code
+        message:
+          type: string
+          description: an error message
+      required:
+        - field
+        - code
+        - message
     ErrorResponse:
       type: object
       properties:
@@ -64,18 +81,7 @@ components:
         errors:
           type: array
           items:
-            type: object
-            description: details about the error
-            properties:
-              field:
-                type: string
-                description: the field name having an error
-              code:
-                type: string
-                description: an error code
-              message:
-                type: string
-                description: an error message
+            $ref: "#/components/schemas/ErrorDetails"
           minLength: 1
       required:
         - status