This is an automated email from the ASF dual-hosted git repository.
lahirujayathilake pushed a commit to branch dev-refactoring
in repository https://gitbox.apache.org/repos/asf/airavata-custos.git
The following commit(s) were added to refs/heads/dev-refactoring by this push:
new ed7c8e81d Included application, core, and services modules along with
the protobuf api messages
ed7c8e81d is described below
commit ed7c8e81d00160ed260de9adcc79a7ef2679a8d0
Author: lahiruj <[email protected]>
AuthorDate: Mon Apr 29 17:17:52 2024 -0400
Included application, core, and services modules along with the protobuf
api messages
---
application/pom.xml | 64 +++
.../application/CustosApplicationService.java | 11 +
application/src/main/resources/application.yml | 42 ++
application/src/main/resources/flyway-local.conf | 5 +
application/src/main/resources/flyway.conf | 5 +
application/src/main/resources/logback-spring.xml | 36 ++
core/pom.xml | 82 ++++
core/src/main/proto/AgentManagement.proto | 44 +++
core/src/main/proto/AgentProfile.proto | 55 +++
core/src/main/proto/ClusterManagement.proto | 34 ++
core/src/main/proto/CredentialStore.proto | 116 ++++++
core/src/main/proto/Email.proto | 95 +++++
core/src/main/proto/FederatedAuthentication.proto | 127 ++++++
core/src/main/proto/IamAdmin.proto | 435 +++++++++++++++++++++
core/src/main/proto/Identity.proto | 120 ++++++
core/src/main/proto/IdentityManagement.proto | 63 +++
core/src/main/proto/Logging.proto | 61 +++
core/src/main/proto/Messaging.proto | 49 +++
core/src/main/proto/ResourceSecret.proto | 173 ++++++++
core/src/main/proto/Sharing.proto | 184 +++++++++
core/src/main/proto/TenantManagement.proto | 116 ++++++
core/src/main/proto/TenantProfile.proto | 162 ++++++++
core/src/main/proto/UserManagement.proto | 84 ++++
core/src/main/proto/UserProfile.proto | 172 ++++++++
pom.xml | 15 +-
services/pom.xml | 38 ++
26 files changed, 2386 insertions(+), 2 deletions(-)
diff --git a/application/pom.xml b/application/pom.xml
new file mode 100644
index 000000000..01fd8c925
--- /dev/null
+++ b/application/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.custos</groupId>
+ <artifactId>custos</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>custos-auth-application</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-to-slf4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jul-to-slf4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jul-to-slf4j</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>${spring.boot.version}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <executable>true</executable>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.flywaydb</groupId>
+ <artifactId>flyway-maven-plugin</artifactId>
+ <version>${flyway-db.version}</version>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git
a/application/src/main/java/org/apache/custos/application/CustosApplicationService.java
b/application/src/main/java/org/apache/custos/application/CustosApplicationService.java
new file mode 100644
index 000000000..9a2c54545
--- /dev/null
+++
b/application/src/main/java/org/apache/custos/application/CustosApplicationService.java
@@ -0,0 +1,11 @@
+package org.apache.custos.application;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class CustosApplicationService {
+ public static void main(String[] args) {
+ SpringApplication.run(CustosApplicationService.class, args);
+ }
+}
diff --git a/application/src/main/resources/application.yml
b/application/src/main/resources/application.yml
new file mode 100644
index 000000000..f39e61af2
--- /dev/null
+++ b/application/src/main/resources/application.yml
@@ -0,0 +1,42 @@
+server:
+ port: 8081
+
+spring:
+ application:
+ name: custos
+ datasource:
+ url: "jdbc:mysql://localhost:3306/custos"
+ username: "admin"
+ password: "admin"
+ jpa:
+ hibernate:
+ ddl-auto: validate
+
+logging:
+ pattern:
+ level: '%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]'
+ level:
+ root: info
+
+iam:
+ server:
+ client:
+ id: admin-cli
+ url: http://host:docker:internal:8080
+ admin:
+ username: admin
+ password: admin
+ super:
+ admin:
+ realm:
+ id: master
+ federated:
+ cilogon:
+ authorization:
+ endpoint: https://cilogon.org/authorize
+ token:
+ endpoint: https://cilogon.org/oauth2/token
+ userinfo:
+ endpoint: https://cilogon.org/oauth2/userinfo
+ issuer: https://cilogon.org
+ jwksUri: https://cilogon.org/oauth2/certs
diff --git a/application/src/main/resources/flyway-local.conf
b/application/src/main/resources/flyway-local.conf
new file mode 100644
index 000000000..92cc4d449
--- /dev/null
+++ b/application/src/main/resources/flyway-local.conf
@@ -0,0 +1,5 @@
+flyway.user=postgres
+flyway.password=example
+flyway.url=jdbc:mysql://localhost:3306/custos
+flyway.locations=filesystem:src/main/resources/db/migration
+flyway.baselineOnMigrate=true
diff --git a/application/src/main/resources/flyway.conf
b/application/src/main/resources/flyway.conf
new file mode 100644
index 000000000..ad6391883
--- /dev/null
+++ b/application/src/main/resources/flyway.conf
@@ -0,0 +1,5 @@
+flyway.user=postgres
+flyway.password=example
+flyway.url=jdbc:mysql://<rds>:3306/custos
+flyway.locations=filesystem:src/main/resources/db/migration
+flyway.baselineOnMigrate=true
diff --git a/application/src/main/resources/logback-spring.xml
b/application/src/main/resources/logback-spring.xml
new file mode 100644
index 000000000..3941fdff1
--- /dev/null
+++ b/application/src/main/resources/logback-spring.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+ <include resource="org/springframework/boot/logging/logback/base.xml"/>
+ <springProperty scope="context" name="appName"
source="spring.application.name"/>
+
+ <!-- Rolling File Appender -->
+ <appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>logs/custos.log</file>
+ <encoder>
+ <pattern>%date{YYYY-MM-dd HH:mm:ss.SSS} app=${appName},
host=${HOSTNAME}, traceID=%X{traceId:-NONE}, level=%-5level, [%thread]
%logger{36} - %msg%n</pattern>
+ </encoder>
+ <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+
<fileNamePattern>logs/%d{yyyy-MM}/custos-log-%d{MM-dd-yyyy}-%i.log.gz</fileNamePattern>
+ <maxFileSize>10MB</maxFileSize>
+ <!-- number of days to keep the log files -->
+ <maxHistory>30</maxHistory>
+ <!-- If the total size of all log files exceeds this value, the
oldest files will be removed -->
+ <totalSizeCap>1GB</totalSizeCap>
+ </rollingPolicy>
+ </appender>
+
+ <!-- Asynchronous Rolling File Appender -->
+ <appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
+ <appender-ref ref="FILE"/>
+ <queueSize>500</queueSize>
+ <discardingThreshold>0</discardingThreshold>
+ <includeCallerData>true</includeCallerData>
+ </appender>
+
+ <logger name="org.hibernate" level="ERROR"/>
+ <logger name="org.springframework" level="INFO"/>
+
+ <root level="INFO">
+ <appender-ref ref="ASYNC_FILE"/>
+ </root>
+</configuration>
diff --git a/core/pom.xml b/core/pom.xml
new file mode 100644
index 000000000..04a8ee121
--- /dev/null
+++ b/core/pom.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.custos</groupId>
+ <artifactId>custos</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>custos-auth-core</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-to-slf4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>io.grpc</groupId>
+ <artifactId>grpc-stub</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.google.api.grpc</groupId>
+ <artifactId>proto-google-common-protos</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>io.grpc</groupId>
+ <artifactId>grpc-protobuf</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>com.google.api.grpc</groupId>
+ <artifactId>proto-google-common-protos</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <extensions>
+ <extension>
+ <groupId>kr.motd.maven</groupId>
+ <artifactId>os-maven-plugin</artifactId>
+ <version>${os.maven.plugin}</version>
+ </extension>
+ </extensions>
+
+ <plugins>
+ <plugin>
+ <groupId>org.xolstice.maven.plugins</groupId>
+ <artifactId>protobuf-maven-plugin</artifactId>
+ <version>${protobuf-plugin.version}</version>
+ <configuration>
+
<protocArtifact>com.google.protobuf:protoc:${com.google.protobuf.util}:exe:${os.detected.classifier}</protocArtifact>
+ <pluginId>grpc-java</pluginId>
+
<pluginArtifact>io.grpc:protoc-gen-grpc-java:${io.grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ <goal>compile-custom</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
diff --git a/core/src/main/proto/AgentManagement.proto
b/core/src/main/proto/AgentManagement.proto
new file mode 100644
index 000000000..8449de1cc
--- /dev/null
+++ b/core/src/main/proto/AgentManagement.proto
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.agent.management.api;
+
+
+message AgentSearchRequest {
+ int64 tenantId = 2;
+ string accessToken = 3;
+ string clientId = 4;
+ string clientSec = 5;
+ string performedBy = 6;
+ string id = 7;
+}
+
+message AgentRegistrationResponse {
+ string id = 1;
+ string secret = 2;
+}
+
+message SynchronizeAgentDBRequest {
+ int64 tenantId = 2;
+ string clientId = 4;
+}
diff --git a/core/src/main/proto/AgentProfile.proto
b/core/src/main/proto/AgentProfile.proto
new file mode 100644
index 000000000..db46e4f1c
--- /dev/null
+++ b/core/src/main/proto/AgentProfile.proto
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.agent.profile.api;
+
+
+message Agent {
+ string id = 1;
+ AgentStatus status = 2;
+ int64 created_at = 3;
+ int64 last_modified_at = 4;
+ repeated string roles = 5;
+ repeated AgentAttribute attributes = 6;
+ repeated string agent_client_roles = 8;
+}
+
+enum AgentStatus {
+ ENABLED = 0;
+ DISABLED = 1;
+}
+
+message AgentAttribute {
+ string id = 1;
+ string key = 2;
+ repeated string value = 3;
+}
+
+message AgentRequest {
+ int64 tenant_id = 1;
+ Agent agent = 2;
+}
+
+message OperationStatus {
+ bool status = 1;
+}
diff --git a/core/src/main/proto/ClusterManagement.proto
b/core/src/main/proto/ClusterManagement.proto
new file mode 100644
index 000000000..1a7fb7d81
--- /dev/null
+++ b/core/src/main/proto/ClusterManagement.proto
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.cluster.management.api;
+
+
+message GetServerCertificateRequest {
+ string secretName = 1;
+ string namespace = 2;
+}
+
+message GetServerCertificateResponse {
+ string certificate = 1;
+}
diff --git a/core/src/main/proto/CredentialStore.proto
b/core/src/main/proto/CredentialStore.proto
new file mode 100644
index 000000000..7c226a732
--- /dev/null
+++ b/core/src/main/proto/CredentialStore.proto
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.credential.store.api;
+
+
+enum Type {
+ CUSTOS = 0;
+ IAM = 1;
+ CILOGON = 2;
+ INDIVIDUAL = 3;
+ AGENT_CLIENT = 4;
+ AGENT = 5;
+}
+
+message CredentialMetadata {
+ int64 owner_id = 1;
+ string id = 2;
+ string secret = 3;
+ int64 client_secret_expired_at = 4;
+ int64 client_id_issued_at = 5;
+ Type type = 6;
+ bool super_tenant = 7;
+ bool super_admin = 8;
+ string internal_sec = 11;
+}
+
+message GetCredentialRequest {
+ int64 ownerId = 1;
+ string id = 2;
+ Type type = 3;
+}
+
+message GetAllCredentialsRequest {
+ int64 ownerId = 1;
+}
+
+message GetAllCredentialsResponse {
+ repeated CredentialMetadata secret_list = 1;
+ string requester_user_email = 2;
+ string requester_username = 3;
+}
+
+message OperationStatus {
+ bool state = 1;
+}
+
+message DeleteCredentialRequest {
+ int64 owner_id = 1;
+ Type type = 2;
+}
+
+message GetOperationsMetadataRequest {
+ int64 trace_id = 1;
+}
+
+message OperationMetadata {
+ string event = 1;
+ string status = 2;
+ string time_stamp = 3;
+ string performed_by = 4;
+}
+message GetOperationsMetadataResponse {
+ repeated OperationMetadata metadata = 1;
+}
+
+message GetNewCustosCredentialRequest {
+ int64 owner_id = 1;
+ string performed_by = 2;
+ bool is_super_tenant=3;
+}
+
+message GetNewCustosCredentialResponse {
+ string client_id = 1;
+ string client_secret = 2;
+}
+
+message TokenRequest {
+ string token = 1;
+ string parent_client_id = 2;
+}
+
+message GetOwnerIdResponse {
+ int64 owner_id = 2;
+}
+
+message Credentials {
+ string iam_client_id = 1;
+ string iam_client_secret = 2;
+ string ci_logon_client_id = 3;
+ string ci_logon_client_secret = 4;
+ string custos_client_id = 5;
+ string custos_client_secret = 6;
+ double custos_client_id_issued_at = 7;
+ double custos_client_secret_expired_at = 8;
+}
diff --git a/core/src/main/proto/Email.proto b/core/src/main/proto/Email.proto
new file mode 100644
index 000000000..d1b514ddb
--- /dev/null
+++ b/core/src/main/proto/Email.proto
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.messaging.email.api;
+
+
+enum CustosEvent {
+ UNKNOWN = 0;
+ NEW_USER_SIGNUP = 1;
+ GROUP_MEMBERSHIP_CHANGE = 2;
+}
+
+message Email {
+ string sender_email = 3;
+ repeated string receiver_email = 4;
+ CustosEvent custos_event = 5;
+ map<string, string> parameters = 6;
+}
+
+message EmailTemplate {
+ int64 template_id = 1;
+ CustosEvent custos_event = 2;
+ string subject = 3;
+ repeated string body_params = 4;
+ repeated string receiving_users = 5;
+ repeated string receiving_groups = 6;
+ string body = 7;
+}
+
+message EmailEnablingRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+ EmailTemplate email_template = 3;
+}
+
+message EmailDisablingRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+ EmailTemplate email_template = 3;
+}
+
+message Status {
+ bool status = 1;
+}
+
+
+message EmailMessageSendingRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+ Email message = 3;
+}
+
+message FetchEmailTemplatesRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+}
+
+message FetchEmailTemplatesResponse {
+ repeated EmailTemplate templates = 1;
+}
+
+message FetchEmailFriendlyEvents {
+ int64 tenant_id = 1;
+ string client_id = 2;
+}
+
+
+message CustosEmailEvent {
+ CustosEvent event = 1;
+ repeated string body_params = 2;
+}
+
+message FetchEmailFriendlyEventsResponse {
+ repeated CustosEmailEvent events = 1;
+}
diff --git a/core/src/main/proto/FederatedAuthentication.proto
b/core/src/main/proto/FederatedAuthentication.proto
new file mode 100644
index 000000000..fe334b959
--- /dev/null
+++ b/core/src/main/proto/FederatedAuthentication.proto
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.federated.authentication.api;
+
+
+enum InstitutionCacheType {
+ WHITELIST = 0;
+ BACKLIST = 1;
+}
+
+
+message ClientMetadata {
+ int64 tenant_id = 1;
+ string tenant_name = 2;
+ repeated string scope = 3;
+ string tenant_uRI = 4;
+ repeated string contacts = 5;
+ string comment = 6;
+ repeated string redirect_uRIs = 7;
+ string client_id = 8;
+ string performed_by = 9;
+}
+
+
+message RegisterClientResponse {
+ string client_id = 1;
+ string client_secret = 2;
+ int64 client_id_issued_at = 3;
+ int64 client_secret_expires_at = 4;
+ string client_registration_uri = 5;
+}
+
+
+message GetClientRequest {
+ int64 tenant_id= 1;
+ string client_id = 2;
+}
+
+message GetClientResponse {
+ string client_id = 1;
+ string client_name = 2;
+ repeated string redirect_uRIs = 3;
+ repeated string grant_types = 4;
+ repeated string scope = 5;
+ int64 client_id_issued_at = 6;
+ string comment = 7;
+ string client_secret = 8;
+ int64 client_secret_expires_at = 9;
+ string client_registration_uri = 10;
+}
+
+message DeleteClientRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+ string performed_by = 3;
+}
+
+message Empty {
+
+}
+
+message GetOperationsMetadataRequest {
+ int64 trace_id = 1;
+}
+
+message OperationMetadata {
+ string event = 1;
+ string status = 2;
+ string time_stamp = 3;
+ string performed_by = 4;
+}
+message GetOperationsMetadataResponse {
+ repeated OperationMetadata metadata = 1;
+}
+
+
+message CacheManipulationRequest {
+ int64 tenant_id = 1;
+ repeated string institution_ids = 2;
+ InstitutionCacheType type = 3;
+ string performedBy = 4;
+}
+
+message Status {
+ bool status = 1;
+}
+
+message InstitutionOperationResponse {
+
+}
+
+message Institution {
+ string entity_id = 1;
+ string organization_name = 2;
+ string display_name = 3;
+ bool rand_s = 4;
+}
+
+message GetInstitutionsIdsAsResponse {
+ repeated string entity_ids = 1;
+}
+
+
+message GetInstitutionsResponse {
+ repeated Institution institutions = 2;
+}
diff --git a/core/src/main/proto/IamAdmin.proto
b/core/src/main/proto/IamAdmin.proto
new file mode 100644
index 000000000..d7abf045a
--- /dev/null
+++ b/core/src/main/proto/IamAdmin.proto
@@ -0,0 +1,435 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.iam.api;
+
+
+enum FederatedIDPs {
+ CILOGON = 0;
+ FACEBOOK = 1;
+ GOOGLE = 2;
+ LINKEDIN = 3;
+ TWITTER = 4;
+ CUSTOM_OIDC = 5;
+}
+
+
+message SetUpTenantRequest {
+ int64 tenant_id = 1;
+ string tenant_name = 2;
+ string admin_username = 3;
+ string admin_firstname = 4;
+ string admin_lastname = 5;
+ string admin_email = 6;
+ string admin_password = 7;
+ string tenant_uRL = 8;
+ string requester_email = 9;
+ repeated string redirect_uRIs = 10;
+ string custos_client_id = 11;
+
+}
+
+message ConfigureFederateIDPRequest {
+ int64 tenant_id = 1;
+ FederatedIDPs type = 2;
+ string client_iD = 3;
+ string client_sec = 4;
+ map<string, string> config_map = 5;
+ string requester_email = 6;
+ string idp_id = 7;
+ string scope = 8;
+}
+
+
+message FederateIDPResponse {
+ bool status = 1;
+}
+
+message SetUpTenantResponse {
+ string client_id = 1;
+ string client_secret = 2;
+}
+
+message IsUsernameAvailableRequest {
+ int64 tenant_id = 1;
+ string access_token = 2;
+ string user_name = 3;
+
+}
+
+message CheckingResponse {
+ bool is_exist = 1;
+}
+
+
+message UserRepresentation {
+ string id = 1;
+ string username = 3;
+ string first_name = 4;
+ string last_name = 5;
+ string password = 6;
+ string email = 7;
+ bool temporary_password = 8;
+ repeated string realm_roles = 9;
+ repeated string client_roles = 10;
+ repeated UserAttribute attributes = 11;
+ string state = 12;
+ double creation_time = 13;
+ double last_login_at = 14;
+}
+
+
+message GroupRepresentation {
+ string name = 1;
+ string id = 2;
+ repeated string realm_roles = 3;
+ repeated string client_roles = 4;
+ repeated UserAttribute attributes = 5;
+ repeated UserRepresentation users = 6;
+ repeated GroupRepresentation sub_groups = 7;
+ string description = 8;
+ string ownerId = 9;
+}
+
+
+message RegisterUserRequest {
+ int64 tenant_id = 1;
+ string access_token = 2;
+ string client_id = 3;
+ string client_sec = 4;
+ UserRepresentation user = 5;
+ string performed_by = 6;
+}
+
+
+message RegisterUsersRequest {
+ repeated UserRepresentation users = 1;
+ int64 tenant_id = 2;
+ string access_token = 3;
+ string client_id = 4;
+ string performed_by = 5;
+}
+
+message RegisterUserResponse {
+ bool is_registered = 1;
+}
+
+message RegisterUsersResponse {
+ bool all_useres_registered = 1;
+ repeated UserRepresentation failed_users = 2;
+}
+
+
+message UserSearchMetadata {
+ string username = 1;
+ string first_name = 2;
+ string last_name = 3;
+ string email = 4;
+ string id = 5;
+}
+
+message FindUsersRequest {
+ UserSearchMetadata user = 3;
+ int32 offset = 4;
+ int32 limit = 5;
+ int64 tenant_id = 1;
+ string access_token = 2;
+ string client_id = 6;
+ string client_sec = 7;
+
+}
+
+message UserSearchRequest {
+ UserSearchMetadata user = 1;
+ int64 tenant_id = 2;
+ string access_token = 3;
+ string client_id = 4;
+ string client_sec = 5;
+ string performed_by = 6;
+}
+
+message FindUsersResponse {
+ repeated UserRepresentation users = 1;
+}
+
+message ResetUserPassword {
+ string username = 1;
+ string password = 2;
+ int64 tenant_id = 3;
+ string access_token = 4;
+ string client_id = 5;
+ string client_sec = 6;
+ string old_password = 7;
+}
+
+
+message DeleteUserRolesRequest {
+ int64 tenant_id = 1;
+ string username = 2;
+ repeated string client_roles = 3;
+ repeated string roles = 4;
+ string access_token = 5;
+ string client_id = 6;
+ string performed_by = 7;
+ string id = 8;
+}
+
+message AddUserRolesRequest {
+ int64 tenant_id = 1;
+ repeated string usernames = 2;
+ repeated string roles = 3;
+ string access_token = 4;
+ string client_id = 5;
+ bool client_level = 6;
+ string performed_by = 7;
+ repeated string agents = 8;
+}
+
+message UpdateUserProfileRequest {
+ string access_token = 1;
+ int64 tenant_id = 2;
+ UserRepresentation user = 3;
+
+}
+
+message AddUserResponse {
+ string code = 1;
+}
+
+message GetOperationsMetadataRequest {
+ int64 trace_id = 1;
+}
+
+message OperationMetadata {
+ string event = 1;
+ string status = 2;
+ string time_stamp = 3;
+ string performed_by = 4;
+}
+message GetOperationsMetadataResponse {
+ repeated OperationMetadata metadata = 1;
+}
+
+message DeleteTenantRequest {
+ int64 tenant_id = 1;
+}
+
+message AddRolesRequest {
+ repeated RoleRepresentation roles = 1;
+ bool client_level = 2;
+ int64 tenant_id = 3;
+ string client_id = 4;
+}
+
+message GetRolesRequest {
+ bool client_level = 1;
+ int64 tenant_id = 2;
+ string client_id = 3;
+}
+
+message RoleRepresentation {
+ string name = 1;
+ string description = 2;
+ bool composite = 3;
+ string id = 4;
+}
+
+message DeleteRoleRequest {
+ bool client_level = 1;
+ int64 tenant_id = 2;
+ string client_id = 3;
+ RoleRepresentation role = 4;
+}
+
+message AllRoles {
+ repeated RoleRepresentation roles = 1;
+ string scope = 2;
+}
+
+message AddProtocolMapperRequest {
+ string name = 1;
+ string attribute_name = 2;
+ string claim_name = 3;
+ ClaimJSONTypes claim_type = 4;
+ int64 tenant_id = 6;
+ string client_id = 7;
+ MapperTypes mapper_type = 8;
+ bool add_to_id_token = 9;
+ bool add_to_access_token = 10;
+ bool add_to_user_info = 11;
+ bool multi_valued = 12;
+ bool aggregate_attribute_values = 13;
+}
+
+enum MapperTypes {
+ USER_ATTRIBUTE = 0;
+ USER_REALM_ROLE = 1;
+ USER_CLIENT_ROLE = 2;
+}
+
+enum ClaimJSONTypes {
+ STRING = 0;
+ LONG = 1;
+ INTEGER = 2;
+ BOOLEAN = 3;
+ JSON = 4;
+}
+
+enum ResourceTypes {
+ USER =0;
+ AGENT = 1;
+}
+
+message OperationStatus {
+ bool status = 1;
+}
+
+message AddUserAttributesRequest {
+ repeated UserAttribute attributes = 1;
+ repeated string users = 2;
+ int64 tenant_id = 3;
+ string client_id = 4;
+ string access_token = 5;
+ string performedBy = 6;
+ repeated string agents = 7;
+}
+
+message DeleteUserAttributeRequest {
+ repeated UserAttribute attributes = 1;
+ repeated string users = 2;
+ int64 tenant_id = 3;
+ string client_id = 4;
+ string access_token = 5;
+ string performedBy = 6;
+ repeated string agents = 7;
+}
+
+message UserAttribute {
+ string key = 1;
+ repeated string values = 2;
+}
+
+message EventPersistenceRequest {
+ int64 tenantId = 1;
+ bool admin_event = 2;
+ string event = 3;
+ bool enable = 4;
+ int64 persistence_time = 5;
+ string performedBy = 6;
+}
+
+
+message GroupsRequest {
+ int64 tenantId = 1;
+ string accessToken = 2;
+ string performedBy = 3;
+ string clientId = 4;
+ string clientSec = 5;
+ repeated GroupRepresentation groups = 6;
+}
+
+message GroupRequest {
+ int64 tenantId = 1;
+ string accessToken = 2;
+ string performedBy = 3;
+ string clientId = 4;
+ string clientSec = 5;
+ string id = 6;
+ GroupRepresentation group = 7;
+}
+
+message GroupsResponse {
+ repeated GroupRepresentation groups = 1;
+}
+
+message UserGroupMappingRequest {
+ int64 tenantId = 1;
+ string accessToken = 2;
+ string performedBy = 3;
+ string clientId = 4;
+ string clientSec = 5;
+ string username = 6;
+ string group_id = 7;
+ string membership_type = 8;
+}
+
+message AgentClientMetadata {
+ int64 tenantId = 1;
+ string tenantURL = 2;
+ repeated string redirectURIs = 3;
+ string clientName = 4;
+ int64 access_token_life_time = 5;
+ string performedBy = 6;
+ string access_token = 7;
+}
+
+message Agent {
+ string id = 1;
+ repeated string realm_roles = 2;
+ repeated UserAttribute attributes = 3;
+ bool isEnabled = 4;
+ double creation_time = 5;
+ double last_modified_at = 6;
+ repeated string client_roles = 7;
+}
+
+
+message GetAllResources {
+ int64 tenantId = 1;
+ string clientId = 2;
+ ResourceTypes resource_type = 3;
+}
+
+message GetAllResourcesResponse {
+ repeated Agent agents = 1;
+ repeated UserRepresentation users = 2;
+}
+
+message DeleteExternalIDPsRequest {
+ int64 tenant_id= 1;
+ string client_id = 2;
+ repeated string user_id=3;
+}
+
+message GetExternalIDPsRequest {
+ int64 tenant_id= 1;
+ string client_id = 2;
+ string user_id=3;
+}
+
+
+message ExternalIDPLink {
+ string provider_alias = 1;
+ string provider_user_id =2;
+ string provider_username = 3;
+}
+
+message GetExternalIDPsResponse {
+ repeated ExternalIDPLink idp_links = 1;
+}
+
+message AddExternalIDPLinksRequest {
+ repeated ExternalIDPLink idp_links = 1;
+ int64 tenant_id= 2;
+ string client_id = 3;
+}
diff --git a/core/src/main/proto/Identity.proto
b/core/src/main/proto/Identity.proto
new file mode 100644
index 000000000..ac7a977fa
--- /dev/null
+++ b/core/src/main/proto/Identity.proto
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.identity.api;
+
+
+message AuthToken {
+ string access_token = 1;
+ repeated Claim claims = 2;
+}
+
+message Claim {
+ string key = 1;
+ string value = 2;
+}
+
+message User {
+ string sub = 1;
+ string full_name = 2;
+ string first_name = 3;
+ string last_name = 4;
+ string email_address = 5;
+ string username = 6;
+ string client_id = 7;
+}
+
+
+message GetTokenRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+ string client_secret = 3;
+ string redirect_uri = 4;
+ string code = 6;
+ string username = 7;
+ string password = 8;
+ string refresh_token = 9;
+ string grant_type = 10;
+}
+
+message TokenResponse {
+ string access_token = 1;
+ double expires_in = 2;
+ double refresh_expires_in = 3;
+ string refresh_token = 4;
+ string token_type = 5;
+ string id_token = 6;
+ double not_before_policy = 7;
+ string session_state = 8;
+ string scope = 9;
+}
+
+
+message AuthenticationRequest {
+ string client_id = 1;
+ string client_secret = 2;
+ int64 tenant_id = 3;
+ string username = 4;
+ string password = 5;
+}
+
+message IsAuthenticatedResponse {
+ bool authenticated = 1;
+}
+
+message GetUserManagementSATokenRequest {
+ string client_id = 1;
+ string client_secret = 2;
+ int64 tenant_id = 3;
+}
+
+message GetAuthorizationEndpointRequest {
+ int64 tenant_id = 1;
+}
+
+message AuthorizationResponse {
+ string authorization_endpoint = 2;
+}
+
+message GetOIDCConfiguration {
+ string client_id = 1;
+ string client_secret = 2;
+ int64 tenant_id = 3;
+}
+
+message GetJWKSRequest {
+ string client_id = 1;
+ string client_secret = 2;
+ int64 tenant_id = 3;
+}
+
+message EndSessionRequest {
+ string client_id = 1;
+ string client_secret = 2;
+ int64 tenant_id = 3;
+ string refresh_token = 4;
+}
+
+message OperationStatus {
+ bool status = 1;
+}
diff --git a/core/src/main/proto/IdentityManagement.proto
b/core/src/main/proto/IdentityManagement.proto
new file mode 100644
index 000000000..ebb7d2d4f
--- /dev/null
+++ b/core/src/main/proto/IdentityManagement.proto
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.identity.management.api;
+
+import "Identity.proto";
+import "CredentialStore.proto";
+
+
+message AuthorizationRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+ string client_secret = 3;
+ string redirect_uri = 4;
+ string response_type = 5;
+ string scope = 6;
+ string state = 7;
+}
+
+message AuthorizationResponse {
+ string loginURI = 1;
+}
+
+message GetCredentialsRequest {
+ string client_id = 1;
+ org.apache.custos.core.credential.store.api.Credentials credentials = 2;
+}
+
+message GetAgentTokenRequest {
+ int64 tenant_id = 1;
+ string agent_client_id = 2;
+ string agent_client_secret = 3;
+ string agentId = 4;
+ string agentPassword = 5;
+ string client_id = 6;
+ string grant_type = 7;
+ string refresh_token = 8;
+}
+
+message EndSessionRequest {
+ string client_id = 1;
+ org.apache.custos.core.identity.api.EndSessionRequest body = 2;
+}
diff --git a/core/src/main/proto/Logging.proto
b/core/src/main/proto/Logging.proto
new file mode 100644
index 000000000..97d092f88
--- /dev/null
+++ b/core/src/main/proto/Logging.proto
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.logging.api;
+
+
+message LogEvent {
+ int64 created_time = 1;
+ string service_name = 2;
+ string event_type = 3;
+ string username = 4;
+ string client_id = 5;
+ int64 tenant_id = 6;
+ string external_ip = 7;
+}
+
+message Status {
+ bool status = 1;
+}
+
+message LogEventRequest {
+ int64 tenant_id = 1;
+ int64 start_time = 2;
+ int64 end_time = 3;
+ string client_id = 4;
+ string username = 5;
+ string remote_ip = 6;
+ string service_name = 7;
+ string event_type = 8;
+ int32 offset = 9;
+ int32 limit = 10;
+}
+
+message LogEvents {
+ repeated LogEvent events = 1;
+}
+
+message LoggingConfigurationRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+}
diff --git a/core/src/main/proto/Messaging.proto
b/core/src/main/proto/Messaging.proto
new file mode 100644
index 000000000..826d4443d
--- /dev/null
+++ b/core/src/main/proto/Messaging.proto
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.messaging.api;
+
+
+message Message {
+ int64 created_time = 1;
+ string service_name = 2;
+ string event_type = 3;
+ string username = 4;
+ string client_id = 5;
+ int64 tenant_id = 6;
+ map<string, string> properties = 7;
+ string message_id = 8;
+}
+
+message MessageEnablingRequest {
+ int64 tenant_id = 1;
+ string client_id = 2;
+}
+
+message Status {
+ bool status = 1;
+}
+
+message MessageEnablingResponse {
+ string topic = 1;
+}
diff --git a/core/src/main/proto/ResourceSecret.proto
b/core/src/main/proto/ResourceSecret.proto
new file mode 100644
index 000000000..4ea5a8ff7
--- /dev/null
+++ b/core/src/main/proto/ResourceSecret.proto
@@ -0,0 +1,173 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.resource.secret.api;
+
+
+enum ResourceOwnerType {
+ TENANT_USER = 0;
+ CUSTOS = 1;
+ TENANT = 2;
+}
+
+enum ResourceType {
+ SERVER_CERTIFICATE = 0;
+ JWT_SIGNING_CERTIFICATE = 1;
+ VAULT_CREDENTIAL = 2;
+ VM = 3;
+ ACCOUNT = 4;
+ OTHER = 5;
+ SCP =6;
+ S3 =7;
+ BOX =8;
+ AZURE =9;
+ GCS = 10;
+ DROPBOX=11;
+ FTP=12;
+}
+
+enum ResourceSource {
+ KUBE = 0;
+ LOCAL = 1;
+ EXTERNAL = 2;
+ LETSENCRYPT = 3;
+}
+
+enum ResourceSecretType {
+ SSH = 0;
+ PASSWORD = 1;
+ X509_CERTIFICATE = 2;
+ RAW_DATA= 3;
+ KV=4;
+ CREDENTIAL_MAP=5;
+}
+
+message SecretMetadata {
+ ResourceOwnerType owner_type = 1;
+ ResourceType resource_type = 2;
+ ResourceSource source = 3;
+ string name = 4;
+ string value = 5;
+ ResourceSecretType type = 6;
+ int64 tenantId = 7;
+ string owner_id = 8;
+ int64 persisted_time = 9;
+ string token = 10;
+ string description = 11;
+ string client_id = 12;
+
+}
+
+
+
+
+
+message CertificateCredential {
+ SecretMetadata metadata = 1;
+ string x509_cert = 3;
+ string not_after = 4;
+ string private_key = 5;
+ int64 life_time = 6;
+ string not_before = 7;
+ bool use_shamirs_secret_sharing_with_encryption = 8;
+ int32 num_of_shares = 9;
+ int32 threshold = 10;
+ repeated bytes private_key_shares = 11;
+}
+
+message PasswordCredential {
+ SecretMetadata metadata = 1;
+ string password = 3;
+ bool use_shamirs_secret_sharing_with_encryption = 4;
+ int32 num_of_shares = 5;
+ int32 threshold = 6;
+ repeated bytes secret_shares = 7;
+ string userId = 8;
+}
+
+message SSHCredential {
+ SecretMetadata metadata = 1;
+ string passphrase = 3;
+ string public_key = 4;
+ string private_key = 5;
+ bool use_shamirs_secret_sharing_with_encryption = 6;
+ int32 num_of_shares = 7;
+ int32 threshold = 8;
+ repeated bytes private_key_shares = 9;
+}
+
+
+message GetResourceCredentialByTokenRequest {
+ int64 tenantId = 1;
+ string token = 2;
+ string performed_by = 3;
+ string client_id = 4;
+ bool use_shamirs_secret_sharing_with_encryption = 5;
+ int32 num_of_shares = 6;
+ int32 threshold = 7;
+
+}
+
+message GetResourceCredentialSummariesRequest {
+ ResourceType type = 1;
+ repeated string accessible_tokens = 2;
+ int64 tenantId = 3;
+ string owner_id = 4;
+ bool all_types = 5;
+ string client_id =6;
+}
+
+message ResourceCredentialSummaries {
+ repeated SecretMetadata metadata = 1;
+}
+
+message AddResourceCredentialResponse {
+ string token = 1;
+}
+
+message ResourceCredentialOperationStatus {
+ bool status = 1;
+}
+
+
+message KVCredential {
+ string key = 1;
+ string value = 2;
+ SecretMetadata metadata = 3;
+ string token = 4;
+}
+
+
+
+
+message GetSecretRequest {
+ SecretMetadata metadata = 1;
+ string client_id =2;
+ int64 tenant_id = 3;
+ string client_sec = 4;
+}
+
+message CredentialMap {
+ map<string,string> credential_map = 1;
+ SecretMetadata metadata = 2;
+}
\ No newline at end of file
diff --git a/core/src/main/proto/Sharing.proto
b/core/src/main/proto/Sharing.proto
new file mode 100644
index 000000000..ced56ea5e
--- /dev/null
+++ b/core/src/main/proto/Sharing.proto
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.sharing.api;
+
+
+enum SearchCondition {
+ EQUAL = 0;
+ LIKE = 1;
+ GTE = 2;
+ LTE = 3;
+ NOT = 4;
+}
+
+enum EntitySearchField {
+ NAME = 0;
+ DESCRIPTION = 1;
+ ID = 2;
+ FULL_TEXT = 3;
+ OWNER_ID = 4;
+ CREATED_AT = 5;
+ LAST_MODIFIED_AT = 6;
+ ENTITY_TYPE_ID = 7;
+ PARENT_ID = 8;
+ SHARED_COUNT = 9;
+ PERMISSION_TYPE_ID = 10;
+ SHARED_BY=11;
+ SHARED_WITH=12;
+}
+
+
+message EntityType {
+ string id = 1;
+ string name = 2;
+ string description = 3;
+ int64 created_at = 4;
+ int64 updated_at = 5;
+}
+
+message PermissionType {
+ string id = 1;
+ string name = 2;
+ string description = 3;
+ int64 created_at = 4;
+ int64 updated_at = 5;
+}
+
+message Entity {
+ string id = 1;
+ string type = 2;
+ string owner_id = 3;
+ string parent_id = 4;
+ string name = 5;
+ string description = 6;
+ bytes binary_data = 7;
+ string full_text = 8;
+ int64 original_creation_time = 9;
+ int64 created_at = 10;
+ int64 updated_at = 11;
+ int32 shared_count = 12;
+ SharingMetadata sharing_metadata = 13;
+}
+
+message SearchCriteria {
+ EntitySearchField search_field = 1;
+ string value = 2;
+ SearchCondition condition = 3;
+}
+
+message SharingMetadata {
+ Entity entity = 1;
+ string owner_id = 2;
+ string owner_type = 3;
+ repeated PermissionType permissions = 4;
+ string shared_by = 5;
+}
+
+message EntityRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ Entity entity = 3;
+ string client_sec = 4;
+}
+
+message EntityTypeRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ EntityType entity_type = 3;
+ string client_sec = 4;
+}
+
+message PermissionTypeRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ PermissionType permission_type = 3;
+ string client_sec = 4;
+}
+
+message SearchRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ string owner_id = 3;
+ int32 offset = 4;
+ int32 limit = 5;
+ repeated SearchCriteria search_criteria = 6;
+ string client_sec = 7;
+ repeated string associating_ids = 8;
+ bool search_perm_bottom_up=9;
+}
+
+message PermissionRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ Entity entity = 3;
+ PermissionType permission_type = 4;
+ string client_sec = 5;
+}
+
+message SharingRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ Entity entity = 3;
+ PermissionType permission_type = 4;
+ repeated string owner_id = 5;
+ bool cascade = 6;
+ string client_sec = 7;
+ string shared_by = 8;
+}
+
+message SharesFilteringRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ repeated string owner_id = 5;
+ bool cascade = 6;
+ string client_sec = 7;
+}
+
+message Status {
+ bool status = 1;
+}
+
+message EntityTypes {
+ repeated EntityType types = 1;
+}
+
+message PermissionTypes {
+ repeated PermissionType types = 1;
+}
+
+message Entities {
+ repeated Entity entity_array = 1;
+}
+
+message SharedOwners {
+ repeated string owner_ids = 1;
+}
+
+message GetAllDirectSharingsResponse {
+ repeated SharingMetadata shared_data = 1;
+}
+
+message GetAllSharingsResponse {
+ repeated SharingMetadata shared_data = 1;
+}
diff --git a/core/src/main/proto/TenantManagement.proto
b/core/src/main/proto/TenantManagement.proto
new file mode 100644
index 000000000..df1e96e17
--- /dev/null
+++ b/core/src/main/proto/TenantManagement.proto
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.tenant.management.api;
+
+import "TenantProfile.proto";
+
+
+message CreateTenantResponse {
+ string client_id = 1;
+ string client_secret = 2;
+ bool is_activated = 3;
+ double client_id_issued_at = 4;
+ double client_secret_expires_at = 5;
+ string registration_client_uri = 6;
+ string token_endpoint_auth_method = 17;
+ string msg = 7;
+}
+
+message GetTenantResponse {
+ string client_id = 1;
+ string client_name = 2;
+ string requester_email = 3;
+ string admin_first_name = 4;
+ string admin_last_name = 5;
+ string admin_email = 6;
+ repeated string contacts = 7;
+ repeated string redirect_uris = 8;
+ repeated string grant_types = 9;
+ double client_id_issued_at = 10;
+ string client_uri = 11;
+ string scope = 12;
+ string domain = 13;
+ string comment = 14;
+ string logo_uri = 15;
+ string application_type = 16;
+ string jwks_uri = 17;
+ string example_extension_parameter = 18;
+ string tos_uri = 19;
+ string policy_uri = 20;
+ map<string, string> jwks = 21;
+ string software_id = 22;
+ string software_version = 23;
+ string admin_username = 24;
+}
+
+
+message GetTenantRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ org.apache.custos.core.tenant.profile.api.Tenant tenant = 4;
+ Credentials credentials = 5;
+}
+
+
+message Credentials {
+ string iam_client_id = 1;
+ string iam_client_secret = 2;
+ string ci_logon_client_id = 3;
+ string ci_logon_client_secret = 4;
+ string custos_client_id = 5;
+ string custos_client_secret = 6;
+ double custos_client_id_issued_at = 7;
+ double custos_client_secret_expired_at = 8;
+}
+
+message UpdateTenantRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ Credentials credentials = 3;
+ org.apache.custos.core.tenant.profile.api.Tenant body = 4;
+}
+
+
+message DeleteTenantRequest {
+ string client_id = 1;
+ int64 tenant_id = 2;
+ Credentials credentials = 3;
+ org.apache.custos.core.tenant.profile.api.Tenant body = 4;
+}
+
+message GetCredentialsRequest {
+ int64 tenant_id = 1;
+}
+
+message GetCredentialsResponse {
+ string iam_client_id = 1;
+ string iam_client_secret = 2;
+ string ci_logon_client_id = 3;
+ string ci_logon_client_secret = 4;
+}
+
+message TenantValidationRequest {
+ string client_id = 1;
+ string client_sec = 2;
+}
diff --git a/core/src/main/proto/TenantProfile.proto
b/core/src/main/proto/TenantProfile.proto
new file mode 100644
index 000000000..6104fea96
--- /dev/null
+++ b/core/src/main/proto/TenantProfile.proto
@@ -0,0 +1,162 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.tenant.profile.api;
+
+
+message Tenant {
+ int64 tenant_id = 1;
+ string client_name = 2;
+ string requester_email = 4;
+ string admin_first_name = 5;
+ string admin_last_name = 6;
+ string admin_email = 7;
+ string admin_username = 8;
+ string admin_password = 9;
+ TenantStatus tenant_status = 10;
+ repeated string contacts = 11;
+ repeated string redirect_uris = 12;
+ string client_uri = 13;
+ string scope = 14;
+ string domain = 15;
+ string comment = 16;
+ string logo_uri = 17;
+ int64 parent_tenant_id = 18;
+ string application_type = 19;
+ string token_endpoint_auth_method = 20;
+ string jwks_uri = 21;
+ string example_extension_parameter = 22;
+ string tos_uri = 23;
+ string policy_uri = 24;
+ map<string, string> jwks = 25;
+ string software_id = 26;
+ string software_version = 27;
+ int64 refesh_token_lifetime = 28;
+ string client_id = 29;
+ string parent_client_id = 30;
+}
+
+enum TenantStatus {
+ UNKNOWN = 0;
+ REQUESTED = 1;
+ APPROVED = 2;
+ DENIED = 3;
+ CANCELLED = 4;
+ ACTIVE = 5;
+ DEACTIVATED = 6;
+}
+
+enum TenantType {
+ UNSPECIFIED = 0;
+ ADMIN = 1;
+}
+
+message TenantAttributeUpdateMetadata {
+ string updated_attribute = 1;
+ string updated_attributeValue = 2;
+ string updated_by = 3;
+ string updated_at = 4;
+}
+
+message TenantStatusUpdateMetadata {
+ TenantStatus updated_status = 1;
+ string updated_by = 2;
+ string updated_at = 3;
+}
+
+
+message AddTenantResponse {
+ int64 tenant_id = 1;
+}
+
+
+message UpdateTenantResponse {
+ Tenant tenant = 1;
+
+}
+
+message GetTenantRequest {
+ int64 tenant_id = 1;
+}
+
+message GetTenantResponse {
+ Tenant tenant = 1;
+}
+
+
+message GetAllTenantsResponse {
+ repeated Tenant tenant = 1;
+ int32 total_num_of_tenants =2;
+}
+
+message IsTenantExistRequest {
+ int64 tenant_id = 1;
+}
+
+message IsTenantExistResponse {
+ bool is_exist = 1;
+}
+
+message GetAllTenantsForUserRequest {
+ string requester_email = 1;
+}
+
+message GetAllTenantsForUserResponse {
+ repeated Tenant tenant = 1;
+}
+
+message UpdateStatusRequest {
+ string client_id = 1;
+ TenantStatus status = 2;
+ string updated_by = 3;
+ int64 tenant_id = 4;
+ bool super_tenant = 5;
+ string access_token = 6;
+}
+
+message UpdateStatusResponse {
+ int64 tenant_id = 1;
+ TenantStatus status = 2;
+}
+
+message GetAuditTrailRequest {
+ int64 tenant_id = 1;
+}
+
+message GetStatusUpdateAuditTrailResponse {
+ repeated TenantStatusUpdateMetadata metadata = 1;
+}
+
+message GetAttributeUpdateAuditTrailResponse {
+ repeated TenantAttributeUpdateMetadata metadata = 2;
+}
+
+message GetTenantsRequest {
+ int32 offset = 1;
+ int32 limit = 2;
+ int64 parent_id = 3;
+ TenantStatus status = 4;
+ string requester_email = 5;
+ string parent_client_id = 6;
+ TenantType type= 7;
+}
diff --git a/core/src/main/proto/UserManagement.proto
b/core/src/main/proto/UserManagement.proto
new file mode 100644
index 000000000..cb02fd477
--- /dev/null
+++ b/core/src/main/proto/UserManagement.proto
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.user.management.api;
+
+import "UserProfile.proto";
+import "IamAdmin.proto";
+
+
+message UserProfileRequest {
+ org.apache.custos.core.user.profile.api.UserProfile user_profile = 1;
+ string client_id = 2;
+ int64 tenant_id = 3;
+ string access_token = 4;
+ string client_secret = 5;
+ string performed_by = 6;
+ int32 limit = 7;
+ int32 offset=8;
+}
+
+message GetUserRequest {
+ string username = 1;
+ org.apache.custos.core.iam.api.UserSearchRequest user_search_request = 2;
+}
+
+message GetUsersRequest {
+ int64 tenant_id = 1;
+ string email = 2;
+ string username = 3;
+ int32 offset = 4;
+ int32 limit = 5;
+ string search = 6;
+ string iam_client_id = 7;
+ string iam_client_secret = 8;
+}
+
+message ResetPassword {
+ int64 tenant_id = 1;
+ string access_token = 2;
+ string username = 3;
+ string password = 4;
+ string iam_client_id = 5;
+ string iam_client_secret = 6;
+}
+
+message ResetPasswordRequest {
+ ResetPassword password_metadata = 1;
+}
+
+message LinkUserProfileRequest {
+ string current_username = 1;
+ string previous_username = 2;
+ repeated string linking_attributes = 3;
+ int64 tenantId = 4;
+ string iam_client_id = 5;
+ string iam_client_secret = 6;
+ string access_token = 7;
+ string performed_by = 8;
+}
+
+message SynchronizeUserDBRequest {
+ int64 tenant_id = 2;
+ string client_id = 4;
+}
diff --git a/core/src/main/proto/UserProfile.proto
b/core/src/main/proto/UserProfile.proto
new file mode 100644
index 000000000..49368defb
--- /dev/null
+++ b/core/src/main/proto/UserProfile.proto
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://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.
+ *
+ */
+
+syntax = "proto3";
+
+option java_multiple_files = true;
+package org.apache.custos.core.user.profile.api;
+
+
+enum UserStatus {
+ ACTIVE = 0;
+ CONFIRMED = 1;
+ APPROVED = 2;
+ DELETED = 3;
+ DUPLICATE = 4;
+ GRACE_PERIOD = 5;
+ INVITED = 6;
+ DENIED = 7;
+ PENDING = 8;
+ PENDING_APPROVAL = 9;
+ PENDING_CONFIRMATION = 10;
+ SUSPENDED = 11;
+ DECLINED = 12;
+ EXPIRED = 13;
+}
+
+enum DefaultGroupMembershipTypes {
+ OWNER = 0;
+ ADMIN = 1;
+ MEMBER = 2;
+}
+
+enum UserTypes {
+ END_USER = 0;
+ COMMUNITY = 1;
+}
+
+
+message UserProfile {
+ string username = 1;
+ string email = 2;
+ string first_name = 3;
+ string last_name = 4;
+ int64 created_at = 5;
+ UserStatus status = 6;
+ repeated UserAttribute attributes = 7;
+ repeated string client_roles = 8;
+ repeated string realm_roles = 9;
+ int64 last_modified_at = 10;
+ UserTypes type = 11;
+ string membership_type = 12;
+}
+
+message UserProfileRequest {
+ int64 tenantId = 1;
+ UserProfile profile = 2;
+ string performed_by = 3;
+ string client_id = 4;
+ int32 offset=5;
+ int32 limit=6;
+}
+
+message UserAttribute {
+ int64 id = 1;
+ string key = 2;
+ repeated string values = 3;
+}
+
+message GetAllUserProfilesResponse {
+ repeated UserProfile profiles = 1;
+}
+
+message GetUpdateAuditTrailRequest {
+ int64 tenantId = 1;
+ string username = 2;
+}
+
+message UserProfileAttributeUpdateMetadata {
+ string updated_attribute = 1;
+ string updated_attribute_value = 2;
+ string updated_by = 3;
+ string updated_at = 4;
+}
+
+message UserProfileStatusUpdateMetadata {
+ UserStatus updated_status = 1;
+ string updated_by = 2;
+ string updated_at = 3;
+}
+
+message GetUpdateAuditTrailResponse {
+ repeated UserProfileAttributeUpdateMetadata attribute_audit = 1;
+ repeated UserProfileStatusUpdateMetadata status_audit = 2;
+}
+
+message GroupRequest {
+ int64 tenant_id = 1;
+ Group group = 2;
+ string performed_by = 3;
+ string client_id = 4;
+ string membership_type = 5;
+ string id = 6;
+ string client_sec =7;
+ int32 offset =8;
+ int32 limit=9;
+}
+
+message GetAllGroupsResponse {
+ repeated Group groups = 1;
+}
+
+message Group {
+ string id = 1;
+ string name = 2;
+ repeated string realm_roles = 3;
+ repeated string client_roles = 4;
+ string parent_id = 5;
+ int64 created_time = 6;
+ int64 last_modified_time = 7;
+ repeated GroupAttribute attributes = 8;
+ string description = 9;
+ string owner_id = 10;
+}
+
+message GroupAttribute {
+ int64 id = 1;
+ string key = 2;
+ repeated string value = 3;
+}
+
+message GroupMembership {
+ int64 tenant_id = 1;
+ string group_id = 2;
+ string username = 3;
+ string type = 4;
+ string clientId = 5;
+ string clientSec = 6;
+}
+
+message GroupToGroupMembership {
+ int64 tenant_id = 1;
+ string parent_id = 2;
+ string child_id = 3;
+ string client_id = 4;
+}
+
+message Status {
+ bool status = 1;
+}
+
+message UserGroupMembershipTypeRequest {
+ string type = 1;
+ int64 tenant_id = 2;
+ string client_id = 3;
+}
diff --git a/pom.xml b/pom.xml
index 0fb6f3918..9b5a1ef7e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,9 @@
<module>custos-utilities/ide-integration</module>
<module>custos-utilities/custos-bootstrap-service</module>
<module>custos-rest-proxy</module>
+ <module>application</module>
+ <module>core</module>
+ <module>services</module>
</modules>
<dependencyManagement>
@@ -315,6 +318,11 @@
<artifactId>spring-vault-core</artifactId>
<version>${spring.vault.core}</version>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jul-to-slf4j</artifactId>
+ <version>${jul-to-slf4j.version}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -461,7 +469,7 @@
<maven.compiler.plugin>3.8.1</maven.compiler.plugin>
<protobuf.maven.plugin>0.5.1</protobuf.maven.plugin>
- <os.maven.plugin>1.5.0.Final</os.maven.plugin>
+ <os.maven.plugin>1.7.0</os.maven.plugin>
<!-- Spring dependencies -->
<spring.boot.version>3.2.2</spring.boot.version>
@@ -503,7 +511,7 @@
<kube.java.client.version>5.0.0</kube.java.client.version>
<testng.version>6.8</testng.version>
- <org.json.version>20190722</org.json.version>
+ <org.json.version>20240303</org.json.version>
<apache.rat.plugin.version>0.13</apache.rat.plugin.version>
@@ -540,6 +548,9 @@
<jackson.version>2.15.3</jackson.version>
+ <flyway-db.version>8.5.13</flyway-db.version>
+ <jul-to-slf4j.version>2.0.11</jul-to-slf4j.version>
+ <protobuf-plugin.version>0.6.1</protobuf-plugin.version>
</properties>
diff --git a/services/pom.xml b/services/pom.xml
new file mode 100644
index 000000000..cd73e26c4
--- /dev/null
+++ b/services/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.custos</groupId>
+ <artifactId>custos</artifactId>
+ <version>1.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>custos-auth-services</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.custos</groupId>
+ <artifactId>custos-auth-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-admin-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-authz-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file