() {};
return apiClient.invokeAPI(
localVarPath,
HttpMethod.GET,
@@ -303,11 +301,11 @@ public File exportOrchestrationConfig(
* 0 - Common Error
*
* @param orchestrationConfigId The value for the parameter orchestrationConfigId
- * @return File
+ * @return byte[]
* @throws OpenApiRequestException if an error occurs while attempting to invoke the API
*/
@Nonnull
- public File exportOrchestrationConfig(@Nonnull final UUID orchestrationConfigId)
+ public byte[] exportOrchestrationConfig(@Nonnull final UUID orchestrationConfigId)
throws OpenApiRequestException {
return exportOrchestrationConfig(orchestrationConfigId, null);
}
@@ -423,7 +421,8 @@ public OrchestrationConfigGetResponse getOrchestrationConfigByUuid(
*/
@Nonnull
public OrchestrationConfigPostResponse importOrchestrationConfig(
- @Nullable final String aiResourceGroup, @Nullable final File _file)
+ @Nullable final String aiResourceGroup,
+ @Nullable final org.springframework.core.io.Resource _file)
throws OpenApiRequestException {
final Object localVarPostBody = null;
@@ -441,7 +440,7 @@ public OrchestrationConfigPostResponse importOrchestrationConfig(
if (aiResourceGroup != null)
localVarHeaderParams.add("AI-Resource-Group", apiClient.parameterToString(aiResourceGroup));
- if (_file != null) localVarFormParams.add("file", new FileSystemResource(_file));
+ if (_file != null) localVarFormParams.add("file", _file);
final String[] localVarAccepts = {"application/json"};
final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);
diff --git a/core-services/prompt-registry/src/main/java/com/sap/ai/sdk/prompt/registry/client/PromptTemplatesApi.java b/core-services/prompt-registry/src/main/java/com/sap/ai/sdk/prompt/registry/client/PromptTemplatesApi.java
index 93d4aca31..b39598e62 100644
--- a/core-services/prompt-registry/src/main/java/com/sap/ai/sdk/prompt/registry/client/PromptTemplatesApi.java
+++ b/core-services/prompt-registry/src/main/java/com/sap/ai/sdk/prompt/registry/client/PromptTemplatesApi.java
@@ -12,7 +12,6 @@
import com.sap.cloud.sdk.services.openapi.apiclient.ApiClient;
import com.sap.cloud.sdk.services.openapi.core.AbstractOpenApiService;
import com.sap.cloud.sdk.services.openapi.core.OpenApiRequestException;
-import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -20,7 +19,6 @@
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
@@ -251,11 +249,11 @@ public PromptTemplateDeleteResponse deletePromptTemplate(@Nonnull final UUID pro
* @param promptTemplateId (required) The value for the parameter promptTemplateId
* @param aiResourceGroup (optional) Specify a resource group id to use
* @param aiResourceGroupScope (optional) Specify whether the resource group scope is to be used
- * @return File
+ * @return byte[]
* @throws OpenApiRequestException if an error occurs while attempting to invoke the API
*/
@Nonnull
- public File exportPromptTemplate(
+ public byte[] exportPromptTemplate(
@Nonnull final UUID promptTemplateId,
@Nullable final String aiResourceGroup,
@Nullable final String aiResourceGroupScope)
@@ -295,8 +293,8 @@ public File exportPromptTemplate(
final String[] localVarAuthNames = new String[] {};
- final ParameterizedTypeReference localVarReturnType =
- new ParameterizedTypeReference() {};
+ final ParameterizedTypeReference localVarReturnType =
+ new ParameterizedTypeReference() {};
return apiClient.invokeAPI(
localVarPath,
HttpMethod.GET,
@@ -320,11 +318,11 @@ public File exportPromptTemplate(
* 0 - Common Error
*
* @param promptTemplateId The value for the parameter promptTemplateId
- * @return File
+ * @return byte[]
* @throws OpenApiRequestException if an error occurs while attempting to invoke the API
*/
@Nonnull
- public File exportPromptTemplate(@Nonnull final UUID promptTemplateId)
+ public byte[] exportPromptTemplate(@Nonnull final UUID promptTemplateId)
throws OpenApiRequestException {
return exportPromptTemplate(promptTemplateId, null, null);
}
@@ -442,7 +440,7 @@ public PromptTemplateGetResponse getPromptTemplateByUuid(@Nonnull final UUID pro
public PromptTemplatePostResponse importPromptTemplate(
@Nullable final String aiResourceGroup,
@Nullable final String aiResourceGroupScope,
- @Nullable final File _file)
+ @Nullable final org.springframework.core.io.Resource _file)
throws OpenApiRequestException {
final Object localVarPostBody = null;
@@ -461,7 +459,7 @@ public PromptTemplatePostResponse importPromptTemplate(
localVarHeaderParams.add(
"AI-Resource-Group-Scope", apiClient.parameterToString(aiResourceGroupScope));
- if (_file != null) localVarFormParams.add("file", new FileSystemResource(_file));
+ if (_file != null) localVarFormParams.add("file", _file);
final String[] localVarAccepts = {"application/json"};
final List localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);
diff --git a/sample-code/spring-app/pom.xml b/sample-code/spring-app/pom.xml
index c82279d6c..85a11e90f 100644
--- a/sample-code/spring-app/pom.xml
+++ b/sample-code/spring-app/pom.xml
@@ -232,6 +232,11 @@
assertj-core
test
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-yaml
+ test
+
diff --git a/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/PromptRegistryController.java b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/PromptRegistryController.java
index 4018b94bd..b2c79d0fc 100644
--- a/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/PromptRegistryController.java
+++ b/sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/PromptRegistryController.java
@@ -13,7 +13,6 @@
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateSubstitutionResponse;
import com.sap.ai.sdk.prompt.registry.model.SingleChatTemplate;
import com.sap.ai.sdk.prompt.registry.spring.SpringAiConverter;
-import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -82,11 +81,11 @@ PromptTemplateListResponse history() {
@GetMapping("/importTemplate")
PromptTemplatePostResponse importTemplate() throws IOException {
final Resource template = new ClassPathResource("prompt-template.yaml");
- return client.importPromptTemplate("default", null, template.getFile());
+ return client.importPromptTemplate("default", null, template);
}
@GetMapping("/exportTemplate")
- File exportTemplate() throws IOException {
+ byte[] exportTemplate() throws IOException {
final var template = importTemplate();
return client.exportPromptTemplate(template.getId());
}
diff --git a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/PromptRegistryTest.java b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/PromptRegistryTest.java
index e52422d4b..94ef5a107 100644
--- a/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/PromptRegistryTest.java
+++ b/sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/PromptRegistryTest.java
@@ -2,6 +2,8 @@
import static org.assertj.core.api.Assertions.assertThat;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.sap.ai.sdk.prompt.registry.model.PromptTemplate;
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateDeleteResponse;
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateListResponse;
@@ -11,9 +13,12 @@
import java.io.IOException;
import java.util.List;
import org.junit.jupiter.api.Test;
+import org.springframework.core.io.ClassPathResource;
public class PromptRegistryTest {
+ static final ObjectMapper YAML_MAPPER = new ObjectMapper(new YAMLFactory());
+
@Test
void listTemplates() {
var controller = new PromptRegistryController();
@@ -53,10 +58,15 @@ void importExportTemplate() throws IOException {
controller.deleteTemplate();
// import
- PromptTemplatePostResponse template = controller.importTemplate();
- assertThat(template.getMessage()).contains("successful");
+ var importResult = controller.importTemplate();
+ assertThat(importResult.getMessage()).contains("successful");
+
+ // export
+ var exportedTemplate = controller.exportTemplate();
- // export TODO: NOT WORKING
+ var importedTemplate = new ClassPathResource("prompt-template.yaml");
+ var expectedYaml = YAML_MAPPER.readTree(importedTemplate.getContentAsByteArray());
+ assertThat(YAML_MAPPER.readTree(exportedTemplate)).isEqualTo(expectedYaml);
// cleanup
List deletedTemplate = controller.deleteTemplate();