diff --git a/pom.xml b/pom.xml
index dbaf867..9727c63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,6 +39,14 @@
io.quarkus
quarkus-rest
+
+ org.eclipse.microprofile.rest.client
+ microprofile-rest-client-api
+
+
+ io.quarkus
+ quarkus-rest-client
+
io.quarkus
quarkus-junit
diff --git a/src/main/java/com/backend/metadata/shikimori/model/AnimeMetadata.java b/src/main/java/com/backend/metadata/shikimori/model/AnimeMetadata.java
new file mode 100644
index 0000000..ba31561
--- /dev/null
+++ b/src/main/java/com/backend/metadata/shikimori/model/AnimeMetadata.java
@@ -0,0 +1,13 @@
+package com.backend.metadata.shikimori.model;
+
+import java.util.List;
+
+public class AnimeMetadata {
+ public int shikimori_id;
+ public String title;
+ public String poster;
+ public String description;
+ public List characters;
+ public List related;
+ public List voice_actors;
+}
diff --git a/src/main/java/com/backend/metadata/shikimori/model/Character.java b/src/main/java/com/backend/metadata/shikimori/model/Character.java
new file mode 100644
index 0000000..1ac9b9b
--- /dev/null
+++ b/src/main/java/com/backend/metadata/shikimori/model/Character.java
@@ -0,0 +1,8 @@
+package com.backend.metadata.shikimori.model;
+
+public class Character {
+ public String name;
+ public String role;
+ public String poster;
+ public String seiyuu;
+}
diff --git a/src/main/java/com/backend/metadata/shikimori/model/RelatedAnime.java b/src/main/java/com/backend/metadata/shikimori/model/RelatedAnime.java
new file mode 100644
index 0000000..b28e41d
--- /dev/null
+++ b/src/main/java/com/backend/metadata/shikimori/model/RelatedAnime.java
@@ -0,0 +1,7 @@
+package com.backend.metadata.shikimori.model;
+
+public class RelatedAnime {
+ public int shikimori_id;
+ public String relation;
+ public String title;
+}
diff --git a/src/main/java/com/backend/metadata/shikimori/model/VoiceActor.java b/src/main/java/com/backend/metadata/shikimori/model/VoiceActor.java
new file mode 100644
index 0000000..223ce18
--- /dev/null
+++ b/src/main/java/com/backend/metadata/shikimori/model/VoiceActor.java
@@ -0,0 +1,7 @@
+package com.backend.metadata.shikimori.model;
+
+public class VoiceActor {
+ public String name;
+ public String language;
+ public String character;
+}
diff --git a/src/main/java/com/backend/metadata/shikimori/service/MetadataResource.java b/src/main/java/com/backend/metadata/shikimori/service/MetadataResource.java
new file mode 100644
index 0000000..eae76de
--- /dev/null
+++ b/src/main/java/com/backend/metadata/shikimori/service/MetadataResource.java
@@ -0,0 +1,22 @@
+package com.backend.metadata.shikimori.service;
+
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import org.eclipse.microprofile.rest.client.inject.RestClient;
+
+@Path("/metadata")
+public class MetadataResource {
+
+ @RestClient
+ ShikimoriService shikimoriService;
+
+ @GET
+ @Path("/{shikimori_id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public AnimeMetadata getMetadata(@PathParam("shikimori_id") int shikimoriId) {
+ return shikimoriService.getMetadata(shikimoriId);
+ }
+}
diff --git a/src/main/java/com/backend/metadata/shikimori/service/ShikimoriService.java b/src/main/java/com/backend/metadata/shikimori/service/ShikimoriService.java
new file mode 100644
index 0000000..beb20f8
--- /dev/null
+++ b/src/main/java/com/backend/metadata/shikimori/service/ShikimoriService.java
@@ -0,0 +1,17 @@
+package com.backend.metadata.shikimori.service;
+
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
+
+@RegisterRestClient(configKey = "shikimori-api")
+public interface ShikimoriService {
+
+ @GET
+ @Path("/api/graphql")
+ @Produces(MediaType.APPLICATION_JSON)
+ AnimeMetadata getMetadata(@PathParam("id") int shikimoriId);
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e69de29..3e99f5e 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -0,0 +1,3 @@
+# Shikimori API configuration
+shikimori-api/mp-rest/url=https://shikimori.one
+shikimori-api/mp-rest/scope=jakarta.inject.Singleton