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

Reply via email to