diff --git a/ApiService/pom.xml b/ApiService/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8f1348038c4eb20e9f9e4965c5f6b4b1709bc17c
--- /dev/null
+++ b/ApiService/pom.xml
@@ -0,0 +1,56 @@
+<?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.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.7.1</version>
+        <relativePath/>
+        <!--  lookup parent from repository  -->
+    </parent>
+
+    <groupId>org.fairkom</groupId>
+    <artifactId>ApiService</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+    </dependencies>
+
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>11</source>
+                    <target>11</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/ApiService/src/main/java/apiservice/ApiServiceApp.java b/ApiService/src/main/java/apiservice/ApiServiceApp.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d7275574e44d41494820932252b5394626c20d3
--- /dev/null
+++ b/ApiService/src/main/java/apiservice/ApiServiceApp.java
@@ -0,0 +1,18 @@
+package apiservice;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class ApiServiceApp implements CommandLineRunner {
+
+    public static void main(String [] args) {
+        SpringApplication.run(ApiServiceApp.class, args);
+    }
+
+    @Override
+    public void run(String... args) {
+
+    }
+}
diff --git a/ApiService/src/main/java/apiservice/model/Asset.java b/ApiService/src/main/java/apiservice/model/Asset.java
new file mode 100644
index 0000000000000000000000000000000000000000..771c73fbfc9a57e315042c4b214cc9bea899a902
--- /dev/null
+++ b/ApiService/src/main/java/apiservice/model/Asset.java
@@ -0,0 +1,56 @@
+package apiservice.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.Map;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class Asset {
+    String title;
+    String registrar;
+    String description;
+    String attribution;
+    String publisher;
+    String creation_date;
+    String type;
+    String license;
+    String license_dual;
+    String license_addons;
+    String license_DALICC;
+    String identifier;
+    String IPFS;
+    String NFT;
+    String filename;
+    String hash;
+    String hash_sha;
+    String hash_sha512;
+    String revocation_date;
+    String revocation_reason;
+    String registration_date;
+    String tags;
+    String relation;
+    String supersedes;
+    String counter;
+    String publishing_date;
+    String grid;
+    String public_certificate;
+    String language;
+    String visibility;
+    Map<String, String> attributes;
+    String customkey0;
+    String customkey1;
+    String customkey2;
+    String customkey3;
+    String customkey4;
+    String customkey5;
+    String customkey6;
+    String customkey7;
+    String customkey8;
+    String customkey9;
+}
diff --git a/ApiService/src/main/java/apiservice/repo/AssetRepo.java b/ApiService/src/main/java/apiservice/repo/AssetRepo.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a42aa1dda2e815bf31e2ef88f6ff73fa1192cb5
--- /dev/null
+++ b/ApiService/src/main/java/apiservice/repo/AssetRepo.java
@@ -0,0 +1,24 @@
+package apiservice.repo;
+
+import apiservice.model.Asset;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Repository
+public class AssetRepo implements IAssetRepo<Asset> {
+
+    private final Map<String, List<Asset>> repository = new HashMap<>();
+    @Override
+    public List<Asset> findAllByUid(String uid) {
+       return repository.get(uid);
+    }
+
+    @Override
+    public Asset save(Asset asset, String uid) {
+         repository.get(uid).add(asset);
+         return asset;
+    }
+}
diff --git a/ApiService/src/main/java/apiservice/repo/IAssetRepo.java b/ApiService/src/main/java/apiservice/repo/IAssetRepo.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4e58e0fb01089f53a960c9c5acd35d1ec78e680
--- /dev/null
+++ b/ApiService/src/main/java/apiservice/repo/IAssetRepo.java
@@ -0,0 +1,9 @@
+package apiservice.repo;
+
+import java.util.List;
+
+public interface IAssetRepo<Asset>   {
+    List<Asset> findAllByUid(String uid);
+
+    Asset save(Asset asset, String uid);
+}
diff --git a/ApiService/src/main/java/apiservice/service/ApiController.java b/ApiService/src/main/java/apiservice/service/ApiController.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6267d1a25176959b678e52db7d587e59c8aef45
--- /dev/null
+++ b/ApiService/src/main/java/apiservice/service/ApiController.java
@@ -0,0 +1,36 @@
+package apiservice.service;
+
+import apiservice.model.Asset;
+import apiservice.service.ApiService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/assets/")
+public class ApiController {
+
+        private final ApiService service;
+
+        @Autowired
+    public ApiController(ApiService service) {
+        this.service = service;
+    }
+
+    @GetMapping(produces = {MediaType.APPLICATION_JSON_VALUE})
+    public ResponseEntity<List<Asset>> getAssets(@RequestParam(name ="uid") String uid) {
+
+            List<Asset> assets = service.getAssets(uid);
+
+            return new ResponseEntity<>(assets, HttpStatus.OK);
+    }
+
+    @PostMapping(produces = {MediaType.APPLICATION_JSON_VALUE})
+    public void postAsset(@RequestBody() Asset asset, @RequestParam(name = "uid") String uid) {
+            service.saveAsset(asset,uid);
+    }
+}
diff --git a/ApiService/src/main/java/apiservice/service/ApiService.java b/ApiService/src/main/java/apiservice/service/ApiService.java
new file mode 100644
index 0000000000000000000000000000000000000000..08b013bac708f8a829156f5660c4b9fb9ed25df6
--- /dev/null
+++ b/ApiService/src/main/java/apiservice/service/ApiService.java
@@ -0,0 +1,27 @@
+package apiservice.service;
+
+import apiservice.repo.IAssetRepo;
+import apiservice.model.Asset;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ApiService {
+
+    private final IAssetRepo repo;
+
+    @Autowired
+    public ApiService(IAssetRepo repo) {
+        this.repo = repo;
+    }
+
+    public List<Asset> getAssets(String uid) {
+        return repo.findAllByUid(uid);
+    }
+
+    public void saveAsset(Asset asset, String uid) {
+        repo.save(asset,uid);
+    }
+}
diff --git a/ApiService/src/test/java/apiservice/ApiControllerTest.java b/ApiService/src/test/java/apiservice/ApiControllerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b31804a1b58e834ee863d8477c57afdc75d9dd9
--- /dev/null
+++ b/ApiService/src/test/java/apiservice/ApiControllerTest.java
@@ -0,0 +1,78 @@
+package apiservice;
+
+import apiservice.model.Asset;
+import apiservice.repo.AssetRepo;
+import apiservice.service.ApiController;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.*;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+
+import java.util.Map;
+
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@WebMvcTest(ApiController.class)
+class ApiControllerTest {
+
+    @Autowired
+    MockMvc mockMvc;
+
+    @Autowired
+    ObjectMapper mapper;
+
+    @MockBean
+    ApiController apiController;
+
+    @MockBean
+    AssetRepo assetRepo;
+
+    @Test
+    public void contextLoads() {
+        assert (apiController != null);
+    }
+
+
+    @Test
+    void postAsset() throws Exception {
+
+        Asset asset = new Asset();
+        asset.setTitle("test title");
+        asset.setAttributes(Map.ofEntries(Map.entry("test attribute", "blue")));
+
+        Mockito.when(assetRepo.save(asset, "1")).thenReturn(asset);
+
+        MockHttpServletRequestBuilder mockRequest = MockMvcRequestBuilders.post("/assets/")
+                .contentType(MediaType.APPLICATION_JSON_VALUE)
+                .accept(MediaType.APPLICATION_JSON_VALUE)
+                .content(this.mapper.writeValueAsString(asset))
+                .param("uid", "1");
+
+        mockMvc.perform(mockRequest)
+                .andExpect(status().isOk());
+    }
+
+    @Test
+    void getAssets() throws Exception {
+
+        mockMvc.perform(MockMvcRequestBuilders
+                        .get("/assets/").param("uid", "1")
+                        .contentType(MediaType.APPLICATION_JSON_VALUE))
+                .andExpect(status().isOk());
+    }
+
+}
+
+
+
+
+
+
+
+