diff --git a/api/src/engine/engine.resolver.ts b/api/src/engine/engine.resolver.ts
index e2bcfa5c76bf3823f895ff90dd77a92a8238c47a..7156789427ab82d2ea928a5703cee5dea46e69fc 100644
--- a/api/src/engine/engine.resolver.ts
+++ b/api/src/engine/engine.resolver.ts
@@ -2,13 +2,23 @@ import { Inject } from '@nestjs/common';
 import { Query, Resolver } from '@nestjs/graphql';
 import { ENGINE_SERVICE } from './engine.constants';
 import { IEngineService } from './engine.interfaces';
+import { Domain } from './models/domain.model';
 
 @Resolver()
 export class EngineResolver {
     constructor(@Inject(ENGINE_SERVICE) private readonly engineService: IEngineService) { }
 
-    @Query(() => String)
+    @Query(() => Domain)
     async hello() {
-        return this.engineService.demo();
+        let dummy : Domain = {  
+            id: "test",
+            label: "test",
+            description: "test",
+            groups:[],
+            variables: [],
+            datasets: []
+        }
+
+        return dummy;
     }
 }
\ No newline at end of file
diff --git a/api/src/engine/models/category.model.ts b/api/src/engine/models/category.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..29ab318f83c2dcddacd718919e6bec7060e5c9e3
--- /dev/null
+++ b/api/src/engine/models/category.model.ts
@@ -0,0 +1,10 @@
+import { Field, ObjectType } from "@nestjs/graphql";
+
+@ObjectType()
+export class Category {
+    @Field()
+    id: string
+
+    @Field()
+    label: string;
+}
\ No newline at end of file
diff --git a/api/src/engine/models/domain.model.ts b/api/src/engine/models/domain.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bffe59e04ed5cf411ed0e00c71751a65c6339aba
--- /dev/null
+++ b/api/src/engine/models/domain.model.ts
@@ -0,0 +1,9 @@
+import { Field, ObjectType } from "@nestjs/graphql";
+import { Category } from "./category.model";
+import { Group } from "./group.model";
+
+@ObjectType()
+export class Domain extends Group{
+    @Field(type => [Category])
+    datasets: Category[];
+}
\ No newline at end of file
diff --git a/api/src/engine/models/group.model.ts b/api/src/engine/models/group.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..94c33069f7bac6d2f51291508c4ef3159b393c76
--- /dev/null
+++ b/api/src/engine/models/group.model.ts
@@ -0,0 +1,20 @@
+import { Field, ObjectType } from "@nestjs/graphql";
+import { Variable } from "./variable.model";
+
+@ObjectType()
+export class Group {
+    @Field()
+    id: string;
+
+    @Field()
+    label: string;
+
+    @Field({ nullable: true})
+    description?: string;
+
+    @Field(type => [Group])
+    groups: Group[];
+
+    @Field(type => [Variable])
+    variables: Variable[];
+}
\ No newline at end of file
diff --git a/api/src/engine/models/variable.model.ts b/api/src/engine/models/variable.model.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7e1e61df93e3f9393171853a07398eaa1c63e36f
--- /dev/null
+++ b/api/src/engine/models/variable.model.ts
@@ -0,0 +1,27 @@
+import { Field, ObjectType } from "@nestjs/graphql";
+import { Category } from "./category.model";
+import { Group } from "./group.model";
+
+@ObjectType()
+export class Variable {
+    @Field()
+    id: string;
+
+    @Field({ nullable: true })
+    label?: string;
+
+    @Field()
+    type: string;
+
+    @Field({ nullable: true})
+    description?: string;
+
+    @Field(type => [Category])
+    categories: Category[];
+
+    @Field(type => Boolean)
+    isCategorical: boolean;
+
+    @Field(type => [Group])
+    groups: Group[];
+}
\ No newline at end of file
diff --git a/api/src/schema.gql b/api/src/schema.gql
index 12b643d401b9084f455a4b8f12a9d2ecd4e013d8..fca958d2a2299ecaa7ade2bd1ac65283dbae13d8 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -2,6 +2,38 @@
 # THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
 # ------------------------------------------------------
 
+type Category {
+  id: String!
+  label: String!
+}
+
+type Variable {
+  id: String!
+  label: String
+  type: String!
+  description: String
+  categories: [Category!]!
+  isCategorical: Boolean!
+  groups: [Group!]!
+}
+
+type Group {
+  id: String!
+  label: String!
+  description: String
+  groups: [Group!]!
+  variables: [Variable!]!
+}
+
+type Domain {
+  id: String!
+  label: String!
+  description: String
+  groups: [Group!]!
+  variables: [Variable!]!
+  datasets: [Category!]!
+}
+
 type Query {
-  hello: String!
+  hello: Domain!
 }