claims) { this.claims = claims; }
+ }
+
+ /**
+ * Holder binding key info from the {@code cnf.jwk} claim.
+ */
+ public static class HolderBinding {
+
+ private String method;
+ private String keyType;
+ private String curve;
+
+ @ApiModelProperty(value = "Binding method, e.g. 'cnf.jwk'.")
+ @JsonProperty("method")
+ public String getMethod() { return method; }
+ public void setMethod(String method) { this.method = method; }
+
+ @ApiModelProperty(value = "Public key type: EC, RSA, or OKP.")
+ @JsonProperty("keyType")
+ public String getKeyType() { return keyType; }
+ public void setKeyType(String keyType) { this.keyType = keyType; }
+
+ @ApiModelProperty(value = "Elliptic curve name (e.g. P-256, Ed25519); null for RSA.")
+ @JsonProperty("curve")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public String getCurve() { return curve; }
+ public void setCurve(String curve) { this.curve = curve; }
+ }
+
+ /**
+ * Credential holder — subject identifier from the sub claim.
+ */
+ public static class Holder {
+
+ private String id;
+
+ @ApiModelProperty(value = "Subject identifier (sub claim).")
+ @JsonProperty("id")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public String getId() { return id; }
+ public void setId(String id) { this.id = id; }
+ }
+
+ /**
+ * Key Binding JWT details — proves the wallet held the private key at presentation time.
+ */
+ public static class KeyBinding {
+
+ private boolean verified;
+ private String presentedAt;
+ private String audience;
+ private String nonce;
+
+ @ApiModelProperty(value = "True when the KB-JWT signature, iat, sd_hash, and nonce all passed verification.")
+ @JsonProperty("verified")
+ public boolean isVerified() { return verified; }
+ public void setVerified(boolean verified) { this.verified = verified; }
+
+ @ApiModelProperty(value = "ISO-8601 timestamp from the KB-JWT iat — when the wallet created this presentation.")
+ @JsonProperty("presentedAt")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public String getPresentedAt() { return presentedAt; }
+ public void setPresentedAt(String presentedAt) { this.presentedAt = presentedAt; }
+
+ @ApiModelProperty(value = "Audience claim from KB-JWT — the verifier this presentation was intended for.")
+ @JsonProperty("audience")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public String getAudience() { return audience; }
+ public void setAudience(String audience) { this.audience = audience; }
+
+ @ApiModelProperty(value = "Nonce from KB-JWT — matches the nonce from the original VP request.")
+ @JsonProperty("nonce")
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public String getNonce() { return nonce; }
+ public void setNonce(String nonce) { this.nonce = nonce; }
+ }
+}
diff --git a/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/VpVerificationApi.java b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/VpVerificationApi.java
new file mode 100644
index 0000000000..ce5ec23bed
--- /dev/null
+++ b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/VpVerificationApi.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2026, WSO2 LLC. (http://www.wso2.com).
+ *
+ * WSO2 LLC. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.identity.api.server.vp.verification.v1;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.factories.VpVerificationApiServiceFactory;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ * JAX-RS resource for standalone VP (Verifiable Presentation) verification.
+ *
+ * Endpoints (public — no authentication required):
+ *
+ * - POST /vp/verification/initiate — start a new verification transaction
+ * - GET /vp/verification/status/{request_id} — poll for verification result
+ *
+ */
+@Path("/vp/verification")
+@Api(value = "/vp/verification", description = "Standalone VP Verification API")
+public class VpVerificationApi {
+
+ private final VpVerificationApiService delegate =
+ VpVerificationApiServiceFactory.getVpVerificationApi();
+
+ @POST
+ @Path("/initiate")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @ApiOperation(
+ value = "Initiate a VP verification transaction",
+ notes = "Creates a new verification transaction and returns a wallet URL for QR code display.",
+ response = VerificationInitiateResponse.class)
+ @ApiResponses(value = {
+ @ApiResponse(code = 201, message = "Created", response = VerificationInitiateResponse.class),
+ @ApiResponse(code = 400, message = "Bad Request", response = Error.class),
+ @ApiResponse(code = 500, message = "Internal Server Error", response = Error.class)
+ })
+ public Response initiateVerification(
+ @ApiParam(value = "Verification initiation request", required = true)
+ VerificationInitiateRequest body) {
+
+ return delegate.initiateVerification(body);
+ }
+
+ @GET
+ @Path("/status/{request_id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ @ApiOperation(
+ value = "Get VP verification status",
+ notes = "Poll for the result of a verification session. "
+ + "Returns ACTIVE while waiting, VERIFIED with presentation on success, "
+ + "or FAILED with errors.",
+ response = VerificationStatusResponse.class)
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "OK", response = VerificationStatusResponse.class),
+ @ApiResponse(code = 404, message = "Not Found", response = Error.class),
+ @ApiResponse(code = 500, message = "Internal Server Error", response = Error.class)
+ })
+ public Response getVerificationStatus(
+ @ApiParam(value = "Request ID returned from initiation.", required = true)
+ @PathParam("request_id") String requestId) {
+
+ return delegate.getVerificationStatus(requestId);
+ }
+}
diff --git a/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/VpVerificationApiService.java b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/VpVerificationApiService.java
new file mode 100644
index 0000000000..1a0373a70f
--- /dev/null
+++ b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/VpVerificationApiService.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2026, WSO2 LLC. (http://www.wso2.com).
+ *
+ * WSO2 LLC. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.identity.api.server.vp.verification.v1;
+
+import javax.ws.rs.core.Response;
+
+/**
+ * Abstract service for VP Verification API.
+ */
+public abstract class VpVerificationApiService {
+
+ public abstract Response initiateVerification(VerificationInitiateRequest body);
+
+ public abstract Response getVerificationStatus(String requestId);
+}
diff --git a/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/factories/VpVerificationApiServiceFactory.java b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/factories/VpVerificationApiServiceFactory.java
new file mode 100644
index 0000000000..8c71694d81
--- /dev/null
+++ b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/gen/java/org/wso2/carbon/identity/api/server/vp/verification/v1/factories/VpVerificationApiServiceFactory.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2026, WSO2 LLC. (http://www.wso2.com).
+ *
+ * WSO2 LLC. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.identity.api.server.vp.verification.v1.factories;
+
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VpVerificationApiService;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.impl.VpVerificationApiServiceImpl;
+
+/**
+ * Factory class for VpVerificationApiService.
+ */
+public class VpVerificationApiServiceFactory {
+
+ private static final VpVerificationApiService SERVICE = new VpVerificationApiServiceImpl();
+
+ public static VpVerificationApiService getVpVerificationApi() {
+ return SERVICE;
+ }
+}
diff --git a/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/main/java/org/wso2/carbon/identity/api/server/vp/verification/v1/core/ServerVPVerificationService.java b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/main/java/org/wso2/carbon/identity/api/server/vp/verification/v1/core/ServerVPVerificationService.java
new file mode 100644
index 0000000000..30095a181d
--- /dev/null
+++ b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/main/java/org/wso2/carbon/identity/api/server/vp/verification/v1/core/ServerVPVerificationService.java
@@ -0,0 +1,240 @@
+/*
+ * Copyright (c) 2026, WSO2 LLC. (http://www.wso2.com).
+ *
+ * WSO2 LLC. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.identity.api.server.vp.verification.v1.core;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.identity.api.server.common.ContextLoader;
+import org.wso2.carbon.identity.api.server.vp.verification.common.VPVerificationConstants;
+import org.wso2.carbon.identity.api.server.vp.verification.common.VPVerificationConstants.ErrorMessage;
+import org.wso2.carbon.identity.api.server.vp.verification.common.VPVerificationServiceHolder;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.Error;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationInitiateRequest;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationInitiateResponse;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationStatusResponse;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationStatusResponse.Credential;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationStatusResponse.HolderBinding;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationStatusResponse.Holder;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationStatusResponse.KeyBinding;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationStatusResponse.Presentation;
+import org.wso2.carbon.identity.openid4vc.presentation.authenticator.exception.VPAuthenticatorException;
+import org.wso2.carbon.identity.openid4vc.presentation.authenticator.model.VPFlowSession;
+import org.wso2.carbon.identity.openid4vc.presentation.authenticator.model.VPFlowStatus;
+import org.wso2.carbon.identity.openid4vc.presentation.authenticator.service.VPFlowService;
+import org.wso2.carbon.identity.openid4vc.presentation.authenticator.model.VPFlowInitiationResult;
+import org.wso2.carbon.identity.openid4vc.presentation.verification.dto.PresentationMetadata;
+import org.wso2.carbon.identity.openid4vc.presentation.verification.dto.VerificationResult;
+
+import java.net.URI;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.core.Response;
+
+/**
+ * Core business logic for the VP Verification REST API.
+ * Delegates to VPFlowService (obtained via OSGi) and maps to REST response models.
+ */
+public class ServerVPVerificationService {
+
+ private static final Log LOG = LogFactory.getLog(ServerVPVerificationService.class);
+
+ /**
+ * Initiate a new standalone VP verification session.
+ *
+ * @param request Initiation request containing presentationDefinitionId.
+ * @return JAX-RS Response with VerificationInitiateResponse (201) or Error.
+ */
+ public Response initiateVerification(VerificationInitiateRequest request) {
+
+ if (request == null || StringUtils.isBlank(request.getPresentationDefinitionId())) {
+ return buildBadRequestResponse(ErrorMessage.ERROR_CODE_INVALID_REQUEST,
+ "presentationDefinitionId is required.");
+ }
+
+ VPFlowService service = getService();
+ if (service == null) {
+ return buildNotImplementedResponse();
+ }
+
+ String tenantDomain = ContextLoader.getTenantDomainFromContext();
+
+ try {
+ VPFlowInitiationResult initiation =
+ service.initiate(request.getPresentationDefinitionId(), tenantDomain);
+
+ VerificationInitiateResponse resp = new VerificationInitiateResponse();
+ resp.setRequestId(initiation.getRequestId());
+ resp.setWalletUrl(initiation.getWalletUrl());
+ resp.setRequestUri(initiation.getRequestUri());
+ resp.setExpiresAt(initiation.getExpiresAt());
+
+ URI location = URI.create(
+ VPVerificationConstants.VP_VERIFICATION_STATUS_PATH + "/" + initiation.getRequestId());
+ return Response.created(location).entity(resp).build();
+
+ } catch (VPAuthenticatorException e) {
+ LOG.error("Failed to initiate VP verification session.", e);
+ return buildInternalErrorResponse(ErrorMessage.ERROR_CODE_INTERNAL_ERROR, e.getMessage());
+ }
+ }
+
+ /**
+ * Poll the status of a verification session.
+ *
+ * @param requestId Request ID from initiation.
+ * @return JAX-RS Response with VerificationStatusResponse (200) or Error.
+ */
+ public Response getVerificationStatus(String requestId) {
+
+ if (StringUtils.isBlank(requestId)) {
+ return buildBadRequestResponse(ErrorMessage.ERROR_CODE_INVALID_REQUEST,
+ "requestId is required.");
+ }
+
+ VPFlowService service = getService();
+ if (service == null) {
+ return buildNotImplementedResponse();
+ }
+
+ VPFlowSession session = service.getSession(requestId);
+ if (session == null) {
+ return buildNotFoundResponse(requestId);
+ }
+
+ VerificationStatusResponse resp = new VerificationStatusResponse();
+ resp.setRequestId(requestId);
+ resp.setStatus(session.getStatus() != null ? session.getStatus().name() : VPFlowStatus.FAILED.name());
+
+ if (session.getVerificationResult() != null && session.getStatus() == VPFlowStatus.VERIFIED) {
+ resp.setPresentation(buildPresentation(session.getVerificationResult()));
+ resp.setErrors(session.getVerificationResult().getErrors());
+ } else if (session.getStatus() == VPFlowStatus.FAILED) {
+ if (session.getVerificationResult() != null) {
+ resp.setErrors(session.getVerificationResult().getErrors());
+ }
+ }
+
+ return Response.ok(resp).build();
+ }
+
+ private Presentation buildPresentation(VerificationResult result) {
+
+ List metadataList = result.getCredentialMetadataList();
+ PresentationMetadata firstMeta = (metadataList != null && !metadataList.isEmpty())
+ ? metadataList.get(0) : null;
+
+ Presentation p = new Presentation();
+ p.setFormat(firstMeta != null ? firstMeta.getVpFormat() : null);
+ p.setSubmittedAt(firstMeta != null
+ ? Instant.ofEpochMilli(firstMeta.getPresentationTime()).toString() : null);
+
+ // ── Credentials — one entry per verified credential ───────────────────
+ List credentials = new ArrayList<>();
+ if (metadataList != null) {
+ for (PresentationMetadata meta : metadataList) {
+ Credential cred = new Credential();
+ cred.setType(meta.getCredentialType());
+ cred.setIssuer(meta.getIssuerDid());
+ cred.setSigningAlgorithm(meta.getAlgorithm());
+ if (meta.getIssuedAt() != null) {
+ cred.setIssuedAt(Instant.ofEpochMilli(meta.getIssuedAt()).toString());
+ }
+ if (meta.getExpiresAt() != null) {
+ cred.setExpiresAt(Instant.ofEpochMilli(meta.getExpiresAt()).toString());
+ }
+ if (StringUtils.isNotBlank(meta.getHolderBindingMethod())) {
+ HolderBinding hb = new HolderBinding();
+ hb.setMethod(meta.getHolderBindingMethod());
+ hb.setKeyType(meta.getHolderKeyType());
+ hb.setCurve(meta.getHolderKeyCurve());
+ cred.setHolderBinding(hb);
+ }
+ cred.setClaims(meta.getCredentialClaims());
+ credentials.add(cred);
+ }
+ }
+ p.setCredentials(credentials);
+
+ // ── Holder — only emitted when a sub claim was present in the credential ─
+ if (firstMeta != null && StringUtils.isNotBlank(firstMeta.getHolderDid())) {
+ Holder holder = new Holder();
+ holder.setId(firstMeta.getHolderDid());
+ p.setHolder(holder);
+ }
+
+ // ── Key Binding — use first credential that carried a verified KB-JWT ─
+ // All KB-JWTs in a VP share the same nonce and audience, so any one is representative.
+ if (metadataList != null) {
+ for (PresentationMetadata meta : metadataList) {
+ if (meta.isKbJwtVerified()) {
+ KeyBinding kb = new KeyBinding();
+ kb.setVerified(true);
+ if (meta.getKbJwtPresentedAt() != null) {
+ kb.setPresentedAt(Instant.ofEpochMilli(meta.getKbJwtPresentedAt()).toString());
+ }
+ kb.setAudience(meta.getKbJwtAudience());
+ kb.setNonce(meta.getNonce());
+ p.setKeyBinding(kb);
+ break;
+ }
+ }
+ }
+
+ return p;
+ }
+
+ private VPFlowService getService() {
+ return VPVerificationServiceHolder.getVPFlowService();
+ }
+
+ private Response buildBadRequestResponse(ErrorMessage errorMsg, String description) {
+ Error error = new Error();
+ error.setCode(errorMsg.getCode());
+ error.setMessage(errorMsg.getMessage());
+ error.setDescription(description);
+ return Response.status(Response.Status.BAD_REQUEST).entity(error).build();
+ }
+
+ private Response buildNotFoundResponse(String requestId) {
+ Error error = new Error();
+ error.setCode(ErrorMessage.ERROR_CODE_SESSION_NOT_FOUND.getCode());
+ error.setMessage(ErrorMessage.ERROR_CODE_SESSION_NOT_FOUND.getMessage());
+ error.setDescription("No verification session found for requestId: " + requestId);
+ return Response.status(Response.Status.NOT_FOUND).entity(error).build();
+ }
+
+ private Response buildInternalErrorResponse(ErrorMessage errorMsg, String description) {
+ Error error = new Error();
+ error.setCode(errorMsg.getCode());
+ error.setMessage(errorMsg.getMessage());
+ error.setDescription(description);
+ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
+ }
+
+ private Response buildNotImplementedResponse() {
+ Error error = new Error();
+ error.setCode("OID4VP-60001");
+ error.setMessage("OpenID4VP feature is not enabled.");
+ error.setDescription(
+ "The OpenID4VP feature is disabled. Enable it via [openid4vp] enabled=true in deployment.toml.");
+ return Response.status(Response.Status.NOT_IMPLEMENTED).entity(error).build();
+ }
+}
diff --git a/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/main/java/org/wso2/carbon/identity/api/server/vp/verification/v1/impl/VpVerificationApiServiceImpl.java b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/main/java/org/wso2/carbon/identity/api/server/vp/verification/v1/impl/VpVerificationApiServiceImpl.java
new file mode 100644
index 0000000000..ec6338776f
--- /dev/null
+++ b/components/org.wso2.carbon.identity.api.server.vp.verification/org.wso2.carbon.identity.api.server.vp.verification.v1/src/main/java/org/wso2/carbon/identity/api/server/vp/verification/v1/impl/VpVerificationApiServiceImpl.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2026, WSO2 LLC. (http://www.wso2.com).
+ *
+ * WSO2 LLC. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.identity.api.server.vp.verification.v1.impl;
+
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VerificationInitiateRequest;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.VpVerificationApiService;
+import org.wso2.carbon.identity.api.server.vp.verification.v1.core.ServerVPVerificationService;
+
+import javax.ws.rs.core.Response;
+
+/**
+ * Thin wrapper implementation of VpVerificationApiService.
+ * Delegates all logic to ServerVPVerificationService.
+ */
+public class VpVerificationApiServiceImpl extends VpVerificationApiService {
+
+ private static final ServerVPVerificationService CORE_SERVICE = new ServerVPVerificationService();
+
+ @Override
+ public Response initiateVerification(VerificationInitiateRequest body) {
+
+ return CORE_SERVICE.initiateVerification(body);
+ }
+
+ @Override
+ public Response getVerificationStatus(String requestId) {
+
+ return CORE_SERVICE.getVerificationStatus(requestId);
+ }
+}
diff --git a/components/org.wso2.carbon.identity.api.server.vp.verification/pom.xml b/components/org.wso2.carbon.identity.api.server.vp.verification/pom.xml
new file mode 100644
index 0000000000..d3346eabc4
--- /dev/null
+++ b/components/org.wso2.carbon.identity.api.server.vp.verification/pom.xml
@@ -0,0 +1,37 @@
+
+
+
+
+ 4.0.0
+
+
+ org.wso2.carbon.identity.server.api
+ identity-api-server
+ 1.6.36-SNAPSHOT
+ ../../pom.xml
+
+
+ org.wso2.carbon.identity.api.server.vp.verification
+ pom
+
+
+ org.wso2.carbon.identity.api.server.vp.verification.common
+ org.wso2.carbon.identity.api.server.vp.verification.v1
+
+
diff --git a/pom.xml b/pom.xml
index 8a42a22e02..ef8de274c2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -959,6 +959,48 @@
${project.version}
provided
+
+ org.wso2.carbon.identity.server.api
+ org.wso2.carbon.identity.api.server.vp.template.management.v1
+ ${project.version}
+ provided
+
+
+ org.wso2.carbon.identity.server.api
+ org.wso2.carbon.identity.api.server.vp.template.management.common
+ ${project.version}
+ provided
+
+
+ org.wso2.carbon.identity.server.api
+ org.wso2.carbon.identity.api.server.vp.verification.v1
+ ${project.version}
+ provided
+
+
+ org.wso2.carbon.identity.server.api
+ org.wso2.carbon.identity.api.server.vp.verification.common
+ ${project.version}
+ provided
+
+
+ org.wso2.carbon.identity.openid4vc
+ org.wso2.carbon.identity.openid4vc.presentation.authenticator
+ ${carbon.identity.openid4vc.version}
+ provided
+
+
+ org.wso2.carbon.identity.openid4vc
+ org.wso2.carbon.identity.openid4vc.presentation.management
+ ${carbon.identity.openid4vc.version}
+ provided
+
+
+ org.wso2.carbon.identity.openid4vc
+ org.wso2.carbon.identity.openid4vc.presentation.common
+ ${carbon.identity.openid4vc.version}
+ provided
+
org.wso2.carbon.identity.server.api
org.wso2.carbon.identity.api.server.credential.management.common
@@ -1158,7 +1200,7 @@
- 1.1.5
+ 1.1.7-SNAPSHOT
6.9.10
@@ -1214,6 +1256,8 @@
components/org.wso2.carbon.identity.api.server.workflow
components/org.wso2.carbon.identity.api.server.asynchronous.operation.status.management
components/org.wso2.carbon.identity.api.server.vc.template.management
+ components/org.wso2.carbon.identity.api.server.vp.template.management
+ components/org.wso2.carbon.identity.api.server.vp.verification
components/org.wso2.carbon.identity.api.server.credential.management
components/org.wso2.carbon.identity.api.server.moesif.publisher