diff --git a/apps/onboarding-cdc/src/main/openapi/onboarding_functions.json b/apps/onboarding-cdc/src/main/openapi/onboarding_functions.json
index ecef61d09..ebb6b79bb 100644
--- a/apps/onboarding-cdc/src/main/openapi/onboarding_functions.json
+++ b/apps/onboarding-cdc/src/main/openapi/onboarding_functions.json
@@ -506,7 +506,8 @@
"DELEGATE",
"SUB_DELEGATE",
"OPERATOR",
- "ADMIN_EA"
+ "ADMIN_EA",
+ "ADMIN_EA_IO"
],
"type": "string"
},
diff --git a/apps/onboarding-functions/pom.xml b/apps/onboarding-functions/pom.xml
index 08f08b176..287994259 100644
--- a/apps/onboarding-functions/pom.xml
+++ b/apps/onboarding-functions/pom.xml
@@ -23,7 +23,7 @@
true
3.1.2
1.5.5.Final
- 0.6.6
+ 0.6.7
diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java
index e951f8764..93e7ca76f 100644
--- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java
+++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java
@@ -324,10 +324,10 @@ private InstitutionsResponse getInstitutions(Institution institution) {
InstitutionsResponse institutionsResponse;
if(StringUtils.isNotBlank(institution.getTaxCode())) {
- institutionsResponse = institutionApi.getInstitutionsUsingGET(institution.getTaxCode(), institution.getSubunitCode(), null, null);
+ institutionsResponse = institutionApi.getInstitutionsUsingGET(institution.getTaxCode(), institution.getSubunitCode(), null, null, null);
} else {
String origin = Objects.nonNull(institution.getOrigin()) ? institution.getOrigin().getValue() : null;
- institutionsResponse = institutionApi.getInstitutionsUsingGET(null, null, origin, institution.getOriginId());
+ institutionsResponse = institutionApi.getInstitutionsUsingGET(null, null, origin, institution.getOriginId(), null);
}
return institutionsResponse;
}
diff --git a/apps/onboarding-functions/src/main/openapi/core.json b/apps/onboarding-functions/src/main/openapi/core.json
index 74a56890e..530862aeb 100644
--- a/apps/onboarding-functions/src/main/openapi/core.json
+++ b/apps/onboarding-functions/src/main/openapi/core.json
@@ -788,6 +788,15 @@
"schema" : {
"type" : "string"
}
+ }, {
+ "name" : "productId",
+ "in" : "query",
+ "description" : "productId",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "string"
+ }
} ],
"responses" : {
"200" : {
@@ -2086,7 +2095,7 @@
"style" : "simple",
"schema" : {
"type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP", "GPU" ]
+ "enum" : [ "AS", "CON", "GPU", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP" ]
}
} ],
"responses" : {
@@ -2964,7 +2973,7 @@
},
"institutionType" : {
"type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP", "GPU" ]
+ "enum" : [ "AS", "CON", "GPU", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP" ]
},
"subunitCode" : {
"type" : "string"
@@ -3226,7 +3235,7 @@
},
"institutionType" : {
"type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP", "GPU" ]
+ "enum" : [ "AS", "CON", "GPU", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP" ]
},
"onboarding" : {
"type" : "array",
@@ -3440,7 +3449,7 @@
},
"institutionType" : {
"type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP", "GPU" ]
+ "enum" : [ "AS", "CON", "GPU", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP" ]
},
"ivassCode" : {
"type" : "string"
@@ -3817,7 +3826,7 @@
},
"role" : {
"type" : "string",
- "enum" : [ "DELEGATE", "MANAGER", "OPERATOR", "SUB_DELEGATE" ]
+ "enum" : [ "ADMIN_EA", "ADMIN_EA_IO", "DELEGATE", "MANAGER", "OPERATOR", "SUB_DELEGATE" ]
},
"roleLabel" : {
"type" : "string"
diff --git a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java
index 9f9104132..d8a4a2f6d 100644
--- a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java
+++ b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java
@@ -36,7 +36,9 @@
import org.openapi.quarkus.party_registry_proxy_json.api.InfocamereApi;
import org.openapi.quarkus.party_registry_proxy_json.api.NationalRegistriesApi;
import org.openapi.quarkus.party_registry_proxy_json.api.UoApi;
-import org.openapi.quarkus.party_registry_proxy_json.model.*;
+import org.openapi.quarkus.party_registry_proxy_json.model.AOOResource;
+import org.openapi.quarkus.party_registry_proxy_json.model.InstitutionResource;
+import org.openapi.quarkus.party_registry_proxy_json.model.UOResource;
import org.openapi.quarkus.user_registry_json.api.UserApi;
import org.openapi.quarkus.user_registry_json.model.UserResource;
import org.openapi.quarkus.user_registry_json.model.WorkContactResource;
@@ -122,7 +124,7 @@ void createInstitutionAndPersistInstitutionId_shouldThrowExceptionIfMoreInstitut
InstitutionsResponse response = new InstitutionsResponse();
response.setInstitutions(List.of(new InstitutionResponse(), new InstitutionResponse()));
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- onboarding.getInstitution().getSubunitCode(), null, null))
+ onboarding.getInstitution().getSubunitCode(), null, null, null))
.thenReturn(response);
assertThrows(GenericOnboardingException.class, () -> completionServiceDefault.createInstitutionAndPersistInstitutionId(onboarding));
@@ -137,7 +139,7 @@ void createInstitutionAndPersistInstitutionId_foundInstitution() {
institutionResponse.setId("actual-id");
response.setInstitutions(List.of(institutionResponse));
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- onboarding.getInstitution().getSubunitCode(), null, null))
+ onboarding.getInstitution().getSubunitCode(), null, null, null))
.thenReturn(response);
mockOnboardingUpdateAndExecuteCreateInstitution(onboarding);
@@ -156,7 +158,7 @@ void createOrRetrieveInstitutionSuccess() {
institutionResponse.setId("actual-id");
response.setInstitutions(List.of(institutionResponse));
- when(institutionApi.getInstitutionsUsingGET(institution.getTaxCode(), null, null, null))
+ when(institutionApi.getInstitutionsUsingGET(institution.getTaxCode(), null, null, null, null))
.thenReturn(response);
InstitutionResponse serviceResponse = completionServiceDefault.createOrRetrieveInstitution(onboarding);
@@ -177,7 +179,7 @@ void createOrRetrieveInstitutionFailure() {
InstitutionResponse institutionResponse = new InstitutionResponse();
response.setInstitutions(List.of(institutionResponse, institutionResponse));
- when(institutionApi.getInstitutionsUsingGET(institution.getTaxCode(), null, null, null))
+ when(institutionApi.getInstitutionsUsingGET(institution.getTaxCode(), null, null, null, null))
.thenReturn(response);
assertThrows(GenericOnboardingException.class, () -> completionServiceDefault.createOrRetrieveInstitution(onboarding));
@@ -244,7 +246,7 @@ void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreateSaAnac
InstitutionsResponse response = new InstitutionsResponse();
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- onboarding.getInstitution().getSubunitCode(), null, null))
+ onboarding.getInstitution().getSubunitCode(), null, null, null))
.thenReturn(response);
InstitutionResponse institutionResponse = dummyInstitutionResponse();
@@ -265,7 +267,7 @@ void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreateAsIvas
InstitutionsResponse response = new InstitutionsResponse();
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- onboarding.getInstitution().getSubunitCode(), null, null))
+ onboarding.getInstitution().getSubunitCode(), null, null, null))
.thenReturn(response);
InstitutionResponse institutionResponse = dummyInstitutionResponse();
@@ -285,7 +287,7 @@ void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreateAsIvas
onboarding.setInstitution(institution);
InstitutionsResponse response = new InstitutionsResponse();
- when(institutionApi.getInstitutionsUsingGET(null, null, Origin.IVASS.getValue(), "originId"))
+ when(institutionApi.getInstitutionsUsingGET(null, null, Origin.IVASS.getValue(), "originId", null))
.thenReturn(response);
InstitutionResponse institutionResponse = dummyInstitutionResponse();
@@ -306,7 +308,7 @@ void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreatePgAde(
InstitutionsResponse response = new InstitutionsResponse();
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- onboarding.getInstitution().getSubunitCode(), null, null))
+ onboarding.getInstitution().getSubunitCode(), null, null, null))
.thenReturn(response);
InstitutionResponse institutionResponse = dummyInstitutionResponse();
@@ -332,7 +334,7 @@ void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreatePaAOO(
InstitutionsResponse response = new InstitutionsResponse();
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- onboarding.getInstitution().getSubunitCode(), null, null))
+ onboarding.getInstitution().getSubunitCode(), null, null, null))
.thenReturn(response);
InstitutionResponse institutionResponse = dummyInstitutionResponse();
@@ -368,7 +370,7 @@ void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreatePaUO()
InstitutionsResponse response = new InstitutionsResponse();
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- onboarding.getInstitution().getSubunitCode(), null, null))
+ onboarding.getInstitution().getSubunitCode(), null, null, null))
.thenReturn(response);
InstitutionResponse institutionResponse = dummyInstitutionResponse();
@@ -402,7 +404,7 @@ void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreatePa() {
InstitutionsResponse response = new InstitutionsResponse();
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- null, null, null))
+ null, null, null, null))
.thenReturn(response);
InstitutionResponse institutionResponse = dummyInstitutionResponse();
@@ -434,7 +436,7 @@ void createInstitutionAndPersistInstitutionId_notFoundInstitutionAndCreate() {
InstitutionsResponse response = new InstitutionsResponse();
when(institutionApi.getInstitutionsUsingGET(onboarding.getInstitution().getTaxCode(),
- null, null, null))
+ null, null, null, null))
.thenReturn(response);
InstitutionResponse institutionResponse = dummyInstitutionResponse();
@@ -842,7 +844,7 @@ void forceInstitutionCreationFlagTrue(){
InstitutionsResponse institutionsResponse = new InstitutionsResponse();
institutionsResponse.setInstitutions(List.of(dummyInstitutionResponse()));
- when(institutionApi.getInstitutionsUsingGET(any(), any(), any(), any()))
+ when(institutionApi.getInstitutionsUsingGET(any(), any(), any(), any(), any()))
.thenReturn(institutionsResponse);
PanacheUpdate panacheUpdateMock = mock(PanacheUpdate.class);
@@ -853,7 +855,7 @@ void forceInstitutionCreationFlagTrue(){
completionServiceDefault.createInstitutionAndPersistInstitutionId(onboarding);
// then
- verify(institutionApi, times(1)).getInstitutionsUsingGET(any(), any(), any(), any());
+ verify(institutionApi, times(1)).getInstitutionsUsingGET(any(), any(), any(), any(), any());
}
@Test
diff --git a/apps/onboarding-ms/pom.xml b/apps/onboarding-ms/pom.xml
index 0531884d9..1f9ebe8cc 100644
--- a/apps/onboarding-ms/pom.xml
+++ b/apps/onboarding-ms/pom.xml
@@ -24,7 +24,7 @@
true
3.1.2
2.4.1
- 0.6.6
+ 0.6.7
diff --git a/apps/onboarding-ms/src/main/docs/openapi.json b/apps/onboarding-ms/src/main/docs/openapi.json
index 37a46bfb5..3d039b5f0 100644
--- a/apps/onboarding-ms/src/main/docs/openapi.json
+++ b/apps/onboarding-ms/src/main/docs/openapi.json
@@ -627,7 +627,7 @@
"content" : {
"application/json" : {
"schema" : {
- "$ref" : "#/components/schemas/OnboardingResponse"
+ "$ref" : "#/components/schemas/OnboardingResponseV1"
}
}
}
@@ -689,7 +689,7 @@
"schema" : {
"type" : "array",
"items" : {
- "$ref" : "#/components/schemas/OnboardingResponse"
+ "$ref" : "#/components/schemas/OnboardingResponseV1"
}
}
}
@@ -805,7 +805,7 @@
"content" : {
"application/json" : {
"schema" : {
- "$ref" : "#/components/schemas/OnboardingResponse"
+ "$ref" : "#/components/schemas/OnboardingResponseV1"
}
}
}
@@ -881,7 +881,7 @@
"content" : {
"application/json" : {
"schema" : {
- "$ref" : "#/components/schemas/OnboardingResponse"
+ "$ref" : "#/components/schemas/OnboardingResponseV1"
}
}
}
@@ -957,7 +957,7 @@
"content" : {
"application/json" : {
"schema" : {
- "$ref" : "#/components/schemas/OnboardingResponse"
+ "$ref" : "#/components/schemas/OnboardingResponseV1"
}
}
}
@@ -1807,6 +1807,222 @@
"SecurityScheme" : [ ]
} ]
}
+ },
+ "/v2/onboarding/completion" : {
+ "post" : {
+ "tags" : [ "Onboarding Controller", "internal-v1" ],
+ "summary" : "Complete onboarding request and set status to COMPLETED.",
+ "description" : "Perform onboarding as /onboarding but completing the onboarding request to COMPLETED phase.",
+ "operationId" : "onboardingCompletionV2",
+ "requestBody" : {
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingDefaultRequest"
+ }
+ }
+ }
+ },
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingResponse"
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Not Authorized"
+ },
+ "403" : {
+ "description" : "Not Allowed"
+ }
+ },
+ "security" : [ {
+ "SecurityScheme" : [ ]
+ } ]
+ }
+ },
+ "/v2/onboarding/institutionOnboardings" : {
+ "get" : {
+ "tags" : [ "support", "internal-v1", "Onboarding" ],
+ "summary" : "Get onboardings by institution taxCode, subunitCode, origin, or originId.",
+ "description" : "Returns onboardings record by institution taxCode/subunitCode/origin/originId",
+ "operationId" : "onboardingInstitutionUsingGETV2",
+ "parameters" : [ {
+ "name" : "origin",
+ "in" : "query",
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "originId",
+ "in" : "query",
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "status",
+ "in" : "query",
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingStatus"
+ }
+ }, {
+ "name" : "subunitCode",
+ "in" : "query",
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "taxCode",
+ "in" : "query",
+ "schema" : {
+ "type" : "string"
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/OnboardingResponse"
+ }
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Not Authorized"
+ },
+ "403" : {
+ "description" : "Not Allowed"
+ }
+ },
+ "security" : [ {
+ "SecurityScheme" : [ ]
+ } ],
+ "x-legacy-api" : "true"
+ }
+ },
+ "/v2/onboarding/pa/completion" : {
+ "post" : {
+ "tags" : [ "Onboarding Controller", "internal-v1" ],
+ "summary" : "Complete PA onboarding request and set status to COMPLETED.",
+ "description" : "Perform onboarding as /onboarding/pa but completing the onboarding request to COMPLETED phase.",
+ "operationId" : "onboardingPaCompletionV2",
+ "requestBody" : {
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingPaRequest"
+ }
+ }
+ }
+ },
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingResponse"
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Not Authorized"
+ },
+ "403" : {
+ "description" : "Not Allowed"
+ }
+ },
+ "security" : [ {
+ "SecurityScheme" : [ ]
+ } ]
+ }
+ },
+ "/v2/onboarding/pg/completion" : {
+ "post" : {
+ "tags" : [ "Onboarding Controller", "internal-pnpg" ],
+ "summary" : "Complete PG onboarding request on PNPG domain and set status to COMPLETED.",
+ "description" : "Perform onboarding as /onboarding/psp but completing the onboarding request to COMPLETED phase.",
+ "operationId" : "onboardingPgCompletionV2",
+ "requestBody" : {
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingPgRequest"
+ }
+ }
+ }
+ },
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingResponse"
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Not Authorized"
+ },
+ "403" : {
+ "description" : "Not Allowed"
+ }
+ },
+ "security" : [ {
+ "SecurityScheme" : [ ]
+ } ]
+ }
+ },
+ "/v2/onboarding/psp/completion" : {
+ "post" : {
+ "tags" : [ "Onboarding Controller", "internal-v1" ],
+ "summary" : "Complete PSP onboarding request and set status to COMPLETED.",
+ "description" : "Perform onboarding as /onboarding/psp but completing the onboarding request to COMPLETED phase.",
+ "operationId" : "onboardingPspCompletionV2",
+ "requestBody" : {
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingPspRequest"
+ }
+ }
+ }
+ },
+ "responses" : {
+ "200" : {
+ "description" : "OK",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/OnboardingResponse"
+ }
+ }
+ }
+ },
+ "401" : {
+ "description" : "Not Authorized"
+ },
+ "403" : {
+ "description" : "Not Allowed"
+ }
+ },
+ "security" : [ {
+ "SecurityScheme" : [ ]
+ } ]
+ }
}
},
"components" : {
@@ -2832,6 +3048,53 @@
}
}
},
+ "OnboardingResponseV1" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string"
+ },
+ "productId" : {
+ "type" : "string"
+ },
+ "workflowType" : {
+ "type" : "string"
+ },
+ "institution" : {
+ "$ref" : "#/components/schemas/InstitutionResponse"
+ },
+ "pricingPlan" : {
+ "type" : "string"
+ },
+ "users" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/UserOnboardingResponseV1"
+ }
+ },
+ "billing" : {
+ "$ref" : "#/components/schemas/BillingResponse"
+ },
+ "status" : {
+ "type" : "string"
+ },
+ "additionalInformations" : {
+ "$ref" : "#/components/schemas/AdditionalInformationsDto"
+ },
+ "userRequestUid" : {
+ "type" : "string"
+ },
+ "isAggregator" : {
+ "type" : "boolean"
+ },
+ "createdAt" : {
+ "$ref" : "#/components/schemas/LocalDateTime"
+ },
+ "updatedAt" : {
+ "$ref" : "#/components/schemas/LocalDateTime"
+ }
+ }
+ },
"OnboardingStatus" : {
"enum" : [ "REQUEST", "TOBEVALIDATED", "PENDING", "COMPLETED", "FAILED", "REJECTED", "DELETED" ],
"type" : "string"
@@ -2899,6 +3162,10 @@
"type" : "string"
},
"PartyRole" : {
+ "enum" : [ "MANAGER", "DELEGATE", "SUB_DELEGATE", "OPERATOR", "ADMIN_EA", "ADMIN_EA_IO" ],
+ "type" : "string"
+ },
+ "PartyRoleV1" : {
"enum" : [ "MANAGER", "DELEGATE", "SUB_DELEGATE", "OPERATOR", "ADMIN_EA" ],
"type" : "string"
},
@@ -3024,6 +3291,23 @@
}
}
},
+ "UserOnboardingResponseV1" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string"
+ },
+ "role" : {
+ "$ref" : "#/components/schemas/PartyRoleV1"
+ },
+ "productRole" : {
+ "type" : "string"
+ },
+ "userMailUuid" : {
+ "type" : "string"
+ }
+ }
+ },
"UserRequest" : {
"type" : "object",
"properties" : {
diff --git a/apps/onboarding-ms/src/main/docs/openapi.yaml b/apps/onboarding-ms/src/main/docs/openapi.yaml
index bad53480c..da630d8a8 100644
--- a/apps/onboarding-ms/src/main/docs/openapi.yaml
+++ b/apps/onboarding-ms/src/main/docs/openapi.yaml
@@ -456,7 +456,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/OnboardingResponse"
+ $ref: "#/components/schemas/OnboardingResponseV1"
"401":
description: Not Authorized
"403":
@@ -501,7 +501,7 @@ paths:
schema:
type: array
items:
- $ref: "#/components/schemas/OnboardingResponse"
+ $ref: "#/components/schemas/OnboardingResponseV1"
"401":
description: Not Authorized
"403":
@@ -590,7 +590,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/OnboardingResponse"
+ $ref: "#/components/schemas/OnboardingResponseV1"
"401":
description: Not Authorized
"403":
@@ -643,7 +643,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/OnboardingResponse"
+ $ref: "#/components/schemas/OnboardingResponseV1"
"401":
description: Not Authorized
"403":
@@ -699,7 +699,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/OnboardingResponse"
+ $ref: "#/components/schemas/OnboardingResponseV1"
"401":
description: Not Authorized
"403":
@@ -1328,6 +1328,160 @@ paths:
description: Not Allowed
security:
- SecurityScheme: []
+ /v2/onboarding/completion:
+ post:
+ tags:
+ - Onboarding Controller
+ - internal-v1
+ summary: Complete onboarding request and set status to COMPLETED.
+ description: Perform onboarding as /onboarding but completing the onboarding
+ request to COMPLETED phase.
+ operationId: onboardingCompletionV2
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OnboardingDefaultRequest"
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OnboardingResponse"
+ "401":
+ description: Not Authorized
+ "403":
+ description: Not Allowed
+ security:
+ - SecurityScheme: []
+ /v2/onboarding/institutionOnboardings:
+ get:
+ tags:
+ - support
+ - internal-v1
+ - Onboarding
+ summary: "Get onboardings by institution taxCode, subunitCode, origin, or originId."
+ description: Returns onboardings record by institution taxCode/subunitCode/origin/originId
+ operationId: onboardingInstitutionUsingGETV2
+ parameters:
+ - name: origin
+ in: query
+ schema:
+ type: string
+ - name: originId
+ in: query
+ schema:
+ type: string
+ - name: status
+ in: query
+ schema:
+ $ref: "#/components/schemas/OnboardingStatus"
+ - name: subunitCode
+ in: query
+ schema:
+ type: string
+ - name: taxCode
+ in: query
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: "#/components/schemas/OnboardingResponse"
+ "401":
+ description: Not Authorized
+ "403":
+ description: Not Allowed
+ security:
+ - SecurityScheme: []
+ x-legacy-api: "true"
+ /v2/onboarding/pa/completion:
+ post:
+ tags:
+ - Onboarding Controller
+ - internal-v1
+ summary: Complete PA onboarding request and set status to COMPLETED.
+ description: Perform onboarding as /onboarding/pa but completing the onboarding
+ request to COMPLETED phase.
+ operationId: onboardingPaCompletionV2
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OnboardingPaRequest"
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OnboardingResponse"
+ "401":
+ description: Not Authorized
+ "403":
+ description: Not Allowed
+ security:
+ - SecurityScheme: []
+ /v2/onboarding/pg/completion:
+ post:
+ tags:
+ - Onboarding Controller
+ - internal-pnpg
+ summary: Complete PG onboarding request on PNPG domain and set status to COMPLETED.
+ description: Perform onboarding as /onboarding/psp but completing the onboarding
+ request to COMPLETED phase.
+ operationId: onboardingPgCompletionV2
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OnboardingPgRequest"
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OnboardingResponse"
+ "401":
+ description: Not Authorized
+ "403":
+ description: Not Allowed
+ security:
+ - SecurityScheme: []
+ /v2/onboarding/psp/completion:
+ post:
+ tags:
+ - Onboarding Controller
+ - internal-v1
+ summary: Complete PSP onboarding request and set status to COMPLETED.
+ description: Perform onboarding as /onboarding/psp but completing the onboarding
+ request to COMPLETED phase.
+ operationId: onboardingPspCompletionV2
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OnboardingPspRequest"
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OnboardingResponse"
+ "401":
+ description: Not Authorized
+ "403":
+ description: Not Allowed
+ security:
+ - SecurityScheme: []
components:
schemas:
AdditionalInformationsDto:
@@ -2062,6 +2216,37 @@ components:
$ref: "#/components/schemas/LocalDateTime"
updatedAt:
$ref: "#/components/schemas/LocalDateTime"
+ OnboardingResponseV1:
+ type: object
+ properties:
+ id:
+ type: string
+ productId:
+ type: string
+ workflowType:
+ type: string
+ institution:
+ $ref: "#/components/schemas/InstitutionResponse"
+ pricingPlan:
+ type: string
+ users:
+ type: array
+ items:
+ $ref: "#/components/schemas/UserOnboardingResponseV1"
+ billing:
+ $ref: "#/components/schemas/BillingResponse"
+ status:
+ type: string
+ additionalInformations:
+ $ref: "#/components/schemas/AdditionalInformationsDto"
+ userRequestUid:
+ type: string
+ isAggregator:
+ type: boolean
+ createdAt:
+ $ref: "#/components/schemas/LocalDateTime"
+ updatedAt:
+ $ref: "#/components/schemas/LocalDateTime"
OnboardingStatus:
enum:
- REQUEST
@@ -2131,6 +2316,15 @@ components:
- PDND_INFOCAMERE
type: string
PartyRole:
+ enum:
+ - MANAGER
+ - DELEGATE
+ - SUB_DELEGATE
+ - OPERATOR
+ - ADMIN_EA
+ - ADMIN_EA_IO
+ type: string
+ PartyRoleV1:
enum:
- MANAGER
- DELEGATE
@@ -2227,6 +2421,17 @@ components:
type: string
userMailUuid:
type: string
+ UserOnboardingResponseV1:
+ type: object
+ properties:
+ id:
+ type: string
+ role:
+ $ref: "#/components/schemas/PartyRoleV1"
+ productRole:
+ type: string
+ userMailUuid:
+ type: string
UserRequest:
type: object
properties:
diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/OnboardingController.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/OnboardingController.java
index 227eb7933..fde567b18 100644
--- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/OnboardingController.java
+++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/OnboardingController.java
@@ -1,7 +1,5 @@
package it.pagopa.selfcare.onboarding.controller;
-import static it.pagopa.selfcare.onboarding.util.Utils.retrieveContractFromFormData;
-
import io.quarkus.security.Authenticated;
import io.quarkus.security.identity.CurrentIdentityAssociation;
import io.smallrye.jwt.auth.principal.DefaultJWTCallerPrincipal;
@@ -9,18 +7,11 @@
import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
import it.pagopa.selfcare.onboarding.common.WorkflowType;
import it.pagopa.selfcare.onboarding.constants.CustomError;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingDefaultRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportPspRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPaRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPgRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPspRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingUserPgRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingUserRequest;
-import it.pagopa.selfcare.onboarding.controller.request.ReasonRequest;
+import it.pagopa.selfcare.onboarding.controller.request.*;
import it.pagopa.selfcare.onboarding.controller.response.OnboardingGet;
import it.pagopa.selfcare.onboarding.controller.response.OnboardingGetResponse;
import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponse;
+import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponseV1;
import it.pagopa.selfcare.onboarding.entity.Billing;
import it.pagopa.selfcare.onboarding.entity.CheckManagerResponse;
import it.pagopa.selfcare.onboarding.entity.Onboarding;
@@ -33,24 +24,11 @@
import jakarta.inject.Inject;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
-import jakarta.ws.rs.Consumes;
-import jakarta.ws.rs.DefaultValue;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.HEAD;
-import jakarta.ws.rs.InternalServerErrorException;
-import jakarta.ws.rs.POST;
-import jakarta.ws.rs.PUT;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.*;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.SecurityContext;
-import java.io.File;
-import java.util.List;
-import java.util.Objects;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpStatus;
@@ -60,6 +38,12 @@
import org.jboss.resteasy.reactive.RestForm;
import org.jboss.resteasy.reactive.server.core.ResteasyReactiveRequestContext;
+import java.io.File;
+import java.util.List;
+import java.util.Objects;
+
+import static it.pagopa.selfcare.onboarding.util.Utils.retrieveContractFromFormData;
+
@Authenticated
@Path("/v1/onboarding")
@Tag(name = "Onboarding Controller")
@@ -191,10 +175,11 @@ public Uni onboardingPsp(@Valid OnboardingPspRequest onboard
@Tag(name = "internal-v1")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
- public Uni onboardingCompletion(@Valid OnboardingDefaultRequest onboardingRequest, @Context SecurityContext ctx) {
+ public Uni onboardingCompletion(@Valid OnboardingDefaultRequest onboardingRequest, @Context SecurityContext ctx) {
return readUserIdFromToken(ctx)
.onItem().transformToUni(userId -> onboardingService
- .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
+ .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers())
+ .map(onboardingMapper::toOnboardingResponseV1));
}
@Operation(
@@ -207,10 +192,11 @@ public Uni onboardingCompletion(@Valid OnboardingDefaultRequ
@Tag(name = "internal-v1")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
- public Uni onboardingPaCompletion(@Valid OnboardingPaRequest onboardingRequest, @Context SecurityContext ctx) {
+ public Uni onboardingPaCompletion(@Valid OnboardingPaRequest onboardingRequest, @Context SecurityContext ctx) {
return readUserIdFromToken(ctx)
.onItem().transformToUni(userId -> onboardingService
- .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
+ .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers())
+ .map(onboardingMapper::toOnboardingResponseV1));
}
@Operation(
@@ -251,10 +237,11 @@ public Uni onboardingPspImport(@Valid OnboardingImportPspReq
@Tag(name = "internal-v1")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
- public Uni onboardingPspCompletion(@Valid OnboardingPspRequest onboardingRequest, @Context SecurityContext ctx) {
+ public Uni onboardingPspCompletion(@Valid OnboardingPspRequest onboardingRequest, @Context SecurityContext ctx) {
return readUserIdFromToken(ctx)
.onItem().transformToUni(userId -> onboardingService
- .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
+ .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers())
+ .map(onboardingMapper::toOnboardingResponseV1));
}
@Operation(
@@ -267,10 +254,11 @@ public Uni onboardingPspCompletion(@Valid OnboardingPspReque
@Tag(name = "internal-pnpg")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
- public Uni onboardingPgCompletion(@Valid OnboardingPgRequest onboardingRequest, @Context SecurityContext ctx) {
+ public Uni onboardingPgCompletion(@Valid OnboardingPgRequest onboardingRequest, @Context SecurityContext ctx) {
return readUserIdFromToken(ctx)
.onItem().transformToUni(userId -> onboardingService
- .onboardingPgCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
+ .onboardingPgCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers())
+ .map(onboardingMapper::toOnboardingResponseV1));
}
@Operation(
@@ -461,12 +449,16 @@ public Uni getOnboardingPending(@PathParam(value = "onboardingId"
@Tag(name = "Onboarding")
@Produces(MediaType.APPLICATION_JSON)
@Path("/institutionOnboardings")
- public Uni> getOnboardingPending(@QueryParam(value = "taxCode") String taxCode,
+ public Uni> getOnboardingPending(@QueryParam(value = "taxCode") String taxCode,
@QueryParam(value = "subunitCode") String subunitCode,
@QueryParam(value = "origin") String origin,
@QueryParam(value = "originId") String originId,
@QueryParam(value = "status") OnboardingStatus status) {
- return onboardingService.institutionOnboardings(taxCode, subunitCode, origin, originId, status);
+ return onboardingService.institutionOnboardings(taxCode, subunitCode, origin, originId, status)
+ .map(onboardingResponses -> onboardingResponses.stream()
+ .map(onboardingMapper::toOnboardingResponseV1)
+ .toList()
+ );
}
private Onboarding fillUserId(Onboarding onboarding, String userRequestUid) {
diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/OnboardingV2Controller.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/OnboardingV2Controller.java
new file mode 100644
index 000000000..e89b0419e
--- /dev/null
+++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/OnboardingV2Controller.java
@@ -0,0 +1,156 @@
+package it.pagopa.selfcare.onboarding.controller;
+
+import io.quarkus.security.Authenticated;
+import io.quarkus.security.identity.CurrentIdentityAssociation;
+import io.smallrye.jwt.auth.principal.DefaultJWTCallerPrincipal;
+import io.smallrye.mutiny.Uni;
+import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
+import it.pagopa.selfcare.onboarding.controller.request.OnboardingDefaultRequest;
+import it.pagopa.selfcare.onboarding.controller.request.OnboardingPaRequest;
+import it.pagopa.selfcare.onboarding.controller.request.OnboardingPgRequest;
+import it.pagopa.selfcare.onboarding.controller.request.OnboardingPspRequest;
+import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponse;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.mapper.OnboardingMapper;
+import it.pagopa.selfcare.onboarding.service.OnboardingService;
+import jakarta.inject.Inject;
+import jakarta.validation.Valid;
+import jakarta.ws.rs.*;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.SecurityContext;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.eclipse.microprofile.openapi.annotations.Operation;
+import org.eclipse.microprofile.openapi.annotations.extensions.Extension;
+import org.eclipse.microprofile.openapi.annotations.tags.Tag;
+
+import java.util.List;
+
+@Authenticated
+@Path("/v2/onboarding")
+@Tag(name = "Onboarding Controller")
+@AllArgsConstructor
+@Slf4j
+public class OnboardingV2Controller {
+
+ private final OnboardingService onboardingService;
+ private final OnboardingMapper onboardingMapper;
+ @Inject
+ CurrentIdentityAssociation currentIdentityAssociation;
+
+ @Operation(
+ summary = "Complete onboarding request and set status to COMPLETED.",
+ description = "Perform onboarding as /onboarding but completing the onboarding request to COMPLETED phase.",
+ operationId = "onboardingCompletionV2"
+ )
+ @Path("/completion")
+ @POST
+ @Tag(name = "Onboarding Controller")
+ @Tag(name = "internal-v1")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public Uni onboardingCompletion(@Valid OnboardingDefaultRequest onboardingRequest, @Context SecurityContext ctx) {
+ return readUserIdFromToken(ctx)
+ .onItem().transformToUni(userId -> onboardingService
+ .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
+ }
+
+ @Operation(
+ summary = "Complete PA onboarding request and set status to COMPLETED.",
+ description =
+ "Perform onboarding as /onboarding/pa but completing the onboarding request to COMPLETED phase.",
+ operationId = "onboardingPaCompletionV2"
+ )
+ @POST
+ @Path("/pa/completion")
+ @Tag(name = "Onboarding Controller")
+ @Tag(name = "internal-v1")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public Uni onboardingPaCompletion(@Valid OnboardingPaRequest onboardingRequest, @Context SecurityContext ctx) {
+ return readUserIdFromToken(ctx)
+ .onItem().transformToUni(userId -> onboardingService
+ .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
+ }
+
+
+ @Operation(
+ summary = "Complete PSP onboarding request and set status to COMPLETED.",
+ description =
+ "Perform onboarding as /onboarding/psp but completing the onboarding request to COMPLETED phase.",
+ operationId = "onboardingPspCompletionV2"
+ )
+ @POST
+ @Path("/psp/completion")
+ @Tag(name = "Onboarding Controller")
+ @Tag(name = "internal-v1")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public Uni onboardingPspCompletion(@Valid OnboardingPspRequest onboardingRequest, @Context SecurityContext ctx) {
+ return readUserIdFromToken(ctx)
+ .onItem().transformToUni(userId -> onboardingService
+ .onboardingCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
+ }
+
+ @Operation(
+ summary = "Complete PG onboarding request on PNPG domain and set status to COMPLETED.",
+ description = "Perform onboarding as /onboarding/psp but completing the onboarding request to COMPLETED phase.",
+ operationId = "onboardingPgCompletionV2"
+ )
+ @POST
+ @Path("/pg/completion")
+ @Tag(name = "Onboarding Controller")
+ @Tag(name = "internal-pnpg")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ public Uni onboardingPgCompletion(@Valid OnboardingPgRequest onboardingRequest, @Context SecurityContext ctx) {
+ return readUserIdFromToken(ctx)
+ .onItem().transformToUni(userId -> onboardingService
+ .onboardingPgCompletion(fillUserId(onboardingMapper.toEntity(onboardingRequest), userId), onboardingRequest.getUsers()));
+ }
+
+
+ private Uni readUserIdFromToken(SecurityContext ctx) {
+ return currentIdentityAssociation.getDeferredIdentity()
+ .onItem().transformToUni(identity -> {
+ if (ctx.getUserPrincipal() == null || !ctx.getUserPrincipal().getName().equals(identity.getPrincipal().getName())) {
+ return Uni.createFrom().failure(new InternalServerErrorException("Principal and JsonWebToken names do not match"));
+ }
+
+ if (identity.getPrincipal() instanceof DefaultJWTCallerPrincipal jwtCallerPrincipal) {
+ String uid = jwtCallerPrincipal.getClaim("uid");
+ return Uni.createFrom().item(uid);
+ }
+
+ return Uni.createFrom().nullItem();
+ });
+ }
+
+
+ @Operation(
+ summary = "Get onboardings by institution taxCode, subunitCode, origin, or originId.",
+ description = "Returns onboardings record by institution taxCode/subunitCode/origin/originId",
+ operationId = "onboardingInstitutionUsingGETV2",
+ extensions = @Extension(name = "x-legacy-api", value = "true")
+ )
+ @GET
+ @Tag(name = "support")
+ @Tag(name = "internal-v1")
+ @Tag(name = "Onboarding")
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/institutionOnboardings")
+ public Uni> getOnboardingPending(@QueryParam(value = "taxCode") String taxCode,
+ @QueryParam(value = "subunitCode") String subunitCode,
+ @QueryParam(value = "origin") String origin,
+ @QueryParam(value = "originId") String originId,
+ @QueryParam(value = "status") OnboardingStatus status) {
+ return onboardingService.institutionOnboardings(taxCode, subunitCode, origin, originId, status);
+ }
+
+ private Onboarding fillUserId(Onboarding onboarding, String userRequestUid) {
+ onboarding.setUserRequestUid(userRequestUid);
+ return onboarding;
+ }
+
+}
diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/OnboardingResponseV1.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/OnboardingResponseV1.java
new file mode 100644
index 000000000..7ea7e794e
--- /dev/null
+++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/OnboardingResponseV1.java
@@ -0,0 +1,26 @@
+package it.pagopa.selfcare.onboarding.controller.response;
+
+import it.pagopa.selfcare.onboarding.controller.request.AdditionalInformationsDto;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class OnboardingResponseV1 {
+
+ private String id;
+ private String productId;
+ private String workflowType;
+ private InstitutionResponse institution;
+ private String pricingPlan;
+ private List users;
+ private BillingResponse billing;
+ private String status;
+ private AdditionalInformationsDto additionalInformations;
+ private String userRequestUid;
+ private Boolean isAggregator;
+ private LocalDateTime createdAt;
+ private LocalDateTime updatedAt;
+
+}
diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/PartyRoleV1.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/PartyRoleV1.java
new file mode 100644
index 000000000..fe3237e06
--- /dev/null
+++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/PartyRoleV1.java
@@ -0,0 +1,9 @@
+package it.pagopa.selfcare.onboarding.controller.response;
+
+public enum PartyRoleV1 {
+ MANAGER,
+ DELEGATE,
+ SUB_DELEGATE,
+ OPERATOR,
+ ADMIN_EA
+}
diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/UserOnboardingResponseV1.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/UserOnboardingResponseV1.java
new file mode 100644
index 000000000..c9516cb8c
--- /dev/null
+++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/controller/response/UserOnboardingResponseV1.java
@@ -0,0 +1,12 @@
+package it.pagopa.selfcare.onboarding.controller.response;
+
+import lombok.Data;
+
+@Data
+public class UserOnboardingResponseV1 {
+
+ private String id;
+ private PartyRoleV1 role;
+ private String productRole;
+ private String userMailUuid;
+}
diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapper.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapper.java
index 099a83c4f..9d01f249d 100644
--- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapper.java
+++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapper.java
@@ -2,37 +2,23 @@
import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
import it.pagopa.selfcare.onboarding.common.WorkflowType;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingDefaultRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportContract;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportPspRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPaRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPgRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPspRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingSaRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingUserPgRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingUserRequest;
-import it.pagopa.selfcare.onboarding.controller.response.OnboardingGet;
-import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponse;
+import it.pagopa.selfcare.onboarding.controller.request.*;
+import it.pagopa.selfcare.onboarding.controller.response.*;
import it.pagopa.selfcare.onboarding.entity.Onboarding;
import it.pagopa.selfcare.onboarding.entity.User;
-import it.pagopa.selfcare.onboarding.model.Aggregate;
-import it.pagopa.selfcare.onboarding.model.AggregateUser;
-import it.pagopa.selfcare.onboarding.model.CsvAggregateAppIo;
-import it.pagopa.selfcare.onboarding.model.CsvAggregatePagoPa;
-import it.pagopa.selfcare.onboarding.model.CsvAggregateSend;
+import it.pagopa.selfcare.onboarding.model.*;
+import org.mapstruct.Context;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Named;
+import org.openapi.quarkus.onboarding_functions_json.model.PartyRole;
+
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
-import java.util.stream.Collectors;
-import org.mapstruct.Context;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.Named;
-import org.openapi.quarkus.onboarding_functions_json.model.PartyRole;
@Mapper(componentModel = "cdi", imports = { UUID.class, WorkflowType.class, OnboardingStatus.class })
public interface OnboardingMapper {
@@ -48,6 +34,36 @@ public interface OnboardingMapper {
@Mapping(target = "institution.gpuData", source = "gpuData")
@Mapping(target = "institution", source = "institution")
Onboarding toEntity(OnboardingDefaultRequest request);
+
+ @Mapping(target = "users", source = "users", qualifiedByName = "toUsersList")
+ OnboardingResponseV1 toOnboardingResponseV1(OnboardingResponse request);
+
+ @Named("toUsersList")
+ default List toUsersList(List list) {
+ if(Objects.isNull(list) || list.isEmpty()) {
+ return Collections.emptyList();
+ }
+ return list.stream()
+ .map(this::toUserOnboardingResponseV1)
+ .toList();
+ }
+
+
+ @Mapping(target = "role", source = "role", qualifiedByName = "toPartyRoleV1")
+ UserOnboardingResponseV1 toUserOnboardingResponseV1(UserOnboardingResponse userOnboardingResponse);
+
+ @Named("toPartyRoleV1")
+ default PartyRoleV1 toPartyRoleV1(PartyRole partyRole) {
+ return switch (partyRole) {
+ case MANAGER -> PartyRoleV1.MANAGER;
+ case DELEGATE -> PartyRoleV1.DELEGATE;
+ case SUB_DELEGATE -> PartyRoleV1.SUB_DELEGATE;
+ case OPERATOR -> PartyRoleV1.OPERATOR;
+ case ADMIN_EA -> PartyRoleV1.ADMIN_EA;
+ default -> null;
+ };
+ }
+
@Mapping(target = "id", expression = "java(UUID.randomUUID().toString())")
@Mapping(target = "billing.recipientCode", source = "billing.recipientCode", qualifiedByName = "toUpperCase")
@Mapping(target = "status", expression = "java((newStatus != null) ? newStatus : null)")
@@ -157,7 +173,7 @@ default List mapCsvSendAggregatesToAggregates(List
}
return csvAggregateSendList.stream()
.map(this::csvToAggregateSend)
- .collect(Collectors.toList());
+ .toList();
}
default List mapCsvAppIoAggregatesToAggregates(List csvAggregateAppIoList) {
@@ -166,7 +182,7 @@ default List mapCsvAppIoAggregatesToAggregates(List mapUsers(CsvAggregateSend csvAggregateSend) {
diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java
index 3d1cbfaba..9f3748265 100644
--- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java
+++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java
@@ -1,18 +1,5 @@
package it.pagopa.selfcare.onboarding.service;
-import static it.pagopa.selfcare.onboarding.common.ProductId.PROD_INTEROP;
-import static it.pagopa.selfcare.onboarding.common.ProductId.PROD_PAGOPA;
-import static it.pagopa.selfcare.onboarding.constants.CustomError.DEFAULT_ERROR;
-import static it.pagopa.selfcare.onboarding.constants.CustomError.INSTITUTION_NOT_FOUND;
-import static it.pagopa.selfcare.onboarding.constants.CustomError.USERS_UPDATE_NOT_ALLOWED;
-import static it.pagopa.selfcare.onboarding.util.ErrorMessage.GENERIC_ERROR;
-import static it.pagopa.selfcare.onboarding.util.ErrorMessage.INVALID_REFERENCE_ONBORADING;
-import static it.pagopa.selfcare.onboarding.util.ErrorMessage.ONBOARDING_EXPIRED;
-import static it.pagopa.selfcare.onboarding.util.ErrorMessage.ONBOARDING_NOT_TO_BE_VALIDATED;
-import static it.pagopa.selfcare.onboarding.util.ErrorMessage.PRODUCT_ALREADY_ONBOARDED;
-import static it.pagopa.selfcare.onboarding.util.ErrorMessage.PRODUCT_NOT_ONBOARDED;
-import static it.pagopa.selfcare.product.utils.ProductUtils.validRoles;
-
import io.quarkus.logging.Log;
import io.quarkus.mongodb.panache.common.reactive.Panache;
import io.quarkus.mongodb.panache.reactive.ReactivePanacheQuery;
@@ -22,12 +9,7 @@
import io.smallrye.mutiny.tuples.Tuple2;
import io.smallrye.mutiny.unchecked.Unchecked;
import it.pagopa.selfcare.azurestorage.AzureBlobClient;
-import it.pagopa.selfcare.onboarding.common.InstitutionType;
-import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
-import it.pagopa.selfcare.onboarding.common.Origin;
-import it.pagopa.selfcare.onboarding.common.PartyRole;
-import it.pagopa.selfcare.onboarding.common.TokenType;
-import it.pagopa.selfcare.onboarding.common.WorkflowType;
+import it.pagopa.selfcare.onboarding.common.*;
import it.pagopa.selfcare.onboarding.constants.CustomError;
import it.pagopa.selfcare.onboarding.controller.request.AggregateInstitutionRequest;
import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportContract;
@@ -37,11 +19,7 @@
import it.pagopa.selfcare.onboarding.controller.response.OnboardingGetResponse;
import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponse;
import it.pagopa.selfcare.onboarding.controller.response.UserResponse;
-import it.pagopa.selfcare.onboarding.entity.CheckManagerResponse;
-import it.pagopa.selfcare.onboarding.entity.Institution;
-import it.pagopa.selfcare.onboarding.entity.Onboarding;
-import it.pagopa.selfcare.onboarding.entity.Token;
-import it.pagopa.selfcare.onboarding.entity.User;
+import it.pagopa.selfcare.onboarding.entity.*;
import it.pagopa.selfcare.onboarding.entity.registry.RegistryManager;
import it.pagopa.selfcare.onboarding.entity.registry.RegistryResourceFactory;
import it.pagopa.selfcare.onboarding.exception.InvalidRequestException;
@@ -66,22 +44,6 @@
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.ws.rs.WebApplicationException;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.time.LocalDateTime;
-import java.time.OffsetDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.UUID;
-import java.util.function.Function;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.bson.Document;
@@ -103,12 +65,22 @@
import org.openapi.quarkus.party_registry_proxy_json.model.GetInstitutionsByLegalDto;
import org.openapi.quarkus.party_registry_proxy_json.model.GetInstitutionsByLegalFilterDto;
import org.openapi.quarkus.user_registry_json.api.UserApi;
-import org.openapi.quarkus.user_registry_json.model.CertifiableFieldResourceOfstring;
-import org.openapi.quarkus.user_registry_json.model.MutableUserFieldsDto;
-import org.openapi.quarkus.user_registry_json.model.SaveUserDto;
-import org.openapi.quarkus.user_registry_json.model.UserResource;
-import org.openapi.quarkus.user_registry_json.model.UserSearchDto;
-import org.openapi.quarkus.user_registry_json.model.WorkContactResource;
+import org.openapi.quarkus.user_registry_json.model.*;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.time.LocalDateTime;
+import java.time.OffsetDateTime;
+import java.util.*;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+
+import static it.pagopa.selfcare.onboarding.common.ProductId.PROD_INTEROP;
+import static it.pagopa.selfcare.onboarding.common.ProductId.PROD_PAGOPA;
+import static it.pagopa.selfcare.onboarding.constants.CustomError.*;
+import static it.pagopa.selfcare.onboarding.util.ErrorMessage.*;
+import static it.pagopa.selfcare.product.utils.ProductUtils.validRoles;
@ApplicationScoped
public class OnboardingServiceDefault implements OnboardingService {
@@ -1642,13 +1614,13 @@ private Uni getInstitutionFromUserRequest(OnboardingUserReq
if (Objects.nonNull(request.getTaxCode()) && Objects.nonNull(request.getSubunitCode())) {
responseUni =
institutionApi.getInstitutionsUsingGET(
- request.getTaxCode(), request.getSubunitCode(), null, null);
+ request.getTaxCode(), request.getSubunitCode(), null, null, null);
} else if (Objects.nonNull(request.getTaxCode())) {
- responseUni = institutionApi.getInstitutionsUsingGET(request.getTaxCode(), null, null, null);
+ responseUni = institutionApi.getInstitutionsUsingGET(request.getTaxCode(), null, null, null, null);
} else {
responseUni =
institutionApi.getInstitutionsUsingGET(
- null, null, request.getOrigin(), request.getOriginId());
+ null, null, request.getOrigin(), request.getOriginId(), null);
}
return responseUni
.onFailure(WebApplicationException.class)
diff --git a/apps/onboarding-ms/src/main/openapi/core.json b/apps/onboarding-ms/src/main/openapi/core.json
index 6a7e35ae3..530862aeb 100644
--- a/apps/onboarding-ms/src/main/openapi/core.json
+++ b/apps/onboarding-ms/src/main/openapi/core.json
@@ -1,7 +1,7 @@
{
"openapi" : "3.0.3",
"info" : {
- "title" : "selc-ms-core",
+ "title" : "institution-ms",
"version" : "1.0-SNAPSHOT"
},
"servers" : [ {
@@ -33,9 +33,6 @@
}, {
"name" : "Onboarding",
"description" : "Onboarding Controller"
- }, {
- "name" : "kafka",
- "description" : "Queue Notification Controller"
} ],
"paths" : {
"/delegations" : {
@@ -89,16 +86,6 @@
"schema" : {
"type" : "string"
}
- }, {
- "name" : "mode",
- "in" : "query",
- "description" : "Mode (full or normal) to retreieve institution's delegations",
- "required" : false,
- "style" : "form",
- "schema" : {
- "type" : "string",
- "enum" : [ "FULL", "NORMAL" ]
- }
}, {
"name" : "order",
"in" : "query",
@@ -232,7 +219,7 @@
},
"/delegations/from-taxcode" : {
"post" : {
- "tags" : [ "Delegation" ],
+ "tags" : [ "Delegation", "internal-v1" ],
"summary" : "Create an association between institution and technical partner using taxCode for both instead of internal id. It is useful when we don't know institution's internal id.",
"description" : "Create an association between institution and technical partner using taxCode for both instead of internal id. It is useful when we don't know institution's internal id.",
"operationId" : "createDelegationFromInstitutionsTaxCodeUsingPOST",
@@ -348,22 +335,87 @@
} ]
}
},
- "/external/institutions" : {
+ "/v2/delegations" : {
"get" : {
- "tags" : [ "External" ],
- "summary" : "Gets the corresponding institution using internal institution id",
- "description" : "Gets the corresponding institution using internal institution id",
- "operationId" : "retrieveInstitutionByIdsUsingGET",
+ "tags" : [ "Delegation" ],
+ "summary" : "Retrieve institution's delegations with pagination",
+ "description" : "Retrieve institution's delegations with pagination",
+ "operationId" : "getDelegationsUsingGET_1",
"parameters" : [ {
- "name" : "ids",
+ "name" : "institutionId",
"in" : "query",
- "description" : "List of Institution to onboard",
- "required" : true,
+ "description" : "The internal identifier of the institution",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "brokerId",
+ "in" : "query",
+ "description" : "The internal identifier of the institution",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "productId",
+ "in" : "query",
+ "description" : "Product's unique identifier",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "search",
+ "in" : "query",
+ "description" : "Description ente",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "taxCode",
+ "in" : "query",
+ "description" : "Institution's tax code",
+ "required" : false,
"style" : "form",
- "explode" : true,
"schema" : {
"type" : "string"
}
+ }, {
+ "name" : "order",
+ "in" : "query",
+ "description" : "Order to show response NONE, ASC, DESC",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "string",
+ "enum" : [ "ASC", "DESC", "NONE" ]
+ }
+ }, {
+ "name" : "page",
+ "in" : "query",
+ "description" : "page",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32"
+ }
+ }, {
+ "name" : "size",
+ "in" : "query",
+ "description" : "size",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "integer",
+ "format" : "int32"
+ }
} ],
"responses" : {
"200" : {
@@ -371,10 +423,7 @@
"content" : {
"application/json" : {
"schema" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/InstitutionResponse"
- }
+ "$ref" : "#/components/schemas/DelegationWithPaginationResponse"
}
}
}
@@ -405,28 +454,33 @@
} ]
}
},
- "/external/institutions/pn-pg" : {
- "post" : {
+ "/external/institutions" : {
+ "get" : {
"tags" : [ "External" ],
- "summary" : "create an institution (PG) using external institution id fetching data from info-camere",
- "description" : "create an institution (PG) using external institution id fetching data from info-camere",
- "operationId" : "createPnPgInstitutionUsingPOST",
- "requestBody" : {
- "content" : {
- "application/json" : {
- "schema" : {
- "$ref" : "#/components/schemas/CreatePnPgInstitutionRequest"
- }
- }
+ "summary" : "Gets the corresponding institution using internal institution id",
+ "description" : "Gets the corresponding institution using internal institution id",
+ "operationId" : "retrieveInstitutionByIdsUsingGET",
+ "parameters" : [ {
+ "name" : "ids",
+ "in" : "query",
+ "description" : "List of Institution to onboard",
+ "required" : true,
+ "style" : "form",
+ "explode" : true,
+ "schema" : {
+ "type" : "string"
}
- },
+ } ],
"responses" : {
- "201" : {
- "description" : "Created",
+ "200" : {
+ "description" : "OK",
"content" : {
"application/json" : {
"schema" : {
- "$ref" : "#/components/schemas/InstitutionPnPgResponse"
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/InstitutionResponse"
+ }
}
}
}
@@ -450,16 +504,6 @@
}
}
}
- },
- "409" : {
- "description" : "Conflict",
- "content" : {
- "application/problem+json" : {
- "schema" : {
- "$ref" : "#/components/schemas/Problem"
- }
- }
- }
}
},
"security" : [ {
@@ -704,7 +748,7 @@
},
"/institutions" : {
"get" : {
- "tags" : [ "Institution", "external-v2", "support" ],
+ "tags" : [ "Institution", "external-v2", "support", "support-pnpg" ],
"summary" : "Gets institutions filtering by taxCode and/or subunitCode",
"description" : "Gets institutions filtering by taxCode and/or subunitCode",
"operationId" : "getInstitutionsUsingGET",
@@ -744,6 +788,15 @@
"schema" : {
"type" : "string"
}
+ }, {
+ "name" : "productId",
+ "in" : "query",
+ "description" : "productId",
+ "required" : false,
+ "style" : "form",
+ "schema" : {
+ "type" : "string"
+ }
} ],
"responses" : {
"200" : {
@@ -1504,7 +1557,7 @@
},
"/institutions/{id}" : {
"get" : {
- "tags" : [ "Institution", "external-v2" ],
+ "tags" : [ "Institution", "external-pnpg", "external-v2", "internal-v1" ],
"summary" : "Gets the corresponding institution using internal institution id",
"description" : "Gets the corresponding institution using internal institution id",
"operationId" : "retrieveInstitutionByIdUsingGET",
@@ -1707,6 +1760,16 @@
}
},
"responses" : {
+ "200" : {
+ "description" : "User already exists an onboarding in status ACTIVE or SUSPENDED with that productId",
+ "content" : {
+ "application/json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/InstitutionResponse"
+ }
+ }
+ }
+ },
"201" : {
"description" : "Created",
"content" : {
@@ -1817,9 +1880,74 @@
} ]
}
},
- "/institutions/{institutionId}/createdAt" : {
- "put" : {
+ "/institutions/{id}/products/{productId}" : {
+ "delete" : {
"tags" : [ "Institution" ],
+ "summary" : "The service set DELETE status on onboarding association with the product and institutionId",
+ "description" : "The service set DELETE status on onboarding association with the product and institutionId",
+ "operationId" : "deleteOnboardedInstitutionUsingDELETE",
+ "parameters" : [ {
+ "name" : "productId",
+ "in" : "path",
+ "description" : "productId",
+ "required" : true,
+ "style" : "simple",
+ "schema" : {
+ "type" : "string"
+ }
+ }, {
+ "name" : "id",
+ "in" : "path",
+ "description" : "id",
+ "required" : true,
+ "style" : "simple",
+ "schema" : {
+ "type" : "string"
+ }
+ } ],
+ "responses" : {
+ "204" : {
+ "description" : "No Content"
+ },
+ "400" : {
+ "description" : "Bad Request",
+ "content" : {
+ "application/problem+json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/Problem"
+ }
+ }
+ }
+ },
+ "404" : {
+ "description" : "Not Found",
+ "content" : {
+ "application/problem+json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/Problem"
+ }
+ }
+ }
+ },
+ "409" : {
+ "description" : "Conflict",
+ "content" : {
+ "application/problem+json" : {
+ "schema" : {
+ "$ref" : "#/components/schemas/Problem"
+ }
+ }
+ }
+ }
+ },
+ "security" : [ {
+ "bearerAuth" : [ "global" ]
+ } ]
+ }
+ },
+ "/institutions/{institutionId}/created-at" : {
+ "put" : {
+ "tags" : [ "Institution", "internal-v1" ],
"summary" : "The service updates the createdAt field for the institution-product pair",
"description" : "The service updates the createdAt field for the institution-product pair",
"operationId" : "updateCreatedAtUsingPUT",
@@ -1967,7 +2095,7 @@
"style" : "simple",
"schema" : {
"type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP", "PRV", "GPU" ]
+ "enum" : [ "AS", "CON", "GPU", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP" ]
}
} ],
"responses" : {
@@ -2281,71 +2409,6 @@
"bearerAuth" : [ "global" ]
} ]
}
- },
- "/notification-event/contracts" : {
- "put" : {
- "tags" : [ "kafka" ],
- "summary" : "resendContractsByInstitutionIdAndTokenId",
- "description" : "Function to send a specific onboarding using institutionId and tokenId ",
- "operationId" : "resendContractsByInstitutionIdAndTokenIdUsingPUT",
- "parameters" : [ {
- "name" : "tokenId",
- "in" : "query",
- "description" : "tokenId",
- "required" : true,
- "style" : "form",
- "schema" : {
- "type" : "string"
- }
- }, {
- "name" : "institutionId",
- "in" : "query",
- "description" : "institutionId",
- "required" : true,
- "style" : "form",
- "schema" : {
- "type" : "string"
- }
- } ],
- "responses" : {
- "200" : {
- "description" : "OK"
- },
- "400" : {
- "description" : "Bad Request",
- "content" : {
- "application/problem+json" : {
- "schema" : {
- "$ref" : "#/components/schemas/Problem"
- }
- }
- }
- },
- "403" : {
- "description" : "Forbidden",
- "content" : {
- "application/problem+json" : {
- "schema" : {
- "$ref" : "#/components/schemas/Problem"
- }
- }
- }
- },
- "404" : {
- "description" : "Not Found",
- "content" : {
- "application/problem+json" : {
- "schema" : {
- "$ref" : "#/components/schemas/Problem"
- }
- }
- }
- }
- },
- "security" : [ {
- "bearerAuth" : [ "global" ]
- } ]
- }
}
},
"components" : {
@@ -2423,6 +2486,9 @@
"recipientCode" : {
"type" : "string"
},
+ "taxCodeInvoicing" : {
+ "type" : "string"
+ },
"vatNumber" : {
"type" : "string"
}
@@ -2438,6 +2504,9 @@
"recipientCode" : {
"type" : "string"
},
+ "taxCodeInvoicing" : {
+ "type" : "string"
+ },
"vatNumber" : {
"type" : "string"
}
@@ -2453,6 +2522,9 @@
"recipientCode" : {
"type" : "string"
},
+ "taxCodeInvoicing" : {
+ "type" : "string"
+ },
"vatNumber" : {
"type" : "string"
}
@@ -2503,8 +2575,7 @@
"type" : "string"
},
"institutionType" : {
- "type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
+ "type" : "string"
},
"origin" : {
"type" : "string"
@@ -2602,18 +2673,6 @@
}
}
},
- "CreatePnPgInstitutionRequest" : {
- "title" : "CreatePnPgInstitutionRequest",
- "type" : "object",
- "properties" : {
- "description" : {
- "type" : "string"
- },
- "taxId" : {
- "type" : "string"
- }
- }
- },
"CreatedAtRequest" : {
"title" : "CreatedAtRequest",
"type" : "object",
@@ -2686,6 +2745,9 @@
"institutionFromName" : {
"type" : "string"
},
+ "institutionFromRootName" : {
+ "type" : "string"
+ },
"institutionToName" : {
"type" : "string"
},
@@ -2697,7 +2759,7 @@
},
"type" : {
"type" : "string",
- "enum" : [ "AOO", "PT" ]
+ "enum" : [ "AOO", "EA", "PT" ]
}
}
},
@@ -2728,7 +2790,7 @@
},
"type" : {
"type" : "string",
- "enum" : [ "AOO", "PT" ]
+ "enum" : [ "AOO", "EA", "PT" ]
}
}
},
@@ -2765,8 +2827,7 @@
"type" : "string"
},
"institutionType" : {
- "type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
+ "type" : "string"
},
"productId" : {
"type" : "string"
@@ -2780,7 +2841,7 @@
},
"type" : {
"type" : "string",
- "enum" : [ "AOO", "PT" ]
+ "enum" : [ "AOO", "EA", "PT" ]
},
"updatedAt" : {
"type" : "string",
@@ -2788,6 +2849,21 @@
}
}
},
+ "DelegationWithPaginationResponse" : {
+ "title" : "DelegationWithPaginationResponse",
+ "type" : "object",
+ "properties" : {
+ "delegations" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/components/schemas/DelegationResponse"
+ }
+ },
+ "pageInfo" : {
+ "$ref" : "#/components/schemas/PageInfo"
+ }
+ }
+ },
"GeoTaxonomies" : {
"title" : "GeoTaxonomies",
"type" : "object",
@@ -2859,12 +2935,11 @@
"type" : "string"
},
"institutionType" : {
- "type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
+ "type" : "string"
},
"origin" : {
"type" : "string",
- "enum" : [ "ADE", "ANAC", "INFOCAMERE", "IPA", "IVASS", "MOCK", "SELC", "UNKNOWN", "PDND_INFOCAMERE" ]
+ "enum" : [ "ADE", "ANAC", "INFOCAMERE", "IPA", "IVASS", "MOCK", "PDND_INFOCAMERE", "SELC", "UNKNOWN" ]
},
"originId" : {
"type" : "string"
@@ -2898,7 +2973,7 @@
},
"institutionType" : {
"type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
+ "enum" : [ "AS", "CON", "GPU", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP" ]
},
"subunitCode" : {
"type" : "string"
@@ -2907,6 +2982,12 @@
"type" : "string",
"enum" : [ "AOO", "UO" ]
},
+ "supportEmail" : {
+ "type" : "string"
+ },
+ "supportPhone" : {
+ "type" : "string"
+ },
"taxCode" : {
"type" : "string"
}
@@ -2950,6 +3031,9 @@
"contractPath" : {
"type" : "string"
},
+ "isAggregator" : {
+ "type" : "boolean"
+ },
"pricingPlan" : {
"type" : "string"
},
@@ -2958,12 +3042,6 @@
},
"tokenId" : {
"type" : "string"
- },
- "users" : {
- "type" : "array",
- "items" : {
- "$ref" : "#/components/schemas/Person"
- }
}
}
},
@@ -3015,8 +3093,7 @@
"type" : "boolean"
},
"institutionType" : {
- "type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
+ "type" : "string"
},
"onboardings" : {
"type" : "object",
@@ -3063,15 +3140,6 @@
}
}
},
- "InstitutionPnPgResponse" : {
- "title" : "InstitutionPnPgResponse",
- "type" : "object",
- "properties" : {
- "id" : {
- "type" : "string"
- }
- }
- },
"InstitutionProduct" : {
"title" : "InstitutionProduct",
"type" : "object",
@@ -3100,6 +3168,9 @@
"items" : {
"type" : "string"
}
+ },
+ "parentDescription" : {
+ "type" : "string"
}
}
},
@@ -3164,7 +3235,7 @@
},
"institutionType" : {
"type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
+ "enum" : [ "AS", "CON", "GPU", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP" ]
},
"onboarding" : {
"type" : "array",
@@ -3265,8 +3336,13 @@
"type" : "boolean"
},
"institutionType" : {
- "type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
+ "type" : "string"
+ },
+ "istatCode" : {
+ "type" : "string"
+ },
+ "logo" : {
+ "type" : "string"
},
"onboarding" : {
"type" : "array",
@@ -3307,9 +3383,6 @@
"taxCode" : {
"type" : "string"
},
- "taxCodeSfe" : {
- "type" : "string"
- },
"updatedAt" : {
"type" : "string",
"format" : "date-time"
@@ -3376,11 +3449,14 @@
},
"institutionType" : {
"type" : "string",
- "enum" : [ "AS", "CON", "GSP", "PA", "PG", "PSP", "PT", "REC", "SA", "SCP" ]
+ "enum" : [ "AS", "CON", "GPU", "GSP", "PA", "PG", "PRV", "PSP", "PT", "REC", "SA", "SCP" ]
},
"ivassCode" : {
"type" : "string"
},
+ "parentDescription" : {
+ "type" : "string"
+ },
"paymentServiceProvider" : {
"$ref" : "#/components/schemas/PaymentServiceProvider"
},
@@ -3416,6 +3492,21 @@
}
}
},
+ "InvalidParam" : {
+ "title" : "InvalidParam",
+ "required" : [ "name", "reason" ],
+ "type" : "object",
+ "properties" : {
+ "name" : {
+ "type" : "string",
+ "description" : "Invalid parameter name."
+ },
+ "reason" : {
+ "type" : "string",
+ "description" : "Invalid parameter reason."
+ }
+ }
+ },
"OnboardedProductResponse" : {
"title" : "OnboardedProductResponse",
"type" : "object",
@@ -3427,6 +3518,9 @@
"type" : "string",
"format" : "date-time"
},
+ "isAggregator" : {
+ "type" : "boolean"
+ },
"productId" : {
"type" : "string"
},
@@ -3524,6 +3618,9 @@
"type" : "string",
"format" : "date-time"
},
+ "isAggregator" : {
+ "type" : "boolean"
+ },
"pricingPlan" : {
"type" : "string"
},
@@ -3555,6 +3652,28 @@
}
}
},
+ "PageInfo" : {
+ "title" : "PageInfo",
+ "type" : "object",
+ "properties" : {
+ "pageNo" : {
+ "type" : "integer",
+ "format" : "int64"
+ },
+ "pageSize" : {
+ "type" : "integer",
+ "format" : "int64"
+ },
+ "totalElements" : {
+ "type" : "integer",
+ "format" : "int64"
+ },
+ "totalPages" : {
+ "type" : "integer",
+ "format" : "int64"
+ }
+ }
+ },
"PaymentServiceProvider" : {
"title" : "PaymentServiceProvider",
"type" : "object",
@@ -3636,60 +3755,42 @@
}
}
},
- "Person" : {
- "title" : "Person",
+ "Problem" : {
+ "title" : "Problem",
+ "required" : [ "status", "title" ],
"type" : "object",
"properties" : {
- "email" : {
- "type" : "string"
- },
- "env" : {
+ "detail" : {
"type" : "string",
- "enum" : [ "COLL", "DEV", "PROD", "ROOT" ]
- },
- "id" : {
- "type" : "string"
- },
- "name" : {
- "type" : "string"
- },
- "productRole" : {
- "type" : "string"
+ "description" : "Human-readable description of this specific problem."
},
- "role" : {
+ "instance" : {
"type" : "string",
- "enum" : [ "DELEGATE", "MANAGER", "OPERATOR", "SUB_DELEGATE" ]
- },
- "roleLabel" : {
- "type" : "string"
- },
- "surname" : {
- "type" : "string"
+ "description" : "A URI that describes where the problem occurred."
},
- "taxCode" : {
- "type" : "string"
- }
- }
- },
- "Problem" : {
- "title" : "Problem",
- "type" : "object",
- "properties" : {
- "errors" : {
+ "invalidParams" : {
"type" : "array",
+ "description" : "A list of invalid parameters details.",
"items" : {
- "$ref" : "#/components/schemas/ProblemError"
+ "$ref" : "#/components/schemas/InvalidParam"
}
},
"status" : {
"type" : "integer",
- "format" : "int32"
+ "description" : "The HTTP status code.",
+ "format" : "int32",
+ "example" : 500
+ },
+ "title" : {
+ "type" : "string",
+ "description" : "Short human-readable summary of the problem."
+ },
+ "type" : {
+ "type" : "string",
+ "description" : "A URL to a page with more details regarding the problem."
}
- }
- },
- "ProblemError" : {
- "title" : "ProblemError",
- "type" : "object"
+ },
+ "description" : "A \"problem detail\" as a way to carry machine-readable details of errors (https://datatracker.ietf.org/doc/html/rfc7807)"
},
"RootParentResponse" : {
"title" : "RootParentResponse",
@@ -3725,7 +3826,7 @@
},
"role" : {
"type" : "string",
- "enum" : [ "DELEGATE", "MANAGER", "OPERATOR", "SUB_DELEGATE" ]
+ "enum" : [ "ADMIN_EA", "ADMIN_EA_IO", "DELEGATE", "MANAGER", "OPERATOR", "SUB_DELEGATE" ]
},
"roleLabel" : {
"type" : "string"
diff --git a/apps/onboarding-ms/src/main/openapi/onboarding_functions.json b/apps/onboarding-ms/src/main/openapi/onboarding_functions.json
index b58258f4b..f88ded2b5 100644
--- a/apps/onboarding-ms/src/main/openapi/onboarding_functions.json
+++ b/apps/onboarding-ms/src/main/openapi/onboarding_functions.json
@@ -472,7 +472,9 @@
"MANAGER",
"DELEGATE",
"SUB_DELEGATE",
- "OPERATOR"
+ "OPERATOR",
+ "ADMIN_EA",
+ "ADMIN_EA_IO"
],
"type": "string"
},
diff --git a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/controller/OnboardingControllerTest.java b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/controller/OnboardingControllerTest.java
index 356d7fd7b..67a381480 100644
--- a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/controller/OnboardingControllerTest.java
+++ b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/controller/OnboardingControllerTest.java
@@ -1,19 +1,5 @@
package it.pagopa.selfcare.onboarding.controller;
-import static io.restassured.RestAssured.given;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
import io.quarkus.test.InjectMock;
import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.common.http.TestHTTPEndpoint;
@@ -23,34 +9,10 @@
import io.restassured.http.ContentType;
import io.restassured.response.Response;
import io.smallrye.mutiny.Uni;
-import it.pagopa.selfcare.onboarding.common.InstitutionType;
-import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
-import it.pagopa.selfcare.onboarding.common.Origin;
-import it.pagopa.selfcare.onboarding.common.WorkflowType;
+import it.pagopa.selfcare.onboarding.common.*;
import it.pagopa.selfcare.onboarding.constants.CustomError;
-import it.pagopa.selfcare.onboarding.controller.request.AggregateInstitutionRequest;
-import it.pagopa.selfcare.onboarding.controller.request.BillingPaRequest;
-import it.pagopa.selfcare.onboarding.controller.request.BillingRequest;
-import it.pagopa.selfcare.onboarding.controller.request.DataProtectionOfficerRequest;
-import it.pagopa.selfcare.onboarding.controller.request.InstitutionBaseRequest;
-import it.pagopa.selfcare.onboarding.controller.request.InstitutionImportRequest;
-import it.pagopa.selfcare.onboarding.controller.request.InstitutionPspRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingDefaultRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportContract;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportPspRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPaRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPgRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingPspRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingUserPgRequest;
-import it.pagopa.selfcare.onboarding.controller.request.OnboardingUserRequest;
-import it.pagopa.selfcare.onboarding.controller.request.PaymentServiceProviderRequest;
-import it.pagopa.selfcare.onboarding.controller.request.ReasonRequest;
-import it.pagopa.selfcare.onboarding.controller.request.UserRequest;
-import it.pagopa.selfcare.onboarding.controller.response.InstitutionResponse;
-import it.pagopa.selfcare.onboarding.controller.response.OnboardingGet;
-import it.pagopa.selfcare.onboarding.controller.response.OnboardingGetResponse;
-import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponse;
+import it.pagopa.selfcare.onboarding.controller.request.*;
+import it.pagopa.selfcare.onboarding.controller.response.*;
import it.pagopa.selfcare.onboarding.entity.Billing;
import it.pagopa.selfcare.onboarding.entity.CheckManagerResponse;
import it.pagopa.selfcare.onboarding.entity.Onboarding;
@@ -59,19 +21,22 @@
import it.pagopa.selfcare.onboarding.model.OnboardingGetFilters;
import it.pagopa.selfcare.onboarding.model.RecipientCodeStatus;
import it.pagopa.selfcare.onboarding.service.OnboardingService;
-import java.io.File;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
+import java.io.File;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+import static io.restassured.RestAssured.given;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.*;
+
@QuarkusTest
@TestHTTPEndpoint(OnboardingController.class)
@QuarkusTestResource(MongoTestResource.class)
@@ -86,6 +51,8 @@ class OnboardingControllerTest {
static final InstitutionPspRequest institutionPsp;
static final OnboardingUserPgRequest onboardingUserPgValid;
+ static final OnboardingResponse onboardingResponse;
+ static final UserOnboardingResponse userResponse;
@InjectMock
OnboardingService onboardingService;
@@ -135,6 +102,11 @@ class OnboardingControllerTest {
onboardingUserPgValid.setUsers(List.of(userDTO));
onboardingUserPgValid.setOrigin(Origin.ADE);
+ /* response */
+ userResponse = new UserOnboardingResponse();
+ onboardingResponse = new OnboardingResponse();
+ onboardingResponse.setUsers(List.of(userResponse));
+
}
@Test
@@ -608,23 +580,31 @@ void onboardingCompletion() {
OnboardingDefaultRequest onboardingDefaultRequest = dummyOnboardingDefaultRequest();
+ onboardingResponse.setUsers(null);
+
Mockito.when(onboardingService.onboardingCompletion(any(), any()))
- .thenReturn(Uni.createFrom().item(new OnboardingResponse()));
+ .thenReturn(Uni.createFrom().item(onboardingResponse));
- given()
+ Response response = given()
.when()
.body(onboardingDefaultRequest)
.contentType(ContentType.JSON)
.post("/completion")
.then()
- .statusCode(200);
+ .statusCode(200)
+ .extract()
+ .response();
+
+ OnboardingResponseV1 onboardingResponse = response.as(OnboardingResponseV1.class);
+
ArgumentCaptor captor = ArgumentCaptor.forClass(Onboarding.class);
Mockito.verify(onboardingService, times(1)).onboardingCompletion(captor.capture(), any());
assertEquals(InstitutionType.PRV, captor.getValue().getInstitution().getInstitutionType());
+ assertEquals(Collections.EMPTY_LIST, onboardingResponse.getUsers());
}
- private static OnboardingDefaultRequest dummyOnboardingDefaultRequest() {
+ static OnboardingDefaultRequest dummyOnboardingDefaultRequest() {
OnboardingDefaultRequest onboardingDefaultRequest = new OnboardingDefaultRequest();
InstitutionBaseRequest institution = new InstitutionBaseRequest();
onboardingDefaultRequest.setProductId("productId");
@@ -643,20 +623,28 @@ void onboardingPaCompletion() {
OnboardingPaRequest onboardingPaRequest = dummyOnboardingPa();
+ userResponse.setRole(PartyRole.MANAGER);
+ onboardingResponse.setUsers(List.of(userResponse));
+
Mockito.when(onboardingService.onboardingCompletion(any(), any()))
- .thenReturn(Uni.createFrom().item(new OnboardingResponse()));
+ .thenReturn(Uni.createFrom().item(onboardingResponse));
- given()
+ Response response = given()
.when()
.body(onboardingPaRequest)
.contentType(ContentType.JSON)
.post("/pa/completion")
.then()
- .statusCode(200);
+ .statusCode(200)
+ .extract()
+ .response();
+
+ OnboardingResponseV1 onboardingResponse = response.as(OnboardingResponseV1.class);
ArgumentCaptor captor = ArgumentCaptor.forClass(Onboarding.class);
Mockito.verify(onboardingService, times(1)).onboardingCompletion(captor.capture(), any());
assertEquals(InstitutionType.PA, captor.getValue().getInstitution().getInstitutionType());
+ assertEquals(PartyRole.MANAGER.name(), onboardingResponse.getUsers().get(0).getRole().name());
}
@Test
@@ -665,26 +653,34 @@ void onboardingPspCompletion() {
OnboardingPspRequest onboardingPspRequest = getOnboardingPspRequest();
+ userResponse.setRole(PartyRole.ADMIN_EA_IO);
+
Mockito.when(onboardingService.onboardingCompletion(any(), any()))
- .thenReturn(Uni.createFrom().item(new OnboardingResponse()));
+ .thenReturn(Uni.createFrom().item(onboardingResponse));
- given()
+ Response response = given()
.when()
.body(onboardingPspRequest)
.contentType(ContentType.JSON)
.post("/psp/completion")
.then()
- .statusCode(200);
+ .statusCode(200)
+ .extract()
+ .response();
+
+ OnboardingResponseV1 actualOnboardingResponse = response.as(OnboardingResponseV1.class);
ArgumentCaptor captor = ArgumentCaptor.forClass(Onboarding.class);
Mockito.verify(onboardingService, times(1)).onboardingCompletion(captor.capture(), any());
assertEquals(InstitutionType.PSP, captor.getValue().getInstitution().getInstitutionType());
+ assertNull(actualOnboardingResponse.getUsers().get(0).getRole());
}
- private static OnboardingPspRequest getOnboardingPspRequest() {
+ static OnboardingPspRequest getOnboardingPspRequest() {
OnboardingPspRequest onboardingPspRequest = new OnboardingPspRequest();
InstitutionPspRequest institution = new InstitutionPspRequest();
onboardingPspRequest.setProductId("productId");
+ userDTO.setRole(PartyRole.MANAGER);
onboardingPspRequest.setUsers(List.of(userDTO));
institution.setTaxCode("taxCode");
institution.setDigitalAddress("digital@address.it");
@@ -707,20 +703,27 @@ void onboardingCompletePg() {
onboardingPgRequest.setDigitalAddress("digital@address.it");
onboardingPgRequest.setOrigin(Origin.INFOCAMERE);
+ userResponse.setRole(PartyRole.SUB_DELEGATE);
+
Mockito.when(onboardingService.onboardingPgCompletion(any(), any()))
- .thenReturn(Uni.createFrom().item(new OnboardingResponse()));
+ .thenReturn(Uni.createFrom().item(onboardingResponse));
- given()
+ Response response = given()
.when()
.body(onboardingPgRequest)
.contentType(ContentType.JSON)
.post("/pg/completion")
.then()
- .statusCode(200);
+ .statusCode(200)
+ .extract()
+ .response();
+
+ OnboardingResponseV1 actualOnboardingResponse = response.as(OnboardingResponseV1.class);
ArgumentCaptor captor = ArgumentCaptor.forClass(Onboarding.class);
Mockito.verify(onboardingService, times(1)).onboardingPgCompletion(captor.capture(), any());
assertEquals(InstitutionType.PG, captor.getValue().getInstitution().getInstitutionType());
+ assertEquals(PartyRole.SUB_DELEGATE.name(), actualOnboardingResponse.getUsers().get(0).getRole().name());
}
@Test
@@ -854,34 +857,48 @@ void onboardingImportPSP_bad_request() {
@TestSecurity(user = "userJwt")
void getInstitutionOnboardings() {
// given
- OnboardingResponse onboardingResponse = dummyOnboardingResponse();
+ OnboardingResponse dummyOnboardingResponse = dummyOnboardingResponse();
+ UserOnboardingResponse userOnboardingResponse = new UserOnboardingResponse();
+ userOnboardingResponse.setRole(PartyRole.ADMIN_EA);
+ UserOnboardingResponse userOnboardingResponse2 = new UserOnboardingResponse();
+ userOnboardingResponse2.setRole(PartyRole.DELEGATE);
+ UserOnboardingResponse userOnboardingResponse3 = new UserOnboardingResponse();
+ userOnboardingResponse3.setRole(PartyRole.OPERATOR);
+ dummyOnboardingResponse.setUsers(List.of(userOnboardingResponse, userOnboardingResponse2, userOnboardingResponse3));
List onboardingResponses = new ArrayList<>();
- onboardingResponses.add(onboardingResponse);
+ onboardingResponses.add(dummyOnboardingResponse);
when(onboardingService.institutionOnboardings("taxCode", "subunitCode", "origin", "originId", OnboardingStatus.PENDING))
.thenReturn(Uni.createFrom().item(onboardingResponses));
Map queryParameterMap = getStringStringMapOnboardings();
// when
- given()
+ Response response = given()
.when()
.queryParams(queryParameterMap)
.get("/institutionOnboardings")
.then()
- .statusCode(200);
+ .statusCode(200)
+ .extract()
+ .response();
+
+ List onboardingResponseList = response.jsonPath().getList("", OnboardingResponseV1.class);
// then
verify(onboardingService, times(1))
.institutionOnboardings("taxCode", "subunitCode", "origin", "originId", OnboardingStatus.PENDING);
- assertNotNull(onboardingResponses);
+ assertNotNull(onboardingResponseList);
+ assertEquals(PartyRole.ADMIN_EA.name(), onboardingResponseList.get(0).getUsers().get(0).getRole().name());
+ assertEquals(PartyRole.DELEGATE.name(), onboardingResponseList.get(0).getUsers().get(1).getRole().name());
+ assertEquals(PartyRole.OPERATOR.name(), onboardingResponseList.get(0).getUsers().get(2).getRole().name());
}
@Test
@TestSecurity(user = "userJwt")
void verifyOnboardingNoContentType() {
- OnboardingResponse onboardingResponse = dummyOnboardingResponse();
+ OnboardingResponse dummyOnboardingResponse = dummyOnboardingResponse();
List onboardingResponses = new ArrayList<>();
- onboardingResponses.add(onboardingResponse);
+ onboardingResponses.add(dummyOnboardingResponse);
when(onboardingService.verifyOnboarding("taxCode", "subunitCode", "origin", "originId", OnboardingStatus.COMPLETED, "prod-interop"))
.thenReturn(Uni.createFrom().item(onboardingResponses));
@@ -1004,7 +1021,7 @@ private static Map getStringStringMap() {
return queryParameterMap;
}
- private static Map getStringStringMapOnboardings() {
+ static Map getStringStringMapOnboardings() {
Map queryParameterMap = new HashMap<>();
queryParameterMap.put("taxCode", "taxCode");
queryParameterMap.put("subunitCode", "subunitCode");
@@ -1035,7 +1052,7 @@ private static OnboardingGet dummyOnboardingGet() {
return onboarding;
}
- private static OnboardingResponse dummyOnboardingResponse() {
+ static OnboardingResponse dummyOnboardingResponse() {
String str = "2025-01-09 11:36";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);
@@ -1062,7 +1079,7 @@ private OnboardingUserRequest dummyOnboardingUser() {
return onboardingUserRequest;
}
- private OnboardingPaRequest dummyOnboardingPa() {
+ static OnboardingPaRequest dummyOnboardingPa() {
OnboardingPaRequest onboardingPaValid = new OnboardingPaRequest();
onboardingPaValid.setProductId("productId");
@@ -1072,6 +1089,7 @@ private OnboardingPaRequest dummyOnboardingPa() {
institution.setInstitutionType(InstitutionType.PA);
+ userDTO.setRole(PartyRole.ADMIN_EA_IO);
onboardingPaValid.setUsers(List.of(userDTO));
onboardingPaValid.setInstitution(institution);
onboardingPaValid.setBilling(billingPaRequest);
diff --git a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/controller/OnboardingV2ControllerTest.java b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/controller/OnboardingV2ControllerTest.java
new file mode 100644
index 000000000..dd1d98fb5
--- /dev/null
+++ b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/controller/OnboardingV2ControllerTest.java
@@ -0,0 +1,167 @@
+package it.pagopa.selfcare.onboarding.controller;
+
+import io.quarkus.test.InjectMock;
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.common.http.TestHTTPEndpoint;
+import io.quarkus.test.junit.QuarkusTest;
+import io.quarkus.test.mongodb.MongoTestResource;
+import io.quarkus.test.security.TestSecurity;
+import io.restassured.http.ContentType;
+import io.smallrye.mutiny.Uni;
+import it.pagopa.selfcare.onboarding.common.InstitutionType;
+import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
+import it.pagopa.selfcare.onboarding.common.Origin;
+import it.pagopa.selfcare.onboarding.controller.request.*;
+import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponse;
+import it.pagopa.selfcare.onboarding.entity.Onboarding;
+import it.pagopa.selfcare.onboarding.service.OnboardingService;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static io.restassured.RestAssured.given;
+import static it.pagopa.selfcare.onboarding.controller.OnboardingControllerTest.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.*;
+
+@QuarkusTest
+@TestHTTPEndpoint(OnboardingV2Controller.class)
+@QuarkusTestResource(MongoTestResource.class)
+class OnboardingV2ControllerTest {
+
+ static final UserRequest userDTO;
+ @InjectMock
+ OnboardingService onboardingService;
+
+ static {
+ userDTO = new UserRequest();
+ userDTO.setTaxCode("taxCode");
+ }
+
+ @Test
+ @TestSecurity(user = "userJwt")
+ void onboardingCompletion() {
+
+ OnboardingDefaultRequest onboardingDefaultRequest = dummyOnboardingDefaultRequest();
+
+ Mockito.when(onboardingService.onboardingCompletion(any(), any()))
+ .thenReturn(Uni.createFrom().item(new OnboardingResponse()));
+
+ given()
+ .when()
+ .body(onboardingDefaultRequest)
+ .contentType(ContentType.JSON)
+ .post("/completion")
+ .then()
+ .statusCode(200);
+
+ ArgumentCaptor captor = ArgumentCaptor.forClass(Onboarding.class);
+ Mockito.verify(onboardingService, times(1)).onboardingCompletion(captor.capture(), any());
+ assertEquals(InstitutionType.PRV, captor.getValue().getInstitution().getInstitutionType());
+ }
+
+ @Test
+ @TestSecurity(user = "userJwt")
+ void onboardingPaCompletion() {
+
+ OnboardingPaRequest onboardingPaRequest = dummyOnboardingPa();
+
+ Mockito.when(onboardingService.onboardingCompletion(any(), any()))
+ .thenReturn(Uni.createFrom().item(new OnboardingResponse()));
+
+ given()
+ .when()
+ .body(onboardingPaRequest)
+ .contentType(ContentType.JSON)
+ .post("/pa/completion")
+ .then()
+ .statusCode(200);
+
+ ArgumentCaptor captor = ArgumentCaptor.forClass(Onboarding.class);
+ Mockito.verify(onboardingService, times(1)).onboardingCompletion(captor.capture(), any());
+ assertEquals(InstitutionType.PA, captor.getValue().getInstitution().getInstitutionType());
+ }
+
+ @Test
+ @TestSecurity(user = "userJwt")
+ void onboardingCompletePg() {
+
+ OnboardingPgRequest onboardingPgRequest = new OnboardingPgRequest();
+ onboardingPgRequest.setProductId("productId");
+ onboardingPgRequest.setUsers(List.of(userDTO));
+ onboardingPgRequest.setTaxCode("taxCode");
+ onboardingPgRequest.setDigitalAddress("digital@address.it");
+ onboardingPgRequest.setOrigin(Origin.INFOCAMERE);
+
+ Mockito.when(onboardingService.onboardingPgCompletion(any(), any()))
+ .thenReturn(Uni.createFrom().item(new OnboardingResponse()));
+
+ given()
+ .when()
+ .body(onboardingPgRequest)
+ .contentType(ContentType.JSON)
+ .post("/pg/completion")
+ .then()
+ .statusCode(200);
+
+ ArgumentCaptor captor = ArgumentCaptor.forClass(Onboarding.class);
+ Mockito.verify(onboardingService, times(1)).onboardingPgCompletion(captor.capture(), any());
+ assertEquals(InstitutionType.PG, captor.getValue().getInstitution().getInstitutionType());
+ }
+
+ @Test
+ @TestSecurity(user = "userJwt")
+ void onboardingPspCompletion() {
+
+ OnboardingPspRequest onboardingPspRequest = getOnboardingPspRequest();
+
+ Mockito.when(onboardingService.onboardingCompletion(any(), any()))
+ .thenReturn(Uni.createFrom().item(new OnboardingResponse()));
+
+ given()
+ .when()
+ .body(onboardingPspRequest)
+ .contentType(ContentType.JSON)
+ .post("/psp/completion")
+ .then()
+ .statusCode(200);
+
+ ArgumentCaptor captor = ArgumentCaptor.forClass(Onboarding.class);
+ Mockito.verify(onboardingService, times(1)).onboardingCompletion(captor.capture(), any());
+ assertEquals(InstitutionType.PSP, captor.getValue().getInstitution().getInstitutionType());
+ }
+
+ @Test
+ @TestSecurity(user = "userJwt")
+ void getInstitutionOnboardings() {
+ // given
+ OnboardingResponse onboardingResponse = dummyOnboardingResponse();
+ List onboardingResponses = new ArrayList<>();
+ onboardingResponses.add(onboardingResponse);
+ when(onboardingService.institutionOnboardings("taxCode", "subunitCode", "origin", "originId", OnboardingStatus.PENDING))
+ .thenReturn(Uni.createFrom().item(onboardingResponses));
+
+ Map queryParameterMap = getStringStringMapOnboardings();
+
+ // when
+ given()
+ .when()
+ .queryParams(queryParameterMap)
+ .get("/institutionOnboardings")
+ .then()
+ .statusCode(200);
+
+ // then
+ verify(onboardingService, times(1))
+ .institutionOnboardings("taxCode", "subunitCode", "origin", "originId", OnboardingStatus.PENDING);
+ assertNotNull(onboardingResponses);
+ }
+
+
+}
\ No newline at end of file
diff --git a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapperTest.java b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapperTest.java
index 9bba175d9..bbcdff1fc 100644
--- a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapperTest.java
+++ b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/mapper/OnboardingMapperTest.java
@@ -1,6 +1,12 @@
package it.pagopa.selfcare.onboarding.mapper;
-import it.pagopa.selfcare.onboarding.model.*;
+import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponse;
+import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponseV1;
+import it.pagopa.selfcare.onboarding.controller.response.UserOnboardingResponse;
+import it.pagopa.selfcare.onboarding.model.Aggregate;
+import it.pagopa.selfcare.onboarding.model.AggregateUser;
+import it.pagopa.selfcare.onboarding.model.CsvAggregateAppIo;
+import it.pagopa.selfcare.onboarding.model.CsvAggregateSend;
import org.junit.jupiter.api.Test;
import org.openapi.quarkus.onboarding_functions_json.model.PartyRole;
import org.openapi.quarkus.onboarding_functions_json.model.WorkflowType;
@@ -157,4 +163,18 @@ void mapUsers_withNullCsvAggregateSend_returnsEmptyList() {
assertNotNull(result);
assertTrue(result.isEmpty());
}
+
+ @Test
+ void toOnboardingResponseV1() {
+ OnboardingResponse onboardingResponse = new OnboardingResponse();
+ onboardingResponse.setId("id");
+ UserOnboardingResponse userOnboardingResponse = new UserOnboardingResponse();
+ userOnboardingResponse.setId("userId");
+ userOnboardingResponse.setRole(it.pagopa.selfcare.onboarding.common.PartyRole.ADMIN_EA_IO);
+ onboardingResponse.setUsers(List.of(userOnboardingResponse));
+
+ OnboardingResponseV1 response = mapper.toOnboardingResponseV1(onboardingResponse);
+ assertNotNull(response);
+ assertNull(response.getUsers().get(0).getRole());
+ }
}
diff --git a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/AggregatesServiceDefaultTest.java b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/AggregatesServiceDefaultTest.java
index bf1342d26..99eb3590d 100644
--- a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/AggregatesServiceDefaultTest.java
+++ b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/AggregatesServiceDefaultTest.java
@@ -34,6 +34,7 @@
import java.io.File;
import java.util.List;
+import static it.pagopa.selfcare.onboarding.common.PartyRole.DELEGATE;
import static org.mockito.Mockito.*;
@@ -345,21 +346,21 @@ private static VerifyAggregateResponse mockResponseForSEND() {
aggregateUserUO.setSurname("Rossi");
aggregateUserUO.setTaxCode("RSSMRA66A01H501W");
aggregateUserUO.setEmail("mario.rossi@acme.it");
- aggregateUserUO.setRole(org.openapi.quarkus.core_json.model.Person.RoleEnum.DELEGATE.name());
+ aggregateUserUO.setRole(DELEGATE.name());
AggregateUser aggregateUser = new AggregateUser();
aggregateUser.setName("Guendalina");
aggregateUser.setSurname("Giordano");
aggregateUser.setTaxCode("GRDGDL66A01H501W");
aggregateUser.setEmail("guendalina.giordano@test.it");
- aggregateUser.setRole(org.openapi.quarkus.core_json.model.Person.RoleEnum.DELEGATE.name());
+ aggregateUser.setRole(DELEGATE.name());
AggregateUser aggregateUserAOO = new AggregateUser();
aggregateUserAOO.setName("Ma");
aggregateUserAOO.setSurname("Re");
aggregateUserAOO.setTaxCode("REXMAX66A01H501W");
aggregateUserAOO.setEmail("ma.re@test.it");
- aggregateUserAOO.setRole(org.openapi.quarkus.core_json.model.Person.RoleEnum.DELEGATE.name());
+ aggregateUserAOO.setRole(DELEGATE.name());
VerifyAggregateResponse verifyAggregateResponse = new VerifyAggregateResponse();
Aggregate aggregateUO = new Aggregate();
diff --git a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefaultTest.java b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefaultTest.java
index e3242537c..fdec6c989 100644
--- a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefaultTest.java
+++ b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefaultTest.java
@@ -1,27 +1,5 @@
package it.pagopa.selfcare.onboarding.service;
-import static it.pagopa.selfcare.onboarding.common.InstitutionType.PSP;
-import static it.pagopa.selfcare.onboarding.common.ProductId.*;
-import static it.pagopa.selfcare.onboarding.common.WorkflowType.INCREMENT_REGISTRATION_AGGREGATOR;
-import static it.pagopa.selfcare.onboarding.service.OnboardingServiceDefault.USERS_FIELD_LIST;
-import static it.pagopa.selfcare.onboarding.service.OnboardingServiceDefault.USERS_FIELD_TAXCODE;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.openapi.quarkus.core_json.model.InstitutionProduct.StateEnum.PENDING;
-
import io.quarkus.mongodb.panache.common.reactive.ReactivePanacheUpdate;
import io.quarkus.mongodb.panache.reactive.ReactivePanacheQuery;
import io.quarkus.panache.mock.PanacheMock;
@@ -36,32 +14,14 @@
import io.smallrye.mutiny.Uni;
import io.smallrye.mutiny.helpers.test.UniAssertSubscriber;
import it.pagopa.selfcare.azurestorage.AzureBlobClient;
-import it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType;
-import it.pagopa.selfcare.onboarding.common.InstitutionType;
-import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
-import it.pagopa.selfcare.onboarding.common.Origin;
-import it.pagopa.selfcare.onboarding.common.PartyRole;
-import it.pagopa.selfcare.onboarding.common.WorkflowType;
+import it.pagopa.selfcare.onboarding.common.*;
import it.pagopa.selfcare.onboarding.constants.CustomError;
import it.pagopa.selfcare.onboarding.controller.request.AggregateInstitutionRequest;
import it.pagopa.selfcare.onboarding.controller.request.OnboardingImportContract;
import it.pagopa.selfcare.onboarding.controller.request.OnboardingUserRequest;
import it.pagopa.selfcare.onboarding.controller.request.UserRequest;
-import it.pagopa.selfcare.onboarding.controller.response.BillingResponse;
-import it.pagopa.selfcare.onboarding.controller.response.OnboardingGet;
-import it.pagopa.selfcare.onboarding.controller.response.OnboardingGetResponse;
-import it.pagopa.selfcare.onboarding.controller.response.OnboardingResponse;
-import it.pagopa.selfcare.onboarding.controller.response.UserOnboardingResponse;
-import it.pagopa.selfcare.onboarding.controller.response.UserResponse;
-import it.pagopa.selfcare.onboarding.entity.AdditionalInformations;
-import it.pagopa.selfcare.onboarding.entity.AggregateInstitution;
-import it.pagopa.selfcare.onboarding.entity.Billing;
-import it.pagopa.selfcare.onboarding.entity.CheckManagerResponse;
-import it.pagopa.selfcare.onboarding.entity.Institution;
-import it.pagopa.selfcare.onboarding.entity.Onboarding;
-import it.pagopa.selfcare.onboarding.entity.PaymentServiceProvider;
-import it.pagopa.selfcare.onboarding.entity.Token;
-import it.pagopa.selfcare.onboarding.entity.User;
+import it.pagopa.selfcare.onboarding.controller.response.*;
+import it.pagopa.selfcare.onboarding.entity.*;
import it.pagopa.selfcare.onboarding.exception.InvalidRequestException;
import it.pagopa.selfcare.onboarding.exception.OnboardingNotAllowedException;
import it.pagopa.selfcare.onboarding.exception.ResourceConflictException;
@@ -82,17 +42,6 @@
import jakarta.inject.Inject;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.Response;
-
-import java.io.File;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-
import org.apache.http.HttpStatus;
import org.bson.Document;
import org.eclipse.microprofile.rest.client.inject.RestClient;
@@ -108,22 +57,8 @@
import org.openapi.quarkus.core_json.model.InstitutionsResponse;
import org.openapi.quarkus.onboarding_functions_json.api.OrchestrationApi;
import org.openapi.quarkus.onboarding_functions_json.model.OrchestrationResponse;
-import org.openapi.quarkus.party_registry_proxy_json.api.AooApi;
-import org.openapi.quarkus.party_registry_proxy_json.api.GeographicTaxonomiesApi;
-import org.openapi.quarkus.party_registry_proxy_json.api.InfocamereApi;
-import org.openapi.quarkus.party_registry_proxy_json.api.InfocamerePdndApi;
-import org.openapi.quarkus.party_registry_proxy_json.api.InsuranceCompaniesApi;
-import org.openapi.quarkus.party_registry_proxy_json.api.NationalRegistriesApi;
-import org.openapi.quarkus.party_registry_proxy_json.api.UoApi;
-import org.openapi.quarkus.party_registry_proxy_json.model.AOOResource;
-import org.openapi.quarkus.party_registry_proxy_json.model.BusinessResource;
-import org.openapi.quarkus.party_registry_proxy_json.model.BusinessesResource;
-import org.openapi.quarkus.party_registry_proxy_json.model.GeographicTaxonomyResource;
-import org.openapi.quarkus.party_registry_proxy_json.model.InstitutionResource;
-import org.openapi.quarkus.party_registry_proxy_json.model.InsuranceCompanyResource;
-import org.openapi.quarkus.party_registry_proxy_json.model.LegalVerificationResult;
-import org.openapi.quarkus.party_registry_proxy_json.model.PDNDBusinessResource;
-import org.openapi.quarkus.party_registry_proxy_json.model.UOResource;
+import org.openapi.quarkus.party_registry_proxy_json.api.*;
+import org.openapi.quarkus.party_registry_proxy_json.model.*;
import org.openapi.quarkus.user_json.model.UserInstitutionResponse;
import org.openapi.quarkus.user_registry_json.api.UserApi;
import org.openapi.quarkus.user_registry_json.model.CertifiableFieldResourceOfstring;
@@ -131,6 +66,22 @@
import org.openapi.quarkus.user_registry_json.model.UserResource;
import org.openapi.quarkus.user_registry_json.model.WorkContactResource;
+import java.io.File;
+import java.time.LocalDateTime;
+import java.util.*;
+
+import static it.pagopa.selfcare.onboarding.common.InstitutionType.PSP;
+import static it.pagopa.selfcare.onboarding.common.ProductId.*;
+import static it.pagopa.selfcare.onboarding.common.WorkflowType.INCREMENT_REGISTRATION_AGGREGATOR;
+import static it.pagopa.selfcare.onboarding.service.OnboardingServiceDefault.USERS_FIELD_LIST;
+import static it.pagopa.selfcare.onboarding.service.OnboardingServiceDefault.USERS_FIELD_TAXCODE;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.*;
+import static org.openapi.quarkus.core_json.model.InstitutionProduct.StateEnum.PENDING;
+
@QuarkusTest
@QuarkusTestResource(MongoTestResource.class)
class OnboardingServiceDefaultTest {
@@ -2439,7 +2390,7 @@ void onboardingUsers(UniAsserter asserter) {
institutionResponse.setOriginId("originId");
InstitutionsResponse response = new InstitutionsResponse();
response.setInstitutions(List.of(institutionResponse));
- asserter.execute(() -> when(institutionApi.getInstitutionsUsingGET(any(), any(), any(), any()))
+ asserter.execute(() -> when(institutionApi.getInstitutionsUsingGET(any(), any(), any(), any(), any()))
.thenReturn(Uni.createFrom().item(response)));
asserter.assertThat(() -> onboardingService.onboardingUsers(request, "userId", WorkflowType.USERS), Assertions::assertNotNull);
@@ -2472,7 +2423,7 @@ void onboardingUsersWithNullOnboardingReeferenceId(UniAsserter asserter) {
institutionResponse.setOriginId("originId");
InstitutionsResponse response = new InstitutionsResponse();
response.setInstitutions(List.of(institutionResponse));
- when(institutionApi.getInstitutionsUsingGET(any(), any(), any(), any()))
+ when(institutionApi.getInstitutionsUsingGET(any(), any(), any(), any(), any()))
.thenReturn(Uni.createFrom().item(response));
asserter.assertFailedWith(() -> onboardingService.onboardingUsers(request, "userId", WorkflowType.USERS_EA), ResourceNotFoundException.class);
@@ -2493,7 +2444,7 @@ void onboardingUsersWithInstitutionNotFound() {
institutionResponse.setOriginId("originId");
InstitutionsResponse response = new InstitutionsResponse();
response.setInstitutions(List.of(institutionResponse, institutionResponse));
- when(institutionApi.getInstitutionsUsingGET("taxCode", "subunitCode", null, null))
+ when(institutionApi.getInstitutionsUsingGET("taxCode", "subunitCode", null, null, null))
.thenReturn(Uni.createFrom().item(response));
onboardingService
diff --git a/apps/pom.xml b/apps/pom.xml
index b668f68a0..ab8a88302 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -13,7 +13,7 @@
pom
- 0.6.6
+ 0.6.7
diff --git a/libs/onboarding-sdk-azure-storage/pom.xml b/libs/onboarding-sdk-azure-storage/pom.xml
index 87527437a..d5643c59c 100644
--- a/libs/onboarding-sdk-azure-storage/pom.xml
+++ b/libs/onboarding-sdk-azure-storage/pom.xml
@@ -6,7 +6,7 @@
it.pagopa.selfcare
onboarding-sdk-pom
- 0.6.6
+ 0.6.7
../onboarding-sdk-pom
diff --git a/libs/onboarding-sdk-common/pom.xml b/libs/onboarding-sdk-common/pom.xml
index 9f0561143..5e5156a26 100644
--- a/libs/onboarding-sdk-common/pom.xml
+++ b/libs/onboarding-sdk-common/pom.xml
@@ -4,7 +4,7 @@
it.pagopa.selfcare
onboarding-sdk-pom
- 0.6.6
+ 0.6.7
../onboarding-sdk-pom
onboarding-sdk-common
diff --git a/libs/onboarding-sdk-common/src/main/java/it/pagopa/selfcare/onboarding/common/PartyRole.java b/libs/onboarding-sdk-common/src/main/java/it/pagopa/selfcare/onboarding/common/PartyRole.java
index 50add63ad..3ce27760f 100644
--- a/libs/onboarding-sdk-common/src/main/java/it/pagopa/selfcare/onboarding/common/PartyRole.java
+++ b/libs/onboarding-sdk-common/src/main/java/it/pagopa/selfcare/onboarding/common/PartyRole.java
@@ -5,6 +5,7 @@ public enum PartyRole {
DELEGATE,
SUB_DELEGATE,
OPERATOR,
- ADMIN_EA
+ ADMIN_EA,
+ ADMIN_EA_IO
}
diff --git a/libs/onboarding-sdk-crypto/pom.xml b/libs/onboarding-sdk-crypto/pom.xml
index 9294a2446..312110111 100644
--- a/libs/onboarding-sdk-crypto/pom.xml
+++ b/libs/onboarding-sdk-crypto/pom.xml
@@ -4,7 +4,7 @@
it.pagopa.selfcare
onboarding-sdk-pom
- 0.6.6
+ 0.6.7
../onboarding-sdk-pom
onboarding-sdk-crypto
diff --git a/libs/onboarding-sdk-pom/pom.xml b/libs/onboarding-sdk-pom/pom.xml
index 1d16404ed..9d47fcc3e 100644
--- a/libs/onboarding-sdk-pom/pom.xml
+++ b/libs/onboarding-sdk-pom/pom.xml
@@ -5,7 +5,7 @@
onboarding-sdk-pom
pom
onboarding-sdk-pom
- 0.6.6
+ 0.6.7
17
diff --git a/libs/onboarding-sdk-product/pom.xml b/libs/onboarding-sdk-product/pom.xml
index 8f45054a8..86e645eec 100644
--- a/libs/onboarding-sdk-product/pom.xml
+++ b/libs/onboarding-sdk-product/pom.xml
@@ -4,12 +4,12 @@
it.pagopa.selfcare
onboarding-sdk-pom
- 0.6.6
+ 0.6.7
../onboarding-sdk-pom
onboarding-sdk-product
onboarding-sdk-product
- 0.6.6
+ 0.6.7
2.15.2
diff --git a/test-coverage/pom.xml b/test-coverage/pom.xml
index 31a3674fa..1db950049 100644
--- a/test-coverage/pom.xml
+++ b/test-coverage/pom.xml
@@ -19,7 +19,7 @@
**/utils/**, **/*Constant*, **/*Config.java, **/error/**, **/filter/**, org/**
https://sonarcloud.io
- 0.6.6
+ 0.6.7