Skip to content

Commit 6c67999

Browse files
committed
refactor(management-api): stabilize V4, deprecate V3, promote V5 beta
1 parent cf23f6b commit 6c67999

122 files changed

Lines changed: 450 additions & 592 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

data-protocols/data-plane-signaling/data-plane-signaling-core/src/main/java/org/eclipse/edc/signaling/port/api/DataPlaneRegistrationApiV4.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import static jakarta.ws.rs.HttpMethod.PUT;
3232

3333
@OpenAPIDefinition(info = @Info(version = "v4"))
34-
@Tag(name = "Dataplane Signaling Registration v4beta")
34+
@Tag(name = "Dataplane Signaling Registration v4")
3535
public interface DataPlaneRegistrationApiV4 {
3636

3737
@Operation(

data-protocols/data-plane-signaling/data-plane-signaling-core/src/main/java/org/eclipse/edc/signaling/port/api/DataPlaneRegistrationApiV4Controller.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON;
3232
import static org.eclipse.edc.web.spi.exception.ServiceResultHandler.mapToException;
3333

34-
@Path("/v4beta/dataplanes")
34+
@Path("/v4/dataplanes")
3535
@Produces(APPLICATION_JSON)
3636
@Consumes(APPLICATION_JSON)
3737
public class DataPlaneRegistrationApiV4Controller implements DataPlaneRegistrationApiV4 {

data-protocols/data-plane-signaling/data-plane-signaling-core/src/test/java/org/eclipse/edc/signaling/DataPlaneRegistrationApiV4ControllerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ protected Object controller() {
121121
private RequestSpecification baseRequest() {
122122
return given()
123123
.baseUri("http://localhost:" + port)
124-
.basePath("/v4beta")
124+
.basePath("/v4")
125125
.when();
126126
}
127127
}

data-protocols/data-plane-signaling/data-plane-signaling-core/src/test/java/org/eclipse/edc/signaling/port/api/DataPlaneRegistrationApiV4ControllerTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void shouldRegisterDataPlane() {
4848
.port(port)
4949
.contentType(ContentType.JSON)
5050
.body(message)
51-
.put("/v4beta/dataplanes")
51+
.put("/v4/dataplanes")
5252
.then()
5353
.log().ifValidationFails()
5454
.statusCode(200);
@@ -72,7 +72,7 @@ void shouldRegisterDataPlane_withAuthorizationProfile() {
7272
.port(port)
7373
.contentType(ContentType.JSON)
7474
.body(message)
75-
.put("/v4beta/dataplanes")
75+
.put("/v4/dataplanes")
7676
.then()
7777
.log().ifValidationFails()
7878
.statusCode(200);
@@ -92,7 +92,7 @@ void shouldReturnError_whenServiceCallFails() {
9292
.port(port)
9393
.contentType(ContentType.JSON)
9494
.body(message)
95-
.put("/v4beta/dataplanes")
95+
.put("/v4/dataplanes")
9696
.then()
9797
.log().ifValidationFails()
9898
.statusCode(409);
@@ -109,7 +109,7 @@ void shouldDeleteDataPlane() {
109109
given()
110110
.port(port)
111111
.contentType(ContentType.JSON)
112-
.delete("/v4beta/dataplanes/{dataplaneId}", "dp-id")
112+
.delete("/v4/dataplanes/{dataplaneId}", "dp-id")
113113
.then()
114114
.log().ifValidationFails()
115115
.statusCode(200);
@@ -124,7 +124,7 @@ void shouldReturnNotFound_whenDataPlaneDoesNotExist() {
124124
given()
125125
.port(port)
126126
.contentType(ContentType.JSON)
127-
.delete("/v4beta/dataplanes/{dataplaneId}", "dp-id")
127+
.delete("/v4/dataplanes/{dataplaneId}", "dp-id")
128128
.then()
129129
.log().ifValidationFails()
130130
.statusCode(404);

data-protocols/data-plane-signaling/src/main/resources/signaling-api-version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
{
33
"version": "1.0.0-alpha",
44
"urlPath": "/v1",
5-
"lastUpdated": "2026-04-13T14:00:01Z"
5+
"lastUpdated": "2026-04-15T14:00:01Z"
66
}
77
]

extensions/common/api/management-api-configuration/src/main/java/org/eclipse/edc/connector/api/management/configuration/ManagementApiConfigurationExtension.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
package org.eclipse.edc.connector.api.management.configuration;
1616

1717
import jakarta.json.Json;
18+
import jakarta.ws.rs.container.ContainerRequestContext;
19+
import jakarta.ws.rs.container.ContainerRequestFilter;
1820
import org.eclipse.edc.connector.controlplane.transform.edc.contractagreement.from.JsonObjectFromContractAgreementTransformer;
1921
import org.eclipse.edc.connector.controlplane.transform.edc.from.JsonObjectFromAssetTransformer;
2022
import org.eclipse.edc.connector.controlplane.transform.edc.from.JsonObjectFromDataplaneMetadataTransformer;
@@ -31,6 +33,7 @@
3133
import org.eclipse.edc.runtime.metamodel.annotation.Setting;
3234
import org.eclipse.edc.runtime.metamodel.annotation.Settings;
3335
import org.eclipse.edc.spi.EdcException;
36+
import org.eclipse.edc.spi.monitor.Monitor;
3437
import org.eclipse.edc.spi.query.CriterionOperatorRegistry;
3538
import org.eclipse.edc.spi.system.Hostname;
3639
import org.eclipse.edc.spi.system.ServiceExtension;
@@ -134,6 +137,7 @@ public void initialize(ServiceExtensionContext context) {
134137
jsonLd.registerContext(EDC_CONNECTOR_MANAGEMENT_CONTEXT_V2, MANAGEMENT_SCOPE_V4);
135138

136139
webService.registerResource(ApiContext.MANAGEMENT, new ObjectMapperProvider(typeManager, JSON_LD));
140+
webService.registerResource(ApiContext.MANAGEMENT, new DeprecatedVersionLog(context.getMonitor()));
137141

138142
var managementApiTransformerRegistry = transformerRegistry.forContext(MANAGEMENT_API_CONTEXT);
139143

@@ -189,4 +193,20 @@ record ManagementApiConfiguration(
189193
) {
190194

191195
}
196+
197+
@Deprecated(since = "management-api:v3")
198+
private static class DeprecatedVersionLog implements ContainerRequestFilter {
199+
private final Monitor monitor;
200+
201+
DeprecatedVersionLog(Monitor monitor) {
202+
this.monitor = monitor;
203+
}
204+
205+
@Override
206+
public void filter(ContainerRequestContext requestContext) {
207+
if (requestContext.getUriInfo().getPath().startsWith("v3/")) {
208+
monitor.warning("Management API V3 has been deprecated, please switch to V4 as V3 will be removed in the upcoming versions");
209+
}
210+
}
211+
}
192212
}

extensions/common/api/management-api-configuration/src/main/resources/management-api-version.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
"version": "3.1.6",
44
"urlPath": "/v3",
55
"lastUpdated": "2026-03-12T08:30:01Z",
6-
"maturity": "stable"
6+
"maturity": "deprecated"
77
},
88
{
9-
"version": "4.0.0-beta",
10-
"urlPath": "/v4beta",
9+
"version": "4.0.0",
10+
"urlPath": "/v4",
1111
"lastUpdated": "2026-04-09T09:43:01Z",
12-
"maturity": "beta"
12+
"maturity": "stable"
1313
},
1414
{
15-
"version": "5.0.0-alpha",
16-
"urlPath": "/v5alpha",
15+
"version": "5.0.0-beta",
16+
"urlPath": "/v5beta",
1717
"lastUpdated": "2026-03-27T09:00:00Z",
18-
"maturity": "alpha"
18+
"maturity": "beta"
1919
}
2020
]

extensions/control-plane/api/management-api-v5/asset-api-v5/src/main/java/org/eclipse/edc/connector/controlplane/api/management/asset/v5/AssetApiV5.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131

3232
@OpenAPIDefinition(
3333
info = @Info(description = "This contains both the current and the new Asset API, which accepts JSON-LD and will " +
34-
"become the standard API once the Dataspace Protocol is stable.", title = "Asset API", version = "v5alpha"))
35-
@Tag(name = "Asset v5alpha")
34+
"become the standard API once the Dataspace Protocol is stable.", title = "Asset API", version = "v5beta"))
35+
@Tag(name = "Asset v5beta")
3636
public interface AssetApiV5 {
3737
@Operation(description = "Creates a new asset together with a data address",
3838
requestBody = @RequestBody(content = @Content(schema = @Schema(ref = ManagementApiJsonSchema.V4.ASSET))),

extensions/control-plane/api/management-api-v5/asset-api-v5/src/main/java/org/eclipse/edc/connector/controlplane/api/management/asset/v5/AssetApiV5Controller.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858

5959
@Consumes(APPLICATION_JSON)
6060
@Produces(APPLICATION_JSON)
61-
@Path("/v5alpha/participants/{participantContextId}/assets")
61+
@Path("/v5beta/participants/{participantContextId}/assets")
6262
public class AssetApiV5Controller implements AssetApiV5 {
6363
private final TypeTransformerRegistry typeTransformerRegistry;
6464
private final AssetService assetService;

extensions/control-plane/api/management-api-v5/asset-api-v5/src/test/java/org/eclipse/edc/connector/controlplane/api/management/asset/v5/AssetApiV5ControllerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
public class AssetApiV5ControllerTest extends AssetApiControllerTest {
2020
@Override
2121
protected String versionPath() {
22-
return "v5alpha";
22+
return "v5beta";
2323
}
2424

2525
@Override

0 commit comments

Comments
 (0)