diff --git a/src/CodeGen/CodeGenerator/CodeGenerator.cs b/src/CodeGen/CodeGenerator/CodeGenerator.cs
index 97d952b28bd7995635eaadb01ffabec68489b389..08018aa0a5b531059e85b5db59b0c8b50c88976c 100644
--- a/src/CodeGen/CodeGenerator/CodeGenerator.cs
+++ b/src/CodeGen/CodeGenerator/CodeGenerator.cs
@@ -71,6 +71,11 @@ public abstract class CodeGenerator
 
             var apiContent = File.ReadAllText($"./{outputPath}/{directoryName}/api.ts");
 
+            foreach (var apiFile in Directory.GetFiles($"./{outputPath}/{directoryName}/@coscine/api/"))
+            {
+                apiContent += File.ReadAllText(apiFile);
+            }
+
             var apiImplementations = apiRegex.Matches(apiContent);
 
             var customBasePath = await GetCustomBasePath(directoryName);
diff --git a/src/CodeGen/CodeGenerator/CoscineCodeGenerator.cs b/src/CodeGen/CodeGenerator/CoscineCodeGenerator.cs
index aa23649ccf9e2fc3de3a897e6f9b566fa37f6b33..5dfb823b289a83e077dfff30e27645ccc9f782de 100644
--- a/src/CodeGen/CodeGenerator/CoscineCodeGenerator.cs
+++ b/src/CodeGen/CodeGenerator/CoscineCodeGenerator.cs
@@ -19,7 +19,7 @@ public class CoscineCodeGenerator : CodeGenerator
 
     public async override Task<string> GetClientGenerator()
     {
-        var jarDownloadLink = await _configuration.GetStringAsync("coscine/local/codegen/jarlink", "https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.2.1/openapi-generator-cli-5.2.1.jar");
+        var jarDownloadLink = await _configuration.GetStringAsync("coscine/local/codegen/jarlink", "https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.1.0/openapi-generator-cli-7.1.0.jar");
 
         using var httpClient = new HttpClient();
         var jarFileName = await _configuration.GetStringAsync("coscine/local/codegen/jarpath", "./codegen.jar");
@@ -40,7 +40,10 @@ public class CoscineCodeGenerator : CodeGenerator
         var apiPrefix = "coscine/apis/";
 
         var keys = await _configuration.KeysAsync(apiPrefix);
-        return keys.Select((entry) => entry.Split('/')[2]).Distinct();
+        return keys.Select((entry) => entry.Split('/')[2]).Distinct().Where(x =>
+            x == "Coscine.Api"
+            || x == "Coscine.Api.STS"
+        );
     }
 
     internal async override Task<string> GetOutputPath()
@@ -50,17 +53,26 @@ public class CoscineCodeGenerator : CodeGenerator
 
     internal override Task<string> GetSwaggerUrl(string domainName, string hostName, string key)
     {
+        if (key == "Coscine.Api")
+        {
+            return Task.FromResult($"https://{hostName}.{domainName}/coscine/api/swagger/v2/swagger.json");
+        }
         return Task.FromResult($"https://{hostName}.{domainName}/coscine/api/{key}/swagger/v1/swagger.json");
     }
 
     internal override string GetGenerationCommand(string outputPath, string jarFileName, string key, string swaggerUrl)
     {
-        return $"java \"-Dio.swagger.parser.util.RemoteUrl.trustAll=true\" \"-Dio.swagger.v3.parser.util.RemoteUrl.trustAll=true\" -jar \"{jarFileName}\" generate -i \"{swaggerUrl}\" -g typescript-axios -o \"{outputPath}/{key}\" --skip-validate-spec";
+        return $"java \"-Dio.swagger.parser.util.RemoteUrl.trustAll=true\" \"-Dio.swagger.v3.parser.util.RemoteUrl.trustAll=true\" -jar \"{jarFileName}\" generate -i \"{swaggerUrl}\" -g typescript-axios -o \"{outputPath}/{key}\" --additional-properties=useSingleRequestParameter=true,apiPackage=@coscine/api,modelPackage=@coscine/model,withSeparateModelsAndApi=true --skip-validate-spec";
     }
 
     internal override Task<string> GetCustomBasePath(string directoryName)
     {
-        return Task.FromResult($"https://' + getHostName() + '/coscine/api/{directoryName}");
+        var appendedPath = directoryName == "Coscine.Api.STS"
+                ? $"/api/{directoryName}"
+                : "";
+        return Task.FromResult(
+            $"https://' + getHostName() + '/coscine{appendedPath}"
+        );
     }
 
     internal override Task<string> GetCustomCodeForCombinationFile(string combinationFileText)
@@ -69,9 +81,6 @@ public class CoscineCodeGenerator : CodeGenerator
 
         // Keep it like that for formatting
         combinationFileText += @"
-if (typeof coscine !== 'undefined' && typeof coscine.authorization !== 'undefined') {
-  accessToken = 'Bearer ' + coscine.authorization.bearer;
-}
 if (typeof window !== 'undefined') {
   // LocalStorage > Global Variables
   const localStorageToken = localStorage.getItem('coscine.authorization.bearer');
@@ -94,4 +103,4 @@ const getHostName = () => {
 ";
         return Task.FromResult(combinationFileText);
     }
-}
+}
\ No newline at end of file