changeset 1182:c977cc347e8c Orthanc-1.12.9

Orthanc 1.12.9
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 11 Aug 2025 19:35:21 +0200
parents c66e6148dd0e
children 72a35cce8f76
files OpenAPI/orthanc-openapi.json Sphinx/source/developers/creating-plugins.rst Sphinx/source/developers/db-versioning.rst Sphinx/source/faq/main-dicom-tags.rst Sphinx/source/faq/orthanc-storage.rst Sphinx/source/faq/scalability.rst Sphinx/source/plugins/java.rst Sphinx/source/plugins/python.rst Sphinx/source/users/advanced-rest.rst Sphinx/source/users/anonymization.rst Sphinx/source/users/configuration.rst Sphinx/source/users/debian-packages.rst Sphinx/source/users/docker.rst Sphinx/source/users/docker.rst.BAK Sphinx/source/users/man-orthanc.txt Sphinx/source/users/rest.rst
diffstat 16 files changed, 148 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/OpenAPI/orthanc-openapi.json	Tue Jul 22 11:17:58 2025 +0200
+++ b/OpenAPI/orthanc-openapi.json	Mon Aug 11 19:35:21 2025 +0200
@@ -2,7 +2,7 @@
    "info" : {
       "description" : "This is the full documentation of the [REST API](https://orthanc.uclouvain.be/book/users/rest.html) of Orthanc.<p>This reference is automatically generated from the source code of Orthanc. A [shorter cheat sheet](https://orthanc.uclouvain.be/book/users/rest-cheatsheet.html) is part of the Orthanc Book.<p>An earlier, manually crafted version from August 2019, is [still available](2019-08-orthanc-openapi.html), but is not up-to-date anymore ([source](https://groups.google.com/g/orthanc-users/c/NUiJTEICSl8/m/xKeqMrbqAAAJ)).",
       "title" : "Orthanc API",
-      "version" : "1.12.8"
+      "version" : "1.12.9"
    },
    "openapi" : "3.0.0",
    "paths" : {
@@ -4740,6 +4740,10 @@
                            "Timeout" : {
                               "description" : "Timeout for the C-GET command, in seconds",
                               "type" : "number"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -4832,6 +4836,10 @@
                            "Timeout" : {
                               "description" : "Timeout for the C-MOVE command, in seconds",
                               "type" : "number"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -5084,6 +5092,10 @@
                            "Timeout" : {
                               "description" : "Timeout for the C-STORE command, in seconds",
                               "type" : "number"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -5441,6 +5453,10 @@
                            "Transcode" : {
                               "description" : "Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -5575,6 +5591,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -6972,6 +6992,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -7283,6 +7307,10 @@
                            "Transcode" : {
                               "description" : "Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -8057,6 +8085,10 @@
                            "Transcode" : {
                               "description" : "Transcode to the provided DICOM transfer syntax before the actual sending",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -8816,6 +8848,10 @@
                            "Timeout" : {
                               "description" : "Timeout for the C-MOVE command, in seconds",
                               "type" : "number"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -9024,6 +9060,10 @@
                            "Timeout" : {
                               "description" : "Timeout for the C-MOVE command, in seconds",
                               "type" : "number"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -9338,6 +9378,10 @@
                            "Transcode" : {
                               "description" : "Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -9472,6 +9516,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -10723,6 +10771,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -11034,6 +11086,10 @@
                            "Transcode" : {
                               "description" : "Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -12198,6 +12254,10 @@
                            "Transcode" : {
                               "description" : "Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -12332,6 +12392,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -13729,6 +13793,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -13815,6 +13883,10 @@
                            "Synchronous" : {
                               "description" : "If `true`, run the job in synchronous mode, which means that the HTTP answer will directly contain the result of the job. This is the default, easy behavior, but it is *not* desirable for long jobs, as it might lead to network timeouts.",
                               "type" : "boolean"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -14120,6 +14192,10 @@
                            "Transcode" : {
                               "description" : "Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -14787,6 +14863,10 @@
                            "Synchronous" : {
                               "description" : "If `true`, run the job in synchronous mode, which means that the HTTP answer will directly contain the result of the job. This is the default, easy behavior, but it is *not* desirable for long jobs, as it might lead to network timeouts.",
                               "type" : "boolean"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -14951,7 +15031,7 @@
                               "StorageAreaPlugin" : null,
                               "StorageCompression" : false,
                               "UserMetadata" : {},
-                              "Version" : "1.12.8"
+                              "Version" : "1.12.9"
                            },
                            "properties" : {
                               "ApiVersion" : {
@@ -15285,6 +15365,10 @@
                            "Transcode" : {
                               "description" : "Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -15477,6 +15561,10 @@
                            "Transcode" : {
                               "description" : "Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "User data that will travel along with the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -15676,6 +15764,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -15880,6 +15972,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -16013,6 +16109,10 @@
                            "Transcode" : {
                               "description" : "If present, the DICOM files in the archive will be transcoded to the provided transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html",
                               "type" : "string"
+                           },
+                           "UserData" : {
+                              "description" : "In asynchronous mode, user data that will be attached to the job.",
+                              "type" : "object"
                            }
                         }
                      }
@@ -16813,7 +16913,7 @@
                "200" : {
                   "content" : {
                      "text/plain" : {
-                        "example" : "orthanc_count_instances 2552 1749916381731\northanc_count_patients 8 1749916381731\northanc_count_series 26 1749916381731\northanc_count_studies 8 1749916381731\northanc_dicom_cache_count 1 1749916381731\northanc_dicom_cache_size_mb 0.502557755 1749916381731\northanc_disk_size_mb 983.235352 1749916381731\northanc_jobs_completed 0 1749916381731\northanc_jobs_failed 0 1749916381731\northanc_jobs_pending 0 1749916381731\northanc_jobs_running 0 1749916381731\northanc_jobs_success 0 1749916381731\northanc_last_change 6551 1749916381731\northanc_rest_api_active_requests 1 1749916381731\northanc_rest_api_duration_ms 658 1749916380195\northanc_storage_cache_count 417 1749916381731\northanc_storage_cache_hit_count 567 1749916381503\northanc_storage_cache_miss_count 417 1749916380002\northanc_storage_cache_size_mb 34.7660789 1749916381731\northanc_storage_read_bytes 36454876 1749916380002\northanc_storage_read_duration_ms 0 1749916374668\northanc_uncompressed_size_mb 983.235352 1749916381731\northanc_up_time_s 168 1749916381731\n"
+                        "example" : "orthanc_available_dicom_threads 4 1754933485145\northanc_available_http_threads_count 49 1754933683397\northanc_count_instances 2552 1754933691628\northanc_count_patients 8 1754933691628\northanc_count_series 26 1754933691628\northanc_count_studies 8 1754933691628\northanc_dicom_cache_count 1 1754933691628\northanc_dicom_cache_size_mb 0.502557755 1754933691628\northanc_disk_size_mb 983.235352 1754933691628\northanc_jobs_completed 0 1754933691628\northanc_jobs_failed 0 1754933691628\northanc_jobs_pending 0 1754933691628\northanc_jobs_running 0 1754933691628\northanc_jobs_success 0 1754933691628\northanc_last_change 6551 1754933691628\northanc_rest_api_active_requests 1 1754933683397\northanc_rest_api_duration_ms 650 1754933690143\northanc_storage_cache_count 400 1754933691629\northanc_storage_cache_hit_count 407 1754933691400\northanc_storage_cache_miss_count 400 1754933689980\northanc_storage_cache_size_mb 3.17403412 1754933691628\northanc_storage_read_bytes 3328216 1754933689980\northanc_storage_read_duration_ms 0 1754933683841\northanc_uncompressed_size_mb 983.235352 1754933691628\northanc_up_time_s 206 1754933691628\n"
                      }
                   },
                   "description" : ""
@@ -16832,7 +16932,7 @@
                "200" : {
                   "content" : {
                      "text/plain" : {
-                        "example" : "20250614T155301",
+                        "example" : "20250811T173451",
                         "schema" : {
                            "description" : "The UTC time"
                         }
@@ -16854,7 +16954,7 @@
                "200" : {
                   "content" : {
                      "text/plain" : {
-                        "example" : "20250614T155301",
+                        "example" : "20250811T173451",
                         "schema" : {
                            "description" : "The local time"
                         }
--- a/Sphinx/source/developers/creating-plugins.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/developers/creating-plugins.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -15,7 +15,7 @@
 Native Orthanc plugins must use the `plugin SDK
 <https://orthanc.uclouvain.be/sdk/>`__ whose interface is available as a
 `C header
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__.
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__.
 As a consequence, an Orthanc plugin will typically be written using C
 or C++, although it is also possible to create native plugins using
 languages that feature compatibility with C headers and with `FFI of
@@ -103,7 +103,7 @@
 that is part of the Orthanc source distribution:
 
 * `Plugins/Include/orthanc/OrthancCPlugin.h
-  <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
+  <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 
 `Online documentation <https://orthanc.uclouvain.be/sdk/>`__ for this C
 header is available, as generated by `Doxygen
@@ -117,8 +117,8 @@
 ``HAS_ORTHANC_EXCEPTION`` is set to ``0``:
 
 * `Plugins/Samples/Common/OrthanPluginCppWrapper.h
-  <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__
+  <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__
 * `Plugins/Samples/Common/OrthanPluginCppWrapper.cpp
-  <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__
+  <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__
 * `Plugins/Samples/Common/OrthanPluginException.h
-  <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Plugins/Samples/Common/OrthancPluginException.h>`__
+  <https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Plugins/Samples/Common/OrthancPluginException.h>`__
--- a/Sphinx/source/developers/db-versioning.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/developers/db-versioning.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -26,7 +26,7 @@
 Version                           DB v2   DB v3   DB v4   DB v5   DB v6
 ===============================   =====   =====   =====   =====   =====
 Mainline                                  u       u       u       x
-Orthanc 0.9.5 - Orthanc 1.12.8            u       u       u       x
+Orthanc 0.9.5 - Orthanc 1.12.9            u       u       u       x
 Orthanc 0.8.5 - Orthanc 0.9.4             u       u       x
 Orthanc 0.7.3 - Orthanc 0.8.4             u       x
 Orthanc 0.4.0 - Orthanc 0.7.2             x
--- a/Sphinx/source/faq/main-dicom-tags.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/faq/main-dicom-tags.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -132,7 +132,7 @@
 ``SeriesDescription`` at ``Study`` level will lead to unpredictible results.
 Orthanc will **not** check that the tags levels are adequate. 
 
-*Note:* As of Orthanc 1.12.8, it is not possible to store Private DICOM tags
+*Note:* As of Orthanc 1.12.9, it is not possible to store Private DICOM tags
 in the ``ExtraMainDicomTags``.
 
 
--- a/Sphinx/source/faq/orthanc-storage.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/faq/orthanc-storage.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -105,9 +105,9 @@
 The database schema is kept as simple as possible, e.g, for SQLite,
 the schema can be found in the following two files of the source code of Orthanc:
 `PrepareDatabase.sql
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Sources/Database/PrepareDatabase.sql>`__
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Sources/Database/PrepareDatabase.sql>`__
 and `InstallTrackAttachmentsSize.sql
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Sources/Database/InstallTrackAttachmentsSize.sql>`__.
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Sources/Database/InstallTrackAttachmentsSize.sql>`__.
 
 
 Direct access
--- a/Sphinx/source/faq/scalability.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/faq/scalability.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -53,7 +53,7 @@
 Here is a generic setup that should provide best performance in the
 presence of large databases:
 
-* Make sure to use the latest release of Orthanc (1.12.8 at the time of
+* Make sure to use the latest release of Orthanc (1.12.9 at the time of
   writing) running on a GNU/Linux distribution.
 
 * We suggest to use the latest release of the :ref:`PostgreSQL plugin
--- a/Sphinx/source/plugins/java.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/plugins/java.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -18,7 +18,7 @@
 Java applications for Orthanc have access to more features and a more
 consistent SDK than :ref:`Lua scripts <lua>`. The largest part of the
 Java API is automatically generated from the `Orthanc plugin SDK in C
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 using the `Clang <https://en.wikipedia.org/wiki/Clang>`__ compiler
 front-end.
 
--- a/Sphinx/source/plugins/python.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/plugins/python.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -30,7 +30,7 @@
 Python plugins have access to more features and a more consistent SDK
 than :ref:`Lua scripts <lua>`. The largest part of the Python API is
 automatically generated from the `Orthanc plugin SDK in C
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 using the `Clang <https://en.wikipedia.org/wiki/Clang>`__ compiler
 front-end.
 
@@ -351,7 +351,7 @@
 call ``RestApiPostAfterPlugin`` to call the REST API from plugins.
 
 
-Note however, that, as of Orthanc 1.12.8, the Orthanc plugin SDK
+Note however, that, as of Orthanc 1.12.9, the Orthanc plugin SDK
 does not support multiple plugins implementing the same route.
 Orthanc will actually accept e.g a Python plugin that overrides
 a DICOMWeb route but it is impossible to tell which route
@@ -940,7 +940,7 @@
 
 * The call to ``orthanc.ExtendOrthancExplorer()`` installs the button
   with JavaScript code that uses the `jQuery Mobile framework
-  <https://demos.jquerymobile.com/1.1.0/>`__ (as of Orthanc 1.12.8,
+  <https://demos.jquerymobile.com/1.1.0/>`__ (as of Orthanc 1.12.9,
   version 1.1.0 of jQuery Mobile is used in Orthanc Explorer).
 
 * If clicking on the button, a GET call to the REST API is made to
--- a/Sphinx/source/users/advanced-rest.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/users/advanced-rest.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -89,7 +89,7 @@
 the ``MediaArchiveSize`` configuration that defines the maximum
 number of ZIP/media archives that are maintained by Orthanc, as a 
 response to the asynchronous creation of archive. As of Orthanc
-1.12.8, this value is ``1`` by default.
+1.12.9, this value is ``1`` by default.
 
 .. _jobs-monitoring:
 
@@ -139,7 +139,7 @@
   ``ErrorCode`` and ``ErrorDescription`` fields for more information.
 * ``Paused``: The job has been paused.
 * ``Retry``: The job has failed internally, and has been scheduled for
-  re-submission after a delay. As of Orthanc 1.12.8, this feature is not
+  re-submission after a delay. As of Orthanc 1.12.9, this feature is not
   used by any type of job.
 
 In order to wait for the end of an asynchronous call, the caller will
@@ -148,7 +148,7 @@
 ``Failure``.
 
 Note that the `integration tests of Orthanc
-<https://orthanc.uclouvain.be/hg/orthanc-tests/file/Orthanc-1.12.8/Tests/Toolbox.py>`__
+<https://orthanc.uclouvain.be/hg/orthanc-tests/file/Orthanc-1.12.9/Tests/Toolbox.py>`__
 give an example about how to monitor a job in Python using the REST
 API (cf. function ``MonitorJob()``).
 
@@ -221,7 +221,7 @@
 Note how we retrieve the content of the archive by accessing the
 ``archive`` output of the job (check out the virtual method
 ``IJob::GetOutput()`` from the `source code
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Sources/ServerJobs/ArchiveJob.cpp>`__
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Sources/ServerJobs/ArchiveJob.cpp>`__
 of Orthanc).
 
 Here is the corresponding sequence of commands to generate a DICOMDIR
@@ -230,7 +230,7 @@
   $ curl http://localhost:8042/studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988/media -d '{"Asynchronous":true}'
   $ curl http://localhost:8042/jobs/6332be8a-0052-44fb-8cc2-ac959aeccad9/archive > a.zip
 
-As of Orthanc 1.12.8, only the creation of a ZIP or a DICOMDIR archive
+As of Orthanc 1.12.9, only the creation of a ZIP or a DICOMDIR archive
 produces such "outputs".
 
 
--- a/Sphinx/source/users/anonymization.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/users/anonymization.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -80,7 +80,7 @@
 **Implementation:** Internally, the setup of the anonymization
 profiles can be found in the methods ``SetupAnonymizationXXX()`` of
 the class ``Orthanc::DicomModification`` (cf. `source code
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancFramework/Sources/DicomParsing/DicomModification.cpp>`__).
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancFramework/Sources/DicomParsing/DicomModification.cpp>`__).
 
 
 Modification of a Single Instance
--- a/Sphinx/source/users/configuration.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/users/configuration.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -8,7 +8,7 @@
 Configuring Orthanc simply consists in providing a configuration file.
 Orthanc has numerous configuration that are documented in the `default
 configuration file
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Resources/Configuration.json>`_. This
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Resources/Configuration.json>`_. This
 file is in the `JSON <https://en.wikipedia.org/wiki/JSON>`_ file
 format. You can generate this file file with the following call::
 
--- a/Sphinx/source/users/debian-packages.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/users/debian-packages.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -108,11 +108,11 @@
 This can be done with this sequence of commands::
 
   $ sudo service orthanc stop
-  $ sudo wget https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc/1.12.8/Orthanc --output-document /usr/sbin/Orthanc
+  $ sudo wget https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc/1.12.9/Orthanc --output-document /usr/sbin/Orthanc
   $ sudo chmod +x /usr/sbin/Orthanc
   $ sudo rm -f /usr/share/orthanc/plugins/*.so
-  $ sudo wget https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc/1.12.8/libServeFolders.so --output-document /usr/share/orthanc/plugins/libServeFolders.so
-  $ sudo wget https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc/1.12.8/libModalityWorklists.so --output-document /usr/share/orthanc/plugins/libModalityWorklists.so
+  $ sudo wget https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc/1.12.9/libServeFolders.so --output-document /usr/share/orthanc/plugins/libServeFolders.so
+  $ sudo wget https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc/1.12.9/libModalityWorklists.so --output-document /usr/share/orthanc/plugins/libModalityWorklists.so
   $
   $ sudo wget https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc-dicomweb/1.20/libOrthancDicomWeb.so --output-document /usr/share/orthanc/plugins/libOrthancDicomWeb.so
   $ ...
--- a/Sphinx/source/users/docker.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/users/docker.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -97,13 +97,13 @@
 If more stability is required, you can select the official release of
 Orthanc to be run::
 
-  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.8
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.9
 
 Passing additional command-line options (e.g. to make Orthanc verbose)
 can be done as follows (note the ``/etc/orthanc`` option that is
 required for Orthanc to find its configuration files)::
 
-  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.8 /etc/orthanc --verbose
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.9 /etc/orthanc --verbose
 
 
 Usage, with plugins enabled
@@ -119,7 +119,7 @@
 
 Or you can also start a specific version of Orthanc for more stability::
 
-  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:1.12.8
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:1.12.9
 
 If you have an interest in the :ref:`Python plugin <python-plugin>`,
 you can use the ``orthanc-python`` image. The latter image is a
@@ -127,7 +127,7 @@
 Python 3.7 interpreter. Here is how to start this image::
 
   $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python
-  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python:1.12.8
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python:1.12.9
   
 
 Fine-tuning the configuration
@@ -141,12 +141,12 @@
 
 You can generate a custom configuration file for Orthanc as follows::
 
-  $ docker run --rm --entrypoint=cat jodogne/orthanc:1.12.8 /etc/orthanc/orthanc.json > /tmp/orthanc.json
+  $ docker run --rm --entrypoint=cat jodogne/orthanc:1.12.9 /etc/orthanc/orthanc.json > /tmp/orthanc.json
 
 Then, edit the just-generated file ``/tmp/orthanc.json`` and restart
 Orthanc with your updated configuration::
 
-  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc:1.12.8
+  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc:1.12.9
 
 *Remark:* These Docker images automatically set the environment
 variable ``MALLOC_ARENA_MAX`` to ``5`` in order to :ref:`control
@@ -179,7 +179,7 @@
   version: '3.1'  # Secrets are only available since this version of Docker Compose
   services:
     orthanc:
-      image: jodogne/orthanc-plugins:1.12.8
+      image: jodogne/orthanc-plugins:1.12.9
       command: /run/secrets/  # Path to the configuration files (stored as secrets)
       ports:
         - 4242:4242
@@ -228,7 +228,7 @@
 container to some path in the filesystem of your Linux host, e.g.::
 
   $ mkdir /tmp/orthanc-db
-  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.12.8
+  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.12.9
 
 
 Whole-slide imaging support
@@ -238,13 +238,13 @@
 whole-slide imaging (WSI) <wsi>`. For instance, the following command
 will start the WSI viewer plugin transparently together with Orthanc::
 
-  $ docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins:1.12.8
+  $ docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins:1.12.9
 
 Note that we gave the name ``orthanc-wsi`` to this new Docker
 container. Then, the Dicomizer command-line tool can be invoked as
 follows::
 
-  $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.tif:/tmp/Source.tif:ro jodogne/orthanc-plugins:1.12.8 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ /tmp/Source.tif
+  $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.tif:/tmp/Source.tif:ro jodogne/orthanc-plugins:1.12.9 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ /tmp/Source.tif
 
 This command needs a few explanations:
 
@@ -272,7 +272,7 @@
 instruct the Dicomizer to use `OpenSlide <https://openslide.org/>`__
 to decode it by adding the ``--openslide`` option::
 
-  $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.svs:/tmp/Source.svs:ro jodogne/orthanc-plugins:1.12.8 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ --openslide=libopenslide.so /tmp/Source.svs
+  $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.svs:/tmp/Source.svs:ro jodogne/orthanc-plugins:1.12.9 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ --openslide=libopenslide.so /tmp/Source.svs
 
 
 PostgreSQL and Orthanc inside Docker
@@ -293,7 +293,7 @@
 
   $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' some-postgres
   $ docker inspect --format '{{ .NetworkSettings.Ports }}' some-postgres
-  $ docker run --rm --entrypoint=cat jodogne/orthanc-plugins:1.12.8 /etc/orthanc/orthanc.json > /tmp/orthanc.json
+  $ docker run --rm --entrypoint=cat jodogne/orthanc-plugins:1.12.9 /etc/orthanc/orthanc.json > /tmp/orthanc.json
 
 .. highlight:: text
 
@@ -314,7 +314,7 @@
 
 Finally, you can start Orthanc::
 
-  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins:1.12.8
+  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins:1.12.9
 
 
 Debugging
@@ -325,5 +325,5 @@
 For debugging purpose, you can start an interactive bash session as
 follows::
 
-  $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc:1.12.8
-  $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins:1.12.8
+  $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc:1.12.9
+  $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins:1.12.9
--- a/Sphinx/source/users/docker.rst.BAK	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/users/docker.rst.BAK	Mon Aug 11 19:35:21 2025 +0200
@@ -20,4 +20,4 @@
 * The build artifacts can be found in folder ``/root/orthanc/Build``.
 
 * This command launches the mainline version. To start a released version,
-  use e.g. ``jodogne/orthanc-debug:1.12.8``.
+  use e.g. ``jodogne/orthanc-debug:1.12.9``.
--- a/Sphinx/source/users/man-orthanc.txt	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/users/man-orthanc.txt	Mon Aug 11 19:35:21 2025 +0200
@@ -130,4 +130,4 @@
        This  is	 free  software:  you  are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.
 
-Orthanc 1.12.8			   June 2025			    ORTHANC(1)
+Orthanc 1.12.9			  August 2025			    ORTHANC(1)
--- a/Sphinx/source/users/rest.rst	Tue Jul 22 11:17:58 2025 +0200
+++ b/Sphinx/source/users/rest.rst	Mon Aug 11 19:35:21 2025 +0200
@@ -98,7 +98,7 @@
     $ curl -X POST -H "Expect:" http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm
 
 The code distribution of Orthanc contains a `sample Python script
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__
 that recursively upload the content of some folder into Orthanc using
 the REST API::
 
@@ -110,7 +110,7 @@
 import the content of ``.zip``, ``.tar.gz`` or ``.tar.bz2`` archives
 without having to uncompress them first. It also provides more
 comprehensive command-line options. `Check this script out
-<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.8/OrthancServer/Resources/Samples/ImportDicomFiles/OrthancImport.py>`__.
+<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.9/OrthancServer/Resources/Samples/ImportDicomFiles/OrthancImport.py>`__.
     
 
 .. highlight:: perl