changeset 817:01fa632daae9 Orthanc-1.10.0

Orthanc 1.10.0
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 23 Feb 2022 15:03:44 +0100
parents 908ca7847b9d
children 48676fb3ac0f
files OpenAPI/orthanc-openapi.json Sphinx/source/developers/creating-plugins.rst Sphinx/source/developers/db-versioning.rst Sphinx/source/dicom-guide.rst Sphinx/source/faq/crash.rst Sphinx/source/faq/debugging.rst Sphinx/source/faq/orthanc-storage.rst Sphinx/source/faq/scalability.rst Sphinx/source/plugins/python.rst Sphinx/source/plugins/python/pil-conversions.py Sphinx/source/plugins/python/worklist.py 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/man-orthanc.txt Sphinx/source/users/rest-cheatsheet.csv Sphinx/source/users/rest.rst
diffstat 19 files changed, 573 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/OpenAPI/orthanc-openapi.json	Wed Feb 23 11:08:20 2022 +0100
+++ b/OpenAPI/orthanc-openapi.json	Wed Feb 23 15:03:44 2022 +0100
@@ -2,7 +2,7 @@
    "info" : {
       "description" : "This is the full documentation of the [REST API](https://book.orthanc-server.com/users/rest.html) of Orthanc.<p>This reference is automatically generated from the source code of Orthanc. A [shorter cheat sheet](https://book.orthanc-server.com/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.9.7"
+      "version" : "1.10.0"
    },
    "openapi" : "3.0.0",
    "paths" : {
@@ -463,6 +463,15 @@
             "description" : "Get the list of attachments that are associated with the given instance",
             "parameters" : [
                {
+                  "description" : "If present, retrieve the attachments list and their numerical ids",
+                  "in" : "query",
+                  "name" : "full",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
                   "description" : "Orthanc identifier of the instance of interest",
                   "in" : "path",
                   "name" : "id",
@@ -905,6 +914,61 @@
             "tags" : [ "Instances" ]
          }
       },
+      "/instances/{id}/attachments/{name}/info" : {
+         "get" : {
+            "deprecated" : false,
+            "description" : "Get all the information about the attachment associated with the given instance",
+            "parameters" : [
+               {
+                  "description" : "Optional revision of the attachment, to check if its content has changed",
+                  "in" : "header",
+                  "name" : "If-None-Match",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
+                  "description" : "Orthanc identifier of the instance of interest",
+                  "in" : "path",
+                  "name" : "id",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
+                  "description" : "The name of the attachment, or its index (cf. `UserContentType` configuration option)",
+                  "in" : "path",
+                  "name" : "name",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               }
+            ],
+            "responses" : {
+               "200" : {
+                  "content" : {
+                     "application/json" : {
+                        "examples" : {},
+                        "schema" : {
+                           "description" : "JSON object containing the information about the attachment"
+                        }
+                     }
+                  },
+                  "description" : "",
+                  "headers" : {
+                     "ETag" : {
+                        "description" : "Revision of the attachment, to be used in further `PUT` or `DELETE` operations"
+                     }
+                  }
+               }
+            },
+            "summary" : "Get info about the attachment",
+            "tags" : [ "Instances" ]
+         }
+      },
       "/instances/{id}/attachments/{name}/is-compressed" : {
          "get" : {
             "deprecated" : false,
@@ -1338,6 +1402,7 @@
                               "image-uint16",
                               "image-uint8",
                               "matlab",
+                              "numpy",
                               "preview",
                               "raw",
                               "raw.gz",
@@ -1368,6 +1433,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Format of the resulting image. Can be `image/png` (default), `image/jpeg` or `image/x-portable-arbitrarymap`",
                   "in" : "header",
                   "name" : "Accept",
@@ -1439,6 +1513,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Format of the resulting image. Can be `image/png` (default), `image/jpeg` or `image/x-portable-arbitrarymap`",
                   "in" : "header",
                   "name" : "Accept",
@@ -1510,6 +1593,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Format of the resulting image. Can be `image/png` (default), `image/jpeg` or `image/x-portable-arbitrarymap`",
                   "in" : "header",
                   "name" : "Accept",
@@ -1607,6 +1699,65 @@
             "tags" : [ "Instances" ]
          }
       },
+      "/instances/{id}/frames/{frame}/numpy" : {
+         "get" : {
+            "deprecated" : false,
+            "description" : "Decode one frame of interest from the given DICOM instance, for use with numpy in Python. The numpy array has 3 dimensions: (height, width, color channel).",
+            "parameters" : [
+               {
+                  "description" : "Compress the file as `.npz`",
+                  "in" : "query",
+                  "name" : "compress",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
+                  "description" : "On grayscale images, apply the rescaling and return floating-point values",
+                  "in" : "query",
+                  "name" : "rescale",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
+                  "description" : "Index of the frame (starts at `0`)",
+                  "in" : "path",
+                  "name" : "frame",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "number"
+                  }
+               },
+               {
+                  "description" : "Orthanc identifier of the DICOM resource of interest",
+                  "in" : "path",
+                  "name" : "id",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               }
+            ],
+            "responses" : {
+               "200" : {
+                  "content" : {
+                     "text/plain" : {
+                        "examples" : {},
+                        "schema" : {
+                           "description" : "Numpy file: https://numpy.org/devdocs/reference/generated/numpy.lib.format.html"
+                        }
+                     }
+                  },
+                  "description" : ""
+               }
+            },
+            "summary" : "Decode frame for numpy",
+            "tags" : [ "Instances" ]
+         }
+      },
       "/instances/{id}/frames/{frame}/preview" : {
          "get" : {
             "deprecated" : false,
@@ -1622,6 +1773,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Format of the resulting image. Can be `image/png` (default), `image/jpeg` or `image/x-portable-arbitrarymap`",
                   "in" : "header",
                   "name" : "Accept",
@@ -1784,6 +1944,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Whether to smooth image on resize",
                   "in" : "query",
                   "name" : "smooth",
@@ -1977,6 +2146,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Format of the resulting image. Can be `image/png` (default), `image/jpeg` or `image/x-portable-arbitrarymap`",
                   "in" : "header",
                   "name" : "Accept",
@@ -2039,6 +2217,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Format of the resulting image. Can be `image/png` (default), `image/jpeg` or `image/x-portable-arbitrarymap`",
                   "in" : "header",
                   "name" : "Accept",
@@ -2101,6 +2288,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Format of the resulting image. Can be `image/png` (default), `image/jpeg` or `image/x-portable-arbitrarymap`",
                   "in" : "header",
                   "name" : "Accept",
@@ -2553,6 +2749,56 @@
             "tags" : [ "Instances" ]
          }
       },
