diff --git a/openapi.yml b/openapi.yml
index 11ea81a..7cbf550 100644
--- a/openapi.yml
+++ b/openapi.yml
@@ -39,6 +39,7 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/HelloResponse"
+
/signing-request/{id}:
get:
tags:
@@ -71,6 +72,41 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
+
+ /signing-request-document/{id}:
+ patch:
+ tags:
+ - signing-request-document
+ summary: Change some data in a signing request document
+ operationId: patchSigningRequestDocument
+ parameters:
+ - name: id
+ in: path
+ required: true
+ description: The ID of the signing request document
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PatchSigningRequestDocumentRequest"
+ responses:
+ 204:
+ description: "Signing request document was patched"
+ 401:
+ description: "Unauthorized"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+ 404:
+ description: "Signing request document was not found"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorResponse"
+
/signing-request-document/{id}/data:
get:
tags:
@@ -180,6 +216,20 @@ components:
confirmed:
type: boolean
+ PatchSigningRequestDocumentRequest:
+ type: object
+ required:
+ - op
+ - path
+ - value
+ properties:
+ op:
+ type: string
+ path:
+ type: string
+ value:
+ type: string
+
ErrorResponse:
type: object
required:
diff --git a/pom.xml b/pom.xml
index 7ccbbb4..d327bfe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,11 @@
0.11.5
runtime
-
+
+ com.github.java-json-tools
+ json-patch
+ 1.13
+
org.projectlombok
diff --git a/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java b/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java
new file mode 100644
index 0000000..23d6725
--- /dev/null
+++ b/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java
@@ -0,0 +1,20 @@
+package ch.dlmw.swisssignchallenge.controllers;
+
+import ch.dlmw.swisssignchallenge.services.SigningRequestDocumentService;
+import lombok.AllArgsConstructor;
+import org.openapitools.api.SigningRequestDocumentApi;
+import org.openapitools.model.PatchSigningRequestDocumentRequest;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@AllArgsConstructor
+public class SigningRequestDocumentController implements SigningRequestDocumentApi {
+ private final SigningRequestDocumentService signingRequestDocumentService;
+
+ @Override
+ public ResponseEntity patchSigningRequestDocument(String id, PatchSigningRequestDocumentRequest patchSigningRequestDocumentRequest) {
+ signingRequestDocumentService.patchSigningRequestDocument(id, patchSigningRequestDocumentRequest);
+ return ResponseEntity.noContent().build();
+ }
+}
diff --git a/src/main/java/ch/dlmw/swisssignchallenge/filters/JwtRequestFilter.java b/src/main/java/ch/dlmw/swisssignchallenge/filters/JwtRequestFilter.java
index b52edac..3f326ef 100644
--- a/src/main/java/ch/dlmw/swisssignchallenge/filters/JwtRequestFilter.java
+++ b/src/main/java/ch/dlmw/swisssignchallenge/filters/JwtRequestFilter.java
@@ -63,8 +63,8 @@ public class JwtRequestFilter extends OncePerRequestFilter {
filterChain.doFilter(request, response);
} catch (Exception e) {
response.setContentType("application/json");
- response.setStatus(HttpStatus.BAD_REQUEST.value());
- response.getWriter().write(objectMapper.writeValueAsString(new ErrorResponse("Couldn't authenticate", HttpStatus.BAD_REQUEST.value())));
+ response.setStatus(HttpStatus.UNAUTHORIZED.value());
+ response.getWriter().write(objectMapper.writeValueAsString(new ErrorResponse("Couldn't authenticate", HttpStatus.UNAUTHORIZED.value())));
}
}
diff --git a/src/main/java/ch/dlmw/swisssignchallenge/services/SigningRequestDocumentService.java b/src/main/java/ch/dlmw/swisssignchallenge/services/SigningRequestDocumentService.java
new file mode 100644
index 0000000..7e2a59f
--- /dev/null
+++ b/src/main/java/ch/dlmw/swisssignchallenge/services/SigningRequestDocumentService.java
@@ -0,0 +1,7 @@
+package ch.dlmw.swisssignchallenge.services;
+
+import org.openapitools.model.PatchSigningRequestDocumentRequest;
+
+public interface SigningRequestDocumentService {
+ void patchSigningRequestDocument(String id, PatchSigningRequestDocumentRequest patchSigningRequestDocumentRequest);
+}
diff --git a/src/main/java/ch/dlmw/swisssignchallenge/services/impl/SigningRequestDocumentServiceImpl.java b/src/main/java/ch/dlmw/swisssignchallenge/services/impl/SigningRequestDocumentServiceImpl.java
new file mode 100644
index 0000000..ece174c
--- /dev/null
+++ b/src/main/java/ch/dlmw/swisssignchallenge/services/impl/SigningRequestDocumentServiceImpl.java
@@ -0,0 +1,24 @@
+package ch.dlmw.swisssignchallenge.services.impl;
+
+import ch.dlmw.swisssignchallenge.repositories.SigningRequestDocumentRepository;
+import ch.dlmw.swisssignchallenge.services.SigningRequestDocumentService;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.AllArgsConstructor;
+import org.openapitools.model.PatchSigningRequestDocumentRequest;
+import org.springframework.stereotype.Service;
+
+import java.util.UUID;
+
+@Service
+@AllArgsConstructor
+public class SigningRequestDocumentServiceImpl implements SigningRequestDocumentService {
+ private final SigningRequestDocumentRepository signingRequestDocumentRepository;
+ private final ObjectMapper objectMapper;
+
+ @Override
+ public void patchSigningRequestDocument(String id, PatchSigningRequestDocumentRequest patchSigningRequestDocumentRequest) {
+ var document = signingRequestDocumentRepository.findById(UUID.fromString(id)).orElseThrow();
+
+ System.out.println(document.isConfirmed());
+ }
+}