Mercurial > hg > orthanc-book
view OpenAPI/orthanc-openapi.yaml @ 415:b224cb85a96c
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 15 May 2020 16:38:17 +0200 |
parents | 2e71e7cc0ec5 |
children |
line wrap: on
line source
openapi: 3.0.0 info: title: Orthanc version: 1.0.0 description: >- One of the major strengths of Orthanc lies in its built-in RESTful API, that can be used to drive Orthanc from external applications, independently of the programming language that is used to develop these applications. The REST API of Orthanc gives a full programmatic access to all the core features of Orthanc. Importantly, Orthanc Explorer (the embedded administrative interface of Orthanc) entirely resorts to this REST API for all its features. This implies that anything that can be done through Orthanc Explorer, can also be done through REST queries.<p> This documentation is <b>work-in-progress</b>: The entire REST API is not covered yet. Please contribute by improving the source code of the documentation: https://bitbucket.org/sjodogne/orthanc-book/src/default/ servers: - url: 'https://demo.orthanc-server.com' components: #################################################################################### ## SCHEMAS / MODELS #################################################################################### schemas: patient: properties: ID: type: string Studies: type: array items: type: string MainDicomTags: type: object properties: OtherPatientIDs: type: string PatientBirthDate: type: string PatientName: type: string PatientSex: type: string ParentPatient: type: string Type: type: string enum: - Patient example: { "ID" : "07a6ec1c-1be5920b-18ef5358-d24441f3-10e926ea", "MainDicomTags" : { "OtherPatientIDs" : "(null)", "PatientBirthDate" : "0", "PatientID" : "000000185", "PatientName" : "Anonymous^Unknown", "PatientSex" : "O" }, "Studies" : [ "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15" ], "Type" : "Patient" } study: properties: ID: type: string Series: type: array items: type: string MainDicomTags: type: object properties: AccesionNumber: type: string StudyDate: type: string StudyDescription: type: string StudyID: type: string StudyInstanceUID: type: string StudyTime: type: string ParentPatient: type: string Type: type: string enum: - Study example: { "ID" : "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15", "MainDicomTags" : { "AccessionNumber" : "(null)", "StudyDate" : "20120716", "StudyDescription" : "TestSUVce-TF", "StudyID" : "23848", "StudyInstanceUID" : "1.2.840.113704.1.111.7016.1342451220.40", "StudyTime" : "170728" }, "ParentPatient" : "07a6ec1c-1be5920b-18ef5358-d24441f3-10e926ea", "Series" : [ "6821d761-31fb55a9-031ebecb-ba7f9aae-ffe4ddc0", "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35", "7384c47e-6398f2a8-901846ef-da1e2e0b-6c50d598" ], "Type" : "Study" } series: properties: ID: type: string ExpectedNumberOfInstances: type: number Instances: type: array items: type: string MainDicomTags: type: object properties: Manufacturer: type: string Modality: type: string NumberOfSlices: type: string ProtocolName: type: string SeriesDate: type: string SeriesDescription: type: string SeriesInstanceUID: type: string SeriesNumber: type: string SeriesTime: type: string StationName: type: string ParentStudy: type: string Type: type: string enum: - Series Status: type: string enum: - Complete example: { "ExpectedNumberOfInstances" : 45, "ID" : "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35", "Instances" : [ "41bc3f74-360f9d10-6ae9ffa4-01ea2045-cbd457dd", "1d3de868-6c4f0494-709fd140-7ccc4c94-a6daa3a8", "1010f80b-161b71c0-897ec01b-c85cd206-e669a3ea", "e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4" ], "MainDicomTags" : { "Manufacturer" : "Philips Medical Systems", "Modality" : "PT", "NumberOfSlices" : "45", "ProtocolName" : "CHU/Body_PET/CT___50", "SeriesDate" : "20120716", "SeriesDescription" : "[WB_CTAC] Body", "SeriesInstanceUID" : "1.3.46.670589.28.2.12.30.26407.37145.2.2516.0.1342458737", "SeriesNumber" : "587370", "SeriesTime" : "171121", "StationName" : "r054-svr" }, "ParentStudy" : "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15", "Status" : "Complete", "Type" : "Series" } instance: properties: FileSize: type: number FileUuid: type: string ID: type: string IndexInSeries: type: number MainDicomTags: type: object properties: AcquisitionNumber: type: string ImageIndex: type: string ImagePositionPatient: type: string InstanceNumber: type: string SOPInstanceUID: type: string ParentSeries: type: string Type: enum: - Instance example: { "FileSize" : 35440, "FileUuid" : "7976ad32-4d15-439b-8789-bf70f52200ec", "ID" : "055bfbaf-2aae936c-82ed5a9a-9267f8b7-416a4000", "IndexInSeries" : 59, "MainDicomTags" : { "AcquisitionNumber" : "2", "ImageIndex" : "59", "ImagePositionPatient" : "-134.74816\\-272.14441\\-712.764", "InstanceNumber" : "59", "SOPInstanceUID" : "1.3.12.2.1107.5.1.4.36085.2.0.3752288429331748" }, "ParentSeries" : "318603c5-03e8cffc-a82b6ee1-3ccd3c1e-18d7e3bb", "Type" : "Instance" } jobId: properties: ID: type: string Path: type: string example: { "ID": "11541b16-e368-41cf-a8e9-3acf4061d238", "Path": "/jobs/11541b16-e368-41cf-a8e9-3acf4061d238" } jobCStore: properties: Description: type: string FailedInstancesCount: type: number InstancesCount: type: number LocalAet: type: string RemoteAet: type: string example: { "Description": "REST API", "FailedInstancesCount": 0, "InstancesCount": 1, "LocalAet": "ORTHANCA", "RemoteAet": "ORTHANCB" } jobPeerStore: properties: Description: type: string FailedInstancesCount: type: number InstancesCount: type: number Peer: type: string example: { "Description": "REST API", "FailedInstancesCount": 0, "InstancesCount": 1, "Peer": [ "http://127.0.0.1:8543/" ] } listOfResourcesWithAsynchOption: properties: Resources: description: A list of resources IDs (Patient, Studies, Series or Instances) type: array items: type: string Asynchronous: description: true to create a job and return immediately, false to wait for job completion. The response will vary according to this parameter. If the call is synchronous, you'll receive a completed job in the response while if the call is asynchronous, you'll receive a job identifier. type: boolean example: { "Resources" : ["62cdfbea-07c71f0c-cd643b19-841a306a-01221339"], "Asynchronous" : true } listOfResources: description: A list of resources IDs (Patient, Studies, Series or Instances) schema: type: array items: type: string example: ["62cdfbea-07c71f0c-cd643b19-841a306a-01221339"] singleResource: description: A resource ID (Patient, Studies, Series or Instances) type: string example: "62cdfbea-07c71f0c-cd643b19-841a306a-01221339" peer: required: - Url properties: Url: type: string description: the root url of the Orthanc Rest API of the other peer Username: type: string Password: type: string HttpHeaders: description: HTTP headers to add to every request sent to that peer type: object CertificateFile: type: string CertificateKeyFile: type: string CertificateKeyPassword: type: string example: { "Url" : "http://localhost:8044", "Username" : "alice", "Password" : "alicePassword", "HttpHeaders" : { "Token" : "Hello world" }, "CertificateFile" : "client.crt", "CertificateKeyFile" : "client.key", "CertificateKeyPassword" : "certpass" } #################################################################################### ## ROUTES / PATHS #################################################################################### paths: /instances: post: tags: [Instances] description: The upload of DICOM files is possible by querying the REST API using the following syntax. requestBody: description: DICOM file content: application/dicom: {} responses: 200: description: New instance successfully posted content: application/json: schema: properties: ID: description: New Orthanc instance ID type: string Path: description: URL path for the instance type: string Status: description: Status type: string enum: - Success get: tags: [Instances] description: Get all DICOM instances ID's in Orthanc parameters: - name: limit in: query schema: type: number description: Limit the number of results to the specified. number - name: since in: query schema: type: number description: Show only the resources since the index provided. responses: 200: description: Array of all instances ID's content: application/json: schema: type: array items: type: string example: [ "055bfbaf-2aae936c-82ed5a9a-9267f8b7-416a4000", "62dc1ec1-9fc2dd9d-aa66eae1-0db608b1-e17f8ce8" ] /instances/{Id}: get: tags: [Instances] description: Get an instance from Orthanc parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc instance content: application/json: schema: $ref: "#/components/schemas/instance" delete: tags : [Instances] description: Delete an instance parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success /instances/{Id}/simplified-tags: get: tags: [Instances] description: Get the human readable tags for the DICOM instance. parameters: - name: Id required: true in: path schema: type: string responses: 200: description: DICOM tags and values content: application/json: schema: type: object example: { "ACR_NEMA_2C_VariablePixelDataGroupLength" : "57130", "AccessionNumber" : null, "AcquisitionDate" : "20120716", "AcquisitionDateTime" : "20120716171219", "AcquisitionTime" : "171219", "ActualFrameDuration" : "3597793", "AttenuationCorrectionMethod" : "CTAC-SG", "PatientID" : "000000185", "PatientName" : "Anonymous^Unknown", "PatientOrientationCodeSequence" : [ { "CodeMeaning" : "recumbent", "CodeValue" : "F-10450", "CodingSchemeDesignator" : "99SDM", "PatientOrientationModifierCodeSequence" : [ { "CodeMeaning" : "supine", "CodeValue" : "F-10340", "CodingSchemeDesignator" : "99SDM" } ] } ], "StudyDescription" : "TestSUVce-TF", "StudyID" : "23848", "StudyInstanceUID" : "1.2.840.113704.1.111.7016.1342451220.40", "StudyTime" : "171117", "TypeOfDetectorMotion" : "NONE", "Units" : "BQML", "Unknown" : null, "WindowCenter" : "1.496995e+04", "WindowWidth" : "2.993990e+04" } /instances/{Id}/tags: get: tags: [Instances] description: Get the detailed tags for the DICOM instance. parameters: - name: Id required: true in: path schema: type: string - name: simplify required: false description: Show more user-friendly tags like in /simplified-tags in: query schema: type: boolean - name: short required: false description: Shorten the values so that they are not separate JSON objects with the user-friendly description of the tag and the type. Instead, values are given as direct values to the tags. in: query schema: type: boolean responses: 200: description: DICOM tags and values content: application/json: schema: type: object example: { "0008,0005" : { "Name" : "SpecificCharacterSet", "Type" : "String", "Value" : "ISO_IR 100" }, "0008,0008" : { "Name" : "ImageType", "Type" : "String", "Value" : "ORIGINAL\\PRIMARY\\HEADER_CORRECTED" }, "0008,0016" : { "Name" : "SOPClassUID", "Type" : "String", "Value" : "1.2.840.10008.5.1.4.1.1.128" }, "0008,0018" : { "Name" : "SOPInstanceUID", "Type" : "String", "Value" : "1.3.12.2.1107.5.1.4.36085.2.0.3752288429331748" }, "0008,0020" : { "Name" : "StudyDate", "Type" : "String", "Value" : "20040304" }, "0008,0021" : { "Name" : "SeriesDate", "Type" : "String", "Value" : "20040304" }, "0008,0022" : { "Name" : "AcquisitionDate", "Type" : "String", "Value" : "20040304" } } /instances/{Id}/header: get: tags: [Instances] description: Get the detailed header tags for the DICOM instance. parameters: - name: Id required: true in: path schema: type: string - name: simplify required: false description: Show more user-friendly tags like in /simplified-tags in: query schema: type: boolean - name: short required: false description: Shorten the values so that they are not separate JSON objects with the user-friendly description of the tag and the type. Instead, values are given as direct values to the tags. in: query schema: type: boolean responses: 200: description: DICOM tags and values content: application/json: schema: type: object example: { "0002,0000" : { "Name" : "FileMetaInformationGroupLength", "Type" : "String", "Value" : "222" }, "0002,0002" : { "Name" : "MediaStorageSOPClassUID", "Type" : "String", "Value" : "1.2.840.10008.5.1.4.1.1.128" }, "0002,0003" : { "Name" : "MediaStorageSOPInstanceUID", "Type" : "String", "Value" : "1.3.12.2.1107.5.1.4.36085.2.0.3752288429331748" }, "0002,0010" : { "Name" : "TransferSyntaxUID", "Type" : "String", "Value" : "1.2.840.10008.1.2.1" }, "0002,0012" : { "Name" : "ImplementationClassUID", "Type" : "String", "Value" : "1.2.826.0.1.3680043.2.1143.107.104.103.115.2.2.4" }, "0002,0013" : { "Name" : "ImplementationVersionName", "Type" : "String", "Value" : "GDCM 2.2.4" }, "0002,0016" : { "Name" : "SourceApplicationEntityTitle", "Type" : "String", "Value" : "gdcmconv" } } /instances/{Id}/content/{Tag}: get: tags: [Instances] description: Get the value for a single tag of a DICOM instance. parameters: - name: Id required: true in: path schema: type: string - name: Tag required: true in: path schema: type: string responses: 200: description: Returns the DICOM tag value or value sub-structure. content: application/json: schema: type: object text/plain: example: Anonymous^Unknown /instances/{Id}/file: get: tags: [Instances] description: Download the DICOM instance file in DCM format. parameters: - name: Id required: true in: path schema: type: string responses: 200: description: DICOM file contents content: application/dicom: {} /instances/{Id}/preview: get: tags: [Instances] description: Download a preview image of the DICOM instance. parameters: - name: Id required: true in: path schema: type: string - name: Accept description: Default is image/png required: false in: header schema: type: string enum: - image/png - image/jpeg responses: 200: description: DICOM preview content: image/png: {} image/jpg: {} /instances/{Id}/{PixelFormat}: get: tags: [Instances] description: Download an image of the DICOM instance in the specified format. parameters: - name: Id required: true in: path schema: type: string - name: PixelFormat required: true in: path schema: type: string enum: - image-uint8 - image-uint16 - image-int16 - matlab - raw - raw.gz - name: Accept required: true in: header schema: type: string enum: - image/png - image/jpeg - image/x-portable-arbitrarymap responses: 200: description: Image content: image/png: {} image/jpg: {} image/x-portable-arbitrarymap: {} application/octet-stream: {} text/plain: {} /instances/{Id}/pdf: get: tags: [Instances] description: Download the embedded PDF of the DICOM instance. parameters: - name: Id required: true in: path schema: type: string responses: 200: description: The raw PDF bytes are returned. content: application/pdf: {} 404: description: The instance does not contain an encapsulated PDF or the instance is not found. /series: get: tags: [Series] description: Get all DICOM series ID's in Orthanc parameters: - name: limit in: query schema: type: number description: Limit the number of results to the specified. number - name: since in: query schema: type: number description: Show only the resources since the index provided. responses: 200: description: Array of all series ID's content: application/json: schema: type: array items: type: string example: [ "055bfbaf-2aae936c-82ed5a9a-9267f8b7-416a4000", "62dc1ec1-9fc2dd9d-aa66eae1-0db608b1-e17f8ce8" ] /series/{Id}: get: tags: [Series] description: Get a series from Orthanc parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc series content: application/json: schema: $ref: "#/components/schemas/series" delete: tags : [Series] description: Delete a series parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success /series/{Id}/instances: get: tags: [Series] description: Get the instances for a series parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc instances content: application/json: schema: type: array items: $ref: "#/components/schemas/instance" /studies: get: tags: [Studies] description: Get all DICOM studies ID's in Orthanc parameters: - name: limit in: query schema: type: number description: Limit the number of results to the specified. number - name: since in: query schema: type: number description: Show only the resources since the index provided. responses: 200: description: Array of all study ID's content: application/json: schema: type: array items: type: string example: [ "055bfbaf-2aae936c-82ed5a9a-9267f8b7-416a4000", "62dc1ec1-9fc2dd9d-aa66eae1-0db608b1-e17f8ce8" ] /studies/{Id}: get: tags: [Studies] description: Get a study from Orthanc parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc study content: application/json: schema: $ref: "#/components/schemas/study" delete: tags : [Studies] description: Delete a study parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success /studies/{Id}/series: get: tags: [Studies] description: Get the series for a study parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc series content: application/json: schema: type: array items: $ref: "#/components/schemas/series" /studies/{Id}/instances: get: tags: [Studies] description: Get the instances for a study parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc instances content: application/json: schema: type: array items: $ref: "#/components/schemas/instance" /patients: get: tags: [Patients] description: Get all DICOM patient ID's in Orthanc parameters: - name: limit in: query schema: type: number description: Limit the number of results to the specified. number - name: since in: query schema: type: number description: Show only the resources since the index provided. responses: 200: description: Array of all patient ID's content: application/json: schema: type: array items: type: string example: [ "055bfbaf-2aae936c-82ed5a9a-9267f8b7-416a4000", "62dc1ec1-9fc2dd9d-aa66eae1-0db608b1-e17f8ce8" ] /patients/{Id}: get: tags: [Patients] description: Get a patient from Orthanc parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc patient content: application/json: schema: $ref: "#/components/schemas/patient" delete: tags : [Patients] description: Delete a patient parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success /patients/{Id}/studies: get: tags: [Patients] description: Get the studies for a patient parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success content: application/json: schema: type: array items: $ref: "#/components/schemas/study" /patients/{Id}/series: get: tags: [Patients] description: Get the series for a patient parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc series content: application/json: schema: type: array items: $ref: "#/components/schemas/series" /patients/{Id}/instances: get: tags: [Patients] description: Get the instances for a patient parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Orthanc instances content: application/json: schema: type: array items: $ref: "#/components/schemas/instance" /peers: get: tags: [Orthanc Peers] description: Get a list of Orthanc peers. parameters: - name: expand in: query required: false schema: type: boolean responses: 200: description: List of Orthanc peers content: application/json: schema: type: array items: type: string /peers/{Peer}: put: tags: [Orthanc Peers] summary: Add a new Orthanc peer. description: Note that this will only be stored in memory unless the 'OrthancPeersInDatabase' configuration option is set. parameters: - name: Peer in: path required: true schema: type: string requestBody: content: application/json: schema: type: array items: $ref: "#/components/schemas/peer" responses: 200: description: Peer created /peers/{Peer}/store: post: tags: [Orthanc Peers] summary: Send resources to an Orthanc peer. parameters: - name: Peer in: path required: true description: the peer alias as defined in the Orthanc configuration file schema: type: string requestBody: content: application/json: schema: oneOf: - $ref: "#/components/schemas/listOfResourcesWithAsynchOption" - $ref: "#/components/schemas/listOfResources" text/plain: schema: $ref: "#/components/schemas/singleResource" responses: 200: description: Jobs that have been created content: application/json: schema: oneOf: - $ref: "#/components/schemas/jobId" - $ref: "#/components/schemas/jobPeerStore" /modalities/{Modality}/store: post: tags: [Remote Modalities] summary: Send resources from Orthanc to a remote modality through C-Store. parameters: - name: Modality in: path required: true description: the modality alias where you want to send data (as defined in the Orthanc configuration file) schema: type: string requestBody: content: application/json: schema: oneOf: - $ref: "#/components/schemas/listOfResourcesWithAsynchOption" - $ref: "#/components/schemas/listOfResources" text/plain: schema: $ref: "#/components/schemas/singleResource" responses: 200: description: Jobs that have been created content: application/json: schema: oneOf: - $ref: "#/components/schemas/jobId" - $ref: "#/components/schemas/jobCStore" /modalities/{Modality}/query: post: tags: [Remote Modalities] description: To initiate a query you perform a POST command against the Modality with the identifiers you are looking for. This search is case insensitive unless configured otherwise within the Orthanc configuration file. Note that queries are cleaned up after a period of inactivity, which can sometimes be very short. You will need to access the query results quickly. parameters: - name: Modality in: path required: true description: The Modality to be queried from within the Orthanc configuration file schema: type: string requestBody: content: application/json: schema: properties: Level: type: string enum: - Patient - Study - Series - Instance Query: type: object properties: PatientID: type: string StudyDescription: type: string description: Match the study description. Note that wildcard "*" can be used to match any text (eg. "*Chest*"). PatientName: type: string StudyDate: type: string description: This is the study date in the format "20160504". Note that ranges can be used using a hyphen (eg. "20160504-" and "20160504-20170504"). StudyTime: type: string required: [Level, Query] example: {"Level":"Study","Query": {"PatientID":"","StudyDescription":"*Chest*","PatientName":""}} responses: 200: description: Query successful content: application/json: schema: properties: ID: type: string Path: type: string example: { "ID": "5af318ac-78fb-47ff-b0b0-0df18b0588e0", "Path": "/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0" } /queries/{QueryID}/level: get: tags: [Remote Modalities] description: Review the query level, such as Patient, Study, Series or Instance. parameters: - name: QueryID description: This is the query ID that comes from posting a query to the modality. in: path required: true schema: type: string responses: 200: description: Return the level of the query, whether Patient, Study, Series or Instance. content: text/plain: example: Series /queries/{QueryID}/modality: get: tags: [Remote Modalities] description: Review the query modality name that the query was originally performed against. parameters: - name: QueryID description: This is the query ID that comes from posting a query to the modality. in: path required: true schema: type: string responses: 200: description: Return the name of the modality that the query was run against. content: text/plain: example: SomeModalityName /queries/{QueryID}/query: get: tags: [Remote Modalities] description: Review the query that was posted. parameters: - name: QueryID description: This is the query ID that comes from posting a query to the modality. in: path required: true schema: type: string responses: 200: description: Return the query identifiers that were used originally when it was posted. /queries/{QueryID}/answers: get: tags: [Remote Modalities] description: Review the query answers. parameters: - name: QueryID description: This is the query ID that comes from posting a query to the modality. in: path required: true schema: type: string responses: 200: description: Return the query answers. /queries/{QueryID}/answers/{Idx}/content: get: tags: [Remote Modalities] description: Review a specific query answer. If there are content items missing, you may add them by adding that identifier to the original query. For example if we wanted Modalities listed in this JSON answer in the initial query we would add to the POST body "ModalitiesInStudy":"" parameters: - name: QueryID description: This is the query ID that comes from posting a query to the modality. in: path required: true schema: type: string - name: Idx description: This is the index of a specific answer in the list of answers of the query. in: path required: true schema: type: number responses: 200: description: Return a single query answer content: application/json: {} /queries/{QueryID}/retrieve: post: tags: [Remote Modalities] description: You can perform a C-Move to retrieve all studies within the original query using a post command and identifying the Modality (named in this example Orthanc), to be one to in the POST contents. The C-Move can be done asynchronously using an Orthanc job using a JSON parameter in the request body. parameters: - name: QueryID description: This is the query ID that comes from posting a query to the modality. in: path required: true schema: type: string requestBody: description: The request body is the name of the modality to perform the C-Move or a JSON structure with additional information. content: text/plain: example: Orthanc application/json: schema: properties: TargetAet: type: string Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"TargetAet":"Orthanc","Synchronous":false} responses: 200: description: Success content: application/json: schema: properties: ID: type: string description: The ID of the job if the retrieve is asynchronous (ie. Synchronous is set to true) Path: type: string description: The URL path of the job if the retrieve is asynchronous (ie. Synchronous is set to false) example: { "ID" : "11541b16-e368-41cf-a8e9-3acf4061d238", "Path" : "/jobs/11541b16-e368-41cf-a8e9-3acf4061d238" } /queries/{QueryID}/answers/{Idx}/retrieve: post: tags: [Remote Modalities] description: You can perform a C-Move to retrieve a specific study within the original query using a post command and identifying the Modality (named in this example Orthanc), to be one to in the POST contents. parameters: - name: QueryID description: This is the query ID that comes from posting a query to the modality. in: path required: true schema: type: string - name: Idx description: This is the index of a specific answer in the list of answers of the query. in: path required: true schema: type: number requestBody: description: The request body is the name of the modality to perform the C-Move. content: text/plain: example: Orthanc responses: 200: description: Success /tools/find: post: tags: [Find] description: Performing a find within Orthanc is very similar to using Queries against DICOM modalities and the additional options listed above work with find also. When performing a find, you will receive the Orthanc ID’s of all the matched items within your find. For example if you perform a study level find and 5 Studies match you will receive 5 study level Orthanc ID’s in JSON format as a response. requestBody: description: The request body gives the parameters for the find much like when querying a remote modality. content: application/json: schema: properties: Level: type: string enum: - Patient - Study - Series - Instance Expand: type: boolean description: Returns an array of resources instead of just ID's. Limit: type: number Query: properties: Modality: type: string StudyDate: type: string PatientID: type: string example: {"Level":"Instance","Limit": 2, "Query":{"Modality":"CR","StudyDate":"20180323-","PatientID":"*"}} responses: 200: description: Success content: application/json: schema: oneOf: - type: array items: type: string - type: array items: $ref: "#/components/schemas/instance" - type: array items: $ref: "#/components/schemas/series" - type: array items: $ref: "#/components/schemas/study" - type: array items: $ref: "#/components/schemas/patient" example: [ "6821d761-31fb55a9-031ebecb-ba7f9aae-ffe4ddc0", "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35" ] /changes: get: tags: [Tracking Changes] parameters: - name: limit description: Limit the number of changes to a maximum of the provided number. in: query required: false schema: type: number - name: since description: Show only changes that have happened after the change with the provided sequence number. in: query required: false schema: type: number description: Whenever Orthanc receives a new DICOM instance, this event is recorded in the so-called “Changes Log”. This enables remote scripts to react to the arrival of new DICOM resources. A typical application is auto-routing, where an external script waits for a new DICOM instance to arrive into Orthanc, then forward this instance to another modality. responses: 200: description: The list of recent changes content: application/json: schema: properties: Changes: type: array items: properties: ChangeType: type: string enum: - NewPatient - NewStudy - NewSeries - NewInstance - StablePatient - StableStudy - StableSeries - StableInstance Date: type: string ID: type: string Path: type: string ResourceType: type: string enum: - Patient - Study - Series - Instance Seq: type: number Done: type: boolean description: The flag Done is set to true if no further event has occurred after this lastly returned event. If Done is set to false, further events are available and can be retrieved. This is done by setting the since option that specifies from which sequence number the changes must be returned. Last: type: number description: The flag Last records the sequence number of the lastly returned event. example: { "Changes" : [ { "ChangeType" : "NewInstance", "Date" : "20130507T143902", "ID" : "8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe", "Path" : "/instances/8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe", "ResourceType" : "Instance", "Seq" : 921 }, { "ChangeType" : "NewSeries", "Date" : "20130507T143902", "ID" : "cceb768f-e0f8df71-511b0277-07e55743-9ef8890d", "Path" : "/series/cceb768f-e0f8df71-511b0277-07e55743-9ef8890d", "ResourceType" : "Series", "Seq" : 922 }, { "ChangeType" : "NewStudy", "Date" : "20130507T143902", "ID" : "c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f", "Path" : "/studies/c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f", "ResourceType" : "Study", "Seq" : 923 }, { "ChangeType" : "NewPatient", "Date" : "20130507T143902", "ID" : "dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94", "Path" : "/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94", "ResourceType" : "Patient", "Seq" : 924 } ], "Done" : true, "Last" : 924 } delete: tags : [Tracking Changes] description: Clear the content of the changes log responses: 200: description: Success /exports: get: tags: [Exported Resources] description: For medical traceability, Orthanc can be configured to store a log of all the resources that have been exported to remote modalities. responses: 200: {description: Success} delete: tags: [Exported Resources] description: In auto-routing scenarios, it is important to prevent this log to grow indefinitely as incoming instances are routed. You can either disable this logging by setting the option LogExportedResources to false in the configuration file, or periodically clear this log by DELETE-ing this URI. responses: 200: {description: Success} /instances/{Id}/anonymize: post: tags: [Anonymization] description: Anonymize the instance by erasing all the tags that are specified in Table E.1-1 from PS 3.15 of the DICOM standard 2008 or 2017c (default). The response will contain the anonymized DICOM result. New UUIDs are automatically generated for the instance. parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: DicomVersion: type: string description: Specifies which version of the DICOM standard shall be used for anonymization. Allowed values are 2008 and 2017c (default value if the parameter is absent). This parameter has been introduced in Orthanc 1.3.0. In earlier version, the 2008 standard was used. enum: - 2017c - 2008 Replace: type: object description: Replace is an associative array that associates a DICOM tag with its new string value. The value is dynamically cast to the proper DICOM data type (an HTTP error will occur if the cast fails). Replacements are applied after all the tags to anonymize have been removed. Keep: type: array items: type: string description: List of DICOM tags that should be kept through the anonymization process. KeepPrivateTags: type: boolean description: If KeepPrivateTags is set to true in the JSON request, private tags (i.e. manufacturer-specific tags) are not removed by the anonymization process. The default behavior consists in removing the private tags, as such tags can contain patient-specific information. example: {"Replace":{"PatientName":"Hello","0010-1001":"World"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": true, "DicomVersion" : "2017c"} responses: 200: description: The response contains a DICOM file that has been anonymized. content: application/dicom: {} /patients/{Id}/anonymize: post: tags: [Anonymization] description: Anonymize the patient parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: DicomVersion: type: string description: Specifies which version of the DICOM standard shall be used for anonymization. Allowed values are 2008 and 2017c (default value if the parameter is absent). This parameter has been introduced in Orthanc 1.3.0. In earlier version, the 2008 standard was used. enum: - 2017c - 2008 Replace: type: object description: Replace is an associative array that associates a DICOM tag with its new string value. The value is dynamically cast to the proper DICOM data type (an HTTP error will occur if the cast fails). Replacements are applied after all the tags to anonymize have been removed. Keep: type: array items: type: string description: List of DICOM tags that should be kept through the anonymization process. KeepPrivateTags: type: boolean description: If KeepPrivateTags is set to true in the JSON request, private tags (i.e. manufacturer-specific tags) are not removed by the anonymization process. The default behavior consists in removing the private tags, as such tags can contain patient-specific information. Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"Replace":{"PatientName":"Hello","0010-1001":"World"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": true, "DicomVersion" : "2017c"} responses: 200: description: Success content: application/json: schema: properties: ID: type: string description: The ID of the new anonymized patient. Path: type: string description: The URL of the new anonymized patient. PatientID: type: string Type: type: string enum: - Patient example: { "ID" : "f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0", "Path" : "/patients/f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0", "PatientID" : "f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0", "Type" : "Patient" } /studies/{Id}/anonymize: post: tags: [Anonymization] description: Anonymize the study parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: DicomVersion: type: string description: Specifies which version of the DICOM standard shall be used for anonymization. Allowed values are 2008 and 2017c (default value if the parameter is absent). This parameter has been introduced in Orthanc 1.3.0. In earlier version, the 2008 standard was used. enum: - 2017c - 2008 Replace: type: object description: Replace is an associative array that associates a DICOM tag with its new string value. The value is dynamically cast to the proper DICOM data type (an HTTP error will occur if the cast fails). Replacements are applied after all the tags to anonymize have been removed. Keep: type: array items: type: string description: List of DICOM tags that should be kept through the anonymization process. KeepPrivateTags: type: boolean description: If KeepPrivateTags is set to true in the JSON request, private tags (i.e. manufacturer-specific tags) are not removed by the anonymization process. The default behavior consists in removing the private tags, as such tags can contain patient-specific information. Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"Replace":{"PatientName":"Hello","0010-1001":"World"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": true, "DicomVersion" : "2017c"} responses: 200: description: Success content: application/json: schema: properties: ID: type: string description: The ID of the new anonymized study. Path: type: string description: The URL of the new anonymized study. example: { "ID" : "3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce", "Path" : "/studies/3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce" } /series/{Id}/anonymize: post: tags: [Anonymization] description: Anonymize the series parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: DicomVersion: type: string description: Specifies which version of the DICOM standard shall be used for anonymization. Allowed values are 2008 and 2017c (default value if the parameter is absent). This parameter has been introduced in Orthanc 1.3.0. In earlier version, the 2008 standard was used. enum: - 2017c - 2008 Replace: type: object description: Replace is an associative array that associates a DICOM tag with its new string value. The value is dynamically cast to the proper DICOM data type (an HTTP error will occur if the cast fails). Replacements are applied after all the tags to anonymize have been removed. Keep: type: array items: type: string description: List of DICOM tags that should be kept through the anonymization process. KeepPrivateTags: type: boolean description: If KeepPrivateTags is set to true in the JSON request, private tags (i.e. manufacturer-specific tags) are not removed by the anonymization process. The default behavior consists in removing the private tags, as such tags can contain patient-specific information. Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"Replace":{"PatientName":"Hello","0010-1001":"World"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": true, "DicomVersion" : "2017c"} responses: 200: description: Success content: application/json: schema: properties: ID: type: string description: The ID of the new anonymized series. Path: type: string description: The URL of the new anonymized series. example: { "ID" : "3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce", "Path" : "/series/3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce" } /instances/{Id}/modify: post: tags: [Modification] description: Orthanc allows to modify a set of specified tags in a single DICOM instance and to download the resulting modified DICOM file. parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: Replace: type: object description: The Replace associative array specifies the substitions to be applied (cf. anonymization). Remove: type: array items: type: string description: The Remove array specifies the list of the tags to remove. RemovePrivateTags: type: boolean description: If RemovePrivateTags is set to true, the private tags (i.e. manufacturer-specific tags) are removed. Force: type: boolean description: The Force option must be set to true, in order to allow the modification of the PatientID, as such a modification of the DICOM identifiers might lead to breaking the DICOM model of the real-world. In general, any explicit modification to one of the PatientID, StudyInstanceUID, SeriesInstanceUID, and SOPInstanceUID requires Force to be set to true, in order to prevent any unwanted side effect. default: false example: {"Replace":{"PatientName":"hello","PatientID":"world"},"Remove":["InstitutionName"],"RemovePrivateTags": true, "Force": true} responses: 200: description: The response contains a DICOM file that has been anonymized. content: application/dicom: {} /studies/{Id}/modify: post: tags: [Modification] description: It is possible to modify all the instances from a study or from a series in a single request. In this case, the modified instances are stored back into the Orthanc store. parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: Replace: type: object description: The Replace associative array specifies the substitions to be applied (cf. anonymization). Remove: type: array items: type: string description: The Remove array specifies the list of the tags to remove. RemovePrivateTags: type: boolean description: If RemovePrivateTags is set to true, the private tags (i.e. manufacturer-specific tags) are removed. Force: type: boolean description: The Force option must be set to true, in order to allow the modification of the PatientID, as such a modification of the DICOM identifiers might lead to breaking the DICOM model of the real-world. In general, any explicit modification to one of the PatientID, StudyInstanceUID, SeriesInstanceUID, and SOPInstanceUID requires Force to be set to true, in order to prevent any unwanted side effect. default: false Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"Replace":{"InstitutionName":"My own clinic"}} responses: 200: description: Success content: application/json: schema: properties: ID: type: string description: The ID of the new modified study. Path: type: string description: The URL of the new modified study. example: { "ID" : "3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce", "Path" : "/studies/3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce" } /series/{Id}/modify: post: tags: [Modification] description: It is possible to modify all the instances from a study or from a series in a single request. In this case, the modified instances are stored back into the Orthanc store. parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: Replace: type: object description: The Replace associative array specifies the substitions to be applied (cf. anonymization). Remove: type: array items: type: string description: The Remove array specifies the list of the tags to remove. RemovePrivateTags: type: boolean description: If RemovePrivateTags is set to true, the private tags (i.e. manufacturer-specific tags) are removed. Force: type: boolean description: The Force option must be set to true, in order to allow the modification of the PatientID, as such a modification of the DICOM identifiers might lead to breaking the DICOM model of the real-world. In general, any explicit modification to one of the PatientID, StudyInstanceUID, SeriesInstanceUID, and SOPInstanceUID requires Force to be set to true, in order to prevent any unwanted side effect. default: false Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"Replace":{"InstitutionName":"My own clinic"}} responses: 200: description: Success content: application/json: schema: properties: ID: type: string description: The ID of the new modified study. Path: type: string description: The URL of the new modified study. example: { "ID" : "3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce", "Path" : "/series/3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce" } /patients/{Id}/modify: post: tags: [Modification] description: Starting with Orthanc 0.7.5, Orthanc can also modify all the instances of a patient with a single REST call. parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: Replace: type: object description: The Replace associative array specifies the substitions to be applied (cf. anonymization). Remove: type: array items: type: string description: The Remove array specifies the list of the tags to remove. RemovePrivateTags: type: boolean description: If RemovePrivateTags is set to true, the private tags (i.e. manufacturer-specific tags) are removed. Force: type: boolean description: The Force option must be set to true, in order to allow the modification of the PatientID, as such a modification of the DICOM identifiers might lead to breaking the DICOM model of the real-world. In general, any explicit modification to one of the PatientID, StudyInstanceUID, SeriesInstanceUID, and SOPInstanceUID requires Force to be set to true, in order to prevent any unwanted side effect. default: false Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"Replace":{"PatientID":"Hello","PatientName":"Sample patient name"},"Force":true} responses: 200: description: Success content: application/json: schema: properties: ID: type: string description: The ID of the new modified patient. Path: type: string description: The URL of the new modified patient. PatientID: type: string Type: type: string enum: - Patient example: { "ID" : "f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0", "Path" : "/patients/f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0", "PatientID" : "f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0", "Type" : "Patient" } /studies/{Id}/split: post: tags: [Split/merge DICOM studies] description: "Starting with Orthanc 1.5.0, Orthanc supports splitting and merging DICOM studies through its REST API. By issuing the example command, the series whose Orthanc identifier is 6ca4c9f3-5e895cb3-4d82c6da-09e060fe-9c59f228, and that is part of the source study with identifier in the URL, will be removed from the source study, and will be moved to a brand new study. This is done by generating a new value for all the following DICOM tags in the DICOM instances of the series of interest: StudyInstanceUID (0x0020, 0x000d), SeriesInstanceUID (0x0020, 0x000e), and SOPInstanceUID (0x0008, 0x0018)" parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: Series: type: array items: type: string description: Series gives the list of series to be separated from the parent study (mandatory option). These series must all be children of the same source study, that is specified in the URI. Replace: type: object description: Replace allows to overwrite the DICOM tags that are part of the "Patient Module Attributes" and the "General Study Module Attributes", as specified by the DICOM 2011 standard in Tables C.7-1 and C.7-3. Remove: type: array items: type: string description: Remove allows to remove DICOM tags from the same modules as in the Replace options. KeepSource: type: boolean description: KeepSource (Boolean value), if set to true, instructs Orthanc to keep a copy of the original series in the source study. By default, the original series are deleted from Orthanc. Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"Series":["6ca4c9f3-5e895cb3-4d82c6da-09e060fe-9c59f228"],"Replace":{"PatientName":"HELLO"},"Remove":["AccessionNumber"]} responses: 200: description: Success /studies/{Id}/merge: post: tags: [Split/merge DICOM studies] description: "Merge DICOM series into another DICOM study. By issuing this command, the DICOM series whose Orthanc identifier is ef2ce55f-9342856a-aee23907-2667e859-9f3b734d, will be merged into target study with identifier Id in the URL. As in the case of splitting, this is done by updating the following DICOM tags: StudyInstanceUID (0x0020, 0x000d), SeriesInstanceUID (0x0020, 0x000e), and SOPInstanceUID (0x0008, 0x0018). Furthermore, all the DICOM tags that are part of the “Patient Module Attributes” and the “General Study Module Attributes” (as specified by the DICOM 2011 standard in Tables C.7-1 and C.7-3), are modified to match the target study." parameters: - name: Id required: true in: path schema: type: string requestBody: content: application/json: schema: properties: Resources: type: array items: type: string description: Resources gives the list of source studies or source series that are to be merged into the target study. KeepSource: type: boolean description: KeepSource (Boolean value), if set to true, instructs Orthanc to keep the source studies and series. By default, the original resources are deleted from Orthanc. Synchronous: type: boolean default: true description: If Synchronous is set to false then this operation runs as an Orthanc job. The output of this request will indicate the Job ID. Priority: type: number default: 0 description: If Synchronous is set to false then this sets the priority of the job. The default priority is 0. example: {"Resources":["ef2ce55f-9342856a-aee23907-2667e859-9f3b734d"]} responses: 200: description: Success /instances/{Id}/frames: get: tags: [Frames] description: Get the list of frames for a DICOM instance. parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success content: application/json: schema: type: array items: type: number example: [0, 75] /instances/{Id}/frames/{Idx}/{PixelFormat}: get: tags: [Frames] description: Get the image data of a frame within an instance. parameters: - name: Id required: true in: path schema: type: string - name: Idx required: true in: path schema: type: number - name: PixelFormat required: true in: path schema: type: string enum: - image-uint8 - image-uint16 - image-int16 - matlab - raw - raw.gz - name: Accept required: true in: header schema: type: string enum: - image/png - image/jpeg - image/x-portable-arbitrarymap responses: 200: description: Image content: image/png: {} image/jpg: {} image/x-portable-arbitrarymap: {} application/octet-stream: {} text/plain: {} /instances/{Id}/frames/{Idx}/preview: get: tags: [Frames] description: Download a preview image of the frame of a DICOM instance. parameters: - name: Id required: true in: path schema: type: string - name: Idx required: true in: path schema: type: number - name: Accept description: Default is image/png required: false in: header schema: type: string enum: - image/png - image/jpeg responses: 200: description: DICOM preview content: image/png: {} image/jpg: {} /tools/lookup: post: tags: [Lookup] description: Lookup resources by their UID requestBody: content: text/plain: example: "1.2.826.0.1.3680043.8.1055.1.20111103111148288.81713267.86905863" responses: 200: description: Success content: application/json: schema: type: array items: properties: ID: type: string Path: type: string Type: type: string enum: - Patient - Study - Series - Instance example: { "ID" : "53a15d3a-ec236c65-5958be97-e31b8725-5f55ca69", "Path" : "/instances/53a15d3a-ec236c65-5958be97-e31b8725-5f55ca69", "Type" : "Instance" } /tools/create-archive: post: tags: [Archive] description: Create an archive (zip) of the specified resource ID's as a collection of DICOM files. requestBody: content: application/json: schema: oneOf: - type: array items: type: string - properties: Synchronous: type: boolean default: true description: If synchronous is set to false then the archive is created through a job. The job ID and path will be given in the response. Once that job is complete then you can access the archive from the /jobs/{Id}/archive endpoint. Resources: type: array items: type: string example: [ 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17', '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918', '1e2c125c-411b8e86-3f4fe68e-a7584dd3-c6da78f0' ] responses: 200: description: Success content: application/zip: {} application/json: schema: properties: ID: type: string Path: type: string example: { "ID" : "6c5bab22-79ae-4eca-b0af-d979431801bd", "Path" : "/jobs/6c5bab22-79ae-4eca-b0af-d979431801bd" } /tools/default-encoding: get: tags: [I18N] description: Get the default text encoding for the Orthanc server. responses: 200: description: Success content: text/plain: example: Latin1 post: tags: [I18N] description: Set the default text encoding for the Orthanc server. requestBody: content: text/plain: example: "Latin1" responses: 200: description: Success /jobs: get: tags: [Jobs] description: The list of all jobs can be retrieved as follows. responses: 200: description: Success content: application/json: schema: type: array items: type: string example: [ "e0d12aac-47eb-454f-bb7f-9857931e2904" ] /jobs/{Id}: get: tags: [Jobs] description: The list of all jobs can be retrieved as follows. parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success content: application/json: schema: properties: CompletionTime: type: string Content: type: array items: properties: Description: type: string InstanceCount: type: number UncompressedSizeMB: type: number CreationTime: type: string EffectiveRuntime: type: number ErrorCode: type: number ErrorDescription: type: string ID: type: string Priority: type: number Progress: type: number State: type: string enum: - Success - Failure - Pending - Running - Paused - Retry Timestamp: type: string Type: type: string example: { "CompletionTime" : "20190306T095223.753851", "Content" : { "Description" : "REST API", "InstancesCount" : 1, "UncompressedSizeMB" : 0 }, "CreationTime" : "20190306T095223.750666", "EffectiveRuntime" : 0.001, "ErrorCode" : 0, "ErrorDescription" : "Success", "ID" : "e0d12aac-47eb-454f-bb7f-9857931e2904", "Priority" : 0, "Progress" : 100, "State" : "Success", "Timestamp" : "20190306T095408.556082", "Type" : "Archive" } /jobs/{Id}/archive: get: tags: [Jobs] description: Get the archive generated by the job. Note that the job must be an archive job and it must be complete. parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success content: application/zip: {} /jobs/{Id}/cancel: post: tags: [Jobs] description: Cancel the job parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success /jobs/{Id}/pause: post: tags: [Jobs] description: Pause the job parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success /jobs/{Id}/resume: post: tags: [Jobs] description: Resume the job parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success /jobs/{Id}/resubmit: post: tags: [Jobs] description: Retry the job parameters: - name: Id required: true in: path schema: type: string responses: 200: description: Success /tools/create-dicom: post: tags: [PDF] description: The /tools/create-dicom URI can be used to upload a PDF file to Orthanc. You can retrieve the PDF from the instance using /instances/{Id}/pdf. requestBody: content: application/json: schema: properties: Tags: properties: PatientName: type: string Modality: type: string Content: type: string pattern: 'data:application/pdf;base64,.*' description: Base 64 encoded bytes of the PDF to store. example: {"Tags" : {"PatientName" : "Benjamino", "Modality" : "CT"},"Content" : "data:application/pdf;base64,<base64contentsofpdf>"} responses: 200: description: The ID of the new DICOM instance is returned. content: text/plain: example: "e0d12aac-47eb-454f-bb7f-9857931e2904" /tools/metrics-prometheus: get: tags: [Prometheus Metrics] description: Orthanc publishes its metrics according to the text-based format of Prometheus (check also the OpenMetrics project), onto the /tools/metrics-prometheus URI of the REST API. responses: 200: description: Success content: text/plain: example: | orthanc_count_instances 1 1551868380543 orthanc_count_patients 1 1551868380543 orthanc_count_series 1 1551868380543 orthanc_count_studies 1 1551868380543 orthanc_disk_size_mb 0.0135002136 1551868380543 orthanc_jobs_completed 1 1551868380543 orthanc_jobs_failed 0 1551868380543 orthanc_jobs_pending 0 1551868380543 orthanc_jobs_running 0 1551868380543 orthanc_jobs_success 1 1551868380543 orthanc_rest_api_active_requests 1 1551868380543 orthanc_rest_api_duration_ms 0 1551868094265 orthanc_storage_create_duration_ms 0 1551865919315 orthanc_storage_read_duration_ms 0 1551865943752 orthanc_store_dicom_duration_ms 5 1551865919319 orthanc_uncompressed_size_mb 0.0135002136 1551868380543 /tools/metrics: get: tags: [Prometheus Metrics] description: Get the enablement state of the metrics gathering. responses: 200: description: Success content: text/plain: example: "1" put: tags: [Prometheus Metrics] description: Set the enablement state of the metrics gathering. requestBody: content: text/plain: example: "1" responses: 200: description: Success /system: get: tags: [System] description: Get system information for the Orthanc server. responses: 200: description: Success content: application/json: schema: properties: ApiVersion: type: number DatabaseBackendPlugin: type: string DatabaseVersion: type: number DicomAet: type: string DicomPort: type: number HttpPort: type: number Name: type: string PluginsEnabled: type: boolean StorageAreaPlugin: type: string Version: type: string example: { "ApiVersion" : 3, "DatabaseBackendPlugin" : null, "DatabaseVersion" : 6, "DicomAet" : "ORTHANC", "DicomPort" : 4242, "HttpPort" : 8042, "Name" : "Orthanc Demo", "PluginsEnabled" : true, "StorageAreaPlugin" : null, "Version" : "1.5.7" } /statistics: get: tags: [Statistics] description: Get statistics about the data stored in Orthanc. responses: 200: description: Success content: application/json: schema: properties: CountInstances: type: number CountPatients: type: number CountSeries: type: number CountStudies: type: number TotalDiskSize: type: string TotalDiskSizeMB: type: number TotalUncompressedSize: type: string TotalUncompressedSizeMB: type: number example: { "CountInstances" : 2352, "CountPatients" : 7, "CountSeries" : 23, "CountStudies" : 7, "TotalDiskSize" : "913213057", "TotalDiskSizeMB" : 870, "TotalUncompressedSize" : "913213057", "TotalUncompressedSizeMB" : 870 } /tools/execute-script: post: tags: [Lua] description: Execute the posted Lua script requestBody: content: text/plain: example: print(42) responses: 200: description: Script executed content: text/plain: example: "42"