From 704e49ebe1edd4458d8b73073b4e7dbef21918ae Mon Sep 17 00:00:00 2001 From: Pat Losoponkul Date: Wed, 15 Nov 2023 18:21:09 +0700 Subject: [PATCH 1/8] fix: make sure test libs dont leak to runnable Signed-off-by: Pat Losoponkul --- build.sbt | 48 ++++++++----------- .../keycloak/admin/KeycloakAdmin.scala | 0 project/plugins.sbt | 2 +- .../containers/KeycloakContainerCustom.scala | 0 .../containers/KeycloakTestContainer.scala | 0 .../KeycloakTestContainerSupport.scala | 0 .../PostgreSQLContainerCustom.scala | 0 .../sharedtest/containers/PostgresLayer.scala | 0 .../containers/PostgresTestContainer.scala | 0 .../PostgresTestContainerSupport.scala | 0 .../containers/VaultContainerCustom.scala | 0 .../containers/VaultTestContainer.scala | 0 12 files changed, 22 insertions(+), 28 deletions(-) rename prism-agent/service/server/src/{main => test}/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakAdmin.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/KeycloakContainerCustom.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainer.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainerSupport.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/PostgreSQLContainerCustom.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/PostgresLayer.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainer.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainerSupport.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/VaultContainerCustom.scala (100%) rename shared-test/src/{main => test}/scala/io/iohk/atala/sharedtest/containers/VaultTestContainer.scala (100%) diff --git a/build.sbt b/build.sbt index 69304ca23d..87b20b59b3 100644 --- a/build.sbt +++ b/build.sbt @@ -125,10 +125,10 @@ lazy val D = new { val scalaPbRuntime: ModuleID = "com.thesamet.scalapb" %% "scalapb-runtime" % scalapb.compiler.Version.scalapbVersion % "protobuf" val scalaPbGrpc: ModuleID = "com.thesamet.scalapb" %% "scalapb-runtime-grpc" % scalapb.compiler.Version.scalapbVersion - // TODO we are adding test stuff to the main dependencies - val testcontainersPostgres: ModuleID = "com.dimafeng" %% "testcontainers-scala-postgresql" % V.testContainersScala - val testcontainersVault: ModuleID = "com.dimafeng" %% "testcontainers-scala-vault" % V.testContainersScala - val testcontainersKeycloak: ModuleID = "com.github.dasniko" % "testcontainers-keycloak" % V.testContainersJavaKeycloak + + val testcontainersPostgres: ModuleID = "com.dimafeng" %% "testcontainers-scala-postgresql" % V.testContainersScala % Test + val testcontainersVault: ModuleID = "com.dimafeng" %% "testcontainers-scala-vault" % V.testContainersScala % Test + val testcontainersKeycloak: ModuleID = "com.github.dasniko" % "testcontainers-keycloak" % V.testContainersJavaKeycloak % Test val doobiePostgres: ModuleID = "org.tpolecat" %% "doobie-postgres" % V.doobie val doobieHikari: ModuleID = "org.tpolecat" %% "doobie-hikari" % V.doobie @@ -155,9 +155,6 @@ lazy val D_Shared = new { Seq( D.typesafeConfig, D.scalaPbGrpc, - D.testcontainersPostgres, - D.testcontainersVault, - D.testcontainersKeycloak, D.zio, // FIXME: split shared DB stuff as subproject? D.doobieHikari, @@ -168,22 +165,19 @@ lazy val D_Shared = new { lazy val D_SharedTest = new { lazy val dependencies: Seq[ModuleID] = - Seq( - D.typesafeConfig, - D.testcontainersPostgres, - D.testcontainersVault, - D.testcontainersKeycloak, - D.zio, - D.doobieHikari, - D.doobiePostgres, - D.zioCatsInterop, - D.zioJson, - D.zioHttp, - D.zioTest, - D.zioTestSbt, - D.zioTestMagnolia, - D.zioMock - ) + D_Shared.dependencies ++ + Seq( + D.testcontainersPostgres, + D.testcontainersVault, + D.testcontainersKeycloak, + D.zioCatsInterop, + D.zioJson, + D.zioHttp, + D.zioTest, + D.zioTestSbt, + D.zioTestMagnolia, + D.zioMock + ) } lazy val D_Connect = new { @@ -711,7 +705,7 @@ lazy val polluxDoobie = project ) .dependsOn(polluxCore % "compile->compile;test->test") .dependsOn(shared) - .dependsOn(sharedTest % Test) + .dependsOn(sharedTest % "test->test") // ######################## // ### Pollux Anoncreds ### @@ -761,7 +755,7 @@ lazy val connectDoobie = project libraryDependencies ++= D_Connect.sqlDoobieDependencies ) .dependsOn(shared) - .dependsOn(sharedTest % Test) + .dependsOn(sharedTest % "test->test") .dependsOn(connectCore % "compile->compile;test->test") // ############################ @@ -797,7 +791,7 @@ lazy val prismAgentWalletAPI = project castorCore, eventNotification ) - .dependsOn(sharedTest % Test) + .dependsOn(sharedTest % "test->test") lazy val prismAgentServer = project .in(file("prism-agent/service/server")) @@ -830,7 +824,7 @@ lazy val prismAgentServer = project castorCore, eventNotification ) - .dependsOn(sharedTest % Test) + .dependsOn(sharedTest % "test->test") // ############################ // #### Release process ##### diff --git a/prism-agent/service/server/src/main/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakAdmin.scala b/prism-agent/service/server/src/test/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakAdmin.scala similarity index 100% rename from prism-agent/service/server/src/main/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakAdmin.scala rename to prism-agent/service/server/src/test/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakAdmin.scala diff --git a/project/plugins.sbt b/project/plugins.sbt index cf9014c180..40fc8bb023 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -6,7 +6,7 @@ addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.11") addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.6") addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.9.11") addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.3.9") -addSbtPlugin("com.github.sbt" % "sbt-license-report" % "1.5.0") +addSbtPlugin("com.github.sbt" % "sbt-license-report" % "1.6.1") addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.6") // In order to import proper version of com.google.protobuf.ByteString we need to add this dependency diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/KeycloakContainerCustom.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/KeycloakContainerCustom.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/KeycloakContainerCustom.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/KeycloakContainerCustom.scala diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainer.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainer.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainer.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainer.scala diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainerSupport.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainerSupport.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainerSupport.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/KeycloakTestContainerSupport.scala diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/PostgreSQLContainerCustom.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/PostgreSQLContainerCustom.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/PostgreSQLContainerCustom.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/PostgreSQLContainerCustom.scala diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/PostgresLayer.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/PostgresLayer.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/PostgresLayer.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/PostgresLayer.scala diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainer.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainer.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainer.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainer.scala diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainerSupport.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainerSupport.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainerSupport.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/PostgresTestContainerSupport.scala diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/VaultContainerCustom.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/VaultContainerCustom.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/VaultContainerCustom.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/VaultContainerCustom.scala diff --git a/shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/VaultTestContainer.scala b/shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/VaultTestContainer.scala similarity index 100% rename from shared-test/src/main/scala/io/iohk/atala/sharedtest/containers/VaultTestContainer.scala rename to shared-test/src/test/scala/io/iohk/atala/sharedtest/containers/VaultTestContainer.scala From 99a8aaa2ab38d9dcc5621f9e875cab14b050a1ad Mon Sep 17 00:00:00 2001 From: Pat Losoponkul Date: Thu, 16 Nov 2023 00:59:33 +0700 Subject: [PATCH 2/8] fix: explicitly define transitive dependencies of resteasyclient Signed-off-by: Pat Losoponkul --- build.sbt | 78 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 15 deletions(-) diff --git a/build.sbt b/build.sbt index 87b20b59b3..8bfda18bf5 100644 --- a/build.sbt +++ b/build.sbt @@ -56,6 +56,7 @@ lazy val V = new { // https://mvnrepository.com/artifact/io.circe/circe-core val circe = "0.14.6" + val jackson = "2.14.3" val tapir = "1.6.4" @@ -126,9 +127,11 @@ lazy val D = new { "com.thesamet.scalapb" %% "scalapb-runtime" % scalapb.compiler.Version.scalapbVersion % "protobuf" val scalaPbGrpc: ModuleID = "com.thesamet.scalapb" %% "scalapb-runtime-grpc" % scalapb.compiler.Version.scalapbVersion - val testcontainersPostgres: ModuleID = "com.dimafeng" %% "testcontainers-scala-postgresql" % V.testContainersScala % Test + val testcontainersPostgres: ModuleID = + "com.dimafeng" %% "testcontainers-scala-postgresql" % V.testContainersScala % Test val testcontainersVault: ModuleID = "com.dimafeng" %% "testcontainers-scala-vault" % V.testContainersScala % Test - val testcontainersKeycloak: ModuleID = "com.github.dasniko" % "testcontainers-keycloak" % V.testContainersJavaKeycloak % Test + val testcontainersKeycloak: ModuleID = + "com.github.dasniko" % "testcontainers-keycloak" % V.testContainersJavaKeycloak % Test exclude ("org.keycloak", "keycloak-admin-client") val doobiePostgres: ModuleID = "org.tpolecat" %% "doobie-postgres" % V.doobie val doobieHikari: ModuleID = "org.tpolecat" %% "doobie-hikari" % V.doobie @@ -164,20 +167,65 @@ lazy val D_Shared = new { } lazy val D_SharedTest = new { + // https://github.com/sbt/sbt-license-report/issues/87 + // https://stackoverflow.com/questions/48771768/sbt-error-importing-resteasy-client + // + // 'sbt-license' plugin is using ivy to resolve dependencies where other tasks are using coursier. + // 'org.jboss.resteasy:resteasy-*' which is the transitive dependencies of 'keycloak-admin-client' + // has this issue where 'relativePath' is used in the 'parent' section. + // - https://github.com/resteasy/resteasy/blob/6.2.4.Final/resteasy-client-api/pom.xml#L9 + // - https://www.scala-sbt.org/1.x/docs/Library-Management.html#Known+limitations + // + // This workaround provides those dependencies explicitly, but it will be a nightmare to maintain. + // FIXME: solve this with a long-term solution + lazy val keycloakAdminExplicitDependencies: Seq[ModuleID] = + Seq[ModuleID]( + "org.keycloak" % "keycloak-admin-client" % V.keycloak excludeAll ( + ExclusionRule("org.jboss.resteasy", "resteasy-core"), + ExclusionRule("org.jboss.resteasy", "resteasy-multipart-provider"), + ExclusionRule("org.jboss.resteasy", "resteasy-jackson2-provider"), + ExclusionRule("org.jboss.resteasy", "resteasy-jaxb-provider"), + ), + "org.jboss.resteasy" % "resteasy-core" % "6.2.4.Final" excludeAll ( + ExclusionRule("jakarta.servlet", "jakarta.servlet-api"), + ), + "org.jboss.resteasy" % "resteasy-jackson2-provider" % "6.2.4.Final" excludeAll ( + ExclusionRule("jakarta.servlet", "jakarta.servlet-api"), + ), + "org.jboss.logging" % "jboss-logging" % "3.5.0.Final", + "commons-codec" % "commons-codec" % "1.15", + "jakarta.ws.rs" % "jakarta.ws.rs-api" % "3.1.0", + "jakarta.annotation" % "jakarta.annotation-api" % "2.1.1", + "jakarta.xml.bind" % "jakarta.xml.bind-api" % "3.0.1", + "org.reactivestreams" % "reactive-streams" % "1.0.4", + "jakarta.validation" % "jakarta.validation-api" % "3.0.2", + "org.jboss" % "jandex" % "2.4.3.Final", + "jakarta.activation" % "jakarta.activation-api" % "2.1.2", + "org.eclipse.angus" % "angus-activation" % "1.0.0", + "com.ibm.async" % "asyncutil" % "0.1.0", + "org.apache.httpcomponents" % "httpclient" % "4.5.14", + "com.github.java-json-tools" % "json-patch" % "1.13", + "com.fasterxml.jackson.core" % "jackson-core" % V.jackson, + "com.fasterxml.jackson.core" % "jackson-databind" % V.jackson, + "com.fasterxml.jackson.core" % "jackson-annotations" % V.jackson, + "com.fasterxml.jackson.jakarta.rs" % "jackson-jakarta-rs-base" % V.jackson, + "com.fasterxml.jackson.jakarta.rs" % "jackson-jakarta-rs-json-provider" % V.jackson, + "com.fasterxml.jackson.module" % "jackson-module-jakarta-xmlbind-annotations" % V.jackson, + ).map(_ % Test) + lazy val dependencies: Seq[ModuleID] = - D_Shared.dependencies ++ - Seq( - D.testcontainersPostgres, - D.testcontainersVault, - D.testcontainersKeycloak, - D.zioCatsInterop, - D.zioJson, - D.zioHttp, - D.zioTest, - D.zioTestSbt, - D.zioTestMagnolia, - D.zioMock - ) + D_Shared.dependencies ++ keycloakAdminExplicitDependencies ++ Seq( + D.testcontainersPostgres, + D.testcontainersVault, + D.testcontainersKeycloak, + D.zioCatsInterop, + D.zioJson, + D.zioHttp, + D.zioTest, + D.zioTestSbt, + D.zioTestMagnolia, + D.zioMock + ) } lazy val D_Connect = new { From 4570ac4c81efc017e08bae83756c778143dce69e Mon Sep 17 00:00:00 2001 From: Pat Losoponkul Date: Thu, 16 Nov 2023 13:24:48 +0700 Subject: [PATCH 3/8] ci: use java 22 for release workflow Signed-off-by: Pat Losoponkul --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 597eb90567..3b6edd5833 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: - name: Setup Java and Scala uses: olafurpg/setup-scala@v13 with: - java-version: openjdk@1.11 + java-version: openjdk@1.22 - name: Setup Node.js uses: actions/setup-node@v3 with: @@ -41,7 +41,7 @@ jobs: - name: Setup Helm uses: azure/setup-helm@v3 with: - version: '3.12.2' # default is latest (stable) + version: "3.12.2" # default is latest (stable) id: install - name: Setup yq - portable yaml processor uses: mikefarah/yq@v4.34.2 From f21b5720a4e4415862d9ffc1e984fc1922f930b2 Mon Sep 17 00:00:00 2001 From: Pat Losoponkul Date: Thu, 16 Nov 2023 13:30:54 +0700 Subject: [PATCH 4/8] ci: use java 17 for release workflow Signed-off-by: Pat Losoponkul --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3b6edd5833..542e45d39e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,9 +31,9 @@ jobs: ref: ${{ github.event.inputs.release-branch }} fetch-depth: 0 - name: Setup Java and Scala - uses: olafurpg/setup-scala@v13 + uses: olafurpg/setup-scala@v14 with: - java-version: openjdk@1.22 + java-version: openjdk@1.17 - name: Setup Node.js uses: actions/setup-node@v3 with: From 6c309027137fb1d9e24c6c00d4e10202ed2763d0 Mon Sep 17 00:00:00 2001 From: Pat Losoponkul Date: Thu, 16 Nov 2023 13:42:37 +0700 Subject: [PATCH 5/8] chore: update comments Signed-off-by: Pat Losoponkul --- build.sbt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 8bfda18bf5..da9731b184 100644 --- a/build.sbt +++ b/build.sbt @@ -177,9 +177,10 @@ lazy val D_SharedTest = new { // - https://www.scala-sbt.org/1.x/docs/Library-Management.html#Known+limitations // // This workaround provides those dependencies explicitly, but it will be a nightmare to maintain. + // for version reference: https://github.com/resteasy/resteasy/blob/6.2.4.Final/resteasy-dependencies-bom/pom.xml // FIXME: solve this with a long-term solution lazy val keycloakAdminExplicitDependencies: Seq[ModuleID] = - Seq[ModuleID]( + Seq( "org.keycloak" % "keycloak-admin-client" % V.keycloak excludeAll ( ExclusionRule("org.jboss.resteasy", "resteasy-core"), ExclusionRule("org.jboss.resteasy", "resteasy-multipart-provider"), From 0aba45b7aff1821f3dddeb76a47eb07656aa5dbe Mon Sep 17 00:00:00 2001 From: Pat Losoponkul Date: Thu, 16 Nov 2023 14:00:16 +0700 Subject: [PATCH 6/8] test: log error in tests Signed-off-by: Pat Losoponkul --- .../io/iohk/atala/iam/authentication/oidc/KeycloakClient.scala | 3 ++- .../admin/KeycloakPermissionManagementServiceSpec.scala | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/prism-agent/service/server/src/main/scala/io/iohk/atala/iam/authentication/oidc/KeycloakClient.scala b/prism-agent/service/server/src/main/scala/io/iohk/atala/iam/authentication/oidc/KeycloakClient.scala index d912abf741..85a823b78d 100644 --- a/prism-agent/service/server/src/main/scala/io/iohk/atala/iam/authentication/oidc/KeycloakClient.scala +++ b/prism-agent/service/server/src/main/scala/io/iohk/atala/iam/authentication/oidc/KeycloakClient.scala @@ -110,7 +110,8 @@ class KeycloakClientImpl(client: AuthzClient, httpClient: Client, keycloakConfig ) ) ) - .logError("Fail to get the accessToken on keyclaok.") + .logError("Fail to get the accessToken on keycloak.") + .tapError(_ => ZIO.succeed(keycloakConfig).debug("keycloakConfig")) .mapError(e => KeycloakClientError.UnexpectedError("Fail to get the accessToken on keyclaok.")) .provide(ZLayer.succeed(httpClient)) body <- response.body.asString diff --git a/prism-agent/service/server/src/test/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakPermissionManagementServiceSpec.scala b/prism-agent/service/server/src/test/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakPermissionManagementServiceSpec.scala index 8b71fda85a..3219338acc 100644 --- a/prism-agent/service/server/src/test/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakPermissionManagementServiceSpec.scala +++ b/prism-agent/service/server/src/test/scala/io/iohk/atala/iam/authorization/keycloak/admin/KeycloakPermissionManagementServiceSpec.scala @@ -60,7 +60,7 @@ object KeycloakPermissionManagementServiceSpec contextAwareTransactorLayer, pgContainerLayer, apolloLayer - ).provide(Runtime.removeDefaultLoggers) + ) } private val successfulCasesSuite = suite("Successful Cases")( From ba1bdd28ce0ab70c73482128ade14502741ced8b Mon Sep 17 00:00:00 2001 From: Pat Losoponkul Date: Thu, 16 Nov 2023 15:01:57 +0700 Subject: [PATCH 7/8] ci: java option prefer ipv4 stack Signed-off-by: Pat Losoponkul --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 542e45d39e..fba9992525 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,6 +23,7 @@ jobs: GITHUB_ACTOR: ${{ secrets.ATALA_GITHUB_ACTOR }} GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From 6cc3c3c66e01b3f735f88c7d103845c4589eaea7 Mon Sep 17 00:00:00 2001 From: atala-dev Date: Thu, 16 Nov 2023 08:27:34 +0000 Subject: [PATCH 8/8] chore(release): cut open enterprise agent 1.19.0-snapshot.1 release # [1.19.0-snapshot.1](https://github.com/hyperledger-labs/open-enterprise-agent/compare/prism-agent-v1.18.0...prism-agent-v1.19.0-snapshot.1) (2023-11-16) ### Bug Fixes * check for active RLS on db application user ([#775](https://github.com/hyperledger-labs/open-enterprise-agent/issues/775)) ([a792f43](https://github.com/hyperledger-labs/open-enterprise-agent/commit/a792f43eaae0ec2cd30db2ea3308deded7a1a935)) * explicitly define transitive dependencies of resteasyclient ([99a8aaa](https://github.com/hyperledger-labs/open-enterprise-agent/commit/99a8aaa2ab38d9dcc5621f9e875cab14b050a1ad)) * make sure test libs dont leak to runnable ([704e49e](https://github.com/hyperledger-labs/open-enterprise-agent/commit/704e49ebe1edd4458d8b73073b4e7dbef21918ae)) * **pollux:** V16 migration is failing to add FK constraint because of type mismatch ([#782](https://github.com/hyperledger-labs/open-enterprise-agent/issues/782)) ([c87beb0](https://github.com/hyperledger-labs/open-enterprise-agent/commit/c87beb0478d4b3d54709e09597c42c23878d101e)) * **prism-agent:** more descriptive error response for validateDID in issue flow ([#783](https://github.com/hyperledger-labs/open-enterprise-agent/issues/783)) ([b99a737](https://github.com/hyperledger-labs/open-enterprise-agent/commit/b99a73718a06f4b97d933ba2e3220593f8d4e825)) * **prism-agent:** perform percent encoding on auth header for token introspection request ([#780](https://github.com/hyperledger-labs/open-enterprise-agent/issues/780)) ([03d43c9](https://github.com/hyperledger-labs/open-enterprise-agent/commit/03d43c98d8ab64e5b47830d95a6356f9d6dd1b82)) ### Features * Accept goal and goalCode to create connection invitation ([#785](https://github.com/hyperledger-labs/open-enterprise-agent/issues/785)) ([71c776b](https://github.com/hyperledger-labs/open-enterprise-agent/commit/71c776baa2caf3ca610508dba805f037fd7d6e29)) * **docs:** ADR for revocation status list expansion strategy ([#773](https://github.com/hyperledger-labs/open-enterprise-agent/issues/773)) ([7ad6427](https://github.com/hyperledger-labs/open-enterprise-agent/commit/7ad64277acb2bffe12524c4bfb68f687689b5b2e)) * Keycloak container support with clients and PermissionManagement service ([#755](https://github.com/hyperledger-labs/open-enterprise-agent/issues/755)) ([a1846aa](https://github.com/hyperledger-labs/open-enterprise-agent/commit/a1846aaa84202b55d48ea8556aad8cbbb8260f4d)) * **pollux:** Add migrations needed for JWT revocation ([#778](https://github.com/hyperledger-labs/open-enterprise-agent/issues/778)) ([471956e](https://github.com/hyperledger-labs/open-enterprise-agent/commit/471956e92893a7237cabca2fb065adb417678d37)) * **prism-agent:** add multi-tenant wallet self-service capability ([#779](https://github.com/hyperledger-labs/open-enterprise-agent/issues/779)) ([f2e74cd](https://github.com/hyperledger-labs/open-enterprise-agent/commit/f2e74cd1957e7d76f6dccadd02b1ca5b794d02b1)) Signed-off-by: Anton Baliasnikov --- CHANGELOG.md | 21 ++ DEPENDENCIES.md | 93 ++++--- infrastructure/charts/agent/Chart.yaml | 4 +- infrastructure/charts/index.yaml | 26 +- .../charts/prism-agent-1.19.0-snapshot.1.tgz | Bin 0 -> 50299 bytes infrastructure/local/.env | 2 +- package-lock.json | 4 +- package.json | 2 +- .../api/http/prism-agent-openapi-spec.yaml | 236 ++++++++++++------ version.sbt | 2 +- 10 files changed, 275 insertions(+), 115 deletions(-) create mode 100644 infrastructure/charts/prism-agent-1.19.0-snapshot.1.tgz diff --git a/CHANGELOG.md b/CHANGELOG.md index b2855d4fca..e485581170 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +# [1.19.0-snapshot.1](https://github.com/hyperledger-labs/open-enterprise-agent/compare/prism-agent-v1.18.0...prism-agent-v1.19.0-snapshot.1) (2023-11-16) + + +### Bug Fixes + +* check for active RLS on db application user ([#775](https://github.com/hyperledger-labs/open-enterprise-agent/issues/775)) ([a792f43](https://github.com/hyperledger-labs/open-enterprise-agent/commit/a792f43eaae0ec2cd30db2ea3308deded7a1a935)) +* explicitly define transitive dependencies of resteasyclient ([99a8aaa](https://github.com/hyperledger-labs/open-enterprise-agent/commit/99a8aaa2ab38d9dcc5621f9e875cab14b050a1ad)) +* make sure test libs dont leak to runnable ([704e49e](https://github.com/hyperledger-labs/open-enterprise-agent/commit/704e49ebe1edd4458d8b73073b4e7dbef21918ae)) +* **pollux:** V16 migration is failing to add FK constraint because of type mismatch ([#782](https://github.com/hyperledger-labs/open-enterprise-agent/issues/782)) ([c87beb0](https://github.com/hyperledger-labs/open-enterprise-agent/commit/c87beb0478d4b3d54709e09597c42c23878d101e)) +* **prism-agent:** more descriptive error response for validateDID in issue flow ([#783](https://github.com/hyperledger-labs/open-enterprise-agent/issues/783)) ([b99a737](https://github.com/hyperledger-labs/open-enterprise-agent/commit/b99a73718a06f4b97d933ba2e3220593f8d4e825)) +* **prism-agent:** perform percent encoding on auth header for token introspection request ([#780](https://github.com/hyperledger-labs/open-enterprise-agent/issues/780)) ([03d43c9](https://github.com/hyperledger-labs/open-enterprise-agent/commit/03d43c98d8ab64e5b47830d95a6356f9d6dd1b82)) + + +### Features + +* Accept goal and goalCode to create connection invitation ([#785](https://github.com/hyperledger-labs/open-enterprise-agent/issues/785)) ([71c776b](https://github.com/hyperledger-labs/open-enterprise-agent/commit/71c776baa2caf3ca610508dba805f037fd7d6e29)) +* **docs:** ADR for revocation status list expansion strategy ([#773](https://github.com/hyperledger-labs/open-enterprise-agent/issues/773)) ([7ad6427](https://github.com/hyperledger-labs/open-enterprise-agent/commit/7ad64277acb2bffe12524c4bfb68f687689b5b2e)) +* Keycloak container support with clients and PermissionManagement service ([#755](https://github.com/hyperledger-labs/open-enterprise-agent/issues/755)) ([a1846aa](https://github.com/hyperledger-labs/open-enterprise-agent/commit/a1846aaa84202b55d48ea8556aad8cbbb8260f4d)) +* **pollux:** Add migrations needed for JWT revocation ([#778](https://github.com/hyperledger-labs/open-enterprise-agent/issues/778)) ([471956e](https://github.com/hyperledger-labs/open-enterprise-agent/commit/471956e92893a7237cabca2fb065adb417678d37)) +* **prism-agent:** add multi-tenant wallet self-service capability ([#779](https://github.com/hyperledger-labs/open-enterprise-agent/issues/779)) ([f2e74cd](https://github.com/hyperledger-labs/open-enterprise-agent/commit/f2e74cd1957e7d76f6dccadd02b1ca5b794d02b1)) + # [1.18.0](https://github.com/hyperledger-labs/open-enterprise-agent/compare/prism-agent-v1.17.0...prism-agent-v1.18.0) (2023-10-24) diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index 98a7c20683..b37c40cfa3 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -2,6 +2,7 @@ Category | License | Dependency | Notes --- | --- | --- | --- +Apache | [APL2](http://www.apache.org/licenses/LICENSE-2.0.txt) | [net.reactivecore # circe-json-schema_2.13 # 0.3.0](https://github.com/reactivecore/rc-circe-json-schema) | Apache | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.thesamet.scalapb # lenses_3 # 0.11.13](https://github.com/scalapb/ScalaPB) | Apache | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.thesamet.scalapb # scalapb-runtime-grpc_3 # 0.11.13](https://github.com/scalapb/ScalaPB) | Apache | [Apache 2](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.thesamet.scalapb # scalapb-runtime_3 # 0.11.13](https://github.com/scalapb/ScalaPB) | @@ -72,13 +73,20 @@ Apache | [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) | [io. Apache | [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) | [io.getquill # quill-sql_3 # 4.7.3](https://zio.dev/zio-protoquill) | Apache | [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) | [io.getquill # quill-util_3 # 4.7.3](https://zio.dev/zio-quill) | Apache | [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) | [io.getquill # quill-zio_3 # 4.7.3](https://zio.dev/zio-protoquill) | +Apache | [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [jakarta.validation # jakarta.validation-api # 3.0.2](https://beanvalidation.org) | Apache | [Apache License 2.0](https://repository.jboss.org/licenses/apache-2.0.txt) | [org.jboss.logging # jboss-logging # 3.5.1.Final](http://www.jboss.org) | +Apache | [Apache License 2.0](https://repository.jboss.org/licenses/apache-2.0.txt) | org.jboss.resteasy # resteasy-client # 6.2.4.Final | +Apache | [Apache License 2.0](https://repository.jboss.org/licenses/apache-2.0.txt) | org.jboss.resteasy # resteasy-client-api # 6.2.4.Final | +Apache | [Apache License 2.0](https://repository.jboss.org/licenses/apache-2.0.txt) | org.jboss.resteasy # resteasy-core # 6.2.4.Final | +Apache | [Apache License 2.0](https://repository.jboss.org/licenses/apache-2.0.txt) | org.jboss.resteasy # resteasy-core-spi # 6.2.4.Final | +Apache | [Apache License 2.0](https://repository.jboss.org/licenses/apache-2.0.txt) | org.jboss.resteasy # resteasy-jackson2-provider # 6.2.4.Final | Apache | [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) | [com.networknt # json-schema-validator # 1.0.86](https://github.com/networknt/json-schema-validator) | Apache | [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.ethlo.time # itu # 1.7.0](https://github.com/ethlo/itu) | Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.github.stephenc.jcip # jcip-annotations # 1.0-1](http://stephenc.github.com/jcip-annotations) | Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.google.crypto.tink # tink # 1.6.1](http://github.com/google/tink) | Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.google.guava # guava # 31.0.1-android](https://github.com/google/guava) | Apache | [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [commons-codec # commons-codec # 1.11](http://commons.apache.org/proper/commons-codec/) | +Apache | [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [commons-codec # commons-codec # 1.15](https://commons.apache.org/proper/commons-codec/) | Apache | [Apache License, Version 2.0](https://opensource.org/licenses/Apache-2.0) | [io.iohk.atala # prism-common-jvm # 1.4.1](https://github.com/input-output-hk/atala-prism-sdk.git) | Apache | [Apache License, Version 2.0](https://opensource.org/licenses/Apache-2.0) | [io.iohk.atala # prism-crypto-jvm # 1.4.1](https://github.com/input-output-hk/atala-prism-sdk.git) | Apache | [Apache License, Version 2.0](https://opensource.org/licenses/Apache-2.0) | [io.iohk.atala # prism-identity-jvm # 1.4.1](https://github.com/input-output-hk/atala-prism-sdk.git) | @@ -104,17 +112,28 @@ Apache | [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2 Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [org.apache.httpcomponents # httpclient # 4.5.14](http://hc.apache.org/httpcomponents-client-ga) | Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [org.apache.httpcomponents # httpcore # 4.4.16](http://hc.apache.org/httpcomponents-core-ga) | Apache | [Apache License, Version 2.0](https://flywaydb.org/licenses/flyway-community) | org.flywaydb # flyway-core # 9.8.3 | +Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | org.jboss # jandex # 2.4.3.Final | +Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | org.jboss.shrinkwrap # shrinkwrap-api # 1.2.6 | +Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | org.jboss.shrinkwrap # shrinkwrap-impl-base # 1.2.6 | +Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | org.jboss.shrinkwrap # shrinkwrap-spi # 1.2.6 | +Apache | [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) | org.keycloak # keycloak-admin-client # 22.0.4 | Apache | [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) | org.keycloak # keycloak-authz-client # 22.0.4 | Apache | [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) | org.keycloak # keycloak-common # 22.0.4 | Apache | [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) | org.keycloak # keycloak-core # 22.0.4 | Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [org.log4s # log4s_3 # 1.10.0](http://log4s.org/) | Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | org.objenesis # objenesis # 3.3 | Apache | [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [org.yaml # snakeyaml # 2.0](https://bitbucket.org/snakeyaml/snakeyaml) | +Apache | [Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [org.jboss.logging # jboss-logging # 3.5.0.Final](http://www.jboss.org) | +Apache | [Apache Software License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.github.java-json-tools # btf # 1.3](https://github.com/java-json-tools/btf) | +Apache | [Apache Software License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.github.java-json-tools # jackson-coreutils # 2.0](https://github.com/java-json-tools/jackson-coreutils) | +Apache | [Apache Software License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.github.java-json-tools # json-patch # 1.13](https://github.com/java-json-tools/json-patch) | +Apache | [Apache Software License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.github.java-json-tools # msg-simple # 1.2](https://github.com/java-json-tools/msg-simple) | Apache | [Apache-2.0](http://www.apache.org/licenses/) | [com.comcast # ip4s-core_3 # 3.1.2](https://github.com/comcast/ip4s) | Apache | [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.comcast # ip4s-core_3 # 3.3.0](https://github.com/Comcast/ip4s) | Apache | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.geirsson # metaconfig-core_2.13 # 0.11.1](https://github.com/olafurpg/metaconfig) | Apache | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.geirsson # metaconfig-pprint_2.13 # 0.11.1](https://github.com/olafurpg/metaconfig) | Apache | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.geirsson # metaconfig-typesafe-config_2.13 # 0.11.1](https://github.com/olafurpg/metaconfig) | +Apache | [Apache-2.0](https://opensource.org/licenses/Apache-2.0) | [com.github.dasniko # testcontainers-keycloak # 3.0.0](https://github.com/dasniko/testcontainers-keycloak) | Apache | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.github.jwt-scala # jwt-circe_3 # 9.1.2](https://jwt-scala.github.io/jwt-scala/) | Apache | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.github.jwt-scala # jwt-core_3 # 9.1.2](https://jwt-scala.github.io/jwt-scala/) | Apache | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | [com.github.jwt-scala # jwt-json-common_3 # 9.1.2](https://jwt-scala.github.io/jwt-scala/) | @@ -223,13 +242,19 @@ Apache | [The Apache License, Version 2.0](http://www.apache.org/licenses/LICENS Apache | [The Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [org.jetbrains.kotlinx # kotlinx-datetime-jvm # 0.2.1](https://github.com/Kotlin/kotlinx-datetime) | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-annotations # 2.10.3](http://github.com/FasterXML/jackson) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-annotations # 2.14.0](https://github.com/FasterXML/jackson) | +Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-annotations # 2.14.3](https://github.com/FasterXML/jackson) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-annotations # 2.15.2](https://github.com/FasterXML/jackson) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-core # 2.14.0](https://github.com/FasterXML/jackson-core) | +Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-core # 2.14.3](https://github.com/FasterXML/jackson-core) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-core # 2.15.2](https://github.com/FasterXML/jackson-core) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-databind # 2.14.0](https://github.com/FasterXML/jackson) | +Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-databind # 2.14.3](https://github.com/FasterXML/jackson) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.core # jackson-databind # 2.15.2](https://github.com/FasterXML/jackson) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.dataformat # jackson-dataformat-toml # 2.14.0](https://github.com/FasterXML/jackson-dataformats-text) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.dataformat # jackson-dataformat-yaml # 2.15.2](https://github.com/FasterXML/jackson-dataformats-text) | +Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | com.fasterxml.jackson.jakarta.rs # jackson-jakarta-rs-base # 2.14.3 | +Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | com.fasterxml.jackson.jakarta.rs # jackson-jakarta-rs-json-provider # 2.14.3 | +Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [com.fasterxml.jackson.module # jackson-module-jakarta-xmlbind-annotations # 2.14.3](https://github.com/FasterXML/jackson-modules-base) | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.github.docker-java # docker-java-api # 3.3.3](https://github.com/docker-java/docker-java) | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.github.docker-java # docker-java-transport # 3.3.3](https://github.com/docker-java/docker-java) | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.github.docker-java # docker-java-transport-zerodep # 3.3.3](https://github.com/docker-java/docker-java) | @@ -238,8 +263,10 @@ Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licens Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | com.google.guava # listenablefuture # 9999.0-empty-to-avoid-conflict-with-guava | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.google.j2objc # j2objc-annotations # 1.3](https://github.com/google/j2objc/) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | com.google.zxing # core # 3.5.0 | +Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.ibm.async # asyncutil # 0.1.0](http://github.com/ibm/java-async-util) | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | com.twitter # hpack # 1.0.2 | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [com.zaxxer # HikariCP # 4.0.3](https://github.com/brettwooldridge/HikariCP) | +Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [commons-logging # commons-logging # 1.2](http://commons.apache.org/proper/commons-logging/) | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | io.github.java-diff-utils # java-diff-utils # 4.12 | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [io.iohk.atala # nimbus-jose-jwt # 10.0.0](https://bitbucket.org/connect2id/nimbus-jose-jwt) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [io.ktor # ktor-io-jvm # 1.6.5](https://github.com/ktorio/ktor) | @@ -252,6 +279,7 @@ Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licens Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | io.prometheus # simpleclient_tracer_common # 0.16.0 | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | io.prometheus # simpleclient_tracer_otel # 0.16.0 | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | io.prometheus # simpleclient_tracer_otel_agent # 0.16.0 | +Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | io.quarkus # quarkus-junit4-mock # 3.2.0.Final | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [org.bitcoinj # bitcoinj-core # 0.15.10](https://bitcoinj.github.io) | Apache | [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) | [org.jetbrains # annotations # 13.0](http://www.jetbrains.org) | Apache | [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) | [org.jetbrains # annotations # 17.0.0](https://github.com/JetBrains/java-annotations) | @@ -303,6 +331,10 @@ BSD | [BSD New](https://github.com/portable-scala/portable-scala-reflect/blob/ma BSD | [BSD-2-Clause](https://jdbc.postgresql.org/about/license.html) | [org.postgresql # postgresql # 42.3.1](https://jdbc.postgresql.org) | BSD | [BSD-3-Clause](https://github.com/scodec/scodec-bits/blob/main/LICENSE) | [org.scodec # scodec-bits_3 # 1.1.30](https://github.com/scodec/scodec-bits) | BSD | [BSD-3-Clause](https://github.com/scodec/scodec-bits/blob/main/LICENSE) | [org.scodec # scodec-bits_3 # 1.1.37](https://github.com/scodec/scodec-bits) | +BSD | [EDL 1.0](http://www.eclipse.org/org/documents/edl-v10.php) | com.sun.activation # jakarta.activation # 2.0.1 | +BSD | [EDL 1.0](http://www.eclipse.org/org/documents/edl-v10.php) | [jakarta.activation # jakarta.activation-api # 2.1.2](https://github.com/jakartaee/jaf-api) | +BSD | [EDL 1.0](http://www.eclipse.org/org/documents/edl-v10.php) | org.eclipse.angus # angus-activation # 1.0.0 | +BSD | [Eclipse Distribution License - v 1.0](http://www.eclipse.org/org/documents/edl-v10.php) | jakarta.xml.bind # jakarta.xml.bind-api # 3.0.1 | BSD | [New BSD License](http://www.opensource.org/licenses/bsd-license.php) | org.hamcrest # hamcrest-core # 1.3 | BSD | [The BSD License](https://opensource.org/licenses/BSD-3-Clause) | org.jline # jline # 3.22.0 | Bouncy Castle License | [Bouncy Castle Licence](https://www.bouncycastle.org/licence.html) | [org.bouncycastle # bcpkix-jdk15on # 1.70](https://www.bouncycastle.org/java.html) | @@ -312,7 +344,9 @@ Bouncy Castle License | [Bouncy Castle Licence](http://www.bouncycastle.org/lice Bouncy Castle License | [Bouncy Castle Licence](https://www.bouncycastle.org/licence.html) | [org.bouncycastle # bcutil-jdk15on # 1.70](https://www.bouncycastle.org/java.html) | EPL | [Eclipse Public License 1.0](http://www.eclipse.org/legal/epl-v10.html) | [junit # junit # 4.13.1](http://junit.org) | EPL | [Eclipse Public License 1.0](http://www.eclipse.org/legal/epl-v10.html) | [junit # junit # 4.13.2](http://junit.org) | +GPL | [GPL2 w/ CPE](https://www.gnu.org/software/classpath/license.html) | [jakarta.annotation # jakarta.annotation-api # 2.1.1](https://projects.eclipse.org/projects/ee4j.ca) | GPL with Classpath Extension | [CDDL + GPLv2 with classpath exception](https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html) | [javax.annotation # javax.annotation-api # 1.2](http://jcp.org/en/jsr/detail?id=250) | +GPL with Classpath Extension | [GPL-2.0-with-classpath-exception](https://www.gnu.org/software/classpath/license.html) | [jakarta.ws.rs # jakarta.ws.rs-api # 3.1.0](https://github.com/eclipse-ee4j/jaxrs-api) | LGPL | [GNU Lesser General Public License](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) | ch.qos.logback # logback-classic # 1.4.8 | LGPL | [GNU Lesser General Public License](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) | ch.qos.logback # logback-core # 1.4.8 | MIT | [MIT](http://opensource.org/licenses/MIT) | [co.fs2 # fs2-core_3 # 3.2.4](https://github.com/typelevel/fs2) | @@ -350,10 +384,11 @@ MIT | [MIT](http://opensource.org/licenses/MIT) | [org.typelevel # vault_3 # 3.5 MIT | [MIT License](https://raw.githubusercontent.com/korlibs/krypto/master/LICENSE) | [com.soywiz.korlibs.krypto # krypto-jvm # 2.4.12](https://github.com/korlibs/krypto) | MIT | [MIT License](https://opensource.org/licenses/MIT) | [io.iohk # pbandk-protos # 0.20.7](https://github.com/input-output-hk/pbandk) | MIT | [MIT License](https://opensource.org/licenses/MIT) | [io.iohk # pbandk-runtime-jvm # 0.20.7](https://github.com/input-output-hk/pbandk) | -MIT | [MIT License](http://www.opensource.org/licenses/mit-license.php) | [org.slf4j # slf4j-api # 1.7.36](http://www.slf4j.org) | +MIT | [MIT License](http://www.opensource.org/licenses/mit-license.php) | [org.slf4j # slf4j-api # 1.7.32](http://www.slf4j.org) | MIT | [MIT License](http://www.opensource.org/licenses/mit-license.php) | [org.slf4j # slf4j-api # 2.0.7](http://www.slf4j.org) | MIT | [MIT License](http://www.opensource.org/licenses/mit-license.php) | [org.slf4j # slf4j-simple # 2.0.7](http://www.slf4j.org) | MIT | [MIT license](http://www.opensource.org/licenses/mit-license.php) | org.codehaus.mojo # animal-sniffer-annotations # 1.19 | +MIT | [MIT-0](https://spdx.org/licenses/MIT-0.html) | [org.reactivestreams # reactive-streams # 1.0.4](http://www.reactive-streams.org/) | MIT | [The MIT License](http://opensource.org/licenses/MIT) | [org.checkerframework # checker-compat-qual # 2.5.5](https://checkerframework.org) | MIT | [The MIT License](http://opensource.org/licenses/MIT) | [org.checkerframework # checker-qual # 3.12.0](https://checkerframework.org) | MIT | [The MIT License](https://github.com/mockito/mockito/blob/main/LICENSE) | [org.mockito # mockito-core # 4.11.0](https://github.com/mockito/mockito) | @@ -363,34 +398,32 @@ MIT | [The MIT License (MIT)](https://opensource.org/licenses/MIT) | [com.dimafe MIT | [The MIT License (MIT)](https://opensource.org/licenses/MIT) | [com.dimafeng # testcontainers-scala-vault_3 # 0.41.0](https://github.com/testcontainers/testcontainers-scala) | Public Domain | [Public Domain, per Creative Commons CC0](http://creativecommons.org/publicdomain/zero/1.0/) | [org.hdrhistogram # HdrHistogram # 2.1.12](http://hdrhistogram.github.io/HdrHistogram/) | Public Domain | [Public Domain, per Creative Commons CC0](http://creativecommons.org/publicdomain/zero/1.0/) | [org.latencyutils # LatencyUtils # 2.0.3](http://latencyutils.github.io/LatencyUtils/) | -unrecognized | [APL2](http://www.apache.org/licenses/LICENSE-2.0.txt) | [net.reactivecore # circe-json-schema_2.13 # 0.3.0](https://github.com/reactivecore/rc-circe-json-schema) | -unrecognized | [EDL 1.0](http://www.eclipse.org/org/documents/edl-v10.php) | [jakarta.activation # jakarta.activation-api # 2.1.2](https://github.com/jakartaee/jaf-api) | -unrecognized | [none specified](none specified) | [io.iohk.atala # castor-core_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # connect-core_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # connect-sql-doobie_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # event-notification_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # iris-client_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-agent-core_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-agent-didcommx_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-data-models_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-connection_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-coordinate-mediation_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-invitation_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-issue-credential_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-mailbox_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-outofband-login_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-present-proof_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-report-problem_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-routing-2-0_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-trust-ping_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-resolver_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-verifiable-credentials_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # pollux-anoncreds_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # pollux-core_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # pollux-sql-doobie_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # pollux-vc-jwt_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # prism-agent-wallet-api_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # prism-node-client_3 # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | -unrecognized | [none specified](none specified) | [io.iohk.atala # shared # 1.17.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # castor-core_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # connect-core_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # connect-sql-doobie_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # event-notification_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-agent-core_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-agent-didcommx_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-data-models_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-connection_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-coordinate-mediation_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-invitation_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-issue-credential_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-mailbox_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-outofband-login_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-present-proof_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-report-problem_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-routing-2-0_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-protocol-trust-ping_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-resolver_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # mercury-verifiable-credentials_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # pollux-anoncreds_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # pollux-core_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # pollux-sql-doobie_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # pollux-vc-jwt_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # prism-agent-wallet-api_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # prism-node-client_3 # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # shared # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | +unrecognized | [none specified](none specified) | [io.iohk.atala # sharedtest # 1.18.0-SNAPSHOT](https://github.com/input-output-hk/atala-prism-building-blocks) | unrecognized | [none specified](none specified) | [net.jcip # jcip-annotations # 1.0](http://jcip.net/) | diff --git a/infrastructure/charts/agent/Chart.yaml b/infrastructure/charts/agent/Chart.yaml index 1f8628ced1..d9df08d3ad 100644 --- a/infrastructure/charts/agent/Chart.yaml +++ b/infrastructure/charts/agent/Chart.yaml @@ -13,12 +13,12 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.18.0 +version: 1.19.0-snapshot.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: 1.18.0 +appVersion: 1.19.0-snapshot.1 dependencies: - name: vault version: 0.24.1 diff --git a/infrastructure/charts/index.yaml b/infrastructure/charts/index.yaml index f0f89a23e8..5038ea8bdc 100644 --- a/infrastructure/charts/index.yaml +++ b/infrastructure/charts/index.yaml @@ -1,9 +1,23 @@ apiVersion: v1 entries: prism-agent: + - apiVersion: v2 + appVersion: 1.19.0-snapshot.1 + created: "2023-11-16T08:27:09.334790111Z" + dependencies: + - name: vault + repository: https://helm.releases.hashicorp.com + version: 0.24.1 + description: A Helm chart for deploying prism-agent + digest: a1f8f9ea0d21dda6a41177a353ca6047240c7958e9f9710435a33b6593579790 + name: prism-agent + type: application + urls: + - https://raw.githubusercontent.com/hyperledger-labs/open-enterprise-agent/main/infrastructure/charts/prism-agent-1.19.0-snapshot.1.tgz + version: 1.19.0-snapshot.1 - apiVersion: v2 appVersion: 1.18.0 - created: "2023-10-24T11:07:35.004549218Z" + created: "2023-11-16T08:27:09.331988025Z" dependencies: - name: vault repository: https://helm.releases.hashicorp.com @@ -17,7 +31,7 @@ entries: version: 1.18.0 - apiVersion: v2 appVersion: 1.17.0 - created: "2023-10-24T11:07:35.000795657Z" + created: "2023-11-16T08:27:09.328294153Z" dependencies: - name: vault repository: https://helm.releases.hashicorp.com @@ -31,7 +45,7 @@ entries: version: 1.17.0 - apiVersion: v2 appVersion: 1.16.4 - created: "2023-10-24T11:07:34.99668489Z" + created: "2023-11-16T08:27:09.325453135Z" dependencies: - name: vault repository: https://helm.releases.hashicorp.com @@ -45,7 +59,7 @@ entries: version: 1.16.4 - apiVersion: v2 appVersion: 1.16.3 - created: "2023-10-24T11:07:34.991583906Z" + created: "2023-11-16T08:27:09.322070956Z" dependencies: - name: vault repository: https://helm.releases.hashicorp.com @@ -59,7 +73,7 @@ entries: version: 1.16.3 - apiVersion: v2 appVersion: 1.16.2 - created: "2023-10-24T11:07:34.987422338Z" + created: "2023-11-16T08:27:09.319230178Z" dependencies: - name: vault repository: https://helm.releases.hashicorp.com @@ -71,4 +85,4 @@ entries: urls: - https://raw.githubusercontent.com/hyperledger-labs/open-enterprise-agent/main/infrastructure/charts/prism-agent-1.16.2.tgz version: 1.16.2 -generated: "2023-10-24T11:07:34.982721561Z" +generated: "2023-11-16T08:27:09.316193045Z" diff --git a/infrastructure/charts/prism-agent-1.19.0-snapshot.1.tgz b/infrastructure/charts/prism-agent-1.19.0-snapshot.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..6733f8698608964ecc1f8fd18d0febc80da0535d GIT binary patch literal 50299 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 literal 0 HcmV?d00001 diff --git a/infrastructure/local/.env b/infrastructure/local/.env index a40f9fe1cb..313c11fc47 100644 --- a/infrastructure/local/.env +++ b/infrastructure/local/.env @@ -1,3 +1,3 @@ -PRISM_AGENT_VERSION=1.17.0 +PRISM_AGENT_VERSION=1.19.0-snapshot.1 PRISM_NODE_VERSION=2.2.1 VAULT_DEV_ROOT_TOKEN_ID=root diff --git a/package-lock.json b/package-lock.json index adf9c14b3a..9d6d1a75fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "atala-prism-building-blocks", - "version": "1.18.0", + "version": "1.19.0-snapshot.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "atala-prism-building-blocks", - "version": "1.18.0", + "version": "1.19.0-snapshot.1", "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", diff --git a/package.json b/package.json index 69524e2af8..e5ba95dc43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "atala-prism-building-blocks", - "version": "1.18.0", + "version": "1.19.0-snapshot.1", "engines": { "node": ">=16.13.0" }, diff --git a/prism-agent/service/api/http/prism-agent-openapi-spec.yaml b/prism-agent/service/api/http/prism-agent-openapi-spec.yaml index 42a2ceff59..3cf658d497 100644 --- a/prism-agent/service/api/http/prism-agent-openapi-spec.yaml +++ b/prism-agent/service/api/http/prism-agent-openapi-spec.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: Prism Agent - version: 1.18.0 + version: 1.19.0-snapshot.1 paths: /credential-definition-registry/definitions: get: @@ -1884,12 +1884,6 @@ paths: description: 'Get all entities with the pagination by `offset` and `limit` parameters ' operationId: getAllEntities parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string - name: offset in: query required: false @@ -1927,6 +1921,9 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - {} + - adminApiKeyAuth: [] post: tags: - Identity and Access Management @@ -1934,13 +1931,6 @@ paths: description: Create the new entity record. The entity record is a representation of the account in the system. operationId: createEntity - parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string requestBody: description: JSON object required for the entity creation content: @@ -1979,6 +1969,9 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - {} + - adminApiKeyAuth: [] /iam/entities/{id}/name: put: tags: @@ -1987,12 +1980,6 @@ paths: description: Update the entity record name by `id` operationId: updateEntityName parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string - name: id in: path required: true @@ -2037,6 +2024,9 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - {} + - adminApiKeyAuth: [] /iam/entities/{id}/walletId: put: tags: @@ -2045,12 +2035,6 @@ paths: description: Update the entity record `walletId` field by `id` operationId: updateEntityWalletId parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string - name: id in: path required: true @@ -2095,6 +2079,9 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - {} + - adminApiKeyAuth: [] /iam/entities/{id}: get: tags: @@ -2103,12 +2090,6 @@ paths: description: Get the entity by the unique identifier operationId: getEntityById parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string - name: id in: path description: Identifier of the entity @@ -2147,6 +2128,9 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - {} + - adminApiKeyAuth: [] delete: tags: - Identity and Access Management @@ -2154,12 +2138,6 @@ paths: description: Delete the entity by the unique identifier operationId: deleteEntityById parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string - name: id in: path description: Identifier of the entity @@ -2194,6 +2172,9 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - {} + - adminApiKeyAuth: [] /iam/apikey-authentication: post: tags: @@ -2201,13 +2182,6 @@ paths: summary: Register the `apikey` for the entity description: Register the `apikey` for the entity. operationId: addEntityApiKeyAuthentication - parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string requestBody: description: JSON object required for the registering the entity and `apikey` content: @@ -2242,19 +2216,15 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - {} + - adminApiKeyAuth: [] delete: tags: - Identity and Access Management summary: Unregister the `apikey` for the entity description: Unregister the `apikey` for the entity. operationId: deleteEntityApiKeyAuthentication - parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string requestBody: description: JSON object required for the unregistering the entity and `apikey` content: @@ -2289,6 +2259,9 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - {} + - adminApiKeyAuth: [] /wallets: get: tags: @@ -2296,12 +2269,6 @@ paths: summary: List all wallets operationId: getWallets parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string - name: offset in: query required: false @@ -2339,6 +2306,10 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - adminApiKeyAuth: [] + - apiKeyAuth: [] + - jwtAuth: [] post: tags: - Wallet Management @@ -2347,13 +2318,6 @@ paths: Create a new wallet with optional to use provided seed. The seed will be used for DID key derivation inside the wallet. operationId: createWallet - parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string requestBody: content: application/json: @@ -2385,6 +2349,10 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - adminApiKeyAuth: [] + - apiKeyAuth: [] + - jwtAuth: [] /wallets/{walletId}: get: tags: @@ -2392,12 +2360,6 @@ paths: summary: Get the wallet by ID operationId: getWalletsWalletid parameters: - - name: x-admin-api-key - in: header - description: Admin API Key - required: true - schema: - type: string - name: walletId in: path required: true @@ -2435,6 +2397,99 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + security: + - adminApiKeyAuth: [] + - apiKeyAuth: [] + - jwtAuth: [] + /wallets/{walletId}/uma-permissions: + post: + tags: + - Wallet Management + summary: Create a UMA resource permission on an authorization server for the + wallet. + operationId: createWalletUmaPermission + parameters: + - name: walletId + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWalletUmaPermissionRequest' + required: true + responses: + '200': + description: UMA resource permission is created on an authorization server. + '400': + description: Invalid request parameters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - adminApiKeyAuth: [] + - apiKeyAuth: [] + - jwtAuth: [] + delete: + tags: + - Wallet Management + summary: Delete a UMA resource permission on an authorization server for the + wallet. + operationId: deleteWalletUmaPermission + parameters: + - name: walletId + in: path + required: true + schema: + type: string + format: uuid + - name: subject + in: query + required: true + schema: + type: string + format: uuid + responses: + '200': + description: UMA resource permission is removed from an authorization server. + '400': + description: Invalid request parameters + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + security: + - adminApiKeyAuth: [] + - apiKeyAuth: [] + - jwtAuth: [] /events/webhooks: get: tags: @@ -2644,6 +2699,17 @@ components: type: string description: A human readable alias for the connection. example: Peter + goalCode: + type: string + description: A self-attested code the receiver may want to display to the + user or use in automatically deciding what to do with the out-of-band + message. + example: issue-vc + goal: + type: string + description: A self-attested string that the receiver may want to display + to the user about the context-specific goal of the out-of-band message. + example: To issue a Peter College Graduate credential myDid: type: string description: The DID representing me as the inviter or invitee in this specific @@ -2774,6 +2840,17 @@ components: type: string description: A human readable alias for the connection. example: Peter + goalCode: + type: string + description: A self-attested code the receiver may want to display to the + user or use in automatically deciding what to do with the out-of-band + message. + example: issue-vc + goal: + type: string + description: A self-attested string that the receiver may want to display + to the user about the context-specific goal of the out-of-band message. + example: To issue a Peter College Graduate credential CreateEntityRequest: required: - name @@ -2900,6 +2977,17 @@ components: description: The unique `id` of the wallet. Randomly generated if not specified. format: uuid example: 00000000-0000-0000-0000-000000000000 + CreateWalletUmaPermissionRequest: + required: + - subject + type: object + properties: + subject: + type: string + description: The subject ID that should be granted the permission to the + wallet. This can be found in the `sub` claim of a JWT token. + format: uuid + example: 00000000-0000-0000-0000-000000000000 CreateWebhookNotification: required: - url @@ -3665,7 +3753,7 @@ components: type: string description: The date and time when the issue credential record was created. format: date-time - example: '2023-10-24T10:50:45.871298Z' + example: '2023-11-16T08:09:01.625751794Z' updatedAt: type: string description: The date and time when the issue credential record was last @@ -4478,6 +4566,10 @@ components: items: $ref: '#/components/schemas/WebhookNotification' securitySchemes: + adminApiKeyAuth: + type: apiKey + name: x-admin-api-key + in: header apiKeyAuth: type: apiKey name: apikey diff --git a/version.sbt b/version.sbt index bc21f09057..edc47d8a40 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -ThisBuild / version := "1.18.0-SNAPSHOT" +ThisBuild / version := "1.19.0-snapshot.1-SNAPSHOT"