This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/main by this push:
     new bd52c5736a Add test coverage for OpenAI embeddings
bd52c5736a is described below

commit bd52c5736ad2dc7a1bddbda5ba70bffbaa80da46
Author: James Netherton <[email protected]>
AuthorDate: Mon Feb 23 20:30:24 2026 +0000

    Add test coverage for OpenAI embeddings
---
 integration-tests/openai/README.adoc               |  1 +
 integration-tests/openai/pom.xml                   |  4 +
 .../component/openai/it/OpenaiResource.java        | 37 +++++++++
 .../quarkus/component/openai/it/OpenaiRoutes.java  |  9 ++
 .../quarkus/component/openai/it/OpenaiTest.java    | 95 ++++++++++++++++++++++
 .../component/openai/it/OpenaiTestResource.java    |  3 +
 ...dings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json | 25 ++++++
 ...dings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json | 46 +++++++++++
 ...dings-241446f1-554b-4cbf-8e0e-860f799c18fa.json | 48 +++++++++++
 ...dings-74b74a7f-a14b-43ef-bbcd-6e492e07464b.json | 46 +++++++++++
 ...dings-7d5105a3-8c4f-4e6c-977b-bc9d4157650c.json | 46 +++++++++++
 ...dings-bb9ce2dd-d285-491c-890a-f57a751b8155.json | 46 +++++++++++
 ...dings-cdf3ca4a-680c-4d9b-a649-6af0e4b746ec.json | 46 +++++++++++
 ...dings-e04198c2-a03b-4c4b-96ac-dc2b6260c203.json | 49 +++++++++++
 ...dings-ebc01e5b-f3fa-4fce-bd96-e6a7e2e49dee.json | 49 +++++++++++
 15 files changed, 550 insertions(+)

diff --git a/integration-tests/openai/README.adoc 
b/integration-tests/openai/README.adoc
index 97bc3d5edf..e768f03544 100644
--- a/integration-tests/openai/README.adoc
+++ b/integration-tests/openai/README.adoc
@@ -25,6 +25,7 @@ Alternatively, you can test against any OpenAI compatible API 
by configuring the
 export OPENAI_API_KEY=fake-key
 export OPENAI_BASE_URL=https://you-api-endpoint/v1
 export OPENAI_MODEL=your-model-name
+export OPENAI_EMBEDDING_MODEL=your-embedding-model-name
 ----
 
 If the WireMock stub recordings need updating, then remove the existing files 
from `src/test/resources/mappings` and run tests with either:
diff --git a/integration-tests/openai/pom.xml b/integration-tests/openai/pom.xml
index f45b9724ce..f43e3464a6 100644
--- a/integration-tests/openai/pom.xml
+++ b/integration-tests/openai/pom.xml
@@ -51,6 +51,10 @@
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-resteasy</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy-jackson</artifactId>
+        </dependency>
 
         <!-- test dependencies -->
         <dependency>
diff --git 
a/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiResource.java
 
b/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiResource.java
index 4b69253890..aaf74c6259 100644
--- 
a/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiResource.java
+++ 
b/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiResource.java
@@ -17,7 +17,9 @@
 package org.apache.camel.quarkus.component.openai.it;
 
 import java.io.File;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import jakarta.enterprise.context.ApplicationScoped;
@@ -32,6 +34,9 @@ import jakarta.ws.rs.QueryParam;
 import jakarta.ws.rs.core.MediaType;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.component.openai.OpenAIConstants;
 import org.apache.camel.util.ObjectHelper;
@@ -105,6 +110,38 @@ public class OpenaiResource {
         return consumerTemplate.receiveBody(endpointUri, 10000, String.class);
     }
 
+    @Path("/embeddings")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.APPLICATION_JSON)
+    public List<?> embeddings(String embeddingContent) {
+        Object body = embeddingContent;
+        String endpointUriSuffix = "embed";
+        String[] content = embeddingContent.split(",");
+        if (content.length > 1) {
+            endpointUriSuffix = "batchEmbed";
+            body = Arrays.asList(content);
+        }
+
+        return producerTemplate.requestBody("direct:" + endpointUriSuffix, 
body, List.class);
+    }
+
+    @Path("/vector/similarity")
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Double vectorSimilarity(@QueryParam("embeddingContent") String 
embeddingContent, List<Float> vector) {
+        Exchange exchange = 
producerTemplate.request("direct:vectorSimilarity", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                Message message = exchange.getMessage();
+                message.setHeader(OpenAIConstants.REFERENCE_EMBEDDING, vector);
+                message.setBody(embeddingContent);
+            }
+        });
+        return 
exchange.getMessage().getHeader(OpenAIConstants.SIMILARITY_SCORE, Double.class);
+    }
+
     @Path("/routes/{routeId}/{operation}")
     @POST
     public void routeOperations(
diff --git 
a/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiRoutes.java
 
b/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiRoutes.java
index 46a0aae44c..48fcb2ffe2 100644
--- 
a/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiRoutes.java
+++ 
b/integration-tests/openai/src/main/java/org/apache/camel/quarkus/component/openai/it/OpenaiRoutes.java
@@ -81,5 +81,14 @@ public class OpenaiRoutes extends RouteBuilder {
                 .setBody(constant("What is my Camel species?"))
                 .to("openai:chat-completion?conversationMemory=true")
                 .log("Chat response 2: ${body}");
+
+        from("direct:embed")
+                .to("openai:embeddings");
+
+        from("direct:batchEmbed")
+                .to("openai:embeddings");
+
+        from("direct:vectorSimilarity")
+                .to("openai:embeddings");
     }
 }
diff --git 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTest.java
 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTest.java
