diff --git a/api/pom.xml b/api/pom.xml
new file mode 100644
index 000000000..6184d6cd7
--- /dev/null
+++ b/api/pom.xml
@@ -0,0 +1,40 @@
+<?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>com.introproventures</groupId>
+    <artifactId>graphql-jpa-query-dependencies</artifactId>
+    <version>1.2.13-SNAPSHOT</version>
+    <relativePath>../dependencies</relativePath>
+  </parent>
+
+  <packaging>jar</packaging>
+
+  <artifactId>graphql-jpa-query-api</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.introproventures</groupId>
+      <artifactId>graphql-jpa-query-annotations</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.atteo</groupId>
+      <artifactId>evo-inflector</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.graphql-java</groupId>
+      <artifactId>graphql-java</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.introproventures</groupId>
+      <artifactId>graphql-jpa-query-introspection</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>jakarta.persistence</groupId>
+      <artifactId>jakarta.persistence-api</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutionInputFactory.java b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutionInputFactory.java
similarity index 100%
rename from schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutionInputFactory.java
rename to api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutionInputFactory.java
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutor.java b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutor.java
similarity index 100%
rename from schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutor.java
rename to api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutor.java
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutorContext.java b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutorContext.java
similarity index 100%
rename from schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutorContext.java
rename to api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutorContext.java
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutorContextFactory.java b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutorContextFactory.java
similarity index 100%
rename from schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutorContextFactory.java
rename to api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLExecutorContextFactory.java
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLSchemaBuilder.java b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLSchemaBuilder.java
similarity index 91%
rename from schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLSchemaBuilder.java
rename to api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLSchemaBuilder.java
index fe90ec627..e8053e3f0 100644
--- a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLSchemaBuilder.java
+++ b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/GraphQLSchemaBuilder.java
@@ -75,6 +75,14 @@ public interface GraphQLSchemaBuilder {
      */
     GraphQLSchemaBuilder graphQLIDType(boolean useGraphQLIDType);
 
+    /**
+     * Register restricted keys provider
+     *
+     * @param restrictedKeysProvider instance
+     * @return this builder instance
+     */
+    GraphQLSchemaBuilder restrictedKeysProvider(RestrictedKeysProvider restrictedKeysProvider);
+
     /**
      * Builds {code #GraphQLSchema} instance
      *
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/NamingStrategy.java b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/NamingStrategy.java
similarity index 100%
rename from schema/src/main/java/com/introproventures/graphql/jpa/query/schema/NamingStrategy.java
rename to api/src/main/java/com/introproventures/graphql/jpa/query/schema/NamingStrategy.java
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/RestrictedKeysProvider.java b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/RestrictedKeysProvider.java
similarity index 100%
rename from schema/src/main/java/com/introproventures/graphql/jpa/query/schema/RestrictedKeysProvider.java
rename to api/src/main/java/com/introproventures/graphql/jpa/query/schema/RestrictedKeysProvider.java
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/EntityIntrospector.java b/api/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/EntityIntrospector.java
similarity index 100%
rename from schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/EntityIntrospector.java
rename to api/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/EntityIntrospector.java
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index 665f1b0e9..914d55a2e 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -60,6 +60,11 @@
         <artifactId>graphql-jpa-query-scalars</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>com.introproventures</groupId>
+        <artifactId>graphql-jpa-query-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>com.introproventures</groupId>
         <artifactId>graphql-jpa-query-schema</artifactId>
diff --git a/pom.xml b/pom.xml
index 06dd0df58..98572b547 100644
--- a/pom.xml
+++ b/pom.xml
@@ -347,6 +347,7 @@
       <modules>
         <module>annotations</module>
         <module>scalars</module>
+        <module>api</module>
         <module>schema</module>
         <module>boot-starter</module>
         <module>dependencies</module>
@@ -363,6 +364,7 @@
       <modules>
         <module>annotations</module>
         <module>scalars</module>
+        <module>api</module>
         <module>schema</module>
         <module>boot-starter</module>
         <module>dependencies</module>
diff --git a/schema/pom.xml b/schema/pom.xml
index db295d230..490abf82b 100644
--- a/schema/pom.xml
+++ b/schema/pom.xml
@@ -22,6 +22,11 @@
       <artifactId>graphql-jpa-query-annotations</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>com.introproventures</groupId>
+      <artifactId>graphql-jpa-query-api</artifactId>
+    </dependency>
+
     <dependency>
       <groupId>com.introproventures</groupId>
       <artifactId>graphql-jpa-query-scalars</artifactId>