diff --git a/api/src/engine/engine.resolver.ts b/api/src/engine/engine.resolver.ts
index e2bcfa5c76bf3823f895ff90dd77a92a8238c47a..e66bc13da0d1c7e211f35a0decff0a417b97c6e2 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..b1f3ccac521fdca1707075015eca274e62d60676
--- /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..dd30609f59c1a2dac275f214b0bbe1b3d18a3da0
--- /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..dcc9a6f4e887b2f5e2f4fcf3c7c3cdcaa2f3b0e3
--- /dev/null
+++ b/api/src/engine/models/variable.model.ts
@@ -0,0 +1,24 @@
+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])
+    enumerations: Category[];
+
+    @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..703c5eb6f1d38c98a2ebde2646150d24067e1848 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -2,6 +2,37 @@
 # THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
 # ------------------------------------------------------
 
+type Category {
+  id: String!
+  label: String!
+}
+
+type Variable {
+  id: String!
+  label: String
+  type: String!
+  description: String
+  enumerations: [Category!]!
+  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!
 }