index a70d1254d5..69f0aa4113 100644
--- 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTest.java
+++ 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTest.java
@@ -25,6 +25,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.time.Duration;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
@@ -39,10 +40,13 @@ import org.awaitility.Awaitility;
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.Matchers.containsStringIgnoringCase;
+import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.notNullValue;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 @QuarkusTestResource(OpenaiTestResource.class)
 @QuarkusTest
@@ -208,4 +212,95 @@ class OpenaiTest {
                         "name", is("Bluetooth Headphones"),
                         "price", greaterThan(0.0F));
     }
+
+    @Test
+    void simpleEmbedding() {
+        String simpleText = "Simple text";
+        List<?> result = RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body(simpleText)
+                .post("/openai/embeddings")
+                .then()
+                .statusCode(200)
+                .body(".", hasSize(greaterThan(0)))
+                .extract()
+                .body()
+                .as(List.class);
+
+        Double similarity = RestAssured.given()
+                .contentType(ContentType.JSON)
+                .queryParam("embeddingContent", simpleText)
+                .body(result)
+                .post("/openai/vector/similarity")
+                .then()
+                .statusCode(200)
+                .extract()
+                .body()
+                .as(Double.class);
+
+        assertTrue(similarity >= 0.9);
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    void batchEmbedding() {
+        String batchText = "Text content 1,Text content 2,Text content 3";
+        List<List<?>> result = RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body(batchText)
+                .post("/openai/embeddings")
+                .then()
+                .statusCode(200)
+                .body(
+                        ".", hasSize(equalTo(3)),
+                        "[0]", hasSize(greaterThan(0)),
+                        "[1]", hasSize(greaterThan(0)),
+                        "[2]", hasSize(greaterThan(0)))
+                .extract()
+                .body()
+                .as(List.class);
+
+        String[] batchTextParts = batchText.split(",");
+        for (int i = 0; i < batchTextParts.length; i++) {
+            Double similarity = RestAssured.given()
+                    .contentType(ContentType.JSON)
+                    .queryParam("embeddingContent", batchTextParts[i])
+                    .body(result.get(i))
+                    .post("/openai/vector/similarity")
+                    .then()
+                    .statusCode(200)
+                    .extract()
+                    .body()
+                    .as(Double.class);
+            assertTrue(similarity >= 0.9);
+        }
+    }
+
+    @Test
+    void vectorSimilarity() {
+        String simpleText = "Simple text";
+        List<?> result = RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body(simpleText)
+                .post("/openai/embeddings")
+                .then()
+                .statusCode(200)
+                .body(".", hasSize(greaterThan(0)))
+                .extract()
+                .body()
+                .as(List.class);
+
+        Double similarity = RestAssured.given()
+                .contentType(ContentType.JSON)
+                .queryParam("embeddingContent", simpleText + " extra content")
+                .body(result)
+                .post("/openai/vector/similarity")
+                .then()
+                .statusCode(200)
+                .extract()
+                .body()
+                .as(Double.class);
+
+        assertTrue(similarity >= 0.6);
+    }
 }
diff --git 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTestResource.java
 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTestResource.java