+      "/instances/{id}/numpy" : {
+         "get" : {
+            "deprecated" : false,
+            "description" : "Decode the given DICOM instance, for use with numpy in Python. The numpy array has 4 dimensions: (frame, height, width, color channel).",
+            "parameters" : [
+               {
+                  "description" : "Compress the file as `.npz`",
+                  "in" : "query",
+                  "name" : "compress",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
+                  "description" : "On grayscale images, apply the rescaling and return floating-point values",
+                  "in" : "query",
+                  "name" : "rescale",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
+                  "description" : "Orthanc identifier of the DICOM resource of interest",
+                  "in" : "path",
+                  "name" : "id",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               }
+            ],
+            "responses" : {
+               "200" : {
+                  "content" : {
+                     "text/plain" : {
+                        "examples" : {},
+                        "schema" : {
+                           "description" : "Numpy file: https://numpy.org/devdocs/reference/generated/numpy.lib.format.html"
+                        }
+                     }
+                  },
+                  "description" : ""
+               }
+            },
+            "summary" : "Decode instance for numpy",
+            "tags" : [ "Instances" ]
+         }
+      },
       "/instances/{id}/patient" : {
          "get" : {
             "deprecated" : false,
@@ -2662,6 +2908,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Format of the resulting image. Can be `image/png` (default), `image/jpeg` or `image/x-portable-arbitrarymap`",
                   "in" : "header",
                   "name" : "Accept",
@@ -2757,6 +3012,15 @@
                   }
                },
                {
+                  "description" : "Returns an unsupported.png placeholder image if unable to provide the image instead of returning a 415 HTTP error (defaults to false)",
+                  "in" : "query",
+                  "name" : "returnUnsupportedImage",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
                   "description" : "Whether to smooth image on resize",
                   "in" : "query",
                   "name" : "smooth",
@@ -3265,8 +3529,10 @@
                         "schema" : {
                            "description" : "JSON array containing either the jobs identifiers, or detailed information about the reported jobs (if `expand` argument is provided)",
                            "example" : [
-                              "0c686aae-1509-4179-a8c5-1824c180bb84",
-                              "f30d99df-3a10-480f-96a9-d0701550f07c"
+                              "14a3cacd-fdf1-42ce-8cbe-7d882b60872b",
+                              "45948a0f-d176-4ca7-9efc-187a5d14f1c7",
+                              "6aae44fb-dacf-4115-ad79-77a323fd340b",
+                              "..."
                            ]
                         }
                      }
@@ -3614,6 +3880,10 @@
                               "description" : "Whether to accept C-FIND SCU commands issued by the remote modality",
                               "type" : "boolean"
                            },
