-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #419 from catenax-ng/feat/input-endpoints-generic-bpm
feat(generic bpm): #384 Gate API: Create input endpoints for generic data model
- Loading branch information
Showing
16 changed files
with
446 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
79 changes: 79 additions & 0 deletions
79
bpdm-gate-api/src/main/kotlin/org/eclipse/tractusx/bpdm/gate/api/GateBusinessPartnerApi.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
/******************************************************************************* | ||
* Copyright (c) 2021,2023 Contributors to the Eclipse Foundation | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information regarding copyright ownership. | ||
* | ||
* 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. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
******************************************************************************/ | ||
|
||
package org.eclipse.tractusx.bpdm.gate.api | ||
|
||
import io.swagger.v3.oas.annotations.Operation | ||
import io.swagger.v3.oas.annotations.media.Content | ||
import io.swagger.v3.oas.annotations.responses.ApiResponse | ||
import io.swagger.v3.oas.annotations.responses.ApiResponses | ||
import jakarta.validation.Valid | ||
import org.eclipse.tractusx.bpdm.common.dto.request.PaginationRequest | ||
import org.eclipse.tractusx.bpdm.common.dto.response.PageDto | ||
import org.eclipse.tractusx.bpdm.gate.api.model.request.BusinessPartnerInputRequest | ||
import org.eclipse.tractusx.bpdm.gate.api.model.response.BusinessPartnerInputDto | ||
import org.springdoc.core.annotations.ParameterObject | ||
import org.springframework.http.MediaType | ||
import org.springframework.web.bind.annotation.PostMapping | ||
import org.springframework.web.bind.annotation.PutMapping | ||
import org.springframework.web.bind.annotation.RequestBody | ||
import org.springframework.web.bind.annotation.RequestMapping | ||
import org.springframework.web.service.annotation.HttpExchange | ||
import org.springframework.web.service.annotation.PostExchange | ||
import org.springframework.web.service.annotation.PutExchange | ||
|
||
@RequestMapping("/api/catena", produces = [MediaType.APPLICATION_JSON_VALUE]) | ||
@HttpExchange("/api/catena") | ||
interface GateBusinessPartnerApi { | ||
|
||
@Operation( | ||
summary = "Create or update business partner with given external ID", | ||
description = "Create or update generic business partner. " + | ||
"Updates instead of creating a new business partner if an already existing external ID is used. " + | ||
"The same external ID may not occur more than once in a single request. " + | ||
"For a single request, the maximum number of business partners in the request is limited to \${bpdm.api.upsert-limit} entries." | ||
) | ||
@ApiResponses( | ||
value = [ | ||
ApiResponse(responseCode = "200", description = "Business partner were successfully updated or created"), | ||
ApiResponse(responseCode = "400", description = "On malformed legal entity request", content = [Content()]), | ||
] | ||
) | ||
@PutMapping("/input/business-partners") | ||
@PutExchange("/input/business-partners") | ||
fun upsertBusinessPartnersInput(@RequestBody businessPartners: Collection<BusinessPartnerInputRequest>): Collection<BusinessPartnerInputDto> | ||
|
||
@Operation( | ||
summary = "Search business partner by external ID. An empty external ID list returns a paginated list of all business partners.", | ||
description = "Get page of business partners filtered by a collection of external IDs." | ||
) | ||
@ApiResponses( | ||
value = [ | ||
ApiResponse(responseCode = "200", description = "The requested page of business partners"), | ||
ApiResponse(responseCode = "400", description = "On malformed pagination request", content = [Content()]), | ||
] | ||
) | ||
@PostMapping("/input/business-partners/search") | ||
@PostExchange("/input/business-partners/search") | ||
fun getBusinessPartnersInputByExternalIds( | ||
@ParameterObject @Valid paginationRequest: PaginationRequest, | ||
@RequestBody externalIds: Collection<String> | ||
): PageDto<BusinessPartnerInputDto> | ||
|
||
} |
28 changes: 28 additions & 0 deletions
28
bpdm-gate-api/src/main/kotlin/org/eclipse/tractusx/bpdm/gate/api/model/AddressType.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/******************************************************************************* | ||
* Copyright (c) 2021,2023 Contributors to the Eclipse Foundation | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information regarding copyright ownership. | ||
* | ||
* 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. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
******************************************************************************/ | ||
|
||
package org.eclipse.tractusx.bpdm.gate.api.model | ||
|
||
enum class AddressType { | ||
|
||
LegalAndSiteMainAddress, | ||
LegalAddress, | ||
SiteMainAddress, | ||
AdditionalAddress | ||
} |
35 changes: 35 additions & 0 deletions
35
.../src/main/kotlin/org/eclipse/tractusx/bpdm/gate/api/model/BusinessPartnerIdentifierDto.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
/******************************************************************************* | ||
* Copyright (c) 2021,2023 Contributors to the Eclipse Foundation | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information regarding copyright ownership. | ||
* | ||
* 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. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
******************************************************************************/ | ||
|
||
package org.eclipse.tractusx.bpdm.gate.api.model | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema | ||
|
||
@Schema(description = "Identifier record for a business partner", requiredProperties = ["type"]) | ||
data class BusinessPartnerIdentifierDto( | ||
|
||
@get:Schema(description = "Value of the identifier") | ||
val value: String?, | ||
|
||
@get:Schema(description = "Technical key of the type to which this identifier belongs to") | ||
val type: String, | ||
|
||
@get:Schema(description = "Body which issued the identifier") | ||
val issuingBody: String? | ||
) |
40 changes: 40 additions & 0 deletions
40
...n/kotlin/org/eclipse/tractusx/bpdm/gate/api/model/BusinessPartnerPostalAddressInputDto.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
/******************************************************************************* | ||
* Copyright (c) 2021,2023 Contributors to the Eclipse Foundation | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information regarding copyright ownership. | ||
* | ||
* 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. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
******************************************************************************/ | ||
|
||
package org.eclipse.tractusx.bpdm.gate.api.model | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema | ||
import org.eclipse.tractusx.bpdm.common.dto.AlternativePostalAddressDto | ||
import org.eclipse.tractusx.bpdm.common.dto.openapidescription.LogisticAddressDescription | ||
import org.eclipse.tractusx.bpdm.gate.api.model.openapidescription.BusinessPartnerAddressDescription | ||
|
||
@Schema(description = "Postal address of a input business partner", requiredProperties = ["physicalPostalAddress"]) | ||
data class BusinessPartnerPostalAddressInputDto( | ||
|
||
@get:Schema( description = BusinessPartnerAddressDescription.addressType) | ||
val addressType: AddressType?, | ||
|
||
// TODO OpenAPI description for complex field does not work!! | ||
@get:Schema(description = LogisticAddressDescription.physicalPostalAddress) | ||
val physicalPostalAddress: PhysicalPostalAddressGateDto, | ||
|
||
// TODO OpenAPI description for complex field does not work!! | ||
@get:Schema(description = LogisticAddressDescription.alternativePostalAddress) | ||
val alternativePostalAddress: AlternativePostalAddressDto? = null | ||
) |
41 changes: 41 additions & 0 deletions
41
...e-api/src/main/kotlin/org/eclipse/tractusx/bpdm/gate/api/model/BusinessPartnerStateDto.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/******************************************************************************* | ||
* Copyright (c) 2021,2023 Contributors to the Eclipse Foundation | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information regarding copyright ownership. | ||
* | ||
* 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. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
******************************************************************************/ | ||
|
||
package org.eclipse.tractusx.bpdm.gate.api.model | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema | ||
import org.eclipse.tractusx.bpdm.common.dto.openapidescription.LegalEntityStateDescription | ||
import org.eclipse.tractusx.bpdm.common.model.BusinessStateType | ||
import java.time.LocalDateTime | ||
|
||
@Schema(description = LegalEntityStateDescription.header, requiredProperties = ["type"]) | ||
data class BusinessPartnerStateDto( | ||
|
||
@get:Schema(description = "Denotation of the status.") | ||
val description: String?, | ||
|
||
@get:Schema(description = "Date since when the status is/was valid.") | ||
val validFrom: LocalDateTime?, | ||
|
||
@get:Schema(description = "Date until the status was valid, if applicable.") | ||
val validTo: LocalDateTime?, | ||
|
||
@get:Schema(description = "The type of this specified status.") | ||
val type: BusinessStateType | ||
) |
62 changes: 62 additions & 0 deletions
62
.../src/main/kotlin/org/eclipse/tractusx/bpdm/gate/api/model/IBaseBusinessPartnerInputDto.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
/******************************************************************************* | ||
* Copyright (c) 2021,2023 Contributors to the Eclipse Foundation | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information regarding copyright ownership. | ||
* | ||
* 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. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
******************************************************************************/ | ||
|
||
package org.eclipse.tractusx.bpdm.gate.api.model | ||
|
||
import io.swagger.v3.oas.annotations.media.ArraySchema | ||
import io.swagger.v3.oas.annotations.media.Schema | ||
import org.eclipse.tractusx.bpdm.common.dto.ClassificationDto | ||
import org.eclipse.tractusx.bpdm.common.dto.openapidescription.CommonDescription | ||
|
||
interface IBaseBusinessPartnerInputDto { | ||
|
||
@get:Schema(description = CommonDescription.externalId) | ||
val externalId: String | ||
|
||
@get:Schema(description = "") | ||
val nameParts: List<String> | ||
|
||
@get:Schema(description = "Abbreviated name or shorthand") | ||
val shortName: String? | ||
|
||
@get:ArraySchema(arraySchema = Schema(description = "The list of identifiers of the business partner.")) | ||
val identifiers: Collection<BusinessPartnerIdentifierDto> | ||
|
||
@get:Schema(description = "Technical key of the legal form.") | ||
val legalForm: String? | ||
|
||
@get:ArraySchema(arraySchema = Schema(description = "The list of (temporary) states of the business partner.")) | ||
val states: Collection<BusinessPartnerStateDto> | ||
|
||
@get:ArraySchema(arraySchema = Schema(description = "The list of classifications of the legal entity, such as a specific industry.")) | ||
val classifications: Collection<ClassificationDto> | ||
|
||
@get:ArraySchema(arraySchema = Schema(description = CommonDescription.roles)) | ||
val roles: Collection<BusinessPartnerRole> | ||
|
||
@get:Schema(name = "isOwner", description = "True if the sharing member declares itself as the owner of the business partner.") | ||
val isOwner: Boolean | ||
|
||
@get:Schema(description = "Address of the official seat of this business partner.") | ||
val postalAddress: BusinessPartnerPostalAddressInputDto | ||
|
||
|
||
} | ||
|
||
|
25 changes: 25 additions & 0 deletions
25
...ipse/tractusx/bpdm/gate/api/model/openapidescription/BusinessPartnerAddressDescription.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/******************************************************************************* | ||
* Copyright (c) 2021,2023 Contributors to the Eclipse Foundation | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information regarding copyright ownership. | ||
* | ||
* 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. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
******************************************************************************/ | ||
|
||
package org.eclipse.tractusx.bpdm.gate.api.model.openapidescription | ||
|
||
object BusinessPartnerAddressDescription { | ||
|
||
const val addressType = "Type of the address" | ||
} |
39 changes: 39 additions & 0 deletions
39
...in/kotlin/org/eclipse/tractusx/bpdm/gate/api/model/request/BusinessPartnerInputRequest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/******************************************************************************* | ||
* Copyright (c) 2021,2023 Contributors to the Eclipse Foundation | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information regarding copyright ownership. | ||
* | ||
* 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. | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
* License for the specific language governing permissions and limitations | ||
* under the License. | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
******************************************************************************/ | ||
|
||
package org.eclipse.tractusx.bpdm.gate.api.model.request | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema | ||
import org.eclipse.tractusx.bpdm.common.dto.ClassificationDto | ||
import org.eclipse.tractusx.bpdm.gate.api.model.* | ||
|
||
|
||
@Schema(description = "Generic business partner with external id", requiredProperties = ["externalId", "postalAddress"]) | ||
data class BusinessPartnerInputRequest( | ||
override val externalId: String, | ||
override val nameParts: List<String> = emptyList(), | ||
override val shortName: String?, | ||
override val identifiers: Collection<BusinessPartnerIdentifierDto> = emptyList(), | ||
override val legalForm: String? = null, | ||
override val states: Collection<BusinessPartnerStateDto> = emptyList(), | ||
override val classifications: Collection<ClassificationDto> = emptyList(), | ||
override val roles: Collection<BusinessPartnerRole> = emptyList(), | ||
override val postalAddress: BusinessPartnerPostalAddressInputDto, | ||
override val isOwner: Boolean | ||
) : IBaseBusinessPartnerInputDto |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.