diff --git a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/issue/controller/IssueControllerImpl.scala b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/issue/controller/IssueControllerImpl.scala index 725d7b3f52..3e8a35505c 100644 --- a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/issue/controller/IssueControllerImpl.scala +++ b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/issue/controller/IssueControllerImpl.scala @@ -114,17 +114,20 @@ class IssueControllerImpl( .fromOption(request.jwtVcPropertiesV1.map(_.claims).orElse(request.claims)) .orElseFail(ErrorResponse.badRequest(detail = Some("Missing request parameter: claims"))) kid = request.jwtVcPropertiesV1 - .map(_.issuingKid) + .flatMap(_.issuingKid) .orElse(request.issuingKid) // TODO: should it be Option[KeyId]? + validityPeriod = request.jwtVcPropertiesV1 + .flatMap(_.validityPeriod) + .orElse(request.validityPeriod) record <- credentialService .createJWTIssueCredentialRecord( pairwiseIssuerDID = offerContext.pairwiseIssuerDID, pairwiseHolderDID = offerContext.pairwiseHolderDID, - kidIssuer = request.issuingKid, + kidIssuer = kid, thid = DidCommID(), credentialSchemaRef = Some(credentialSchemaRef), claims = claims, - validityPeriod = request.validityPeriod, + validityPeriod = validityPeriod, automaticIssuance = request.automaticIssuance.orElse(Some(true)), issuingDID = issuingDID.asCanonical, goalCode = offerContext.goalCode, @@ -148,6 +151,9 @@ class IssueControllerImpl( kid = request.sdJwtVcPropertiesV1 .flatMap(_.issuingKid) .orElse(request.issuingKid) // TODO: should it be Option[KeyId]? + validityPeriod = request.sdJwtVcPropertiesV1 + .flatMap(_.validityPeriod) + .orElse(request.validityPeriod) record <- credentialService .createSDJWTIssueCredentialRecord( pairwiseIssuerDID = offerContext.pairwiseIssuerDID, diff --git a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/issue/controller/http/CreateIssueCredentialRecordRequest.scala b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/issue/controller/http/CreateIssueCredentialRecordRequest.scala index d19366cca7..ba62b92060 100644 --- a/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/issue/controller/http/CreateIssueCredentialRecordRequest.scala +++ b/cloud-agent/service/server/src/main/scala/org/hyperledger/identus/issue/controller/http/CreateIssueCredentialRecordRequest.scala @@ -135,7 +135,7 @@ case class JwtVCPropertiesV1( issuingKid: Option[KeyId], @description(JwtVCPropertiesV1.annotations.validityPeriod.description) @encodedExample(JwtVCPropertiesV1.annotations.validityPeriod.example) - validityPeriod: Double, + validityPeriod: Option[Double], @description(JwtVCPropertiesV1.annotations.claims.description) @encodedExample(JwtVCPropertiesV1.annotations.claims.example) claims: zio.json.ast.Json, @@ -247,6 +247,9 @@ case class SDJWTVCPropertiesV1( @description(annotations.issuingKid.description) @encodedExample(annotations.issuingKid.example) issuingKid: Option[KeyId], + @description(SDJWTVCPropertiesV1.annotations.validityPeriod.description) + @encodedExample(SDJWTVCPropertiesV1.annotations.validityPeriod.example) + validityPeriod: Option[Double], @description(SDJWTVCPropertiesV1.annotations.credentialSchema.description) @encodedExample(SDJWTVCPropertiesV1.annotations.credentialSchema.example) credentialSchema: CredentialSchemaRef, @@ -263,6 +266,11 @@ object SDJWTVCPropertiesV1 { given decoder: JsonDecoder[SDJWTVCPropertiesV1] = DeriveJsonDecoder.gen object annotations { + object validityPeriod + extends Annotation[Double]( + description = "The validity period in seconds of the verifiable credential that will be issued.", + example = 3600 + ) object issuingDID extends Annotation[String]( description = """