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 ca54185393 chore: use WireMock for docling integration tests to avoid 
20GB container pull in CI
ca54185393 is described below

commit ca54185393f05af2382e5721e4e09f5c4cdc3b51
Author: James Netherton <[email protected]>
AuthorDate: Mon Jun 22 11:22:59 2026 +0100

    chore: use WireMock for docling integration tests to avoid 20GB container 
pull in CI
    
    Replace the real docling-serve container in DoclingTestResource with
    WireMock record/playback. Default mode (CI) replays pre-recorded stubs
    with no container. Setting camel.quarkus.start-mock-backend=false uses
    the real container directly. Running with WIREMOCK_RECORD=true starts
    the container and captures stubs for future replays.
    
    Also use deterministic temp file names in DoclingResource so that
    recorded stubs match on replay.
    
    Co-authored-by: Claude Sonnet 4.6 <[email protected]>
---
 integration-tests/docling/README.adoc              | 68 ++++++++++++++++++++
 integration-tests/docling/Readme.md                | 19 ------
 integration-tests/docling/pom.xml                  |  5 ++
 .../component/docling/it/DoclingResource.java      |  9 +--
 .../quarkus/component/docling/it/DoclingTest.java  |  3 +-
 .../component/docling/it/DoclingTestResource.java  | 75 ++++++++++++----------
 ...ource-38a52645-d65e-481e-9960-7c5e82a43fb7.json |  1 +
 ...ource-7498499d-94c1-4bb9-9ab1-9806dac2b1b3.json |  1 +
 ...ource-2a9620bf-c5e9-47e1-966d-cb427fb2821a.json | 25 ++++++++
 ...ource-38a52645-d65e-481e-9960-7c5e82a43fb7.json | 25 ++++++++
 ...ource-4c400318-5fb5-49cd-87f5-5843693def91.json | 25 ++++++++
 ...ource-79d3fa48-8d37-4101-8cc8-ecd983baa7c1.json | 25 ++++++++
 ...ource-7a964535-2b50-4ba9-8d42-60edadc21ca5.json | 25 ++++++++
 ...ource-937ef1ac-68e8-40b9-8d44-23b60c623ba4.json | 25 ++++++++
 ...ource-956a305a-5041-4164-894d-a423791b0f1f.json | 25 ++++++++
 ...ource-b0edcd89-4eee-47ff-98ef-49e8da37b255.json | 25 ++++++++
 ...ource-c7b805bb-b565-4dd1-bf9c-4f73dc4f822b.json | 25 ++++++++
 ...ource-ed0b894d-8b9c-4cf3-8818-15e724b08efb.json | 25 ++++++++
 ...ource-f98ead23-9586-458a-b63e-6790cdcd3623.json | 25 ++++++++
 ...async-8084456f-3946-4601-a9bf-a9aa61962149.json | 25 ++++++++
 ...async-d24e11df-614f-4f00-9c21-4d781ae4a4dc.json | 25 ++++++++
 ...async-d9115eaa-2f66-4d77-9098-1a31d06e5387.json | 25 ++++++++
 ...169f8-22837b94-3f2f-48af-bce2-5cddf7eff1f2.json | 20 ++++++
 ...db756-b1da40b4-6ce8-4ce7-bca2-de2a08a4b8b7.json | 20 ++++++
 ...f2a9e-0121ab9c-4a5d-4232-9df1-cb99c368e678.json | 20 ++++++
 ...169f8-4a7192f1-ae07-4d02-bfb9-62c01749112c.json | 29 +++++++++
 ...169f8-96d14f30-3a42-4b6f-a6f6-8b3f74d5d0e6.json | 30 +++++++++
 ...db756-e66e62ba-ce9f-4038-b3cd-1d16666e95c6.json | 27 ++++++++
 ...f2a9e-3bdfc119-76d8-4132-b73e-802a90187b78.json | 29 +++++++++
 ...f2a9e-96f6dccc-50f7-4c94-965f-0442cf070edb.json | 30 +++++++++
 30 files changed, 679 insertions(+), 57 deletions(-)

diff --git a/integration-tests/docling/README.adoc 
b/integration-tests/docling/README.adoc
new file mode 100644
index 0000000000..338be9cc9c
--- /dev/null
+++ b/integration-tests/docling/README.adoc
@@ -0,0 +1,68 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+== Camel Quarkus Docling Integration Tests
+
+By default, the Docling integration tests use WireMock to stub docling-serve 
API interactions.
+This avoids pulling the `quay.io/docling-project/docling-serve` container 
image (which exceeds 20 GB) in CI.
+
+=== Running against a real docling-serve container
+
+To run the tests against the real docling-serve container, set:
+
+[source,shell]
+----
+-Dcamel.quarkus.start-mock-backend=false
+----
+
+The test resource will start the container automatically.
+
+=== Refreshing WireMock stub recordings
+
+If the stub recordings need updating (e.g. after a docling-serve version 
bump), remove the existing files from
+`src/test/resources/mappings` and `src/test/resources/__files`, then run the 
tests with a real container and
+recording enabled:
+
+[source,shell]
+----
+-Dcamel.quarkus.start-mock-backend=false -Dwiremock.record=true
+----
+
+Or via environment variable:
+
+[source,shell]
+----
+export WIREMOCK_RECORD=true
+----
+
+Commit the newly generated stub files alongside any version bump.
+
+=== CLI mode test
+
+One test (`convertToJsonWithCLI`) exercises the component's local CLI mode, 
which invokes the `docling` binary
+directly rather than calling the HTTP API. This test requires docling to be 
installed locally, for example with:
+
+[source,shell]
+----
+pip install docling
+----
+
+To activate this test, set:
+
+[source,shell]
+----
+-Ddocling.test.enabled=true
+----
diff --git a/integration-tests/docling/Readme.md 
b/integration-tests/docling/Readme.md
deleted file mode 100644
index d5984b1a38..0000000000
--- a/integration-tests/docling/Readme.md
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-One test requires to have docling installed, for instance with `pip install 
docling`. It is to test the CLI mode of the component. To activate this test, 
you need to set the property `docling.test.enabled` to `true`.
diff --git a/integration-tests/docling/pom.xml 
b/integration-tests/docling/pom.xml
index df3812ecd3..38557ec5b5 100644
--- a/integration-tests/docling/pom.xml
+++ b/integration-tests/docling/pom.xml
@@ -64,6 +64,11 @@
             <artifactId>testcontainers</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-integration-wiremock-support</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <profiles>