+                           "AllowFindWorklist" : {
+                              "description" : "Whether to accept C-FIND SCU commands for worklists issued by the remote modality",
+                              "type" : "boolean"
+                           },
                            "AllowGet" : {
                               "description" : "Whether to accept C-GET SCU commands issued by the remote modality",
                               "type" : "boolean"
@@ -3690,6 +3960,7 @@
                               "AllowEcho" : true,
                               "AllowEventReport" : true,
                               "AllowFind" : true,
+                              "AllowFindWorklist" : true,
                               "AllowGet" : true,
                               "AllowMove" : true,
                               "AllowNAction" : true,
@@ -4746,6 +5017,15 @@
             "description" : "Get the list of attachments that are associated with the given patient",
             "parameters" : [
                {
+                  "description" : "If present, retrieve the attachments list and their numerical ids",
+                  "in" : "query",
+                  "name" : "full",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
                   "description" : "Orthanc identifier of the patient of interest",
                   "in" : "path",
                   "name" : "id",
@@ -5188,6 +5468,61 @@
             "tags" : [ "Patients" ]
          }
       },
+      "/patients/{id}/attachments/{name}/info" : {
+         "get" : {
+            "deprecated" : false,
+            "description" : "Get all the information about the attachment associated with the given patient",
+            "parameters" : [
+               {
+                  "description" : "Optional revision of the attachment, to check if its content has changed",
+                  "in" : "header",
+                  "name" : "If-None-Match",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
+                  "description" : "Orthanc identifier of the patient of interest",
+                  "in" : "path",
+                  "name" : "id",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
+                  "description" : "The name of the attachment, or its index (cf. `UserContentType` configuration option)",
+                  "in" : "path",
+                  "name" : "name",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               }
+            ],
+            "responses" : {
+               "200" : {
+                  "content" : {
+                     "application/json" : {
+                        "examples" : {},
+                        "schema" : {
+                           "description" : "JSON object containing the information about the attachment"
+                        }
+                     }
+                  },
+                  "description" : "",
+                  "headers" : {
+                     "ETag" : {
+                        "description" : "Revision of the attachment, to be used in further `PUT` or `DELETE` operations"
+                     }
+                  }
+               }
+            },
+            "summary" : "Get info about the attachment",
+            "tags" : [ "Patients" ]
+         }
+      },
       "/patients/{id}/attachments/{name}/is-compressed" : {
          "get" : {
             "deprecated" : false,
@@ -7007,6 +7342,7 @@
                               "connectivity-checks",
                               "dicom-web",
                               "gdcm",
+                              "indexer",
                               "mysql-index",
                               "mysql-storage",
                               "odbc-index",
@@ -7080,7 +7416,7 @@
                               "ExtendsOrthancExplorer" : true,
                               "ID" : "dicom-web",
                               "RootUri" : "../dicom-web/app/client/index.html",
-                              "Version" : "1.6"
+                              "Version" : "1.7"
                            }
                         }
                      }
@@ -8229,6 +8565,15 @@
             "description" : "Get the list of attachments that are associated with the given series",
             "parameters" : [
                {
+                  "description" : "If present, retrieve the attachments list and their numerical ids",
+                  "in" : "query",
+                  "name" : "full",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
                   "description" : "Orthanc identifier of the series of interest",
                   "in" : "path",
                   "name" : "id",
@@ -8671,6 +9016,61 @@
             "tags" : [ "Series" ]
          }
       },
+      "/series/{id}/attachments/{name}/info" : {
+         "get" : {
+            "deprecated" : false,
+            "description" : "Get all the information about the attachment associated with the given series",
+            "parameters" : [
+               {
+                  "description" : "Optional revision of the attachment, to check if its content has changed",
+                  "in" : "header",
+                  "name" : "If-None-Match",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
+                  "description" : "Orthanc identifier of the series of interest",
+                  "in" : "path",
+                  "name" : "id",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
+                  "description" : "The name of the attachment, or its index (cf. `UserContentType` configuration option)",
+                  "in" : "path",
+                  "name" : "name",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               }
+            ],
+            "responses" : {
+               "200" : {
+                  "content" : {
+                     "application/json" : {
+                        "examples" : {},
+                        "schema" : {
+                           "description" : "JSON object containing the information about the attachment"
+                        }
+                     }
+                  },
+                  "description" : "",
+                  "headers" : {
+                     "ETag" : {
+                        "description" : "Revision of the attachment, to be used in further `PUT` or `DELETE` operations"
+                     }
+                  }
+               }
+            },
+            "summary" : "Get info about the attachment",
+            "tags" : [ "Series" ]
+         }
+      },
       "/series/{id}/attachments/{name}/is-compressed" : {
          "get" : {
             "deprecated" : false,
@@ -9670,6 +10070,56 @@
             "tags" : [ "Series" ]
          }
       },
