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>