Skip to content

Commit

Permalink
feat: data offer and connector detail pages (broker server api) (#377)
Browse files Browse the repository at this point in the history
  • Loading branch information
tmberthold authored Jun 13, 2023
1 parent 32a024d commit 56ba5e3
Show file tree
Hide file tree
Showing 6 changed files with 202 additions and 1 deletion.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ All notable changes to this project will be documented in this file.
### Major Changes

### Minor Changes
- The Broker- and ClearingHouse-client-extensions can be dynamically enabled and disabled via properties (see getting-started Readme FAQ section).
- Broker-/ClearingHouse-Client: The extensions can be dynamically enabled and disabled via properties (see getting-started Readme FAQ section).
- Broker Server API: New API Endpoint `DataOfferDetailPage` and `ConnectorDetailPage` with model.

### Patch Changes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@

import de.sovity.edc.ext.wrapper.api.broker.model.CatalogPageQuery;
import de.sovity.edc.ext.wrapper.api.broker.model.CatalogPageResult;
import de.sovity.edc.ext.wrapper.api.broker.model.ConnectorDetailPageQuery;
import de.sovity.edc.ext.wrapper.api.broker.model.ConnectorDetailPageResult;
import de.sovity.edc.ext.wrapper.api.broker.model.ConnectorPageQuery;
import de.sovity.edc.ext.wrapper.api.broker.model.ConnectorPageResult;
import de.sovity.edc.ext.wrapper.api.broker.model.DataOfferDetailPageResult;
import de.sovity.edc.ext.wrapper.api.broker.model.DataOfferDetailPageQuery;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.ws.rs.Consumes;
Expand All @@ -43,4 +47,18 @@ public interface BrokerServerResource {
@Produces(MediaType.APPLICATION_JSON)
@Operation(description = "Query known Connectors")
ConnectorPageResult connectorPage(ConnectorPageQuery query);

@POST
@Path("data-offer-detail-page")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Operation(description = "Query data offer details")
DataOfferDetailPageResult dataOfferDetailPage(DataOfferDetailPageQuery query);

@POST
@Path("connector-detail-page")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Operation(description = "Query known Connectors details")
ConnectorDetailPageResult connectorDetailPage(ConnectorDetailPageQuery query);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright (c) 2022 sovity GmbH
*
* This program and the accompanying materials are made available under the
* terms of the Apache License, Version 2.0 which is available at
* https://www.apache.org/licenses/LICENSE-2.0
*
* SPDX-License-Identifier: Apache-2.0
*
* Contributors:
* sovity GmbH - initial API and implementation
*
*/

package de.sovity.edc.ext.wrapper.api.broker.model;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "Connector Page Detail Query")
public class ConnectorDetailPageQuery {
@Schema(description = "Connector Endpoint1")
private String connectorEndpoint;
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Copyright (c) 2023 sovity GmbH
*
* This program and the accompanying materials are made available under the
* terms of the Apache License, Version 2.0 which is available at
* https://www.apache.org/licenses/LICENSE-2.0
*
* SPDX-License-Identifier: Apache-2.0
*
* Contributors:
* sovity GmbH - initial API and implementation
*
*/

package de.sovity.edc.ext.wrapper.api.broker.model;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.time.OffsetDateTime;

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "Connector Detail Page Data")
public class ConnectorDetailPageResult {
@Schema(description = "Connector ID", example = "https://my-test.connector", requiredMode = Schema.RequiredMode.REQUIRED)
private String id;

@Schema(description = "Connector Endpoint", example = "https://my-test.connector/control/ids/data", requiredMode = Schema.RequiredMode.REQUIRED)
private String endpoint;

@Schema(description = "Creation date in Broker", requiredMode = Schema.RequiredMode.REQUIRED)
private OffsetDateTime createdAt;

@Schema(description = "Last time the connector was successfully refreshed.")
private OffsetDateTime lastSuccessfulRefreshAt;

@Schema(description = "Last time the connector was tried to be refreshed.")
private OffsetDateTime lastRefreshAttemptAt;

@Schema(description = "Connector Online Status", requiredMode = Schema.RequiredMode.REQUIRED)
private ConnectorOnlineStatus onlineStatus;

@Schema(description = "Number of known data offerings")
private Integer numContractOffers;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright (c) 2023 sovity GmbH
*
* This program and the accompanying materials are made available under the
* terms of the Apache License, Version 2.0 which is available at
* https://www.apache.org/licenses/LICENSE-2.0
*
* SPDX-License-Identifier: Apache-2.0
*
* Contributors:
* sovity GmbH - initial API and implementation
*
*/

package de.sovity.edc.ext.wrapper.api.broker.model;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "Data Offer Detail Page Query")
public class DataOfferDetailPageQuery {
@Schema(description = "Connector Endpoint")
private String connectorEndpoint;

@Schema(description = "Asset ID")
private String assetId;
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
* Copyright (c) 2023 sovity GmbH
*
* This program and the accompanying materials are made available under the
* terms of the Apache License, Version 2.0 which is available at
* https://www.apache.org/licenses/LICENSE-2.0
*
* SPDX-License-Identifier: Apache-2.0
*
* Contributors:
* sovity GmbH - initial API and implementation
*
*/

package de.sovity.edc.ext.wrapper.api.broker.model;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.time.OffsetDateTime;
import java.util.List;
import java.util.Map;

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "Data Offer Detail Page.")
public class DataOfferDetailPageResult {
@Schema(description = "ID of asset", requiredMode = Schema.RequiredMode.REQUIRED)
private String assetId;

@Schema(description = "Connector Endpoint", example = "https://my-test.connector/control/ids/data", requiredMode = Schema.RequiredMode.REQUIRED)
private String connectorEndpoint;

@Schema(description = "Connector Online Status", requiredMode = Schema.RequiredMode.REQUIRED)
private ConnectorOnlineStatus connectorOnlineStatus;

@Schema(description = "Date to be displayed as last update date, for online connectors it's the last refresh date, for offline connectors it's the creation date or last successful fetch.")
private OffsetDateTime connectorOfflineSinceOrLastUpdatedAt;

@Schema(description = "Creation date in Broker", requiredMode = Schema.RequiredMode.REQUIRED)
private OffsetDateTime createdAt;

@Schema(description = "Update date in Broker", requiredMode = Schema.RequiredMode.REQUIRED)
private OffsetDateTime updatedAt;

@Schema(description = "Asset properties", requiredMode = Schema.RequiredMode.REQUIRED)
private Map<String, String> properties;

@Schema(description = "Available Contract Offers", requiredMode = Schema.RequiredMode.REQUIRED)
private List<DataOfferListEntryContractOffer> contractOffers;
}

0 comments on commit 56ba5e3

Please sign in to comment.