diff --git a/eingang-manager-interface/pom.xml b/eingang-manager-interface/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc3858f82e2a250ce4313b6a0e55e974339dd82c --- /dev/null +++ b/eingang-manager-interface/pom.xml @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>de.ozgcloud.common</groupId> + <artifactId>ozgcloud-common-dependencies</artifactId> + <version>4.11.0</version> + <relativePath /> + </parent> + + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager-interface</artifactId> + <version>2.19.0-SNAPSHOT</version> + + <name>OZG-Cloud Eingang Manager gRPC Interface</name> + <description>Interface (gRPC) for Eingang Manager Server</description> + <inceptionYear>2025</inceptionYear> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + + <java.version>21</java.version> + <maven.compiler.source>${java.version}</maven.compiler.source> + <maven.compiler.target>${java.version}</maven.compiler.target> + + <find-and-replace-maven-plugin.version>1.1.0</find-and-replace-maven-plugin.version> + </properties> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>de.ozgcloud.common</groupId> + <artifactId>ozgcloud-common-dependencies</artifactId> + <version>${ozgcloud-common.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <!-- GRPC --> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-stub</artifactId> + </dependency> + <dependency> + <groupId>io.grpc</groupId> + <artifactId>grpc-protobuf</artifactId> + </dependency> + <dependency> + <groupId>jakarta.annotation</groupId> + <artifactId>jakarta.annotation-api</artifactId> + </dependency> + </dependencies> + + <build> + <sourceDirectory>src/main/protobuf</sourceDirectory> + + <extensions> + <extension> + <groupId>kr.motd.maven</groupId> + <artifactId>os-maven-plugin</artifactId> + </extension> + </extensions> + + <plugins> + <plugin> + <groupId>com.github.os72</groupId> + <artifactId>protoc-jar-maven-plugin</artifactId> + <version>${protoc-jar-plugin.version}</version> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <protocVersion>${protobuf.version}</protocVersion> + <outputTargets> + <outputTarget> + <type>java</type> + </outputTarget> + <outputTarget> + <type>grpc-java</type> + <pluginArtifact> + io.grpc:protoc-gen-grpc-java:${protoc-gen.version}</pluginArtifact> + </outputTarget> + </outputTargets> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>io.github.floverfelt</groupId> + <artifactId>find-and-replace-maven-plugin</artifactId> + <version>${find-and-replace-maven-plugin.version}</version> + <executions> + <execution> + <id>exec</id> + <phase>process-sources</phase> + <goals> + <goal>find-and-replace</goal> + </goals> + <configuration> + <replacementType>file-contents</replacementType> + <baseDir>target/generated-sources/</baseDir> + <findRegex>javax</findRegex> + <replaceValue>jakarta</replaceValue> + <recursive>true</recursive> + <fileMask>.java</fileMask> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>3.2.1</version> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <distributionManagement> + <repository> + <id>ozg-nexus</id> + <name>ozg-releases</name> + <url>https://nexus.ozg-sh.de/repository/ozg-releases/</url> + </repository> + <snapshotRepository> + <id>ozg-snapshots-nexus</id> + <name>ozg-snapshots</name> + <url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url> + </snapshotRepository> + </distributionManagement> +</project> \ No newline at end of file diff --git a/eingang-manager-interface/src/main/protobuf/common.model.proto b/eingang-manager-interface/src/main/protobuf/common.model.proto new file mode 100644 index 0000000000000000000000000000000000000000..25067f3e9650683a3473e455b59e39e2fc750250 --- /dev/null +++ b/eingang-manager-interface/src/main/protobuf/common.model.proto @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +syntax = "proto3"; + +package de.ozgcloud.eingang.common; + +option java_multiple_files = true; +option java_package = "de.ozgcloud.eingang.common"; +option java_outer_classname = "CommonModelProto"; + +message GrpcObject { + repeated GrpcProperty property = 1; + repeated GrpcSubObject subObject = 2; +} + +message GrpcProperty { + string name = 1; + repeated string value = 2; +} + +message GrpcSubObject { + string name = 1; + repeated GrpcProperty property = 2; + repeated GrpcSubObject subObject = 3; +} \ No newline at end of file diff --git a/eingang-manager-interface/src/main/protobuf/forwarding.model.proto b/eingang-manager-interface/src/main/protobuf/forwarding.model.proto new file mode 100644 index 0000000000000000000000000000000000000000..64a281597aac53a5a087ab6f8df763adb3cb625e --- /dev/null +++ b/eingang-manager-interface/src/main/protobuf/forwarding.model.proto @@ -0,0 +1,144 @@ +/* + * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +syntax = "proto3"; + +package de.ozgcloud.eingang.forwarder; + +import "common.model.proto"; + +option java_multiple_files = true; +option java_package = "de.ozgcloud.eingang.forwarding"; +option java_outer_classname = "RouteForwardingModelProto"; + + +message GrpcRouteForwardingRequest { + oneof request { + GrpcRouteForwarding routeForwarding = 1; + GrpcAttachment attachment = 2; + GrpcRepresentation representation = 3; + } +} + +message GrpcRouteForwardingResponse { + +} + +message GrpcRouteForwarding { + GrpcEingangStub eingangStub = 1; + GrpcRouteCriteria routeCriteria = 2; +} + +message GrpcEingangStub { + GrpcEingangHeader header = 1; + GrpcAntragsteller antragsteller = 2; + GrpcFormData formData = 3; +} + +message GrpcEingangHeader { + string requestId = 1; + string vorgangNummer = 2; + string createdAt = 3; + string formId = 4; + string formName = 5; + string formEngineName = 6; + string sender = 7; + GrpcServiceKonto serviceKonto = 8; +} + +message GrpcServiceKonto { + string type = 1; + repeated GrpcPostfachAddress postfachAddresses = 2; + string trustLevel = 3; +} + +message GrpcPostfachAddress { + string version = 1; + de.ozgcloud.eingang.common.GrpcObject identifier = 2; + int32 type = 3; +} + +message GrpcAntragsteller { + string anrede = 1; + string nachname = 2; + string vorname = 3; + string geburtsdatum = 4; + string geburtsort = 5; + string geburtsname = 6; + string email = 7; + string telefon = 8; + string strasse = 9; + string hausnummer = 10; + string plz = 11; + string ort = 12; + GrpcFormData data = 13; + string firmaName = 14; +} + +message GrpcFormData { + repeated GrpcFormField field = 1; + repeated GrpcFormData form = 2; +} + +message GrpcFormField { + string name = 1; + string value = 2; +} + +message GrpcRouteCriteria { + string organisationseinheitenId = 1; +} + +message GrpcAttachment { + oneof attachment { + GrpcAttachmentFile file = 1; + GrpcFileContent content = 2; + } +} + +message GrpcAttachmentFile { + string groupName = 1; + string fileName = 2; + string contentType = 3; + string vendorId = 4; + int64 size = 5; +} + +message GrpcRepresentation { + oneof representation { + GrpcRepresentationFile file = 1; + GrpcFileContent content = 2; + } +} + +message GrpcRepresentationFile { + string fileName = 1; + string contentType = 2; + string vendorId = 3; + int64 size = 4; +} + +message GrpcFileContent { + bytes content = 1; + bool isEndOfFile = 2; +} \ No newline at end of file diff --git a/eingang-manager-interface/src/main/protobuf/forwarding.proto b/eingang-manager-interface/src/main/protobuf/forwarding.proto new file mode 100644 index 0000000000000000000000000000000000000000..0d6c4100d86625f48ef7d07a3170a3b23974d80f --- /dev/null +++ b/eingang-manager-interface/src/main/protobuf/forwarding.proto @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +syntax = "proto3"; + +package de.ozgcloud.eingang.forwarder; + +import "forwarding.model.proto"; + +option java_multiple_files = true; +option java_package = "de.ozgcloud.eingang.forwarder"; +option java_outer_classname = "RouteForwardingProto"; + +service RouteForwardingService { + + rpc RouteForwarding(stream GrpcRouteForwardingRequest) returns (GrpcRouteForwardingResponse) { + } + +} \ No newline at end of file