+      "/series/{id}/numpy" : {
+         "get" : {
+            "deprecated" : false,
+            "description" : "Decode the given DICOM series, for use with numpy in Python. The numpy array has 4 dimensions: (frame, height, width, color channel).",
+            "parameters" : [
+               {
+                  "description" : "Compress the file as `.npz`",
+                  "in" : "query",
+                  "name" : "compress",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
+                  "description" : "On grayscale images, apply the rescaling and return floating-point values",
+                  "in" : "query",
+                  "name" : "rescale",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "boolean"
+                  }
+               },
+               {
+                  "description" : "Orthanc identifier of the DICOM resource of interest",
+                  "in" : "path",
+                  "name" : "id",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               }
+            ],
+            "responses" : {
+               "200" : {
+                  "content" : {
+                     "text/plain" : {
+                        "examples" : {},
+                        "schema" : {
+                           "description" : "Numpy file: https://numpy.org/devdocs/reference/generated/numpy.lib.format.html"
+                        }
+                     }
+                  },
+                  "description" : ""
+               }
+            },
+            "summary" : "Decode series for numpy",
+            "tags" : [ "Series" ]
+         }
+      },
       "/series/{id}/ordered-slices" : {
          "get" : {
             "deprecated" : true,
@@ -10639,6 +11089,15 @@
             "description" : "Get the list of attachments that are associated with the given study",
             "parameters" : [
                {
+                  "description" : "If present, retrieve the attachments list and their numerical ids",
+                  "in" : "query",
+                  "name" : "full",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
                   "description" : "Orthanc identifier of the study of interest",
                   "in" : "path",
                   "name" : "id",
@@ -11081,6 +11540,61 @@
             "tags" : [ "Studies" ]
          }
       },
+      "/studies/{id}/attachments/{name}/info" : {
+         "get" : {
+            "deprecated" : false,
+            "description" : "Get all the information about the attachment associated with the given study",
+            "parameters" : [
+               {
+                  "description" : "Optional revision of the attachment, to check if its content has changed",
+                  "in" : "header",
+                  "name" : "If-None-Match",
+                  "required" : false,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
+                  "description" : "Orthanc identifier of the study of interest",
+                  "in" : "path",
+                  "name" : "id",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               },
+               {
+                  "description" : "The name of the attachment, or its index (cf. `UserContentType` configuration option)",
+                  "in" : "path",
+                  "name" : "name",
+                  "required" : true,
+                  "schema" : {
+                     "type" : "string"
+                  }
+               }
+            ],
+            "responses" : {
+               "200" : {
+                  "content" : {
+                     "application/json" : {
+                        "examples" : {},
+                        "schema" : {
+                           "description" : "JSON object containing the information about the attachment"
+                        }
+                     }
+                  },
+                  "description" : "",
+                  "headers" : {
+                     "ETag" : {
+                        "description" : "Revision of the attachment, to be used in further `PUT` or `DELETE` operations"
+                     }
+                  }
+               }
+            },
+            "summary" : "Get info about the attachment",
+            "tags" : [ "Studies" ]
+         }
+      },
       "/studies/{id}/attachments/{name}/is-compressed" : {
          "get" : {
             "deprecated" : false,
@@ -12862,7 +13376,7 @@
                         "schema" : {
                            "description" : "",
                            "example" : {
-                              "ApiVersion" : 14,
+                              "ApiVersion" : 15,
                               "CheckRevisions" : false,
                               "DatabaseBackendPlugin" : null,
                               "DatabaseVersion" : 6,
@@ -12873,7 +13387,7 @@
                               "Name" : "Orthanc Demo",
                               "PluginsEnabled" : true,
                               "StorageAreaPlugin" : null,
-                              "Version" : "1.9.6"
+                              "Version" : "1.9.7"
                            },
                            "properties" : {
                               "ApiVersion" : {
@@ -13195,7 +13709,7 @@
                   "description" : ""
                }
             },
-            "summary" : "Describe a set of instances",
+            "summary" : "Describe a set of resources",
             "tags" : [ "System" ]
          }
       },
@@ -13227,7 +13741,7 @@
                   "description" : ""
                }
             },
-            "summary" : "Delete a set of instances",
+            "summary" : "Delete a set of resources",
             "tags" : [ "System" ]
          }
       },
