diff --git a/config/SharedConfig.ts b/config/SharedConfig.ts
index 29c55a2cd2c4edbfdd43dd7834ae06f81da21e13..cbcb181edacf5b5a1f9a86cfdf7943c76fd2d1ca 100644
--- a/config/SharedConfig.ts
+++ b/config/SharedConfig.ts
@@ -3,11 +3,19 @@ class SharedConfig {
 
     public readonly logsFolder: string;
 
+    public gitlab: {
+        apiURL: string
+    };
+
 
     constructor() {
         this.production = process.env.NODE_ENV === 'production';
 
         this.logsFolder = process.env.LOGS_FOLDER || '';
+
+        this.gitlab = {
+            apiURL: process.env.GITLAB_API_URL || ''
+        };
     }
 }
 
diff --git a/managers/SharedGitlabManager.ts b/managers/SharedGitlabManager.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a3a00204ea7a6a5cc761209fbac27a6632271620
--- /dev/null
+++ b/managers/SharedGitlabManager.ts
@@ -0,0 +1,24 @@
+import axios          from 'axios';
+import GitlabPipeline from '../types/Gitlab/GitlabPipeline';
+import GitlabRoute    from '../types/Gitlab/GitlabRoute';
+import SharedConfig   from '../config/SharedConfig';
+
+
+class GitlabManager {
+    private getApiUrl(route: GitlabRoute): string {
+        return `${ SharedConfig.gitlab.apiURL }${ route }`;
+    }
+
+    async getRepositoryPipelines(repoId: number, branch: string = 'main'): Promise<Array<GitlabPipeline>> {
+        const response = await axios.get<Array<GitlabPipeline>>(this.getApiUrl(GitlabRoute.REPOSITORY_PIPELINES).replace('{{id}}', String(repoId)), {
+            params: {
+                ref: branch
+            }
+        });
+
+        return response.data;
+    }
+}
+
+
+export default new GitlabManager();