diff --git 
a/integration-tests/docling/src/main/java/org/apache/camel/quarkus/component/docling/it/DoclingResource.java
 
b/integration-tests/docling/src/main/java/org/apache/camel/quarkus/component/docling/it/DoclingResource.java
index d5eccbb55a..184f54ffcb 100644
--- 
a/integration-tests/docling/src/main/java/org/apache/camel/quarkus/component/docling/it/DoclingResource.java
+++ 
b/integration-tests/docling/src/main/java/org/apache/camel/quarkus/component/docling/it/DoclingResource.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
 import java.util.List;
 
@@ -76,7 +77,7 @@ public class DoclingResource {
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
     public Response extractText(String documentContent) throws IOException {
-        java.nio.file.Path tempFile = Files.createTempFile("docling-test", 
".md");
+        var tempFile = Paths.get(System.getProperty("java.io.tmpdir"), 
"docling-test.md");
         Files.writeString(tempFile, documentContent);
         try {
             String result = producerTemplate.requestBody("direct:extractText", 
tempFile.toString(), String.class);
@@ -150,7 +151,7 @@ public class DoclingResource {
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.APPLICATION_JSON)
     public DocumentMetadata extractMetadata(String documentContent) throws 
IOException {
-        java.nio.file.Path tempFile = Files.createTempFile("docling-test", 
".md");
+        var tempFile = Paths.get(System.getProperty("java.io.tmpdir"), 
"docling-test.md");
         Files.writeString(tempFile, documentContent);
         try {
             return producerTemplate.requestBody("direct:extractMetadata", 
tempFile.toString(),
@@ -165,7 +166,7 @@ public class DoclingResource {
     @Produces(MediaType.APPLICATION_JSON)
     public DocumentMetadata extractMetadataFromPdf() throws IOException {
         try (InputStream is = 
getClass().getClassLoader().getResourceAsStream("multi_page.pdf")) {
-            java.nio.file.Path tempFile = 
Files.createTempFile("docling-test-multi_page", ".pdf");
+            var tempFile = Paths.get(System.getProperty("java.io.tmpdir"), 
"docling-test.pdf");
             Files.copy(is, tempFile.toAbsolutePath(), 
StandardCopyOption.REPLACE_EXISTING);
             try {
                 return producerTemplate.requestBody("direct:extractMetadata", 
tempFile.toString(),
@@ -202,7 +203,7 @@ public class DoclingResource {
 
     private Response convert(String documentContent, String endpointUri, 
String logErrorMessage, Class<?> resutType)
             throws IOException {
-        java.nio.file.Path tempFile = Files.createTempFile("docling-test", 
".md");
+        var tempFile = Paths.get(System.getProperty("java.io.tmpdir"), 
"docling-test.md");
         Files.writeString(tempFile, documentContent);
         try {
             Object result = producerTemplate.requestBody(endpointUri, 
tempFile.toString(), resutType);
diff --git 
a/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTest.java
 
b/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTest.java
index f7e890ca56..fb1364a474 100644
--- 
a/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTest.java
+++ 
b/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTest.java
@@ -218,8 +218,9 @@ class DoclingTest {
 
     private List<String> createTestFiles() throws IOException {
         List<String> filePaths = new ArrayList<>();
+        Path tempDir = Files.createTempDirectory("docling-batch-test");
         for (int i = 0; i < 5; i++) {
-            Path filepath = Files.createTempFile("test-docling-batch-" + i + 
"-", ".md");
+            Path filepath = tempDir.resolve("test-docling-batch-" + i + ".md");
             Files.writeString(filepath,
                     """
                             # Test doc %s
diff --git 
a/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTestResource.java
 
b/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTestResource.java
index 42c3345e8c..c47d69f34a 100644
--- 
a/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTestResource.java
+++ 
b/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTestResource.java
@@ -17,62 +17,71 @@
 package org.apache.camel.quarkus.component.docling.it;
 
 import java.time.Duration;
-import java.util.HashMap;
 import java.util.Map;
 
-import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
+import org.apache.camel.quarkus.test.mock.backend.MockBackendUtils;
+import 
org.apache.camel.quarkus.test.wiremock.WireMockTestResourceLifecycleManager;
 import org.eclipse.microprofile.config.ConfigProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 
-public class DoclingTestResource implements 
QuarkusTestResourceLifecycleManager {
+public class DoclingTestResource extends WireMockTestResourceLifecycleManager {
 
-    private static final Logger LOG = 
LoggerFactory.getLogger(DoclingTestResource.class);
-
-    private static final String CONTAINER_IMAGE = 
ConfigProvider.getConfig().getValue("docling.container.image", String.class);
+    private static final String CONTAINER_IMAGE = 
ConfigProvider.getConfig().getValue("docling.container.image",
+            String.class);
     private static final int CONTAINER_PORT = 5001;
 
     private GenericContainer<?> container;
+    private String containerUrl;
 
     @Override
     public Map<String, String> start() {
-        try {
-            LOG.info("Starting Docling Serve container: {}", CONTAINER_IMAGE);
-
-            container = new GenericContainer<>(CONTAINER_IMAGE)
-                    .withExposedPorts(CONTAINER_PORT)
-                    .waitingFor(Wait.forListeningPorts(CONTAINER_PORT))
-                    .withStartupTimeout(Duration.ofMinutes(3));
-
-            container.start();
-
-            String doclingUrl = String.format("http://%s:%d";,
-                    container.getHost(),
-                    container.getMappedPort(CONTAINER_PORT));
-
-            LOG.info("Docling Serve container started at: {}", doclingUrl);
+        // The real container is needed when recording stubs or when mock 
backend is disabled
+        if (!isMockingEnabled() || isWireMockRecordingEnabled()) {
+            startContainer();
+        }
 
-            Map<String, String> config = new HashMap<>();
-            config.put("docling.serve.url", doclingUrl);
+        Map<String, String> properties = super.start();
 
-            return config;
-        } catch (Exception e) {
-            LOG.error("Failed to start Docling Serve container", e);
-            throw new RuntimeException("Failed to start Docling Serve 
container", e);
-        }
+        // In mock/record mode, point the app at WireMock; otherwise point 
directly at the container
+        String doclingUrl = properties.getOrDefault("wiremock.url", 
containerUrl);
+        properties.put("docling.serve.url", doclingUrl);
+        return properties;
     }
 
     @Override
     public void stop() {
         try {
+            super.stop();
+        } finally {
             if (container != null) {
-                LOG.info("Stopping Docling Serve container");
                 container.stop();
             }
-        } catch (Exception e) {
-            LOG.warn("Error stopping Docling Serve container", e);
         }
     }
+
+    @Override
+    protected String getRecordTargetBaseUrl() {
+        return containerUrl;
+    }
+
+    @Override
+    protected boolean isMockingEnabled() {
+        return MockBackendUtils.startMockBackend();
+    }
+
+    private void startContainer() {
+        LOG.infof("Starting Docling Serve container: %s", CONTAINER_IMAGE);
+        container = new GenericContainer<>(CONTAINER_IMAGE)
+                .withExposedPorts(CONTAINER_PORT)
+                .waitingFor(Wait.forListeningPorts(CONTAINER_PORT))
+                .withStartupTimeout(Duration.ofMinutes(3));
+        container.start();
+        containerUrl = "http://%s:%d".formatted(container.getHost(), 
container.getMappedPort(CONTAINER_PORT));
+        LOG.infof("Docling Serve container started at: %s", containerUrl);
+    }
+
+    private static boolean isWireMockRecordingEnabled() {
+        return "true".equals(System.getProperty("wiremock.record", 
System.getenv("WIREMOCK_RECORD")));
+    }
 }
diff --git 
a/integration-tests/docling/src/test/resources/__files/v1_convert_source-38a52645-d65e-481e-9960-7c5e82a43fb7.json
 
b/integration-tests/docling/src/test/resources/__files/v1_convert_source-38a52645-d65e-481e-9960-7c5e82a43fb7.json
new file mode 100644
index 0000000000..631e7f8ffd
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/__files/v1_convert_source-38a52645-d65e-481e-9960-7c5e82a43fb7.json
@@ -0,0 +1 @@
+{"document":{"filename":"docling-test.pdf","md_content":null,"json_content":{"schema_name":"DoclingDocument","version":"1.8.0","name":"docling-test","origin":{"mimetype":"application/pdf","binary_hash":11164038604600048225,"filename":"docling-test.pdf","uri":null},"furniture":{"self_ref":"#/furniture","parent":null,"children":[],"content_layer":"furniture","meta":null,"name":"_root_","label":"unspecified"},"body":{"self_ref":"#/body","parent":null,"children":[{"$ref":"#/texts/0"},{"$ref"
 [...]
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/__files/v1_convert_source-7498499d-94c1-4bb9-9ab1-9806dac2b1b3.json
 
b/integration-tests/docling/src/test/resources/__files/v1_convert_source-7498499d-94c1-4bb9-9ab1-9806dac2b1b3.json
new file mode 100644
index 0000000000..252f1ba008
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/__files/v1_convert_source-7498499d-94c1-4bb9-9ab1-9806dac2b1b3.json
@@ -0,0 +1 @@
+{"document":{"filename":"docling-test-multi_page14197308053349780543.pdf","md_content":null,"json_content":{"schema_name":"DoclingDocument","version":"1.8.0","name":"docling-test-multi_page14197308053349780543","origin":{"mimetype":"application/pdf","binary_hash":11164038604600048225,"filename":"docling-test-multi_page14197308053349780543.pdf","uri":null},"furniture":{"self_ref":"#/furniture","parent":null,"children":[],"content_layer":"furniture","meta":null,"name":"_root_","label":"uns
 [...]
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-2a9620bf-c5e9-47e1-966d-cb427fb2821a.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-2a9620bf-c5e9-47e1-966d-cb427fb2821a.json
new file mode 100644
index 0000000000..5537dc4f1a
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-2a9620bf-c5e9-47e1-966d-cb427fb2821a.json
@@ -0,0 +1,25 @@
+{
+  "id" : "2a9620bf-c5e9-47e1-966d-cb427fb2821a",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"RG9jdW1lbnQgd2l0aCB0ZXh0IHRvIGV4dHJhY3Qu\",\"filename\":\"docling-test.md\"}],\"options\":{\"to_formats\":[\"text\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"docling-test.md\",\"md_content\":null,\"json_content\":null,\"html_content\":null,\"text_content\":\"Document
 with text to 
extract.\",\"doctags_content\":null},\"status\":\"success\",\"errors\":[],\"processing_time\":0.002222454990260303,\"timings\":{}}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:24 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "2a9620bf-c5e9-47e1-966d-cb427fb2821a",
+  "persistent" : true,
+  "insertionIndex" : 3
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-38a52645-d65e-481e-9960-7c5e82a43fb7.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-38a52645-d65e-481e-9960-7c5e82a43fb7.json
new file mode 100644
index 0000000000..59ee13a380
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-38a52645-d65e-481e-9960-7c5e82a43fb7.json
@@ -0,0 +1,25 @@
+{
+  "id" : "38a52645-d65e-481e-9960-7c5e82a43fb7",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"JVBERi0xLjMKJcTl8uXrp/Og0MTGCjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA0Mjg4ID4+CnN0cmVhbQp4Ab1b2XLcxhV9x1cAJoUB6QGEBjBYRG0WLceWFduKmDiJmYeUyiknJaViK/mk/GduL+fcxmAoYihXSlUiptF9++5bN35OX6U/p/cv35v0zfu0dv/ev5Ghumo6/9s/9F1d1WP65l367Crd+Ynyp63rtJu69Opdcv/qqklNevW39Ie0yD45S0uBkRYnZxZWWpzeyzfXRfhxfYbX55+Goc0WQ6eb8vT8k7Nkb321uR+m1pxpwgjebJowgF1bPzUpwkNaWCh/Sa9epM+vHO0rCTX1tKuGobfUJlfvUqG289QW2Vl69Y8jwVm+tcM0
 [...]
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "bodyFileName" : 
"v1_convert_source-38a52645-d65e-481e-9960-7c5e82a43fb7.json",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:14 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "38a52645-d65e-481e-9960-7c5e82a43fb7",
+  "persistent" : true,
+  "insertionIndex" : 13
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-4c400318-5fb5-49cd-87f5-5843693def91.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-4c400318-5fb5-49cd-87f5-5843693def91.json
new file mode 100644
index 0000000000..c721072231
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-4c400318-5fb5-49cd-87f5-5843693def91.json
@@ -0,0 +1,25 @@
+{
+  "id" : "4c400318-5fb5-49cd-87f5-5843693def91",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBUZXN0IGRvYyAxCgpjb250ZW50IDE=\",\"filename\":\"test-docling-batch-1.md\"}],\"options\":{\"to_formats\":[\"md\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"test-docling-batch-1.md\",\"md_content\":\"# 
Test doc 1\\n\\ncontent 
1\",\"json_content\":null,\"html_content\":null,\"text_content\":null,\"doctags_content\":null},\"status\":\"success\",\"errors\":[],\"processing_time\":0.0027867469761986285,\"timings\":{}}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:06 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "4c400318-5fb5-49cd-87f5-5843693def91",
+  "persistent" : true,
+  "insertionIndex" : 20
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-79d3fa48-8d37-4101-8cc8-ecd983baa7c1.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-79d3fa48-8d37-4101-8cc8-ecd983baa7c1.json
new file mode 100644
index 0000000000..3490375838
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-79d3fa48-8d37-4101-8cc8-ecd983baa7c1.json
@@ -0,0 +1,25 @@
+{
+  "id" : "79d3fa48-8d37-4101-8cc8-ecd983baa7c1",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBUZXN0IERvY3VtZW50ClRoaXMgaXMgYSB0ZXN0IGRvY3VtZW50IGZvciBKU09OIGNvbnZlcnNpb24u\",\"filename\":\"docling-test.md\"}],\"options\":{\"to_formats\":[\"json\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"docling-test.md\",\"md_content\":null,\"json_content\":{\"schema_name\":\"DoclingDocument\",\"version\":\"1.8.0\",\"name\":\"docling-test\",\"origin\":{\"mimetype\":\"text/markdown\",\"binary_hash\":18426078865746213900,\"filename\":\"docling-test.md\",\"uri\":null},\"furniture\":{\"self_ref\":\"#/furniture\",\"parent\":null,\"children\":[],\"content_layer\":\"furniture\",\"meta\":null,\"name\":\"_root_\",\"label\":\"unspecified\"},\"body\":{\"
 [...]
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:28 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "79d3fa48-8d37-4101-8cc8-ecd983baa7c1",
+  "persistent" : true,
+  "insertionIndex" : 1
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-7a964535-2b50-4ba9-8d42-60edadc21ca5.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-7a964535-2b50-4ba9-8d42-60edadc21ca5.json
new file mode 100644
index 0000000000..cad0466c02
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-7a964535-2b50-4ba9-8d42-60edadc21ca5.json
@@ -0,0 +1,25 @@
+{
+  "id" : "7a964535-2b50-4ba9-8d42-60edadc21ca5",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBUZXN0IGRvYyAwCgpjb250ZW50IDA=\",\"filename\":\"test-docling-batch-0.md\"}],\"options\":{\"to_formats\":[\"md\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"test-docling-batch-0.md\",\"md_content\":\"# 
Test doc 0\\n\\ncontent 
0\",\"json_content\":null,\"html_content\":null,\"text_content\":null,\"doctags_content\":null},\"status\":\"success\",\"errors\":[],\"processing_time\":1.348430849990109,\"timings\":{}}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:06 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "7a964535-2b50-4ba9-8d42-60edadc21ca5",
+  "persistent" : true,
+  "insertionIndex" : 19
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-937ef1ac-68e8-40b9-8d44-23b60c623ba4.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-937ef1ac-68e8-40b9-8d44-23b60c623ba4.json
new file mode 100644
index 0000000000..ce1a5ab2e7
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-937ef1ac-68e8-40b9-8d44-23b60c623ba4.json
@@ -0,0 +1,25 @@
+{
+  "id" : "937ef1ac-68e8-40b9-8d44-23b60c623ba4",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBUZXN0IERvY3VtZW50CgpTb21lIGNvbnRlbnQgZm9yIG1ldGFkYXRhIGV4dHJhY3Rpb24uCg==\",\"filename\":\"docling-test.md\"}],\"options\":{\"to_formats\":[\"json\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"docling-test.md\",\"md_content\":null,\"json_content\":{\"schema_name\":\"DoclingDocument\",\"version\":\"1.8.0\",\"name\":\"docling-test\",\"origin\":{\"mimetype\":\"text/markdown\",\"binary_hash\":547542221629127811,\"filename\":\"docling-test.md\",\"uri\":null},\"furniture\":{\"self_ref\":\"#/furniture\",\"parent\":null,\"children\":[],\"content_layer\":\"furniture\",\"meta\":null,\"name\":\"_root_\",\"label\":\"unspecified\"},\"body\":{\"se
 [...]
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:22 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "937ef1ac-68e8-40b9-8d44-23b60c623ba4",
+  "persistent" : true,
+  "insertionIndex" : 4
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-956a305a-5041-4164-894d-a423791b0f1f.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-956a305a-5041-4164-894d-a423791b0f1f.json
new file mode 100644
index 0000000000..7a3c62cd04
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-956a305a-5041-4164-894d-a423791b0f1f.json
@@ -0,0 +1,25 @@
+{
+  "id" : "956a305a-5041-4164-894d-a423791b0f1f",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBUZXN0IGRvYyA0Cgpjb250ZW50IDQ=\",\"filename\":\"test-docling-batch-4.md\"}],\"options\":{\"to_formats\":[\"md\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"test-docling-batch-4.md\",\"md_content\":\"# 
Test doc 4\\n\\ncontent 
4\",\"json_content\":null,\"html_content\":null,\"text_content\":null,\"doctags_content\":null},\"status\":\"success\",\"errors\":[],\"processing_time\":0.0029435800097417086,\"timings\":{}}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:10 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "956a305a-5041-4164-894d-a423791b0f1f",
+  "persistent" : true,
+  "insertionIndex" : 18
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-b0edcd89-4eee-47ff-98ef-49e8da37b255.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-b0edcd89-4eee-47ff-98ef-49e8da37b255.json
new file mode 100644
index 0000000000..bc69bacfac
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-b0edcd89-4eee-47ff-98ef-49e8da37b255.json
@@ -0,0 +1,25 @@
+{
+  "id" : "b0edcd89-4eee-47ff-98ef-49e8da37b255",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBUZXN0IGRvYyAzCgpjb250ZW50IDM=\",\"filename\":\"test-docling-batch-3.md\"}],\"options\":{\"to_formats\":[\"md\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"test-docling-batch-3.md\",\"md_content\":\"# 
Test doc 3\\n\\ncontent 
3\",\"json_content\":null,\"html_content\":null,\"text_content\":null,\"doctags_content\":null},\"status\":\"success\",\"errors\":[],\"processing_time\":0.0013078739866614342,\"timings\":{}}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:06 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "b0edcd89-4eee-47ff-98ef-49e8da37b255",
+  "persistent" : true,
+  "insertionIndex" : 22
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-c7b805bb-b565-4dd1-bf9c-4f73dc4f822b.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-c7b805bb-b565-4dd1-bf9c-4f73dc4f822b.json
new file mode 100644
index 0000000000..bc41379b33
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-c7b805bb-b565-4dd1-bf9c-4f73dc4f822b.json
@@ -0,0 +1,25 @@
+{
+  "id" : "c7b805bb-b565-4dd1-bf9c-4f73dc4f822b",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBUZXN0IGRvYyAyCgpjb250ZW50IDI=\",\"filename\":\"test-docling-batch-2.md\"}],\"options\":{\"to_formats\":[\"md\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"test-docling-batch-2.md\",\"md_content\":\"# 
Test doc 2\\n\\ncontent 
2\",\"json_content\":null,\"html_content\":null,\"text_content\":null,\"doctags_content\":null},\"status\":\"success\",\"errors\":[],\"processing_time\":0.001299081981414929,\"timings\":{}}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:06 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "c7b805bb-b565-4dd1-bf9c-4f73dc4f822b",
+  "persistent" : true,
+  "insertionIndex" : 21
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-ed0b894d-8b9c-4cf3-8818-15e724b08efb.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-ed0b894d-8b9c-4cf3-8818-15e724b08efb.json
new file mode 100644
index 0000000000..8b13116c37
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-ed0b894d-8b9c-4cf3-8818-15e724b08efb.json
@@ -0,0 +1,25 @@
+{
+  "id" : "ed0b894d-8b9c-4cf3-8818-15e724b08efb",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBUZXN0IERvY3VtZW50ClRoaXMgaXMgYSB0ZXN0Lg==\",\"filename\":\"docling-test.md\"}],\"options\":{\"to_formats\":[\"html\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"docling-test.md\",\"md_content\":null,\"json_content\":null,\"html_content\":\"<!DOCTYPE
 html>\\n<html>\\n<head>\\n<meta 
charset=\\\"UTF-8\\\"/>\\n<title>docling-test</title>\\n<meta 
name=\\\"generator\\\" content=\\\"Docling HTML Serializer\\\"/>\\n<style>\\n   
 html {\\n        background-color: #f5f5f5;\\n        font-family: Arial, 
sans-serif;\\n        line-height: 1.6;\\n    }\\n    body {\\n        
max-width: 800px;\\n        margin: 0 a [...]
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:26 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "ed0b894d-8b9c-4cf3-8818-15e724b08efb",
+  "persistent" : true,
+  "insertionIndex" : 2
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source-f98ead23-9586-458a-b63e-6790cdcd3623.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-f98ead23-9586-458a-b63e-6790cdcd3623.json
new file mode 100644
index 0000000000..a8f5e8667b
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source-f98ead23-9586-458a-b63e-6790cdcd3623.json
@@ -0,0 +1,25 @@
+{
+  "id" : "f98ead23-9586-458a-b63e-6790cdcd3623",
+  "name" : "v1_convert_source",
+  "request" : {
+    "url" : "/v1/convert/source",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"VGhpcyBpcyBhIHRlc3QgZG9jdW1lbnQgZm9yIGNvbnZlcnNpb24u\",\"filename\":\"docling-test.md\"}],\"options\":{\"to_formats\":[\"md\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"docling-test.md\",\"md_content\":\"This is a 
test document for 
conversion.\",\"json_content\":null,\"html_content\":null,\"text_content\":null,\"doctags_content\":null},\"status\":\"success\",\"errors\":[],\"processing_time\":0.001090165984351188,\"timings\":{}}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:18 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "f98ead23-9586-458a-b63e-6790cdcd3623",
+  "persistent" : true,
+  "insertionIndex" : 9
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-8084456f-3946-4601-a9bf-a9aa61962149.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-8084456f-3946-4601-a9bf-a9aa61962149.json
new file mode 100644
index 0000000000..0c8d4f2862
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-8084456f-3946-4601-a9bf-a9aa61962149.json
@@ -0,0 +1,25 @@
+{
+  "id" : "8084456f-3946-4601-a9bf-a9aa61962149",
+  "name" : "v1_convert_source_async",
+  "request" : {
+    "url" : "/v1/convert/source/async",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBBc3luYyBIVE1MIFRlc3QKVGhpcyBpcyBhIHRlc3QgZm9yIGFzeW5jIEhUTUwgY29udmVyc2lvbi4=\",\"filename\":\"docling-test.md\"}],\"options\":{\"to_formats\":[\"html\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"task_id\":\"4555d9b2-63b9-4510-8d8c-0184f14169f8\",\"task_type\":\"convert\",\"task_status\":\"pending\",\"task_position\":1,\"task_meta\":null}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:12 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "8084456f-3946-4601-a9bf-a9aa61962149",
+  "persistent" : true,
+  "insertionIndex" : 17
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-d24e11df-614f-4f00-9c21-4d781ae4a4dc.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-d24e11df-614f-4f00-9c21-4d781ae4a4dc.json
new file mode 100644
index 0000000000..3ecc9d9c44
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-d24e11df-614f-4f00-9c21-4d781ae4a4dc.json
@@ -0,0 +1,25 @@
+{
+  "id" : "d24e11df-614f-4f00-9c21-4d781ae4a4dc",
+  "name" : "v1_convert_source_async",
+  "request" : {
+    "url" : "/v1/convert/source/async",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBBc3luYyBUZXN0ClRoaXMgaXMgYSB0ZXN0IGZvciBhc3luYyBtYXJrZG93biBjb252ZXJzaW9uLg==\",\"filename\":\"docling-test.md\"}],\"options\":{\"to_formats\":[\"md\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"task_id\":\"b89061f3-3601-4f4a-8d21-c977f2bf2a9e\",\"task_type\":\"convert\",\"task_status\":\"pending\",\"task_position\":1,\"task_meta\":null}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:20 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "d24e11df-614f-4f00-9c21-4d781ae4a4dc",
+  "persistent" : true,
+  "insertionIndex" : 8
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-d9115eaa-2f66-4d77-9098-1a31d06e5387.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-d9115eaa-2f66-4d77-9098-1a31d06e5387.json
new file mode 100644
index 0000000000..2f2dd93bf1
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_convert_source_async-d9115eaa-2f66-4d77-9098-1a31d06e5387.json
@@ -0,0 +1,25 @@
+{
+  "id" : "d9115eaa-2f66-4d77-9098-1a31d06e5387",
+  "name" : "v1_convert_source_async",
+  "request" : {
+    "url" : "/v1/convert/source/async",
+    "method" : "POST",
+    "bodyPatterns" : [ {
+      "equalToJson" : 
"{\"sources\":[{\"kind\":\"file\",\"base64_string\":\"IyBBc3luYyBKU09OIFRlc3QKVGhpcyBpcyBhIHRlc3QgZm9yIGFzeW5jIEpTT04gY29udmVyc2lvbi4=\",\"filename\":\"docling-test.md\"}],\"options\":{\"to_formats\":[\"json\"]}}",
+      "ignoreArrayOrder" : true,
+      "ignoreExtraElements" : true
+    } ]
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"task_id\":\"7ebf4405-8bd5-49d8-bb4a-07094f3db756\",\"task_type\":\"convert\",\"task_status\":\"pending\",\"task_position\":1,\"task_meta\":null}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:18 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "d9115eaa-2f66-4d77-9098-1a31d06e5387",
+  "persistent" : true,
+  "insertionIndex" : 12
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_result_4555d9b2-63b9-4510-8d8c-0184f14169f8-22837b94-3f2f-48af-bce2-5cddf7eff1f2.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_result_4555d9b2-63b9-4510-8d8c-0184f14169f8-22837b94-3f2f-48af-bce2-5cddf7eff1f2.json
new file mode 100644
index 0000000000..a503b4adac
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_result_4555d9b2-63b9-4510-8d8c-0184f14169f8-22837b94-3f2f-48af-bce2-5cddf7eff1f2.json
@@ -0,0 +1,20 @@
+{
+  "id" : "22837b94-3f2f-48af-bce2-5cddf7eff1f2",
+  "name" : "v1_result_4555d9b2-63b9-4510-8d8c-0184f14169f8",
+  "request" : {
+    "url" : "/v1/result/4555d9b2-63b9-4510-8d8c-0184f14169f8",
+    "method" : "GET"
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"docling-test.md\",\"md_content\":null,\"json_content\":null,\"html_content\":\"<!DOCTYPE
 html>\\n<html>\\n<head>\\n<meta 
charset=\\\"UTF-8\\\"/>\\n<title>docling-test</title>\\n<meta 
name=\\\"generator\\\" content=\\\"Docling HTML Serializer\\\"/>\\n<style>\\n   
 html {\\n        background-color: #f5f5f5;\\n        font-family: Arial, 
sans-serif;\\n        line-height: 1.6;\\n    }\\n    body {\\n        
max-width: 800px;\\n        margin: 0 a [...]
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:14 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "22837b94-3f2f-48af-bce2-5cddf7eff1f2",
+  "persistent" : true,
+  "insertionIndex" : 14
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_result_7ebf4405-8bd5-49d8-bb4a-07094f3db756-b1da40b4-6ce8-4ce7-bca2-de2a08a4b8b7.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_result_7ebf4405-8bd5-49d8-bb4a-07094f3db756-b1da40b4-6ce8-4ce7-bca2-de2a08a4b8b7.json
new file mode 100644
index 0000000000..31778830d1
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_result_7ebf4405-8bd5-49d8-bb4a-07094f3db756-b1da40b4-6ce8-4ce7-bca2-de2a08a4b8b7.json
@@ -0,0 +1,20 @@
+{
+  "id" : "b1da40b4-6ce8-4ce7-bca2-de2a08a4b8b7",
+  "name" : "v1_result_7ebf4405-8bd5-49d8-bb4a-07094f3db756",
+  "request" : {
+    "url" : "/v1/result/7ebf4405-8bd5-49d8-bb4a-07094f3db756",
+    "method" : "GET"
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"docling-test.md\",\"md_content\":null,\"json_content\":{\"schema_name\":\"DoclingDocument\",\"version\":\"1.8.0\",\"name\":\"docling-test\",\"origin\":{\"mimetype\":\"text/markdown\",\"binary_hash\":9071087674415960371,\"filename\":\"docling-test.md\",\"uri\":null},\"furniture\":{\"self_ref\":\"#/furniture\",\"parent\":null,\"children\":[],\"content_layer\":\"furniture\",\"meta\":null,\"name\":\"_root_\",\"label\":\"unspecified\"},\"body\":{\"s
 [...]
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:18 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "b1da40b4-6ce8-4ce7-bca2-de2a08a4b8b7",
+  "persistent" : true,
+  "insertionIndex" : 10
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_result_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-0121ab9c-4a5d-4232-9df1-cb99c368e678.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_result_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-0121ab9c-4a5d-4232-9df1-cb99c368e678.json
new file mode 100644
index 0000000000..0faa9c6a4c
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_result_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-0121ab9c-4a5d-4232-9df1-cb99c368e678.json
@@ -0,0 +1,20 @@
+{
+  "id" : "0121ab9c-4a5d-4232-9df1-cb99c368e678",
+  "name" : "v1_result_b89061f3-3601-4f4a-8d21-c977f2bf2a9e",
+  "request" : {
+    "url" : "/v1/result/b89061f3-3601-4f4a-8d21-c977f2bf2a9e",
+    "method" : "GET"
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"document\":{\"filename\":\"docling-test.md\",\"md_content\":\"# Async 
Test\\n\\nThis is a test for async markdown 
conversion.\",\"json_content\":null,\"html_content\":null,\"text_content\":null,\"doctags_content\":null},\"status\":\"success\",\"errors\":[],\"processing_time\":0.006008327007293701,\"timings\":{}}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:22 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "0121ab9c-4a5d-4232-9df1-cb99c368e678",
+  "persistent" : true,
+  "insertionIndex" : 5
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_status_poll_4555d9b2-63b9-4510-8d8c-0184f14169f8-4a7192f1-ae07-4d02-bfb9-62c01749112c.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_4555d9b2-63b9-4510-8d8c-0184f14169f8-4a7192f1-ae07-4d02-bfb9-62c01749112c.json
new file mode 100644
index 0000000000..ed72006163
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_4555d9b2-63b9-4510-8d8c-0184f14169f8-4a7192f1-ae07-4d02-bfb9-62c01749112c.json
@@ -0,0 +1,29 @@
+{
+  "id" : "4a7192f1-ae07-4d02-bfb9-62c01749112c",
+  "name" : "v1_status_poll_4555d9b2-63b9-4510-8d8c-0184f14169f8",
+  "request" : {
+    "urlPath" : "/v1/status/poll/4555d9b2-63b9-4510-8d8c-0184f14169f8",
+    "method" : "GET",
+    "queryParameters" : {
+      "wait" : {
+        "hasExactly" : [ {
+          "equalTo" : "0"
+        } ]
+      }
+    }
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"task_id\":\"4555d9b2-63b9-4510-8d8c-0184f14169f8\",\"task_type\":\"convert\",\"task_status\":\"success\",\"task_position\":null,\"task_meta\":null}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:14 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "4a7192f1-ae07-4d02-bfb9-62c01749112c",
+  "persistent" : true,
+  "scenarioName" : 
"scenario-2-v1-status-poll-4555d9b2-63b9-4510-8d8c-0184f14169f8",
+  "requiredScenarioState" : 
"scenario-2-v1-status-poll-4555d9b2-63b9-4510-8d8c-0184f14169f8-2",
+  "insertionIndex" : 15
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_status_poll_4555d9b2-63b9-4510-8d8c-0184f14169f8-96d14f30-3a42-4b6f-a6f6-8b3f74d5d0e6.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_4555d9b2-63b9-4510-8d8c-0184f14169f8-96d14f30-3a42-4b6f-a6f6-8b3f74d5d0e6.json
new file mode 100644
index 0000000000..c3c19d5ff7
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_4555d9b2-63b9-4510-8d8c-0184f14169f8-96d14f30-3a42-4b6f-a6f6-8b3f74d5d0e6.json
@@ -0,0 +1,30 @@
+{
+  "id" : "96d14f30-3a42-4b6f-a6f6-8b3f74d5d0e6",
+  "name" : "v1_status_poll_4555d9b2-63b9-4510-8d8c-0184f14169f8",
+  "request" : {
+    "urlPath" : "/v1/status/poll/4555d9b2-63b9-4510-8d8c-0184f14169f8",
+    "method" : "GET",
+    "queryParameters" : {
+      "wait" : {
+        "hasExactly" : [ {
+          "equalTo" : "0"
+        } ]
+      }
+    }
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"task_id\":\"4555d9b2-63b9-4510-8d8c-0184f14169f8\",\"task_type\":\"convert\",\"task_status\":\"started\",\"task_position\":null,\"task_meta\":null}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:12 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "96d14f30-3a42-4b6f-a6f6-8b3f74d5d0e6",
+  "persistent" : true,
+  "scenarioName" : 
"scenario-2-v1-status-poll-4555d9b2-63b9-4510-8d8c-0184f14169f8",
+  "requiredScenarioState" : "Started",
+  "newScenarioState" : 
"scenario-2-v1-status-poll-4555d9b2-63b9-4510-8d8c-0184f14169f8-2",
+  "insertionIndex" : 16
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_status_poll_7ebf4405-8bd5-49d8-bb4a-07094f3db756-e66e62ba-ce9f-4038-b3cd-1d16666e95c6.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_7ebf4405-8bd5-49d8-bb4a-07094f3db756-e66e62ba-ce9f-4038-b3cd-1d16666e95c6.json
new file mode 100644
index 0000000000..f5896a8ebd
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_7ebf4405-8bd5-49d8-bb4a-07094f3db756-e66e62ba-ce9f-4038-b3cd-1d16666e95c6.json
@@ -0,0 +1,27 @@
+{
+  "id" : "e66e62ba-ce9f-4038-b3cd-1d16666e95c6",
+  "name" : "v1_status_poll_7ebf4405-8bd5-49d8-bb4a-07094f3db756",
+  "request" : {
+    "urlPath" : "/v1/status/poll/7ebf4405-8bd5-49d8-bb4a-07094f3db756",
+    "method" : "GET",
+    "queryParameters" : {
+      "wait" : {
+        "hasExactly" : [ {
+          "equalTo" : "0"
+        } ]
+      }
+    }
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"task_id\":\"7ebf4405-8bd5-49d8-bb4a-07094f3db756\",\"task_type\":\"convert\",\"task_status\":\"success\",\"task_position\":null,\"task_meta\":null}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:18 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "e66e62ba-ce9f-4038-b3cd-1d16666e95c6",
+  "persistent" : true,
+  "insertionIndex" : 11
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_status_poll_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-3bdfc119-76d8-4132-b73e-802a90187b78.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-3bdfc119-76d8-4132-b73e-802a90187b78.json
new file mode 100644
index 0000000000..1a4cf8d00e
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-3bdfc119-76d8-4132-b73e-802a90187b78.json
@@ -0,0 +1,29 @@
+{
+  "id" : "3bdfc119-76d8-4132-b73e-802a90187b78",
+  "name" : "v1_status_poll_b89061f3-3601-4f4a-8d21-c977f2bf2a9e",
+  "request" : {
+    "urlPath" : "/v1/status/poll/b89061f3-3601-4f4a-8d21-c977f2bf2a9e",
+    "method" : "GET",
+    "queryParameters" : {
+      "wait" : {
+        "hasExactly" : [ {
+          "equalTo" : "0"
+        } ]
+      }
+    }
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"task_id\":\"b89061f3-3601-4f4a-8d21-c977f2bf2a9e\",\"task_type\":\"convert\",\"task_status\":\"success\",\"task_position\":null,\"task_meta\":null}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:22 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "3bdfc119-76d8-4132-b73e-802a90187b78",
+  "persistent" : true,
+  "scenarioName" : 
"scenario-1-v1-status-poll-b89061f3-3601-4f4a-8d21-c977f2bf2a9e",
+  "requiredScenarioState" : 
"scenario-1-v1-status-poll-b89061f3-3601-4f4a-8d21-c977f2bf2a9e-2",
+  "insertionIndex" : 6
+}
\ No newline at end of file
diff --git 
a/integration-tests/docling/src/test/resources/mappings/v1_status_poll_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-96f6dccc-50f7-4c94-965f-0442cf070edb.json
 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-96f6dccc-50f7-4c94-965f-0442cf070edb.json
new file mode 100644
index 0000000000..e64e8dd1eb
--- /dev/null
+++ 
b/integration-tests/docling/src/test/resources/mappings/v1_status_poll_b89061f3-3601-4f4a-8d21-c977f2bf2a9e-96f6dccc-50f7-4c94-965f-0442cf070edb.json
@@ -0,0 +1,30 @@
+{
+  "id" : "96f6dccc-50f7-4c94-965f-0442cf070edb",
+  "name" : "v1_status_poll_b89061f3-3601-4f4a-8d21-c977f2bf2a9e",
+  "request" : {
+    "urlPath" : "/v1/status/poll/b89061f3-3601-4f4a-8d21-c977f2bf2a9e",
+    "method" : "GET",
+    "queryParameters" : {
+      "wait" : {
+        "hasExactly" : [ {
+          "equalTo" : "0"
+        } ]
+      }
+    }
+  },
+  "response" : {
+    "status" : 200,
+    "body" : 
"{\"task_id\":\"b89061f3-3601-4f4a-8d21-c977f2bf2a9e\",\"task_type\":\"convert\",\"task_status\":\"started\",\"task_position\":null,\"task_meta\":null}",
+    "headers" : {
+      "date" : "Fri, 19 Jun 2026 09:51:20 GMT",
+      "server" : "uvicorn",
+      "content-type" : "application/json"
+    }
+  },
+  "uuid" : "96f6dccc-50f7-4c94-965f-0442cf070edb",
+  "persistent" : true,
+  "scenarioName" : 
"scenario-1-v1-status-poll-b89061f3-3601-4f4a-8d21-c977f2bf2a9e",
+  "requiredScenarioState" : "Started",
+  "newScenarioState" : 
"scenario-1-v1-status-poll-b89061f3-3601-4f4a-8d21-c977f2bf2a9e-2",
+  "insertionIndex" : 7
+}
\ No newline at end of file

Reply via email to