@@ -14317,7 +14831,7 @@
                "200" : {
                   "content" : {
                      "text/plain" : {
-                        "example" : "orthanc_count_instances 2552 1630401803782\northanc_count_patients 8 1630401803782\northanc_count_series 26 1630401803782\northanc_count_studies 8 1630401803782\northanc_dicom_cache_count 213 1630393626028\northanc_dicom_cache_size 125.938728 1630393626028\northanc_disk_size_mb 1018.65021 1630401803782\northanc_jobs_completed 2 1630401803782\northanc_jobs_failed 0 1630401803782\northanc_jobs_pending 0 1630401803782\northanc_jobs_running 0 1630401803782\northanc_jobs_success 2 1630401803782\northanc_rest_api_active_requests 1 1630401803781\northanc_rest_api_duration_ms 353 1630401802149\northanc_storage_read_duration_ms 0 1630401797848\northanc_uncompressed_size_mb 1018.65021 1630401803782\n"
+                        "example" : "orthanc_count_instances 2552 1645624991823\northanc_count_patients 8 1645624991823\northanc_count_series 26 1645624991823\northanc_count_studies 8 1645624991823\northanc_dicom_cache_count 215 1645572656584\northanc_dicom_cache_size 89.9329529 1645572656583\northanc_disk_size_mb 1018.65021 1645624991823\northanc_jobs_completed 10 1645624991823\northanc_jobs_failed 4 1645624991823\northanc_jobs_pending 0 1645624991823\northanc_jobs_running 0 1645624991823\northanc_jobs_success 6 1645624991823\northanc_rest_api_active_requests 1 1645624991823\northanc_rest_api_duration_ms 342 1645624990284\northanc_storage_read_duration_ms 8 1645624986257\northanc_uncompressed_size_mb 1018.65021 1645624991823\n"
                      }
                   },
                   "description" : ""
@@ -14336,7 +14850,7 @@
                "200" : {
                   "content" : {
                      "text/plain" : {
-                        "example" : "20210831T092323",
+                        "example" : "20220223T140311",
                         "schema" : {
                            "description" : "The UTC time"
                         }
@@ -14358,7 +14872,7 @@
                "200" : {
                   "content" : {
                      "text/plain" : {
-                        "example" : "20210831T092323",
+                        "example" : "20220223T140311",
                         "schema" : {
                            "description" : "The local time"
                         }
--- a/Sphinx/source/developers/creating-plugins.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/developers/creating-plugins.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -15,7 +15,7 @@
 Native Orthanc plugins must use the `plugin SDK
 <https://sdk.orthanc-server.com/>`__ whose interface is available as a
 `C header
-<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__.
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/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
@@ -96,7 +96,7 @@
 that is part of the Orthanc source distribution:
 
 * `Plugins/Include/orthanc/OrthancCPlugin.h
-  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 
 `Online documentation <https://sdk.orthanc-server.com/>`__ for this C
 header is available, as generated by `Doxygen
@@ -110,8 +110,8 @@
 ``HAS_ORTHANC_EXCEPTION`` is set to ``0``:
 
 * `Plugins/Samples/Common/OrthanPluginCppWrapper.h
-  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__
 * `Plugins/Samples/Common/OrthanPluginCppWrapper.cpp
-  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__
 * `Plugins/Samples/Common/OrthanPluginException.h
-  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Plugins/Samples/Common/OrthancPluginException.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Plugins/Samples/Common/OrthancPluginException.h>`__
--- a/Sphinx/source/developers/db-versioning.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/developers/db-versioning.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -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.9.7             u       u       u       x
+Orthanc 0.9.5 - Orthanc 1.10.0            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/dicom-guide.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/dicom-guide.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -665,7 +665,7 @@
 
     $ getscu -v localhost 4242 -aec ORTHANC -k "0008,0052=STUDY" -k "0020,000d=1.2.840.113543.6.6.4.7.64067529866380271256212683512383713111129"
 
-*Note:* As of Orthanc 1.9.7, Orthanc only implements C-Get as a
+*Note:* As of Orthanc 1.10.0, Orthanc only implements C-Get as a
 service class provider (SCP). Using C-Get as a service class user
 (SCU) is not currently supported in Orthanc.
 
--- a/Sphinx/source/faq/crash.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/faq/crash.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -64,13 +64,13 @@
 above <segfault-plugin>` is available as the ``crash.cpp`` file, here
 is a sample debug session::
 
-  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.9.7/Orthanc
+  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.10.0/Orthanc
   $ chmod +x ./Orthanc
   $ gcc -fPIC -shared ./crash.cpp -I ~/orthanc/Plugins/Include -o crash.so
   $ ulimit -c unlimited
   $ echo '{ "Plugins" : ["crash.so"] }' > Configuration.json
   $ rm -f core ; ./Orthanc Configuration.json
-  W0427 15:43:24.215783 main.cpp:1436] Orthanc version: 1.9.7
+  W0427 15:43:24.215783 main.cpp:1436] Orthanc version: 1.10.0
   W0427 15:43:24.215910 main.cpp:1279] Performance warning: Non-release build, runtime debug assertions are turned on
   W0427 15:43:24.217585 OrthancConfiguration.cpp:61] Reading the configuration from: "Configuration.json"
   W0427 15:43:24.254733 main.cpp:700] Loading plugin(s) from: crash.so
--- a/Sphinx/source/faq/debugging.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/faq/debugging.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -45,13 +45,13 @@
 to debug Orthanc without compiling from sources. Here is a sample
 debug session::
 
-  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.9.7/Orthanc
+  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.10.0/Orthanc
   $ chmod +x ./Orthanc
   $ gdb ./Orthanc Configuration.json
   (gdb) catch throw
   Catchpoint 1 (throw)
   (gdb) run
-  W0513 15:24:42.374349 main.cpp:1436] Orthanc version: 1.9.7
+  W0513 15:24:42.374349 main.cpp:1436] Orthanc version: 1.10.0
   ---> Reproduce your error case <---
   Thread 15 "Orthanc" hit Catchpoint 1 (exception thrown), 0x00007ffff6de68bd in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
   (gdb) backtrace
--- a/Sphinx/source/faq/orthanc-storage.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/faq/orthanc-storage.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -59,9 +59,9 @@
 database schema is kept as simple as possible, and can be found in the
 following two files of the source code of Orthanc:
 `PrepareDatabase.sql
-<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Sources/Database/PrepareDatabase.sql>`__
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Sources/Database/PrepareDatabase.sql>`__
 and `InstallTrackAttachmentsSize.sql
-<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Sources/Database/InstallTrackAttachmentsSize.sql>`__.
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Sources/Database/InstallTrackAttachmentsSize.sql>`__.
 
 
 Direct access