index 550e3fb992..70077b0adb 100644
--- 
a/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTestResource.java
+++ 
b/integration-tests/openai/src/test/java/org/apache/camel/quarkus/component/openai/it/OpenaiTestResource.java
@@ -38,6 +38,7 @@ public class OpenaiTestResource extends 
WireMockTestResourceLifecycleManager {
     private static final String OPENAI_ENV_API_KEY = "OPENAI_API_KEY";
     private static final String OPENAI_ENV_BASE_URL = "OPENAI_BASE_URL";
     private static final String OPENAI_ENV_MODEL = "OPENAI_MODEL";
+    private static final String OPENAI_ENV_EMBEDDING_MODEL = 
"OPENAI_EMBEDDING_MODEL";
 
     @Override
     public Map<String, String> start() {
@@ -50,6 +51,8 @@ public class OpenaiTestResource extends 
WireMockTestResourceLifecycleManager {
         }
 
         configuration.put("camel.component.openai.model", 
envOrDefault(OPENAI_ENV_MODEL, "gpt-5"));
+        configuration.put("camel.component.openai.embedding-model",
+                envOrDefault(OPENAI_ENV_EMBEDDING_MODEL, 
"text-embedding-3-small"));
         configuration.put("camel.component.openai.apiKey", 
envOrDefault(OPENAI_ENV_API_KEY, "test-key"));
         return configuration;
     }
diff --git 
a/integration-tests/openai/src/test/resources/__files/embeddings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json
 
b/integration-tests/openai/src/test/resources/__files/embeddings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json
new file mode 100644
index 0000000000..d03769d2d5
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/__files/embeddings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json
@@ -0,0 +1,25 @@
+{
+  "object": "list",
+  "data": [
+    {
+      "object": "embedding",
+      "index": 0,
+      "embedding": 
"JqBquh2/YTyVANQ8gMVFvEgGFL00dR+9CHUWPOf9fLw7Zxg8FlkIPBiNDj1EAXg88mhyvdhgtDxOJ3c9gz5CO1/LjjxorJc6BpXDvE4YOj2L2lQ7mGoTvKUJD7yBpZg6y8E4PKbCZTvn7j+8HAaLPBLgCz3Fr5K9bSPhuntdOb1elVU8gaUYvQticzwMp2k9Kk8gvC+3LLzEeVm6SvUjvUwpKjx0Bh28y9B1PJzyTDuj1Yi7K6PTPOFQ+rwcFcg81SyuuwO3Iz1Gi+S8FxLfuqTEmLzmqUk9pI5fvRp8HrwN3SK9xa+SPZ3Sn7xUKuC7hnJIPXnTzDykKTw8jWRBPCujU7x6GMM7uf8mvBMlgrwcay48LoHzOzappTz6KwG8P+9RvWqqZDyfXIy8Cv+Cu3w9jLw723g8nCiGvCyDJjvLXBU954kcvL0TgLwngD29ODOSvJ03wzxAeb69t8ugPIlB
 [...]
+    },
+    {
+      "object": "embedding",
+      "index": 1,
+      "embedding": 
"w3MEvLo2njzTpkE8vbFJvVlNF73Pvju7bJ5qPMLQGbxNN7Y8ytX7O8NzBD1v5D868g4wvWFTMz1Ku1A9nKZwOy4F2DzUSay8fxd9vJDuXj2bOtC8ANZMPB4vsLshFnw8UH2LPDSQyLuMPGm8Gx9rPJ3dOj2aYo+9bdU0vNgxMr3ho2489ixGvQu14ztHdjU9vNmIPKzbobtG1IQ8UekrvV8OmDzgynO82gotPFomkjv5p3E8ZJhOPMD25LxQfNE8RtQEPGvGKT32LMa7zEOQuyY1zLxdoT098DT7vJ4UhbtULke9luVvPQt/07w3DC69cIbwPJbl7zznLl88ksgTPQJ5t7xwG4o8qzg3vKH7UDsgdEu8EXZkvHWlQDzw/6Q7QBJKvaQLljxBtTQ8i5l+vO26ibzK1Xu7iYstPNlnwjvtJfA8O76ju8pqFb0peyG98aIPvT5v3zyRW7m9eLWFPK7p
 [...]
+    },
+    {
+      "object": "embedding",
+      "index": 2,
+      "embedding": 
"l6l7vD+CozxHBN48Q8NAvVoC2Lyzkfa8hpCKPMtPebzWtrw86Z2RvCCH1TwFhow8U4AdvXa8CD3ott88w2X4O4ilBj0VCe28E/RwvLN6UT0fWQu8PVYCPRTborp9WwG86UxwPF+ruzxNKoS79GYCPK66SD1pKaS9Xf6FvLUOOb1nlby5tfcTvWnBXbsvxUY9hHuOOmkppDvdiZi7Qi0wvXfRhDznN3S80wswPMRMKrzajeo8eivwPDFCibwLWxE95JKAOg4dQz3xNnG8ghXxO2FWSLy8eU49PO47vRAyP7xKlhy9UOw1Pfkg8rvACw29yosePYXA/TuL5iM8JsQgPXIqyrwSrwE9UITvO+6L5DuYkC28YKmSvDFZrjs78GQ8AfRNvbiiILvVn5e8veEUu2q/tLzi4Vq8prmivNY1qDkcRjg9TFr3u14VK72AAPW8jnoLvX6miTwTRZK90vSKPPf0
 [...]
+    }
+  ],
+  "model": "text-embedding-3-small",
+  "usage": {
+    "prompt_tokens": 12,
+    "total_tokens": 12
+  }
+}
diff --git 
a/integration-tests/openai/src/test/resources/mappings/embeddings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json
 
b/integration-tests/openai/src/test/resources/mappings/embeddings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json
new file mode 100644
index 0000000000..9157762066
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/mappings/embeddings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json
@@ -0,0 +1,46 @@
+{
+  "id" : "0c403d8e-3be7-4d3b-96ea-88a87cf6feb0",
+  "name" : "embeddings",
+  "request" : {
+    "url" : "/embeddings",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\"input\":[\"Text content 1\",\"Text content 
2\",\"Text content 
3\"],\"model\":\"text-embedding-3-small\",\"encoding_format\":\"base64\"}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "bodyFileName" : "embeddings-0c403d8e-3be7-4d3b-96ea-88a87cf6feb0.json",
+    "headers" : {
+      "Server" : "cloudflare",
+      "x-ratelimit-reset-tokens" : "0s",
+      "via" : "envoy-router-canary-674bd7dc9d-pblzt",
+      "set-cookie" : 
"__cf_bm=wTJNeihZ_2wGpdHdywwTETM.s.6ICs3Ch2ocqkz6hJM-1771859792.8486474-1.0.1.1-gqPYyz4YUZxCVF5WSF1dWZEsyBIPRZgc02i.dBJSYGTeFn5g5UrlfVOGLIkBFoMvx9S4QWnQKILr_zfr6E1WdRea6e88Z_pi3bMie_q.9nqsyY6te5Z9B0kW7CVAj3HH;
 HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 23 Feb 2026 
15:46:32 GMT",
+      "Content-Type" : "application/json",
+      "x-request-id" : "req_5650bbd7d08d4e34a67621bace84b87e",
+      "x-ratelimit-limit-tokens" : "1000000",
+      "openai-organization" : "user-nvrq0gduw4i0ooapnshoh6gw",
+      "CF-RAY" : "9d27af594976cce2-LHR",
+      "X-Content-Type-Options" : "nosniff",
+      "x-ratelimit-reset-requests" : "20ms",
+      "x-openai-proxy-wasm" : "v0.1",
+      "x-ratelimit-remaining-tokens" : "999990",
+      "cf-cache-status" : "DYNAMIC",
+      "x-ratelimit-remaining-requests" : "2999",
+      "strict-transport-security" : "max-age=31536000; includeSubDomains; 
preload",
+      "Date" : "Mon, 23 Feb 2026 15:16:32 GMT",
+      "access-control-expose-headers" : "X-Request-ID",
+      "access-control-allow-origin" : "*",
+      "x-ratelimit-limit-requests" : "3000",
+      "openai-version" : "2020-10-01",
+      "openai-processing-ms" : "71",
+      "openai-model" : "text-embedding-3-small",
+      "alt-svc" : "h3=\":443\"; ma=86400"
+    }
+  },
+  "uuid" : "0c403d8e-3be7-4d3b-96ea-88a87cf6feb0",
+  "persistent" : true,
+  "insertionIndex" : 12
+}
\ No newline at end of file
diff --git 
a/integration-tests/openai/src/test/resources/mappings/embeddings-241446f1-554b-4cbf-8e0e-860f799c18fa.json
 
b/integration-tests/openai/src/test/resources/mappings/embeddings-241446f1-554b-4cbf-8e0e-860f799c18fa.json
new file mode 100644
index 0000000000..cf6373b942
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/mappings/embeddings-241446f1-554b-4cbf-8e0e-860f799c18fa.json
@@ -0,0 +1,48 @@
+{
+  "id" : "241446f1-554b-4cbf-8e0e-860f799c18fa",
+  "name" : "embeddings",
+  "request" : {
+    "url" : "/embeddings",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\"input\":\"Simple 
text\",\"model\":\"text-embedding-3-small\",\"encoding_format\":\"base64\"}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      
\"object\": \"embedding\",\n      \"index\": 0,\n      \"embedding\": 
\"lM6vvGG2cDviC2k8Ss0pvet797wz7Dq965WlO2QuWLrVcCo8gSEcPAQiBbm5St28+f3avDgPEzwUVzE9WT4KPU/wAb02Ux+88I3MOk/wAT1AkKQ7tEGzPL5csrySNMK7NZcrPSR72jxZPgo8ID+nuwDDeDztLxO9iqKtPGe3Qr1/XP07kwG5vKyNmDz9Uzw9z4kGPRiCYTyKgCc8GJNkvYVdz7sCXea7vMJEPUdEP7t1MPu6LCcdPCK/5rwup1w9LfQTPbiGkT3oDDu92opXPF5YNz0Zi4w9ll9yvKkVMb3YzuO8tB8tPQJdZjxm6su84iUXPPx1wjw+5TM8wcvuPMsI9DxHZs
 [...]
+    "headers" : {
+      "Server" : "cloudflare",
+      "x-ratelimit-reset-tokens" : "0s",
+      "via" : "envoy-router-6d4fbbf5f4-h87qf",
+      "set-cookie" : 
"__cf_bm=9QGV3Kr7D_lhfWmRIp3Arh88JMYGTJjEOyacvk01pgo-1771859792.5809298-1.0.1.1-xFhKMV46g7LMfpj5qBosnPaxvpquUq36ylO3ifFMs0OPz7LnSS0XY0d6jSGg3PLSIshNScH9p0OvuyCFeDyzXrx7U00lT5bzm2wOZxCV3BY2NzAtaOQogzCzqK3uy2Qz;
 HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 23 Feb 2026 
15:46:32 GMT",
+      "Content-Type" : "application/json",
+      "x-request-id" : "req_603a13c1655345b09ae05d96e1cf3516",
+      "x-ratelimit-limit-tokens" : "1000000",
+      "openai-organization" : "user-nvrq0gduw4i0ooapnshoh6gw",
+      "CF-RAY" : "9d27af57ac3ce20e-LHR",
+      "X-Content-Type-Options" : "nosniff",
+      "x-ratelimit-reset-requests" : "20ms",
+      "x-openai-proxy-wasm" : "v0.1",
+      "x-ratelimit-remaining-tokens" : "999998",
+      "cf-cache-status" : "DYNAMIC",
+      "x-ratelimit-remaining-requests" : "2999",
+      "strict-transport-security" : "max-age=31536000; includeSubDomains; 
preload",
+      "Date" : "Mon, 23 Feb 2026 15:16:32 GMT",
+      "access-control-expose-headers" : "X-Request-ID",
+      "access-control-allow-origin" : "*",
+      "x-ratelimit-limit-requests" : "3000",
+      "openai-version" : "2020-10-01",
+      "openai-processing-ms" : "121",
+      "openai-model" : "text-embedding-3-small",
+      "alt-svc" : "h3=\":443\"; ma=86400"
+    }
+  },
+  "uuid" : "241446f1-554b-4cbf-8e0e-860f799c18fa",
+  "persistent" : true,
+  "scenarioName" : "scenario-1-embeddings",
+  "requiredScenarioState" : "scenario-1-embeddings-3",
+  "insertionIndex" : 13
+}
\ No newline at end of file
diff --git 
a/integration-tests/openai/src/test/resources/mappings/embeddings-74b74a7f-a14b-43ef-bbcd-6e492e07464b.json
 
b/integration-tests/openai/src/test/resources/mappings/embeddings-74b74a7f-a14b-43ef-bbcd-6e492e07464b.json
new file mode 100644
index 0000000000..2375116db3
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/mappings/embeddings-74b74a7f-a14b-43ef-bbcd-6e492e07464b.json
@@ -0,0 +1,46 @@
+{
+  "id" : "74b74a7f-a14b-43ef-bbcd-6e492e07464b",
+  "name" : "embeddings",
+  "request" : {
+    "url" : "/embeddings",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\"input\":\"Text content 
1\",\"model\":\"text-embedding-3-small\",\"encoding_format\":\"base64\"}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      
\"object\": \"embedding\",\n      \"index\": 0,\n      \"embedding\": 
\"cHRzum7SYTyeFNQ843xFvKodFL38ix+9ww8WPJ33e7z9IBg8sBMIPMSkDj3xj3g8hZpyvaqVtDyiWHc9O+FEO6KFjjx7cJo6yorDvG/vOT2V51U7AoITvOXDDryLNZ46TdA5PEseaTvwCj+8GD2LPH2aCz0XqJK9xjbhuuhyOb1SqVU8pbwYvbOyczzRmmk9sSAhvDrUK7zc8Vi61gskvf/CKTwa3xy8D+N1PAMHTTveK4m71FnTPAqC+rzaT8c8gd6uu1CPIz34GuW8ZjrcuqW8mLw2gEk98IJfvVXwHryH1CK99oiSPUDKn7zCat67KodIPUZFzTxyuzw8TDtBPDm3U7zSt8
 [...]
+    "headers" : {
+      "Server" : "cloudflare",
+      "x-ratelimit-reset-tokens" : "0s",
+      "via" : "envoy-router-6d4fbbf5f4-xh7mf",
+      "set-cookie" : 
"__cf_bm=agsveTlLZjPbXrq_xqJS5a58Cu8NSWR6arz0WMsgVXw-1771859793.2320967-1.0.1.1-igKLFcKr2oRva0T9CUYKw8G3P9ko9LAPbytcsn..XHYnDp0EIcRDkkM_BBrfI.BtGHJZGOjQCdrqv0YzxLf.rAWfql2Jig3N3PQIG8jCZVjx_6f28W.ov0erQJxBrRzo;
 HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 23 Feb 2026 
15:46:33 GMT",
+      "Content-Type" : "application/json",
+      "x-request-id" : "req_990030715e484f0d96dd862b8ef5f9a9",
+      "x-ratelimit-limit-tokens" : "1000000",
+      "openai-organization" : "user-nvrq0gduw4i0ooapnshoh6gw",
+      "CF-RAY" : "9d27af5bbda1eef9-LHR",
+      "X-Content-Type-Options" : "nosniff",
+      "x-ratelimit-reset-requests" : "20ms",
+      "x-openai-proxy-wasm" : "v0.1",
+      "x-ratelimit-remaining-tokens" : "999997",
+      "cf-cache-status" : "DYNAMIC",
+      "x-ratelimit-remaining-requests" : "2999",
+      "strict-transport-security" : "max-age=31536000; includeSubDomains; 
preload",
+      "Date" : "Mon, 23 Feb 2026 15:16:33 GMT",
+      "access-control-expose-headers" : "X-Request-ID",
+      "access-control-allow-origin" : "*",
+      "x-ratelimit-limit-requests" : "3000",
+      "openai-version" : "2020-10-01",
+      "openai-processing-ms" : "92",
+      "openai-model" : "text-embedding-3-small",
+      "alt-svc" : "h3=\":443\"; ma=86400"
+    }
+  },
+  "uuid" : "74b74a7f-a14b-43ef-bbcd-6e492e07464b",
+  "persistent" : true,
+  "insertionIndex" : 11
+}
\ No newline at end of file
diff --git 
a/integration-tests/openai/src/test/resources/mappings/embeddings-7d5105a3-8c4f-4e6c-977b-bc9d4157650c.json
 
b/integration-tests/openai/src/test/resources/mappings/embeddings-7d5105a3-8c4f-4e6c-977b-bc9d4157650c.json
new file mode 100644
index 0000000000..e8c6b140d3
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/mappings/embeddings-7d5105a3-8c4f-4e6c-977b-bc9d4157650c.json
@@ -0,0 +1,46 @@
+{
+  "id" : "7d5105a3-8c4f-4e6c-977b-bc9d4157650c",
+  "name" : "embeddings",
+  "request" : {
+    "url" : "/embeddings",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\"input\":\"Simple text extra 
content\",\"model\":\"text-embedding-3-small\",\"encoding_format\":\"base64\"}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      
\"object\": \"embedding\",\n      \"index\": 0,\n      \"embedding\": 
\"Y6ocPO78uTv3iJE8AHlWvEKgK71LLAO9SywDPZ2VWbuvEfY6IJY6uQm3ZDy1w7O8fmRHvef5gTwLj4g8F7tePIAC0Dlf5LA7lFdLPIUYez2xm9C8IJY6PE4GHTx4sc47P2QaPGWXqTwjb5m8QlJiOw7MVD2r6Ne8XalavILbLr1ohXE9HW7XvPWvMjxpwMc8KnGWPfgmGjzn+QE9FrojvRP1cjxpXZW8eGJKPS7puDqVps88wIscu8oZajxC7y89a/sdvHo7qT3LUwU8mbqEvM1V+7jcMRk9boYzvBUcm72/An299GCuu8/fVbx3xfy8mlgNPCNvmbvV4VK7kX2xPLecErsJaG
 [...]
+    "headers" : {
+      "Server" : "cloudflare",
+      "x-ratelimit-reset-tokens" : "0s",
+      "via" : "envoy-router-6d4fbbf5f4-h87qf",
+      "set-cookie" : 
"__cf_bm=j3afHXgDyDuo_nYGf_C9Ijwo37cSj3lbSb1rJ4ALpI0-1771859791.2498617-1.0.1.1-_SHQXn9j4cGNc1Q9TwghX9U4JiUSh0PU9H4nxRRKhgwDHyhHcm4SiviO.NCcUSutblUTilXUBs5vmh8NbWLlpgqPssRoyzudwP9LUMBfi1y6gutLQCfGGPomwGfJIUFt;
 HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 23 Feb 2026 
15:46:32 GMT",
+      "Content-Type" : "application/json",
+      "x-request-id" : "req_0e474f7645dc45dca9de6b7c086586b8",
+      "x-ratelimit-limit-tokens" : "1000000",
+      "openai-organization" : "user-nvrq0gduw4i0ooapnshoh6gw",
+      "CF-RAY" : "9d27af4f4fa441b8-LHR",
+      "X-Content-Type-Options" : "nosniff",
+      "x-ratelimit-reset-requests" : "20ms",
+      "x-openai-proxy-wasm" : "v0.1",
+      "x-ratelimit-remaining-tokens" : "999994",
+      "cf-cache-status" : "DYNAMIC",
+      "x-ratelimit-remaining-requests" : "2999",
+      "strict-transport-security" : "max-age=31536000; includeSubDomains; 
preload",
+      "Date" : "Mon, 23 Feb 2026 15:16:32 GMT",
+      "access-control-expose-headers" : "X-Request-ID",
+      "access-control-allow-origin" : "*",
+      "x-ratelimit-limit-requests" : "3000",
+      "openai-version" : "2020-10-01",
+      "openai-processing-ms" : "218",
+      "openai-model" : "text-embedding-3-small",
+      "alt-svc" : "h3=\":443\"; ma=86400"
+    }
+  },
+  "uuid" : "7d5105a3-8c4f-4e6c-977b-bc9d4157650c",
+  "persistent" : true,
+  "insertionIndex" : 15
+}
\ No newline at end of file
diff --git 
a/integration-tests/openai/src/test/resources/mappings/embeddings-bb9ce2dd-d285-491c-890a-f57a751b8155.json
 
b/integration-tests/openai/src/test/resources/mappings/embeddings-bb9ce2dd-d285-491c-890a-f57a751b8155.json
new file mode 100644
index 0000000000..69ff0ce4ad
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/mappings/embeddings-bb9ce2dd-d285-491c-890a-f57a751b8155.json
@@ -0,0 +1,46 @@
+{
+  "id" : "bb9ce2dd-d285-491c-890a-f57a751b8155",
+  "name" : "embeddings",
+  "request" : {
+    "url" : "/embeddings",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\"input\":\"Text content 
2\",\"model\":\"text-embedding-3-small\",\"encoding_format\":\"base64\"}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      
\"object\": \"embedding\",\n      \"index\": 0,\n      \"embedding\": 
\"w3MEvLo2njzTpkE8vbFJvVlNF73Pvju7bJ5qPMLQGbxNN7Y8ytX7O8NzBD1v5D868g4wvWFTMz1Ku1A9nKZwOy4F2DzUSay8fxd9vJDuXj2bOtC8ANZMPB4vsLshFnw8UH2LPDSQyLuMPGm8Gx9rPJ3dOj2aYo+9bdU0vNgxMr3ho2489ixGvQu14ztHdjU9vNmIPKzbobtG1IQ8UekrvV8OmDzgynO82gotPFomkjv5p3E8ZJhOPMD25LxQfNE8RtQEPGvGKT32LMa7zEOQuyY1zLxdoT098DT7vJ4UhbtULke9luVvPQt/07w3DC69cIbwPJbl7zznLl88ksgTPQJ5t7xwG4
 [...]
+    "headers" : {
+      "Server" : "cloudflare",
+      "x-ratelimit-reset-tokens" : "0s",
+      "via" : "envoy-router-6d4fbbf5f4-vcjdd",
+      "set-cookie" : 
"__cf_bm=5Nj_5s024UMWl1FJPsTuRF_Ng_NzUhUoOKQUox9mOxk-1771859793.461057-1.0.1.1-opZuApUwn3jdh0pak7MEQpf5BTn17fXwM9LUYLV.7M4M2IqNbkUUQTEYjtrQtQ3RuYbWDOWD7_.QL1JhMzPPQZtpGCGf7QQimRzu_tHfSNMyPuTf7s68RrBTZAxKMmgA;
 HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 23 Feb 2026 
15:46:33 GMT",
+      "Content-Type" : "application/json",
+      "x-request-id" : "req_7e7dd1f08de34439891af16809283903",
+      "x-ratelimit-limit-tokens" : "1000000",
+      "openai-organization" : "user-nvrq0gduw4i0ooapnshoh6gw",
+      "CF-RAY" : "9d27af5d19276382-LHR",
+      "X-Content-Type-Options" : "nosniff",
+      "x-ratelimit-reset-requests" : "20ms",
+      "x-openai-proxy-wasm" : "v0.1",
+      "x-ratelimit-remaining-tokens" : "999997",
+      "cf-cache-status" : "DYNAMIC",
+      "x-ratelimit-remaining-requests" : "2999",
+      "strict-transport-security" : "max-age=31536000; includeSubDomains; 
preload",
+      "Date" : "Mon, 23 Feb 2026 15:16:33 GMT",
+      "access-control-expose-headers" : "X-Request-ID",
+      "access-control-allow-origin" : "*",
+      "x-ratelimit-limit-requests" : "3000",
+      "openai-version" : "2020-10-01",
+      "openai-processing-ms" : "66",
+      "openai-model" : "text-embedding-3-small",
+      "alt-svc" : "h3=\":443\"; ma=86400"
+    }
+  },
+  "uuid" : "bb9ce2dd-d285-491c-890a-f57a751b8155",
+  "persistent" : true,
+  "insertionIndex" : 10
+}
\ No newline at end of file
diff --git 
a/integration-tests/openai/src/test/resources/mappings/embeddings-cdf3ca4a-680c-4d9b-a649-6af0e4b746ec.json
 
b/integration-tests/openai/src/test/resources/mappings/embeddings-cdf3ca4a-680c-4d9b-a649-6af0e4b746ec.json
new file mode 100644
index 0000000000..8df158b554
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/mappings/embeddings-cdf3ca4a-680c-4d9b-a649-6af0e4b746ec.json
@@ -0,0 +1,46 @@
+{
+  "id" : "cdf3ca4a-680c-4d9b-a649-6af0e4b746ec",
+  "name" : "embeddings",
+  "request" : {
+    "url" : "/embeddings",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\"input\":\"Text content 
3\",\"model\":\"text-embedding-3-small\",\"encoding_format\":\"base64\"}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      
\"object\": \"embedding\",\n      \"index\": 0,\n      \"embedding\": 
\"l6l7vD+CozxHBN48Q8NAvVoC2Lyzkfa8hpCKPMtPebzWtrw86Z2RvCCH1TwFhow8U4AdvXa8CD3ott88w2X4O4ilBj0VCe28E/RwvLN6UT0fWQu8PVYCPRTborp9WwG86UxwPF+ruzxNKoS79GYCPK66SD1pKaS9Xf6FvLUOOb1nlby5tfcTvWnBXbsvxUY9hHuOOmkppDvdiZi7Qi0wvXfRhDznN3S80wswPMRMKrzajeo8eivwPDFCibwLWxE95JKAOg4dQz3xNnG8ghXxO2FWSLy8eU49PO47vRAyP7xKlhy9UOw1Pfkg8rvACw29yosePYXA/TuL5iM8JsQgPXIqyrwSrw
 [...]
+    "headers" : {
+      "Server" : "cloudflare",
+      "x-ratelimit-reset-tokens" : "0s",
+      "via" : "envoy-router-5b4d74bdfd-6r7ll",
+      "set-cookie" : 
"__cf_bm=scZMYGkDGx3i..X09b0JX5VqUmuVKKIRIuhCvHfNmds-1771859793.6687763-1.0.1.1-0wn2eHJdF5BOTcCgRBG5edIUWr7rLIT92pJX5YS1npoO28hoYx2us7SMAu.SWR4SOVCcY1H9rZ0GxIiDiGMTD.89qRJUrvG9nGlRNe477lxzRsHrsHP_KPz4ldhlQrBX;
 HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 23 Feb 2026 
15:46:33 GMT",
+      "Content-Type" : "application/json",
+      "x-request-id" : "req_daee082d108040429ac2b0063fca99d8",
+      "x-ratelimit-limit-tokens" : "1000000",
+      "openai-organization" : "user-nvrq0gduw4i0ooapnshoh6gw",
+      "CF-RAY" : "9d27af5e6fde4e1a-LHR",
+      "X-Content-Type-Options" : "nosniff",
+      "x-ratelimit-reset-requests" : "20ms",
+      "x-openai-proxy-wasm" : "v0.1",
+      "x-ratelimit-remaining-tokens" : "999997",
+      "cf-cache-status" : "DYNAMIC",
+      "x-ratelimit-remaining-requests" : "2999",
+      "strict-transport-security" : "max-age=31536000; includeSubDomains; 
preload",
+      "Date" : "Mon, 23 Feb 2026 15:16:33 GMT",
+      "access-control-expose-headers" : "X-Request-ID",
+      "access-control-allow-origin" : "*",
+      "x-ratelimit-limit-requests" : "3000",
+      "openai-version" : "2020-10-01",
+      "openai-processing-ms" : "71",
+      "openai-model" : "text-embedding-3-small",
+      "alt-svc" : "h3=\":443\"; ma=86400"
+    }
+  },
+  "uuid" : "cdf3ca4a-680c-4d9b-a649-6af0e4b746ec",
+  "persistent" : true,
+  "insertionIndex" : 9
+}
\ No newline at end of file
diff --git 
a/integration-tests/openai/src/test/resources/mappings/embeddings-e04198c2-a03b-4c4b-96ac-dc2b6260c203.json
 
b/integration-tests/openai/src/test/resources/mappings/embeddings-e04198c2-a03b-4c4b-96ac-dc2b6260c203.json
new file mode 100644
index 0000000000..a1ad588718
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/mappings/embeddings-e04198c2-a03b-4c4b-96ac-dc2b6260c203.json
@@ -0,0 +1,49 @@
+{
+  "id" : "e04198c2-a03b-4c4b-96ac-dc2b6260c203",
+  "name" : "embeddings",
+  "request" : {
+    "url" : "/embeddings",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\"input\":\"Simple 
text\",\"model\":\"text-embedding-3-small\",\"encoding_format\":\"base64\"}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      
\"object\": \"embedding\",\n      \"index\": 0,\n      \"embedding\": 
\"nMqvvMcHbzsZY2g8KuopvVV297z75zq9ABWmO/eOTbqTKyo83rsbPJx7Ibm6Rd28CPnavLiOEzyqETE9OjsKPbv9Ab2sliC84nzEOrv9AT3h3qc7xp+zPAM4srypjMG7ODErPeqW2jw6Owo8o0apu4EfeTzmCxO9NV2tPAKzQr3luP07Zv24vPCqmDxUDjw9XEUGPYggYjwsvic8pK5kvYx5z7tW++a7l51EPen4Pbt+S/u66wIdPAsc57yd41w91vATPW+DkT375zq9v+1YPDtUNz3th4w9APhxvPbwML1LiOO8zBstPQscZzyug8u84mMXPORQwjxNQzQ8XsbuPEkD9DxpIM
 [...]
+    "headers" : {
+      "Server" : "cloudflare",
+      "x-ratelimit-reset-tokens" : "0s",
+      "via" : "envoy-router-6d4fbbf5f4-c65tj",
+      "set-cookie" : 
"__cf_bm=bgfhD3MAplsuLC91W1RO.HjAKOhXJvHw98I6giP7tV0-1771859792.3342004-1.0.1.1-d0Xr1Qs6MlgoaRNi5K2Xlb.cExQ1rWiPRaYW5c77oWPeuo6XlvgfKFE1AojoXMAps_p6wfxK8NfRB09lFKZblZ8cxd_iuQIhDebq_DVp_PSglP2aOyKfzyzhQ3JgbGnh;
 HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 23 Feb 2026 
15:46:32 GMT",
+      "Content-Type" : "application/json",
+      "x-request-id" : "req_05efd7161de54636b1e2501e46b9e309",
+      "x-ratelimit-limit-tokens" : "1000000",
+      "openai-organization" : "user-nvrq0gduw4i0ooapnshoh6gw",
+      "CF-RAY" : "9d27af561f55f578-LHR",
+      "X-Content-Type-Options" : "nosniff",
+      "x-ratelimit-reset-requests" : "20ms",
+      "x-openai-proxy-wasm" : "v0.1",
+      "x-ratelimit-remaining-tokens" : "999998",
+      "cf-cache-status" : "DYNAMIC",
+      "x-ratelimit-remaining-requests" : "2999",
+      "strict-transport-security" : "max-age=31536000; includeSubDomains; 
preload",
+      "Date" : "Mon, 23 Feb 2026 15:16:32 GMT",
+      "access-control-expose-headers" : "X-Request-ID",
+      "access-control-allow-origin" : "*",
+      "x-ratelimit-limit-requests" : "3000",
+      "openai-version" : "2020-10-01",
+      "openai-processing-ms" : "91",
+      "openai-model" : "text-embedding-3-small",
+      "alt-svc" : "h3=\":443\"; ma=86400"
+    }
+  },
+  "uuid" : "e04198c2-a03b-4c4b-96ac-dc2b6260c203",
+  "persistent" : true,
+  "scenarioName" : "scenario-1-embeddings",
+  "requiredScenarioState" : "scenario-1-embeddings-2",
+  "newScenarioState" : "scenario-1-embeddings-3",
+  "insertionIndex" : 14
+}
\ No newline at end of file
diff --git 
a/integration-tests/openai/src/test/resources/mappings/embeddings-ebc01e5b-f3fa-4fce-bd96-e6a7e2e49dee.json
 
b/integration-tests/openai/src/test/resources/mappings/embeddings-ebc01e5b-f3fa-4fce-bd96-e6a7e2e49dee.json
new file mode 100644
index 0000000000..11cbb2c2f3
--- /dev/null
+++ 
b/integration-tests/openai/src/test/resources/mappings/embeddings-ebc01e5b-f3fa-4fce-bd96-e6a7e2e49dee.json
@@ -0,0 +1,49 @@
+{
+  "id" : "ebc01e5b-f3fa-4fce-bd96-e6a7e2e49dee",
+  "name" : "embeddings",
+  "request" : {
+    "url" : "/embeddings",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : "{\"input\":\"Simple 
text\",\"model\":\"text-embedding-3-small\",\"encoding_format\":\"base64\"}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      
\"object\": \"embedding\",\n      \"index\": 0,\n      \"embedding\": 
\"lM6vvGG2cDviC2k8Ss0pvet797wz7Dq965WlO2QuWLrVcCo8gSEcPAQiBbm5St28+f3avDgPEzwUVzE9WT4KPU/wAb02Ux+88I3MOk/wAT1AkKQ7tEGzPL5csrySNMK7NZcrPSR72jxZPgo8ID+nuwDDeDztLxO9iqKtPGe3Qr1/XP07kwG5vKyNmDz9Uzw9z4kGPRiCYTyKgCc8GJNkvYVdz7sCXea7vMJEPUdEP7t1MPu6LCcdPCK/5rwup1w9LfQTPbiGkT3oDDu92opXPF5YNz0Zi4w9ll9yvKkVMb3YzuO8tB8tPQJdZjxm6su84iUXPPx1wjw+5TM8wcvuPMsI9DxHZs
 [...]
+    "headers" : {
+      "Server" : "cloudflare",
+      "x-ratelimit-reset-tokens" : "0s",
+      "via" : "envoy-router-5b4d74bdfd-bsf89",
+      "set-cookie" : 
"__cf_bm=gtzCq7O8bil3WA.lTj8I1ZFZz17O5x0h85hGpU653uU-1771859790.876889-1.0.1.1-WGELHZrqhnpt9JXZj6esGPWeneorXO78vAItbdvIkFm5RU021FqJAXxLjQ_46wf9pK02CZsHSEOyVhcpMOJWXUo9zHRWNSfxZXJAJ_LosT20DhYg61Xy9Dq.FHbSF2vZ;
 HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 23 Feb 2026 
15:46:30 GMT",
+      "Content-Type" : "application/json",
+      "x-request-id" : "req_61963e50c0944c1c8ac6ed77cfe7aa4f",
+      "x-ratelimit-limit-tokens" : "1000000",
+      "openai-organization" : "user-nvrq0gduw4i0ooapnshoh6gw",
+      "CF-RAY" : "9d27af4cf8eb654a-LHR",
+      "X-Content-Type-Options" : "nosniff",
+      "x-ratelimit-reset-requests" : "20ms",
+      "x-openai-proxy-wasm" : "v0.1",
+      "x-ratelimit-remaining-tokens" : "999998",
+      "cf-cache-status" : "DYNAMIC",
+      "x-ratelimit-remaining-requests" : "2999",
+      "strict-transport-security" : "max-age=31536000; includeSubDomains; 
preload",
+      "Date" : "Mon, 23 Feb 2026 15:16:30 GMT",
+      "access-control-expose-headers" : "X-Request-ID",
+      "access-control-allow-origin" : "*",
+      "x-ratelimit-limit-requests" : "3000",
+      "openai-version" : "2020-10-01",
+      "openai-processing-ms" : "63",
+      "openai-model" : "text-embedding-3-small",
+      "alt-svc" : "h3=\":443\"; ma=86400"
+    }
+  },
+  "uuid" : "ebc01e5b-f3fa-4fce-bd96-e6a7e2e49dee",
+  "persistent" : true,
+  "scenarioName" : "scenario-1-embeddings",
+  "requiredScenarioState" : "Started",
+  "newScenarioState" : "scenario-1-embeddings-2",
+  "insertionIndex" : 16
+}
\ No newline at end of file


Reply via email to