--- a/Sphinx/source/faq/scalability.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/faq/scalability.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -54,7 +54,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.9.7 at the time of
+* Make sure to use the latest release of Orthanc (1.10.0 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/python.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/plugins/python.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -18,7 +18,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://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 using the `Clang <https://en.wikipedia.org/wiki/Clang>`__ compiler
 front-end.
 
--- a/Sphinx/source/plugins/python/pil-conversions.py	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/plugins/python/pil-conversions.py	Wed Feb 23 15:03:44 2022 +0100
@@ -3,7 +3,7 @@
 import PIL.ImageDraw
 import orthanc
 
-URL = 'http://hg.orthanc-server.com/orthanc-tests/raw-file/Orthanc-1.9.7/Database/LenaTwiceWithFragments.dcm'
+URL = 'http://hg.orthanc-server.com/orthanc-tests/raw-file/Orthanc-1.10.0/Database/LenaTwiceWithFragments.dcm'
 USERNAME = ''
 PASSWORD = ''
 
--- a/Sphinx/source/plugins/python/worklist.py	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/plugins/python/worklist.py	Wed Feb 23 15:03:44 2022 +0100
@@ -3,7 +3,7 @@
 import os
 
 # Path to the directory containing the DICOM worklists
-# https://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Plugins/Samples/ModalityWorklists/WorklistsDatabase
+# https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Plugins/Samples/ModalityWorklists/WorklistsDatabase
 WORKLIST_DIR = '/tmp/WorklistsDatabase'
 
 def OnWorklist(answers, query, issuerAet, calledAet):
--- a/Sphinx/source/users/advanced-rest.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/users/advanced-rest.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -134,7 +134,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.9.7, this feature is not
+  re-submission after a delay. As of Orthanc 1.10.0, this feature is not
   used by any type of job.
 
 In order to wait for the end of an asynchronous call, the caller will
@@ -143,7 +143,7 @@
 ``Failure``.
 
 Note that the `integration tests of Orthanc
-<https://hg.orthanc-server.com/orthanc-tests/file/Orthanc-1.9.7/Tests/Toolbox.py>`__
+<https://hg.orthanc-server.com/orthanc-tests/file/Orthanc-1.10.0/Tests/Toolbox.py>`__
 give an example about how to monitor a job in Python using the REST
 API (cf. function ``MonitorJob()``).
 
@@ -204,7 +204,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://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Sources/ServerJobs/ArchiveJob.cpp>`__
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Sources/ServerJobs/ArchiveJob.cpp>`__
 of Orthanc).
 
 Here is the corresponding sequence of commands to generate a DICOMDIR
@@ -213,7 +213,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.9.7, only the creation of a ZIP or a DICOMDIR archive
+As of Orthanc 1.10.0, only the creation of a ZIP or a DICOMDIR archive
 produces such "outputs".
 
   
--- a/Sphinx/source/users/anonymization.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/users/anonymization.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -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://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancFramework/Sources/DicomParsing/DicomModification.cpp>`__).
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancFramework/Sources/DicomParsing/DicomModification.cpp>`__).
 
 
 Modification of a Single Instance
--- a/Sphinx/source/users/configuration.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/users/configuration.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -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://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Resources/Configuration.json>`_. This
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/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	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/users/debian-packages.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -106,10 +106,10 @@
 This can be done with this sequence of commands::
 
   $ sudo service orthanc stop
-  $ sudo wget https://lsb.orthanc-server.com/orthanc/1.9.7/Orthanc --output-document /usr/sbin/Orthanc
+  $ sudo wget https://lsb.orthanc-server.com/orthanc/1.10.0/Orthanc --output-document /usr/sbin/Orthanc
   $ sudo rm -f /usr/share/orthanc/plugins/*.so
-  $ sudo wget https://lsb.orthanc-server.com/orthanc/1.9.7/libServeFolders.so --output-document /usr/share/orthanc/plugins/libServeFolders.so
-  $ sudo wget https://lsb.orthanc-server.com/orthanc/1.9.7/libModalityWorklists.so --output-document /usr/share/orthanc/plugins/libModalityWorklists.so
+  $ sudo wget https://lsb.orthanc-server.com/orthanc/1.10.0/libServeFolders.so --output-document /usr/share/orthanc/plugins/libServeFolders.so
+  $ sudo wget https://lsb.orthanc-server.com/orthanc/1.10.0/libModalityWorklists.so --output-document /usr/share/orthanc/plugins/libModalityWorklists.so
   $
   $ sudo wget https://lsb.orthanc-server.com/plugin-dicom-web/1.6/libOrthancDicomWeb.so --output-document /usr/share/orthanc/plugins/libOrthancDicomWeb.so
   $ ...
--- a/Sphinx/source/users/docker.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/users/docker.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -75,7 +75,7 @@
 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.9.7
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.10.0
 
 Passing additional command-line options (e.g. to make Orthanc verbose)
 can be done as follows (note the ``/etc/orthanc`` option that is
@@ -97,7 +97,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.9.7
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:1.10.0
 
 If you have an interest in the :ref:`Python plugin <python-plugin>`,
 you can use the ``orthanc-python`` image. The latter image is a
@@ -105,7 +105,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.9.7
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python:1.10.0
   
 
 Fine-tuning the configuration
@@ -157,7 +157,7 @@
   version: '3.1'  # Secrets are only available since this version of Docker Compose
   services:
     orthanc:
-      image: jodogne/orthanc-plugins:1.9.7
+      image: jodogne/orthanc-plugins:1.10.0
       command: /run/secrets/  # Path to the configuration files (stored as secrets)
       ports:
         - 4242:4242
@@ -206,7 +206,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.9.7 
+  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.10.0 
 
 
 Whole-slide imaging support
@@ -327,4 +327,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.9.7``.
+  use e.g. ``jodogne/orthanc-debug:1.10.0``.
--- a/Sphinx/source/users/man-orthanc.txt	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/users/man-orthanc.txt	Wed Feb 23 15:03:44 2022 +0100
@@ -122,10 +122,11 @@
 COPYRIGHT
        Copyright © 2012-2016 Sebastien Jodogne,  Medical  Physics  Department,
        University Hospital of Liege (Belgium)
-       Copyright  ©  2017-2021 Osimis S.A. (Belgium) Licensing GPLv3+: GNU GPL
-       version 3 or  later  <http://gnu.org/licenses/gpl.html>,  with  OpenSSL
-       exception.
+       Copyright © 2017-2022 Osimis S.A. (Belgium)
+       Copyright  ©  2021-2022	Sebastien  Jodogne, ICTEAM UCLouvain (Belgium)
+       Licensing    GPLv3+:	GNU	GPL	version     3	  or	 later
+       <http://gnu.org/licenses/gpl.html>.
        This  is  free  software:  you  are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.
 
-Orthanc 1.9.7			  August 2021			    ORTHANC(1)
+Orthanc 1.10.0			 February 2022			    ORTHANC(1)
--- a/Sphinx/source/users/rest-cheatsheet.csv	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/users/rest-cheatsheet.csv	Wed Feb 23 15:03:44 2022 +0100
@@ -11,6 +11,7 @@
 ``/instances/{id}/attachments/{name}/compressed-md5``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1attachments~1{name}~1compressed-md5/get>`__,,,,Get MD5 of attachment on disk
 ``/instances/{id}/attachments/{name}/compressed-size``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1attachments~1{name}~1compressed-size/get>`__,,,,Get size of attachment on disk
 ``/instances/{id}/attachments/{name}/data``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1attachments~1{name}~1data/get>`__,,,,Get attachment
+``/instances/{id}/attachments/{name}/info``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1attachments~1{name}~1info/get>`__,,,,Get info about the attachment
 ``/instances/{id}/attachments/{name}/is-compressed``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1attachments~1{name}~1is-compressed/get>`__,,,,Is attachment compressed?
 ``/instances/{id}/attachments/{name}/md5``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1attachments~1{name}~1md5/get>`__,,,,Get MD5 of attachment
 ``/instances/{id}/attachments/{name}/size``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1attachments~1{name}~1size/get>`__,,,,Get size of attachment
@@ -25,6 +26,7 @@
 ``/instances/{id}/frames/{frame}/image-uint16``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1frames~1{frame}~1image-uint16/get>`__,,,,Decode a frame (uint16)
 ``/instances/{id}/frames/{frame}/image-uint8``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1frames~1{frame}~1image-uint8/get>`__,,,,Decode a frame (uint8)
 ``/instances/{id}/frames/{frame}/matlab``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1frames~1{frame}~1matlab/get>`__,,,,Decode frame for Matlab
+``/instances/{id}/frames/{frame}/numpy``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1frames~1{frame}~1numpy/get>`__,,,,Decode frame for numpy
 ``/instances/{id}/frames/{frame}/preview``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1frames~1{frame}~1preview/get>`__,,,,Decode a frame (preview)
 ``/instances/{id}/frames/{frame}/raw``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1frames~1{frame}~1raw/get>`__,,,,Access raw frame
 ``/instances/{id}/frames/{frame}/raw.gz``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1frames~1{frame}~1raw.gz/get>`__,,,,Access raw frame (compressed)
@@ -38,6 +40,7 @@
 ``/instances/{id}/metadata/{name}``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1metadata~1{name}/get>`__,,`DELETE <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1metadata~1{name}/delete>`__,`PUT <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1metadata~1{name}/put>`__,Get metadata
 ``/instances/{id}/modify``,,`POST <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1modify/post>`__,,,Modify instance
 ``/instances/{id}/module``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1module/get>`__,,,,Get instance module
+``/instances/{id}/numpy``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1numpy/get>`__,,,,Decode instance for numpy
 ``/instances/{id}/patient``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1patient/get>`__,,,,Get parent patient
 ``/instances/{id}/pdf``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1pdf/get>`__,,,,Get embedded PDF
 ``/instances/{id}/preview``,`GET <https://api.orthanc-server.com/index.html#tag/Instances/paths/~1instances~1{id}~1preview/get>`__,,,,Decode an image (preview)
@@ -81,6 +84,7 @@
 ``/patients/{id}/attachments/{name}/compressed-md5``,`GET <https://api.orthanc-server.com/index.html#tag/Patients/paths/~1patients~1{id}~1attachments~1{name}~1compressed-md5/get>`__,,,,Get MD5 of attachment on disk
 ``/patients/{id}/attachments/{name}/compressed-size``,`GET <https://api.orthanc-server.com/index.html#tag/Patients/paths/~1patients~1{id}~1attachments~1{name}~1compressed-size/get>`__,,,,Get size of attachment on disk
 ``/patients/{id}/attachments/{name}/data``,`GET <https://api.orthanc-server.com/index.html#tag/Patients/paths/~1patients~1{id}~1attachments~1{name}~1data/get>`__,,,,Get attachment
+``/patients/{id}/attachments/{name}/info``,`GET <https://api.orthanc-server.com/index.html#tag/Patients/paths/~1patients~1{id}~1attachments~1{name}~1info/get>`__,,,,Get info about the attachment
 ``/patients/{id}/attachments/{name}/is-compressed``,`GET <https://api.orthanc-server.com/index.html#tag/Patients/paths/~1patients~1{id}~1attachments~1{name}~1is-compressed/get>`__,,,,Is attachment compressed?
 ``/patients/{id}/attachments/{name}/md5``,`GET <https://api.orthanc-server.com/index.html#tag/Patients/paths/~1patients~1{id}~1attachments~1{name}~1md5/get>`__,,,,Get MD5 of attachment
 ``/patients/{id}/attachments/{name}/size``,`GET <https://api.orthanc-server.com/index.html#tag/Patients/paths/~1patients~1{id}~1attachments~1{name}~1size/get>`__,,,,Get size of attachment
@@ -132,6 +136,7 @@
 ``/series/{id}/attachments/{name}/compressed-md5``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1attachments~1{name}~1compressed-md5/get>`__,,,,Get MD5 of attachment on disk
 ``/series/{id}/attachments/{name}/compressed-size``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1attachments~1{name}~1compressed-size/get>`__,,,,Get size of attachment on disk
 ``/series/{id}/attachments/{name}/data``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1attachments~1{name}~1data/get>`__,,,,Get attachment
+``/series/{id}/attachments/{name}/info``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1attachments~1{name}~1info/get>`__,,,,Get info about the attachment
 ``/series/{id}/attachments/{name}/is-compressed``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1attachments~1{name}~1is-compressed/get>`__,,,,Is attachment compressed?
 ``/series/{id}/attachments/{name}/md5``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1attachments~1{name}~1md5/get>`__,,,,Get MD5 of attachment
 ``/series/{id}/attachments/{name}/size``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1attachments~1{name}~1size/get>`__,,,,Get size of attachment
@@ -144,6 +149,7 @@
 ``/series/{id}/metadata/{name}``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1metadata~1{name}/get>`__,,`DELETE <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1metadata~1{name}/delete>`__,`PUT <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1metadata~1{name}/put>`__,Get metadata
 ``/series/{id}/modify``,,`POST <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1modify/post>`__,,,Modify series
 ``/series/{id}/module``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1module/get>`__,,,,Get series module
+``/series/{id}/numpy``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1numpy/get>`__,,,,Decode series for numpy
 ``/series/{id}/ordered-slices``,`(get) <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1ordered-slices/get>`__,,,,*(deprecated)* Order the slices
 ``/series/{id}/patient``,`GET <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1patient/get>`__,,,,Get parent patient
 ``/series/{id}/reconstruct``,,`POST <https://api.orthanc-server.com/index.html#tag/Series/paths/~1series~1{id}~1reconstruct/post>`__,,,Reconstruct tags of series
@@ -164,6 +170,7 @@
 ``/studies/{id}/attachments/{name}/compressed-md5``,`GET <https://api.orthanc-server.com/index.html#tag/Studies/paths/~1studies~1{id}~1attachments~1{name}~1compressed-md5/get>`__,,,,Get MD5 of attachment on disk
 ``/studies/{id}/attachments/{name}/compressed-size``,`GET <https://api.orthanc-server.com/index.html#tag/Studies/paths/~1studies~1{id}~1attachments~1{name}~1compressed-size/get>`__,,,,Get size of attachment on disk
 ``/studies/{id}/attachments/{name}/data``,`GET <https://api.orthanc-server.com/index.html#tag/Studies/paths/~1studies~1{id}~1attachments~1{name}~1data/get>`__,,,,Get attachment
+``/studies/{id}/attachments/{name}/info``,`GET <https://api.orthanc-server.com/index.html#tag/Studies/paths/~1studies~1{id}~1attachments~1{name}~1info/get>`__,,,,Get info about the attachment
 ``/studies/{id}/attachments/{name}/is-compressed``,`GET <https://api.orthanc-server.com/index.html#tag/Studies/paths/~1studies~1{id}~1attachments~1{name}~1is-compressed/get>`__,,,,Is attachment compressed?
 ``/studies/{id}/attachments/{name}/md5``,`GET <https://api.orthanc-server.com/index.html#tag/Studies/paths/~1studies~1{id}~1attachments~1{name}~1md5/get>`__,,,,Get MD5 of attachment
 ``/studies/{id}/attachments/{name}/size``,`GET <https://api.orthanc-server.com/index.html#tag/Studies/paths/~1studies~1{id}~1attachments~1{name}~1size/get>`__,,,,Get size of attachment
@@ -188,8 +195,8 @@
 ``/tools``,`GET <https://api.orthanc-server.com/index.html#tag/Other/paths/~1tools/get>`__,,,,List operations
 ``/tools/accepted-transfer-syntaxes``,`GET <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1accepted-transfer-syntaxes/get>`__,,,`PUT <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1accepted-transfer-syntaxes/put>`__,Get accepted transfer syntaxes
 ``/tools/bulk-anonymize``,,`POST <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1bulk-anonymize/post>`__,,,Anonymize a set of resources
-``/tools/bulk-content``,,`POST <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1bulk-content/post>`__,,,Describe a set of instances
-``/tools/bulk-delete``,,`POST <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1bulk-delete/post>`__,,,Delete a set of instances
+``/tools/bulk-content``,,`POST <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1bulk-content/post>`__,,,Describe a set of resources
+``/tools/bulk-delete``,,`POST <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1bulk-delete/post>`__,,,Delete a set of resources
 ``/tools/bulk-modify``,,`POST <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1bulk-modify/post>`__,,,Modify a set of resources
 ``/tools/create-archive``,,`POST <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1create-archive/post>`__,,,Create ZIP archive
 ``/tools/create-dicom``,,`POST <https://api.orthanc-server.com/index.html#tag/System/paths/~1tools~1create-dicom/post>`__,,,Create one DICOM instance
--- a/Sphinx/source/users/rest.rst	Wed Feb 23 11:08:20 2022 +0100
+++ b/Sphinx/source/users/rest.rst	Wed Feb 23 15:03:44 2022 +0100
@@ -94,7 +94,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://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__
 that recursively upload the content of some folder into Orthanc using
 the REST API::
 
@@ -106,7 +106,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://hg.orthanc-server.com/orthanc/file/Orthanc-1.9.7/OrthancServer/Resources/Samples/ImportDicomFiles/OrthancImport.py>`__.
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.10.0/OrthancServer/Resources/Samples/ImportDicomFiles/OrthancImport.py>`__.
     
 
 .. highlight:: perl