{"openapi":"3.0.0","info":{"contact":{"url":"http://github.org/slicebox/slicebox"},"description":"Slicebox - safe sharing of medical images","license":{"name":"Apache 2.0 License","url":"http://opensource.org/licenses/Apache-2.0"},"title":"Slicebox API","version":"2.0","x-apisguru-categories":["collaboration"],"x-logo":{"backgroundColor":"#FFFFFF","url":"https://avatars0.githubusercontent.com/u/12760279?s=200&v=4"},"x-origin":[{"format":"swagger","url":"https://slicebox.github.io/slicebox-api/swagger.yaml","version":"2.0"}],"x-providerName":"slicebox.local"},"tags":[{"description":"General routes applicable to multiple aspects of the slicebox API and to the slicebox system","name":"General"},{"description":"Methods for handling structured importing of DICOM files into slicebox","name":"Import"},{"description":"Methods for handling DICOM meta data (attributes)","name":"Meta Data"},{"description":"Methods concerning images and datasets","name":"Images"},{"description":"Methods concerning anonymization and de-anonymization of images and the associated anonymization data","name":"Anonymization"},{"description":"Methods for handling box-to-box connections and issuing box commands","name":"Boxes"},{"description":"Methods for handling box-to-box transactions of images (primarily for internal slicebox use)","name":"Transactions"},{"description":"Methods for handling DICOM storage class providers for receiving images from PACS","name":"SCPs"},{"description":"Methods for handling DICOM storage class users for sending images to PACS","name":"SCUs"},{"description":"Methods for handling watch directories for importing images stored as files","name":"Directories"},{"description":"Methods for handling forwarding rules for automatically forwarding image data from sources to destinations.","name":"Forwarding"},{"description":"Methods for handling filtering of DICOM attributes on incoming objects.","name":"Filtering"},{"description":"Methods for defining and handling series types","name":"Series Types"},{"description":"Methods for handling slicebox system log messages","name":"Logs"},{"description":"Methods for handling users","name":"Users"}],"paths":{"/anonymization/anonymize":{"post":{"description":"anonymize the images corresponding to the supplied list of image IDs (each paired with a list of DICOM tag translation). This route corresponds to repeated use of the route /images/{id}/anonymize.","requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/imageTagValues"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/imageTagValues"},"type":"array"}},"multipart/form-data":{"schema":{"items":{"$ref":"#/components/schemas/imageTagValues"},"type":"array"}}},"description":"parameters of anonymization key query","required":true},"responses":{"200":{"description":"the list of newly created anonymous images","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}}}}},"tags":["Anonymization"]}},"/anonymization/keys":{"get":{"description":"get a list of anonymization keys, each specifying how vital DICOM attributes have been anonymized for a particular image","parameters":[{"description":"start index of returned slice of anonymization keys","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of anonymization keys","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}},{"description":"property to order results by","in":"query","name":"orderby","required":false,"schema":{"type":"string"}},{"description":"order result ascendingly if true, descendingly otherwise","in":"query","name":"orderascending","required":false,"schema":{"type":"boolean","default":true}},{"description":"filter the results by matching substrings of properties against this value","in":"query","name":"filter","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"anonymization keys, one per DICOM image","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/anonymizationKey"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/anonymizationKey"},"type":"array"}}}}},"tags":["Anonymization"]}},"/anonymization/keys/export/csv":{"get":{"description":"export all anonymization keys as a csv file","responses":{"200":{"description":"all anonymization keys as a csv file","content":{"application/json":{"schema":{"type":"string"}},"application/octet-stream":{"schema":{"type":"string"}}}}},"tags":["Anonymization"]}},"/anonymization/keys/query":{"post":{"description":"submit a query for anonymization keys","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/anonymizationKeyQuery"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/anonymizationKeyQuery"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/anonymizationKeyQuery"}}},"description":"parameters of anonymization key query","required":true},"responses":{"200":{"description":"anonymization keys","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/anonymizationKey"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/anonymizationKey"},"type":"array"}}}}},"tags":["Anonymization"]}},"/anonymization/keys/{id}":{"delete":{"description":"delete an anonymization key that is no longer of interest","parameters":[{"description":"ID of anonymization key","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"anonymization key deleted"}},"tags":["Anonymization"]},"get":{"description":"get the anonymization key with the supplied ID","parameters":[{"description":"ID of anonymization key","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"anonymization key for the supplied ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/anonymizationKey"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/anonymizationKey"}}}},"404":{"description":"if no anonymization key could be found for the supplied ID"}},"tags":["Anonymization"]}},"/anonymization/keys/{id}/keyvalues":{"get":{"description":"get pointers to the images corresponding to the anonymization key with the supplied ID","parameters":[{"description":"ID of anonymization key","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"an array of anonymization key-value pairs corresponding to the anonymization key for the supplied ID","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/anonymizationKeyValue"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/anonymizationKeyValue"},"type":"array"}}}},"404":{"description":"if no anonymization key could be found for the supplied ID"}},"tags":["Anonymization"]}},"/anonymization/options":{"get":{"description":"list all supported anonymization options defining an anonymization profile","responses":{"200":{"description":"supported anonymization options","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/confidentialityOption"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/confidentialityOption"},"type":"array"}}}}},"tags":["Anonymization"]}},"/boxes":{"get":{"description":"get a list of box connections","parameters":[{"description":"start index of returned slice of boxes","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of boxes","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"box connections","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/box"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/box"},"type":"array"}}}}},"tags":["Boxes"]}},"/boxes/connect":{"post":{"description":"connect to another box using a received URL. Used to connect to a public box.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/remoteBox"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/remoteBox"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/remoteBox"}}},"description":"remote box to connect with","required":true},"responses":{"201":{"description":"connected box","content":{"application/json":{"schema":{"$ref":"#/components/schemas/box"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/box"}}}}},"tags":["Boxes"]}},"/boxes/createconnection":{"post":{"description":"create a new box connection where the supplied entity holds the remote box name. Used by publicly available boxes.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/remoteBoxConnectionData"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/remoteBoxConnectionData"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/remoteBoxConnectionData"}}},"description":"name of box to connect (and send URL) to","required":true},"responses":{"201":{"description":"remote box of the connection","content":{"application/json":{"schema":{"$ref":"#/components/schemas/box"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/box"}}}}},"tags":["Boxes"]}},"/boxes/incoming":{"get":{"description":"get incoming transactions (finished, currently receiving, waiting or failed)","parameters":[{"description":"start index of returned slice of transactions","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of transactions","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"incoming transactions, sorted from most to least recently updated","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/incomingTransaction"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/incomingTransaction"},"type":"array"}}}}},"tags":["Boxes"]}},"/boxes/incoming/{id}":{"delete":{"description":"delete an incoming transaction. If a currently active transaction is deleted, a new transaction with the remainder of the images is created when receiving the next incoming image.","parameters":[{"description":"ID of incoming transaction","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"incoming transaction deleted"}},"tags":["Boxes"]}},"/boxes/incoming/{id}/images":{"get":{"description":"get the received images corresponding to the incoming transaction with the supplied ID","parameters":[{"description":"ID of incoming transaction","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"images received corresponding to the specified incoming transaction","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}}}},"404":{"description":"incoming transaction not found (invalid ID)"}},"tags":["Boxes"]}},"/boxes/outgoing":{"get":{"description":"get outgoing transactions (finished, currently sending, waiting or failed)","parameters":[{"description":"start index of returned slice of transactions","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of transactions","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"outgoing transactions, finished, sending, waiting or failed","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/outgoingTransaction"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/outgoingTransaction"},"type":"array"}}}}},"tags":["Boxes"]}},"/boxes/outgoing/{id}":{"delete":{"description":"delete an outgoing transaction. This will stop ongoing transactions.","parameters":[{"description":"ID of outgoing transaction","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"outgoing transaction deleted"}},"tags":["Boxes"]}},"/boxes/outgoing/{id}/images":{"get":{"description":"get the sent images corresponding to the outgoing transaction with the supplied ID","parameters":[{"description":"ID of outgoing transaction","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"images sent corresponding to the specified outgoing transaction","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}}}},"404":{"description":"outgoing transaction not found (invalid ID)"}},"tags":["Boxes"]}},"/boxes/{id}":{"delete":{"description":"Delete the remote box with the supplied ID","parameters":[{"description":"ID of box to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"box deleted"}},"tags":["Boxes"]}},"/boxes/{id}/send":{"post":{"description":"send images corresponding to the supplied image ids to the remote box with the supplied ID","parameters":[{"description":"ID of box to send images to","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bulkAnonymizationData"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/bulkAnonymizationData"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/bulkAnonymizationData"}}},"description":"specification of which images to send and list of DICOM attribute values to use in anonymized datasets","required":true},"responses":{"201":{"description":"images sent"},"404":{"description":"box not found (invalid ID)"}},"tags":["Boxes"]}},"/destinations":{"get":{"description":"Returns a list of currently available destinations. Possible destinations are box - sending data to a remote box, and scu - sending data a receiving SCP.","responses":{"200":{"description":"currently available destinations","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/destination"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/destination"},"type":"array"}}}}},"tags":["General"]}},"/directorywatches":{"get":{"description":"get a list of watch directories. Each watch directory and its sub-directories are watched for incoming DICOM files, which are read and imported into slicebox.","parameters":[{"description":"start index of returned slice of watched directories","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of watched directories","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"the list of watched directories","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/watchedDirectory"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/watchedDirectory"},"type":"array"}}}}},"tags":["Directories"]},"post":{"description":"add a new directory to watch for incoming DICOM files","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/watchedDirectory"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/watchedDirectory"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/watchedDirectory"}}},"description":"directory to setup a watch for. The ID property is irrelevant, the ID of the inserted record is present in the returned data."},"responses":{"201":{"description":"the directory now being watched","content":{"application/json":{"schema":{"$ref":"#/components/schemas/watchedDirectory"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/watchedDirectory"}}}}},"tags":["Directories"]}},"/directorywatches/{id}":{"delete":{"description":"stop watching and remove the directory corresponding to the supplied ID","parameters":[{"description":"id of directory to stop watching","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"directory watch removed"}},"tags":["Directories"]}},"/filtering/associations":{"get":{"description":"Get a list of source to filter associations.","parameters":[{"description":"start index of returned slice of source <-> filter associations","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of source <-> filter associations","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"the list of source <-> filter associations","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/sourceTagFilter"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/sourceTagFilter"},"type":"array"}}}}},"tags":["Filtering"]},"post":{"description":"Inserts or updates a source <-> filter associations. If the specified Source already  has an association this is updated, otherwise a new is inserted.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sourceTagFilter"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/sourceTagFilter"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/sourceTagFilter"}}},"description":"Source to Filter association","required":true},"responses":{"201":{"description":"Upserted source <-> filter association"}},"tags":["Filtering"]}},"/filtering/associations/{id}":{"delete":{"description":"remove the source <-> filter association corresponding to the supplied ID","parameters":[{"description":"id of source <-> filter association to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"source <-> filter association removed"}},"tags":["Filtering"]}},"/filtering/filters":{"get":{"description":"List defined filters","parameters":[{"description":"start index of returned slice of filters","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of filters","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"the list of filters","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/filter"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/filter"},"type":"array"}}}}},"tags":["Filtering"]},"post":{"description":"Inserts or updates a filter. If a filter with same name as supplied filter exists this filter is updated, otherwise a new filter is inserted.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/filter"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/filter"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/filter"}}},"description":"Filter","required":true},"responses":{"201":{"description":"Filter upserted"}},"tags":["Filtering"]}},"/filtering/filters/{id}":{"delete":{"description":"remove the filter corresponding to the supplied ID","parameters":[{"description":"id of filter to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"Filter removed"}},"tags":["Filtering"]}},"/filtering/filters/{id}/tagpaths":{"get":{"description":"List tagpaths for the selected filter","parameters":[{"description":"id of filter","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"the list of tagpaths","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/tagPathTag"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/tagPathTag"},"type":"array"}}}}},"tags":["Filtering"]},"post":{"description":"add a tagpath to a filter","parameters":[{"description":"id of filter to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/tagPathTag"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/tagPathTag"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/tagPathTag"}}},"description":"id of filter to remove","required":true},"responses":{"201":{"description":"TagPath added"}},"tags":["Filtering"]}},"/filtering/filters/{id}/tagpaths/{tagpathid}":{"delete":{"description":"remove the tagpath corresponding to the supplied ID","parameters":[{"description":"id of filter","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"id of TagPath to remove","in":"path","name":"tagpathid","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"TagPath removed"}},"tags":["Filtering"]}},"/forwarding/rule/{id}":{"delete":{"description":"remove the forwarding rule corresponding to the supplied ID","parameters":[{"description":"id of forwarding rule to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"forwarding rule removed"}},"tags":["Forwarding"]}},"/forwarding/rules":{"get":{"description":"get a list of all forwarding rules. A forwarding rule specifies the automatic forwarding of images from a source (SCP, BOX, etc.) to a destimation (BOX, SCU, etc.)","parameters":[{"description":"start index of returned slice of rules","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of rules","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"the list of forwarding rules","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/forwardingrule"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/forwardingrule"},"type":"array"}}}}},"tags":["Forwarding"]},"post":{"description":"add a new forwarding rule","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/forwardingrule"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/forwardingrule"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/forwardingrule"}}},"description":"The forwarding rule to add. The ID property is irrelevant, the ID of the inserted record is present in the returned data."},"responses":{"201":{"description":"the created forwarding rule","content":{"application/json":{"schema":{"$ref":"#/components/schemas/forwardingrule"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/forwardingrule"}}}}},"tags":["Forwarding"]}},"/images":{"post":{"description":"add a DICOM dataset to slicebox","requestBody":{"$ref":"#/components/requestBodies/postImages"},"responses":{"200":{"description":"meta data for added dataset on the image level of the DICOM hierarchy. Status code 200 signifies that this image was already present in the slicebox database.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/image"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/image"}}}},"201":{"description":"meta data for added dataset on the image level of the DICOM hierarchy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/image"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/image"}}}}},"tags":["Images"]}},"/images/delete":{"post":{"description":"bulk delete a sequence of images according to the supplied image IDs. This is the same as a sequence of DELETE requests to /images/{id}","requestBody":{"content":{"application/json":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}},"multipart/form-data":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}}},"description":"IDs of images to delete","required":true},"responses":{"204":{"description":"Images deleted"}},"tags":["Images"]}},"/images/export":{"get":{"description":"download the export set with the supplied export set ID as a zip archive","parameters":[{"description":"ID of export set to download","in":"query","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"zip archive of images"}},"tags":["Images"]},"post":{"description":"create an export set, a group of image IDs of images to export. The export set will contain the selected images. The export set is available for download 12 hours before it is automatically deleted.","requestBody":{"content":{"application/json":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}},"multipart/form-data":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}}},"description":"ids of images to export","required":true},"responses":{"200":{"description":"ID of created export set. To be used with the associated GET method for downloading.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/exportSetId"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/exportSetId"}}}},"201":{"description":"if the supplied list of image ids is empty or no if images could be found"}},"tags":["Images"]}},"/images/jpeg":{"post":{"description":"add a JPEG image to slicebox. The image data will be wrapped in a DICOM file and added as a new series belonging to the study with the supplied ID","parameters":[{"description":"ID of study to add new series to","in":"query","name":"studyid","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"DICOM series description of the resulting secondary capture series","in":"query","name":"description","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"application/octet-stream":{"schema":{}},"multipart/form-data":{"schema":{}}},"description":"The jpeg image data","required":true},"responses":{"201":{"description":"meta data for added dataset on the image level of the DICOM hierarchy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/image"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/image"}}}}},"tags":["Images"]}},"/images/{id}":{"delete":{"description":"Delete the image with the supplied ID","parameters":[{"description":"ID of image","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"image deleted"}},"tags":["Images"]},"get":{"description":"fetch dataset corresponding to the supplied image ID","parameters":[{"description":"ID of image","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"binary data of dataset"},"404":{"description":"if no image was found for the supplied image ID"}},"tags":["Images"]}},"/images/{id}/anonymize":{"put":{"description":"delete the selected image and replace it with an anonymized version","parameters":[{"description":"ID of image to anonymize","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"$ref":"#/components/requestBodies/anonymizationData"},"responses":{"200":{"description":"the newly created anonymous image","content":{"application/json":{"schema":{"$ref":"#/components/schemas/image"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/image"}}}},"404":{"description":"image or corresponding dataset not found"}},"tags":["Anonymization","Images"]}},"/images/{id}/anonymized":{"post":{"description":"get an anonymized version of the image with the supplied ID","parameters":[{"description":"ID of image for which to get anonymized dataset","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"$ref":"#/components/requestBodies/anonymizationData"},"responses":{"200":{"description":"binary data of anonymized dataset"},"404":{"description":"if no image was found for the supplied image ID"}},"tags":["Anonymization","Images"]}},"/images/{id}/attributes":{"get":{"description":"list all DICOM attributes of the dataset corresponding to the supplied image ID","parameters":[{"description":"ID of image","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"list of DICOM attributes","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/imageAttribute"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/imageAttribute"},"type":"array"}}}},"404":{"description":"if no image was found for the supplied image ID"}},"tags":["Images"]}},"/images/{id}/imageinformation":{"get":{"description":"get basic information about the pixel data of an image","parameters":[{"description":"ID of image","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"basic information about the pixeldata of an image","content":{"application/json":{"schema":{"$ref":"#/components/schemas/imageInformation"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/imageInformation"}}}},"404":{"description":"if no image was found for the supplied image ID"}},"tags":["Images"]}},"/images/{id}/modify":{"put":{"description":"modify and/or insert image attributes according to the input tagpath-value mappings","parameters":[{"description":"ID of image to modify","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/tagMapping"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/tagMapping"},"type":"array"}},"multipart/form-data":{"schema":{"items":{"$ref":"#/components/schemas/tagMapping"},"type":"array"}}},"description":"specification of tag paths and corresponding values to insert or modify","required":true},"responses":{"201":{"description":"image attributes successfully modified"}},"tags":["Images"]}},"/images/{id}/png":{"get":{"description":"get a PNG image representation of the image corresponding to the supplied ID","parameters":[{"description":"ID of image","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"frame/slice to show","in":"query","name":"framenumber","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"description":"intensity window minimum value. If not specified or set to zero, windowing will be selected from relevant DICOM attributes","in":"query","name":"windowmin","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"description":"intensity window maximum value. If not specified or set to zero, windowing will be selected from relevant DICOM attributes","in":"query","name":"windowmax","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"description":"height of PNG image. If not specified or set to zero, the image height will equal that of the data","in":"query","name":"imageheight","required":false,"schema":{"type":"integer","format":"int32","default":0}}],"responses":{"200":{"description":"image data"},"404":{"description":"if no image was found for the supplied image ID"},"501":{"description":"if the system is not capable of creating an image representation of the data"}},"tags":["Images"]}},"/import/sessions":{"get":{"description":"Returns a list of available import sessions.","parameters":[{"description":"start index of returned slice of import sessions","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of import sessions","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"available import sessions","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/importSession"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/importSession"},"type":"array"}}}}},"tags":["Import"]},"post":{"description":"create a new import sessions","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/importSession"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/importSession"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/importSession"}}},"description":"The import session to create containing the user defined name of the session","required":true},"responses":{"201":{"description":"the created import session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/importSession"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/importSession"}}}}},"tags":["Import"]}},"/import/sessions/{id}":{"delete":{"description":"deletes the import session with the supplied ID","parameters":[{"description":"ID of import session to delete","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"import session deleted"}},"tags":["Import"]},"get":{"description":"Returns the import sessions with the supplied ID","parameters":[{"description":"ID of session","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"the import session with the supplied ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/importSession"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/importSession"}}}},"404":{"description":"import session not found (invalid ID)"}},"tags":["Import"]}},"/import/sessions/{id}/images":{"get":{"description":"get the imported images corresponding to the import session with the supplied ID","parameters":[{"description":"ID of import session","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"images corresponding to the specified import session","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}}}},"404":{"description":"import session not found (invalid ID)"}},"tags":["Import"]},"post":{"description":"add a DICOM dataset to the import session with the supplied ID","parameters":[{"description":"ID of session","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"$ref":"#/components/requestBodies/postImages"},"responses":{"200":{"description":"meta data for the imported dataset on the image level of the DICOM hierarchy. Status code 200 signifies that this image was already present in the slicebox database.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/image"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/image"}}}},"201":{"description":"meta data for the imported dataset on the image level of the DICOM hierarchy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/image"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/image"}}}},"404":{"description":"import session not found (invalid ID)"}},"tags":["Import"]}},"/log":{"delete":{"description":"delete all log messages","responses":{"204":{"description":"log messages successfully"}},"tags":["Logs"]},"get":{"description":"get a list of slicebox log messages","parameters":[{"description":"start index of returned slice of log messages","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of log messages","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}},{"description":"log subject to filter results by","in":"query","name":"subject","required":false,"schema":{"type":"string"}},{"description":"log type (DEFAULT, INFO, WARN, ERROR) to filter results by","in":"query","name":"type","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"log messages","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/logEntry"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/logEntry"},"type":"array"}}}}},"tags":["Logs"]}},"/log/{id}":{"delete":{"description":"Delete the log entry with the supplied ID","parameters":[{"description":"ID of log entry","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"log entry deleted"}},"tags":["Logs"]}},"/metadata/flatseries":{"get":{"description":"Returns a list of flattened metadata on the patient, study and series levels","parameters":[{"description":"start index of returned slice of flat series","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of flat series","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}},{"description":"flat series property to order results by","in":"query","name":"orderby","required":false,"schema":{"type":"string"}},{"description":"order result ascendingly if true, descendingly otherwise","in":"query","name":"orderascending","required":false,"schema":{"type":"boolean","default":true}},{"description":"filter the results by matching substrings of flat series properties against this value","in":"query","name":"filter","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series sources. Examples of sources are user, box, directory or scp. The list of sources to filter results by must have the form TYPE1:ID1,TYPE2:ID2,...,TYPEN:IDN. For instance, the argument sources=box:1,user:5 shows results either sent from (slice)box with id 1 or uploaded by user with id 5.","in":"query","name":"sources","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series types. The supplied list of series types must be a comma separated list of series type ids. For instance, the argument seriestypes=3,7,22 shows series assigned to either of the series types with ids 3, 7 and 22.","in":"query","name":"seriestypes","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series tags. The supplied list of series tags must be a comma separated list of series tag ids. For instance, the argument seriestags=6,2,11 shows series with either of the series tags with ids 6, 2 and 11.","in":"query","name":"seriestags","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"flat series","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/flatSeries"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/flatSeries"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/flatseries/query":{"post":{"description":"submit a query for flat series","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/query"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/query"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/query"}}},"description":"parameters of flat series query","required":true},"responses":{"200":{"description":"flat series","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/flatSeries"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/flatSeries"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/flatseries/{id}":{"get":{"description":"Return the flat series with the supplied ID","parameters":[{"description":"ID of flat series","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"flat series response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/flatSeries"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/flatSeries"}}}},"404":{"description":"flat series not found (invalid ID)"}},"tags":["Meta Data"]}},"/metadata/images":{"get":{"description":"Returns a list of metadata on the image level of the DICOM hierarchy","parameters":[{"description":"start index of returned slice of images","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of images","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}},{"description":"reference to series to list images for","in":"query","name":"seriesid","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"images","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/images/query":{"post":{"description":"submit a query for images","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/query"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/query"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/query"}}},"description":"parameters of images query","required":true},"responses":{"200":{"description":"images","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/images/{id}":{"get":{"description":"Return the image with the supplied ID","parameters":[{"description":"ID of image","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"image response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/image"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/image"}}}},"404":{"description":"image not found (invalid ID)"}},"tags":["Meta Data"]}},"/metadata/patients":{"get":{"description":"Returns a list of metadata on the patient level of the DICOM hierarchy","parameters":[{"description":"start index of returned slice of patients","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of patients","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}},{"description":"patient property to order results by","in":"query","name":"orderby","required":false,"schema":{"type":"string"}},{"description":"order result ascendingly if true, descendingly otherwise","in":"query","name":"orderascending","required":false,"schema":{"type":"boolean","default":true}},{"description":"filter the results by matching substrings of patient properties against this value","in":"query","name":"filter","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more underlying series sources. Examples of sources are user, box, directory or scp. The list of sources to filter results by must have the form TYPE1:ID1,TYPE2:ID2,...,TYPEN:IDN. For instance, the argument sources=box:1,user:5 shows results either sent from (slice)box with id 1 or uploaded by user with id 5.","in":"query","name":"sources","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more underlying series types. The supplied list of series types must be a comma separated list of series type ids. For instance, the argument seriestypes=3,7,22 shows results including series assigned to either of the series types with ids 3, 7 and 22.","in":"query","name":"seriestypes","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more underlying series tags. The supplied list of series tags must be a comma separated list of series tag ids. For instance, the argument seriestags=6,2,11 shows results including series with either of the series tags with ids 6, 2 and 11.","in":"query","name":"seriestags","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"patients","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/patient"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/patient"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/patients/query":{"post":{"description":"submit a query for patients","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/query"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/query"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/query"}}},"description":"parameters of patient query","required":true},"responses":{"200":{"description":"patients","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/patient"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/patient"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/patients/{id}":{"get":{"description":"Return the patient with the supplied ID","parameters":[{"description":"ID of patient","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"patient response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/patient"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/patient"}}}},"404":{"description":"patient not found (invalid ID)"}},"tags":["Meta Data"]}},"/metadata/patients/{id}/images":{"get":{"description":"Returns all images for the patient with the supplied patient ID","parameters":[{"description":"ID of patient","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"filter the results by matching on one or more series sources. Examples of sources are user, box, directory or scp. The list of sources to filter results by must have the form TYPE1:ID1,TYPE2:ID2,...,TYPEN:IDN. For instance, the argument sources=box:1,user:5 shows results either sent from (slice)box with id 1 or uploaded by user with id 5.","in":"query","name":"sources","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series types. The supplied list of series types must be a comma separated list of series type ids. For instance, the argument seriestypes=3,7,22 shows series assigned to either of the series types with ids 3, 7 and 22.","in":"query","name":"seriestypes","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series tags. The supplied list of series tags must be a comma separated list of series tag ids. For instance, the argument seriestags=6,2,11 shows series with either of the series tags with ids 6, 2 and 11.","in":"query","name":"seriestags","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"list of images","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/series":{"get":{"description":"Returns a list of metadata on the series level of the DICOM hierarchy","parameters":[{"description":"start index of returned slice of series","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of series","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}},{"description":"reference to study to list series for","in":"query","name":"studyid","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"filter the results by matching on one or more series sources. Examples of sources are user, box, directory or scp. The list of sources to filter results by must have the form TYPE1:ID1,TYPE2:ID2,...,TYPEN:IDN. For instance, the argument sources=box:1,user:5 shows results either sent from (slice)box with id 1 or uploaded by user with id 5.","in":"query","name":"sources","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series types. The supplied list of series types must be a comma separated list of series type ids. For instance, the argument seriestypes=3,7,22 shows series assigned to either of the series types with ids 3, 7 and 22.","in":"query","name":"seriestypes","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series tags. The supplied list of series tags must be a comma separated list of series tag ids. For instance, the argument seriestags=6,2,11 shows series with either of the series tags with ids 6, 2 and 11.","in":"query","name":"seriestags","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"series","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/series"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/series"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/series/query":{"post":{"description":"submit a query for series","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/query"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/query"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/query"}}},"description":"parameters of series query","required":true},"responses":{"200":{"description":"series","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/series"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/series"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/series/{id}":{"get":{"description":"Return the series with the supplied ID","parameters":[{"description":"ID of series","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"series response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/series"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/series"}}}},"404":{"description":"series not found (invalid ID)"}},"tags":["Meta Data"]}},"/metadata/series/{id}/seriestags":{"get":{"description":"get the list of series tags for the series with the supplied ID.","parameters":[{"description":"ID of series","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"the list of series tags","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/seriestag"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/seriestag"},"type":"array"}}}},"404":{"description":"series not found (invalid ID)"}},"tags":["Meta Data"]},"post":{"description":"add a series tag to the series with the supplied ID","parameters":[{"description":"ID of series","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestag"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestag"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/seriestag"}}},"description":"series tag to add","required":true},"responses":{"201":{"description":"added series tag","content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestag"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestag"}}}},"404":{"description":"if no series with the supplied ID exists"}},"tags":["Meta Data"]}},"/metadata/series/{id}/seriestypes":{"delete":{"description":"Delete all series types for the series with the supplied ID","parameters":[{"description":"ID of series","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"series types deleted"}},"tags":["Meta Data"]},"get":{"description":"get the list of series types for the series with the supplied ID.","parameters":[{"description":"ID of series","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"the list of series types","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/seriestype"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/seriestype"},"type":"array"}}}},"404":{"description":"series not found (invalid ID)"}},"tags":["Meta Data"]}},"/metadata/series/{id}/source":{"get":{"description":"Return the source of the series with the supplied ID","parameters":[{"description":"ID of series","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"source for series","content":{"application/json":{"schema":{"$ref":"#/components/schemas/source"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/source"}}}},"404":{"description":"series not found (invalid ID)"}},"tags":["Meta Data"]}},"/metadata/series/{seriesId}/seriestags/{seriesTagId}":{"delete":{"description":"Delete the series tag with the supplied series tag ID from the series with the supplied series ID","parameters":[{"description":"ID of series","in":"path","name":"seriesId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"ID of series tag to remove","in":"path","name":"seriesTagId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"series tag removed"}},"tags":["Meta Data"]}},"/metadata/series/{seriesId}/seriestypes/{seriesTypeId}":{"delete":{"description":"Delete the series type with the supplied series type ID from the series with the supplied series ID","parameters":[{"description":"ID of series","in":"path","name":"seriesId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"ID of series type to remove","in":"path","name":"seriesTypeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"series type removed"}},"tags":["Meta Data"]},"put":{"description":"Add the series type with the supplied series type ID to the series with the supplied series ID","parameters":[{"description":"ID of series","in":"path","name":"seriesId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"ID of series type to add","in":"path","name":"seriesTypeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"series type added"},"404":{"description":"no series or series type found for the supplied ID(s)"}},"tags":["Meta Data"]}},"/metadata/seriestags":{"get":{"description":"Returns a list of series tags currently currently in use.","responses":{"200":{"description":"a list of unique series tags currently used to tag series","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/seriestag"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/seriestag"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/studies":{"get":{"description":"Returns a list of metadata on the study level of the DICOM hierarchy","parameters":[{"description":"start index of returned slice of studies","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of studies","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}},{"description":"reference to patient to list studies for","in":"query","name":"patientid","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"filter the results by matching on one or more underlying series sources. Examples of sources are user, box, directory or scp. The list of sources to filter results by must have the form TYPE1:ID1,TYPE2:ID2,...,TYPEN:IDN. For instance, the argument sources=box:1,user:5 shows results either sent from (slice)box with id 1 or uploaded by user with id 5.","in":"query","name":"sources","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more underlying series types. The supplied list of series types must be a comma separated list of series type ids. For instance, the argument seriestypes=3,7,22 shows results including series assigned to either of the series types with ids 3, 7 and 22.","in":"query","name":"seriestypes","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more underlying series tags. The supplied list of series tags must be a comma separated list of series tag ids. For instance, the argument seriestags=6,2,11 shows results including series with either of the series tags with ids 6, 2 and 11.","in":"query","name":"seriestags","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"studies","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/study"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/study"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/studies/query":{"post":{"description":"submit a query for studies","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/query"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/query"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/query"}}},"description":"parameters of study query","required":true},"responses":{"200":{"description":"studies","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/study"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/study"},"type":"array"}}}}},"tags":["Meta Data"]}},"/metadata/studies/{id}":{"get":{"description":"Return the study with the supplied ID","parameters":[{"description":"ID of study","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"study response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/study"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/study"}}}},"404":{"description":"study not found (invalid ID)"}},"tags":["Meta Data"]}},"/metadata/studies/{id}/images":{"get":{"description":"Returns all images for the study with the supplied study ID","parameters":[{"description":"ID of study","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"filter the results by matching on one or more series sources. Examples of sources are user, box, directory or scp. The list of sources to filter results by must have the form TYPE1:ID1,TYPE2:ID2,...,TYPEN:IDN. For instance, the argument sources=box:1,user:5 shows results either sent from (slice)box with id 1 or uploaded by user with id 5.","in":"query","name":"sources","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series types. The supplied list of series types must be a comma separated list of series type ids. For instance, the argument seriestypes=3,7,22 shows series assigned to either of the series types with ids 3, 7 and 22.","in":"query","name":"seriestypes","required":false,"schema":{"type":"string"}},{"description":"filter the results by matching on one or more series tags. The supplied list of series tags must be a comma separated list of series tag ids. For instance, the argument seriestags=6,2,11 shows series with either of the series tags with ids 6, 2 and 11.","in":"query","name":"seriestags","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"list of images","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/image"},"type":"array"}}}},"404":{"description":"study not found (invalid ID)"}},"tags":["Meta Data"]}},"/scps":{"get":{"description":"get a list of DICOM SCPs. Each SCP is a server for receiving DICOM images from e.g. a PACS system.","parameters":[{"description":"start index of returned slice of SCPs","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of SCPs","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"the list of SCPs","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/scp"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/scp"},"type":"array"}}}}},"tags":["SCPs"]},"post":{"description":"add a new SCP for receiving DICOM images","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/scp"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/scp"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/scp"}}},"description":"SCP information. The ID property is irrelevant, the ID of the inserted record is present in the returned data."},"responses":{"201":{"description":"the created SCP","content":{"application/json":{"schema":{"$ref":"#/components/schemas/scp"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/scp"}}}},"400":{"description":"Invalid port number or AE title"}},"tags":["SCPs"]}},"/scps/{id}":{"delete":{"description":"shut down and remove the SCP corresponding to the supplied ID","parameters":[{"description":"id of SCP to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"SCP removed"}},"tags":["SCPs"]}},"/scus":{"get":{"description":"get a list of DICOM SCUs. Each SCU is a client for sending DICOM images to an SCP, e.g. a PACS system.","parameters":[{"description":"start index of returned slice of SCUs","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of SCUs","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"the list of SCUs","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/scu"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/scu"},"type":"array"}}}}},"tags":["SCUs"]},"post":{"description":"add a new SCU for sending DICOM images","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/scu"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/scu"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/scu"}}},"description":"SCU information. The ID property is irrelevant, the ID of the inserted record is present in the returned data."},"responses":{"201":{"description":"the created SCU","content":{"application/json":{"schema":{"$ref":"#/components/schemas/scu"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/scu"}}}},"400":{"description":"Invalid port number or AE title"}},"tags":["SCUs"]}},"/scus/{id}":{"delete":{"description":"remove the SCU corresponding to the supplied ID","parameters":[{"description":"id of SCU to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"SCU removed"}},"tags":["SCUs"]}},"/scus/{id}/send":{"post":{"description":"send the images with the supplied image IDs to a DICOM SCP using the the SCU with the supplied scu ID","parameters":[{"description":"id of SCU to use for sending","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}},"multipart/form-data":{"schema":{"items":{"format":"int64","type":"integer"},"type":"array"}}},"description":"array of ids of images to send","required":true},"responses":{"204":{"description":"Series sent"},"404":{"description":"Series not found or SCU not found"},"502":{"description":"Receiving SCP host not available"}},"tags":["SCUs"]}},"/seriestypes":{"get":{"description":"get a list of all added series types. By filtering search results for certain series types, it is easier for applications to ensure that they read images of applicable types.","parameters":[{"description":"start index of returned slice of series types","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of series types","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"the list of series types","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/seriestype"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/seriestype"},"type":"array"}}}}},"tags":["Series Types"]},"post":{"description":"add a new series type","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestype"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestype"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/seriestype"}}},"description":"Series type information. The ID property is irrelevant, the ID of the inserted record is present in the returned data."},"responses":{"201":{"description":"the created series type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestype"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestype"}}}}},"tags":["Series Types"]}},"/seriestypes/rules":{"get":{"description":"get a list of rules for assigning series types to series. A rule connects to a series of attributes with values and a resulting series type. If a series has the required values of the listed attributes, it is assigned to the series type of the rule.","parameters":[{"description":"ID of series type to list rules for","in":"query","name":"seriestypeid","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"the list of series type rules for the series type with the supplied ID","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/seriestyperule"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/seriestyperule"},"type":"array"}}}}},"tags":["Series Types"]},"post":{"description":"add a new series type rule","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestyperule"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestyperule"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/seriestyperule"}}},"description":"Series type rule information. The ID property is irrelevant, the ID of the inserted record is present in the returned data."},"responses":{"201":{"description":"the created series type rule","content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestyperule"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestyperule"}}}}},"tags":["Series Types"]}},"/seriestypes/rules/updatestatus":{"get":{"description":"get the status of the internal process of updating series types for series following a change of series types, rules or attributes.","responses":{"200":{"description":"a status message, indicating if an update is running","content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestypeupdatestatus"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestypeupdatestatus"}}}}},"tags":["Series Types"]}},"/seriestypes/rules/{id}":{"delete":{"description":"remove the series type rule corresponding to the supplied ID","parameters":[{"description":"id of series type rule to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"series type rule removed"}},"tags":["Series Types"]}},"/seriestypes/rules/{id}/attributes":{"get":{"description":"get the list of attributes for the series type rule with the supplied ID.","parameters":[{"description":"index of series type rule to list rule attributes for","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"the list of series type rule attributes for the series type rule with the supplied ID","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/seriestyperuleattribute"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/seriestyperuleattribute"},"type":"array"}}}}},"tags":["Series Types"]},"post":{"description":"add a new series type rule attribute","parameters":[{"description":"ID of rule","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestyperuleattribute"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestyperuleattribute"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/seriestyperuleattribute"}}},"description":"Series type rule attribute information. The ID property is irrelevant, the ID of the inserted record is present in the returned data."},"responses":{"201":{"description":"the created series type rule attribute","content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriestyperuleattribute"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriestyperuleattribute"}}}}},"tags":["Series Types"]}},"/seriestypes/rules/{ruleId}/attributes/{attributeId}":{"delete":{"description":"remove the series type rule attribute corresponding to the supplied series type and attribute IDs","parameters":[{"description":"id of series type rule for which to remove an attribute","in":"path","name":"ruleId","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"id of attribute to remove","in":"path","name":"attributeId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"series type rule attribute removed"}},"tags":["Series Types"]}},"/seriestypes/series/query":{"post":{"description":"submit a query for seriestypes for a list of series","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/idsquery"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/idsquery"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/idsquery"}}},"description":"parameters of series query","required":true},"responses":{"200":{"description":"series","content":{"application/json":{"schema":{"$ref":"#/components/schemas/seriesidseriestypesresult"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/seriesidseriestypesresult"}}}}},"tags":["Meta Data"]}},"/seriestypes/{id}":{"delete":{"description":"remove the series type corresponding to the supplied ID","parameters":[{"description":"id of series type to remove","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"series type removed"}},"tags":["Series Types"]},"put":{"description":"request an asynchronous update of all series, labelling appropriate series with the series type corresponding to the supplied ID.","parameters":[{"description":"id of series type to update series labels for","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"update successfully added to queue of series type updates"}},"tags":["Series Types"]}},"/sources":{"get":{"description":"Returns a list of currently available data sources. Possible source types are user - data imported by an API call by a user, box - data received from a remote box, directory - data imported via a watched directory, import - data imported into slicebox using import sessions, or scp - data received from a PACS.","responses":{"200":{"description":"currently available sources","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/source"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/source"},"type":"array"}}}}},"tags":["General"]}},"/system/health":{"get":{"description":"No-op route for checking whether the service is alive or not","responses":{"200":{"description":"The service is up and running"}},"tags":["General"]}},"/system/stop":{"post":{"description":"stop and shut down slicebox","responses":{"200":{"description":"shutdown message"}},"tags":["General"]}},"/transactions/{token}/image":{"post":{"description":"add an image (dataset) as part of a transaction. This method is used when sending images using the push method to a public slicebox.","parameters":[{"description":"authentication token identifying the current box-to-box connection","in":"path","name":"token","required":true,"schema":{"type":"string"}},{"description":"the ID of the client's outgoing transaction","in":"query","name":"transactionid","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"the index of this image in the transaction","in":"query","name":"sequencenumber","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"the total number of images in this transaction","in":"query","name":"totalimagecount","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/octet-stream":{"schema":{}}},"description":"the dataset byte array","required":true},"responses":{"204":{"description":"image data received"},"401":{"description":"unauthorized, invalid token"}},"tags":["Transactions"]}},"/transactions/{token}/outgoing":{"get":{"description":"fetch an image from the connected box as part of a transaction. This method is used when sending images using the poll method from a public slicebox.","parameters":[{"description":"authentication token identifying the current box-to-box connection","in":"path","name":"token","required":true,"schema":{"type":"string"}},{"description":"the ID of the outgoing transaction","in":"query","name":"transactionid","required":true,"schema":{"type":"integer","format":"int64"}},{"description":"the ID of the outgoing transaction image","in":"query","name":"imageid","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"binary data of dataset"},"401":{"description":"unauthorized, invalid token"},"404":{"description":"no outgoing trensaction and/or image found for the supplied transaction id and transaction image id"}},"tags":["Transactions"]}},"/transactions/{token}/outgoing/done":{"post":{"description":"signal that the supplied outgoing transaction and image was successfully received and can be marked as sent. This method is used when sending images using the poll method from a public slicebox.","parameters":[{"description":"authentication token identifying the current box-to-box connection","in":"path","name":"token","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/outgoingTransactionImage"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/outgoingTransactionImage"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/outgoingTransactionImage"}}},"description":"outgoing transaction and image that has been successfully received","required":true},"responses":{"204":{"description":"done message received"},"401":{"description":"unauthorized, invalid token"}},"tags":["Transactions"]}},"/transactions/{token}/outgoing/failed":{"post":{"description":"signal that the image corresponding to the supplied outgoing transaction and image could not be read or stored properly on the receiving side, and that the transaction should be marked as failed.","parameters":[{"description":"authentication token identifying the current box-to-box connection","in":"path","name":"token","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/failedOutgoingTransactionImage"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/failedOutgoingTransactionImage"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/failedOutgoingTransactionImage"}}},"description":"the outgoing transaction and image information block corresponding to the failed image transfer, along with the associated error message","required":true},"responses":{"204":{"description":"failed message received"},"401":{"description":"unauthorized, invalid token"}},"tags":["Transactions"]}},"/transactions/{token}/outgoing/poll":{"get":{"description":"get next outgoing transaction and image (information on the next image that the connected box wishes to send to you), if any. This method is used when sending images using the poll method from a public slicebox.","parameters":[{"description":"authentication token identifying the current box-to-box connection","in":"path","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"next outgoing transaction and image information block","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/outgoingTransactionImage"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/outgoingTransactionImage"},"type":"array"}}}},"401":{"description":"unauthorized, invalid token"},"404":{"description":"there are currently no outgoing transactions to fetch for the box connection with the supplied token"}},"tags":["Transactions"]}},"/transactions/{token}/status":{"get":{"description":"get the status of the remote incoming transaction with the supplied transaction ID","parameters":[{"description":"authentication token identifying the current box-to-box connection","in":"path","name":"token","required":true,"schema":{"type":"string"}},{"description":"the ID of the client's outgoing transaction","in":"query","name":"transactionid","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"string representation of the transaction status (FINISHED, FAILED, WAITING or PROCESSING)"},"401":{"description":"unauthorized, invalid token"},"404":{"description":"no transaction found for the supplied transaction ID and box token"}},"tags":["Transactions"]},"put":{"description":"update the status of the transaction with the supplied ID","parameters":[{"description":"authentication token identifying the current box-to-box connection","in":"path","name":"token","required":true,"schema":{"type":"string"}},{"description":"the ID of the client's outgoing transaction","in":"query","name":"transactionid","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string"}},"application/octet-stream":{"schema":{"type":"string"}},"multipart/form-data":{"schema":{"type":"string"}}},"description":"the updated status of the transaction","required":true},"responses":{"204":{"description":"status update successfully applied to transaction"},"404":{"description":"no transaction found for the supplied transaction ID and box token"}},"tags":["Transactions"]}},"/users":{"get":{"description":"Returns all users of slicebox","parameters":[{"description":"start index of returned slice of users","in":"query","name":"startindex","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"description":"size of returned slice of users","in":"query","name":"count","required":false,"schema":{"type":"integer","format":"int64","default":20}}],"responses":{"200":{"description":"user response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/user"},"type":"array"}},"application/octet-stream":{"schema":{"items":{"$ref":"#/components/schemas/user"},"type":"array"}}}}},"tags":["Users"]},"post":{"description":"Creates a new user. Dupicates are accepted but not added.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/newUser"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/newUser"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/newUser"}}},"description":"User to add","required":true},"responses":{"201":{"description":"user response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/user"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/user"}}}}},"tags":["Users"]}},"/users/current":{"get":{"description":"obtain information on the currently logged in user as specified by the supplied session cookie, IP address and user agent.","responses":{"200":{"description":"user information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/userInfo"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/userInfo"}}}},"404":{"description":"no user found for the supplied session cookie, IP address and user agent, or if any of the required headers are missing."}},"tags":["Users"]}},"/users/login":{"post":{"description":"Obtain a session cookie that can be used to authenticate future API calls from the present IP address and with the present user agent.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/userPass"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/userPass"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/userPass"}}},"description":"username and password for user logging in","required":true},"responses":{"201":{"description":"if the supplied credentials are valid. The response headers will contain Set-Cookie."},"401":{"description":"if the supplied credentials are invalid."}},"tags":["Users"]}},"/users/logout":{"post":{"description":"Logout the current user by responding with a delete cookie header removing the session cookie for this user.","responses":{"201":{"description":"the user was logged out"}},"tags":["Users"]}},"/users/{id}":{"delete":{"description":"deletes a single user based on the ID supplied","parameters":[{"description":"ID of user to delete","in":"path","name":"id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"user deleted"}},"tags":["Users"]}}},"servers":[{"url":"http://slicebox.local/api"}],"components":{"requestBodies":{"anonymizationData":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/anonymizationData"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/anonymizationData"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/anonymizationData"}}},"description":"specification of values for anonymous DICOM attributes","required":true},"postImages":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"dataset":{"description":"The dataset file","type":"string","format":"binary"}},"required":["dataset"]}}},"required":true}},"schemas":{"anonymizationData":{"properties":{"profile":{"$ref":"#/components/schemas/anonymizationProfile"},"tagValues":{"items":{"$ref":"#/components/schemas/tagValue"},"type":"array"}},"type":"object"},"anonymizationKey":{"properties":{"anonPatientID":{"type":"string"},"anonPatientName":{"type":"string"},"anonSOPInstanceUID":{"type":"string"},"anonSeriesInstanceUID":{"type":"string"},"anonStudyInstanceUID":{"type":"string"},"created":{"format":"int64","type":"integer"},"id":{"format":"int64","type":"integer"},"imageId":{"format":"int64","type":"integer"},"patientID":{"type":"string"},"patientName":{"type":"string"},"seriesInstanceUID":{"type":"string"},"sopInstanceUID":{"type":"string"},"studyInstanceUID":{"type":"string"}},"type":"object"},"anonymizationKeyQuery":{"properties":{"count":{"format":"int64","type":"integer"},"order":{"$ref":"#/components/schemas/queryOrder"},"queryProperties":{"items":{"$ref":"#/components/schemas/queryProperty"},"type":"array"},"startIndex":{"format":"int64","type":"integer"}},"required":["startIndex","count","queryProperties"],"type":"object"},"anonymizationKeyValue":{"properties":{"anonymizationKeyId":{"format":"int64","type":"integer"},"anonymizedValue":{"type":"string"},"id":{"format":"int64","type":"integer"},"tagPath":{"$ref":"#/components/schemas/tagPathTag"},"value":{"type":"string"}},"type":"object"},"anonymizationProfile":{"properties":{"options":{"items":{"$ref":"#/components/schemas/confidentialityOption"},"type":"array"}},"type":"object"},"box":{"properties":{"baseUrl":{"type":"string"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"online":{"type":"boolean"},"profile":{"$ref":"#/components/schemas/anonymizationProfile"},"sendMethod":{"type":"string"},"token":{"type":"string"}},"type":"object"},"bulkAnonymizationData":{"properties":{"imageTagValuesSet":{"items":{"$ref":"#/components/schemas/imageTagValues"},"type":"array"},"profile":{"$ref":"#/components/schemas/anonymizationProfile"}},"type":"object"},"confidentialityOption":{"properties":{"description":{"type":"string"},"name":{"type":"string"},"rank":{"format":"int32","type":"integer"},"title":{"type":"string"}},"type":"object"},"destination":{"properties":{"destinationId":{"format":"int64","type":"integer"},"destinationName":{"type":"string"},"destinationType":{"type":"string"}},"type":"object"},"dicomPropertyValue":{"properties":{"value":{"type":"string"}},"type":"object"},"exportSetId":{"properties":{"value":{"format":"int64","type":"integer"}},"type":"object"},"failedOutgoingTransactionImage":{"properties":{"message":{"type":"string"},"transactionImage":{"$ref":"#/components/schemas/outgoingTransactionImage"}},"type":"object"},"filter":{"properties":{"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"tagFilterType":{"type":"string"},"tags":{"items":{"$ref":"#/components/schemas/tagPathTag"},"type":"array"}},"type":"object"},"flatSeries":{"properties":{"id":{"format":"int64","type":"integer"},"patient":{"$ref":"#/components/schemas/patient"},"series":{"$ref":"#/components/schemas/series"},"study":{"$ref":"#/components/schemas/study"}},"type":"object"},"forwardingrule":{"properties":{"destination":{"$ref":"#/components/schemas/destination"},"id":{"format":"int64","type":"integer"},"keepImages":{"type":"boolean"},"source":{"$ref":"#/components/schemas/source"}},"type":"object"},"idsquery":{"properties":{"ids":{"items":{"format":"int64","type":"integer"},"type":"array"}},"required":["ids"],"type":"object"},"image":{"properties":{"id":{"format":"int64","type":"integer"},"imageType":{"$ref":"#/components/schemas/dicomPropertyValue"},"instanceNumber":{"$ref":"#/components/schemas/dicomPropertyValue"},"seriesId":{"format":"int64","type":"integer"},"sopInstanceUID":{"$ref":"#/components/schemas/dicomPropertyValue"}},"type":"object"},"imageAttribute":{"properties":{"depth":{"format":"int32","type":"integer"},"element":{"type":"string"},"group":{"type":"string"},"length":{"format":"int32","type":"integer"},"multiplicity":{"format":"int32","type":"integer"},"name":{"type":"string"},"path":{"type":"string"},"value":{"type":"string"},"vr":{"type":"string"}},"type":"object"},"imageInformation":{"properties":{"frameIndex":{"format":"int32","type":"integer"},"maximumPixelValue":{"format":"int32","type":"integer"},"minimumPixelValue":{"format":"int32","type":"integer"},"numberOfFrames":{"format":"int32","type":"integer"}},"type":"object"},"imageTagValues":{"properties":{"imageId":{"format":"int64","type":"integer"},"tagValues":{"items":{"$ref":"#/components/schemas/tagValue"},"type":"array"}},"type":"object"},"importSession":{"properties":{"created":{"format":"int64","type":"integer"},"filesAdded":{"format":"int32","type":"integer"},"filesImported":{"format":"int32","type":"integer"},"filesRejected":{"format":"int32","type":"integer"},"id":{"format":"int64","type":"integer"},"lastUpdated":{"format":"int64","type":"integer"},"name":{"type":"string"},"user":{"type":"string"},"userId":{"format":"int64","type":"integer"}},"type":"object"},"incomingTransaction":{"properties":{"boxId":{"format":"int64","type":"integer"},"boxName":{"type":"string"},"id":{"format":"int64","type":"integer"},"outgoingTransactionId":{"format":"int64","type":"integer"},"receivedImageCount":{"format":"int64","type":"integer"},"status":{"type":"string"},"totalImageCount":{"format":"int64","type":"integer"},"updated":{"format":"int64","type":"integer"}},"type":"object"},"logEntry":{"properties":{"created":{"format":"int64","type":"integer"},"entryType":{"type":"string"},"id":{"format":"int64","type":"integer"},"message":{"type":"string"},"subject":{"type":"string"}},"type":"object"},"newUser":{"properties":{"password":{"type":"string"},"role":{"type":"string"},"user":{"type":"string"}},"type":"object"},"outgoingImage":{"properties":{"id":{"format":"int64","type":"integer"},"imageId":{"format":"int64","type":"integer"},"outgoingTransactionId":{"format":"int64","type":"integer"},"sent":{"type":"boolean"},"sequenceNumber":{"format":"int64","type":"integer"}},"type":"object"},"outgoingTransaction":{"properties":{"boxId":{"format":"int64","type":"integer"},"boxName":{"type":"string"},"id":{"format":"int64","type":"integer"},"profile":{"$ref":"#/components/schemas/anonymizationProfile"},"sentImageCount":{"format":"int64","type":"integer"},"status":{"type":"string"},"totalImageCount":{"format":"int64","type":"integer"},"updated":{"format":"int64","type":"integer"}},"type":"object"},"outgoingTransactionImage":{"properties":{"image":{"$ref":"#/components/schemas/outgoingImage"},"transaction":{"$ref":"#/components/schemas/outgoingTransaction"}},"type":"object"},"patient":{"properties":{"id":{"format":"int64","type":"integer"},"patientBirthDate":{"$ref":"#/components/schemas/dicomPropertyValue"},"patientID":{"$ref":"#/components/schemas/dicomPropertyValue"},"patientName":{"$ref":"#/components/schemas/dicomPropertyValue"},"patientSex":{"$ref":"#/components/schemas/dicomPropertyValue"}},"type":"object"},"query":{"properties":{"count":{"format":"int64","type":"integer"},"filters":{"$ref":"#/components/schemas/queryFilters"},"order":{"$ref":"#/components/schemas/queryOrder"},"queryProperties":{"items":{"$ref":"#/components/schemas/queryProperty"},"type":"array"},"startIndex":{"format":"int64","type":"integer"}},"required":["startIndex","count","queryProperties"],"type":"object"},"queryFilters":{"properties":{"seriesTagIds":{"items":{"format":"int64","type":"integer"},"type":"array"},"seriesTypeIds":{"items":{"format":"int64","type":"integer"},"type":"array"},"sourceRefs":{"items":{"$ref":"#/components/schemas/sourceRef"},"type":"array"}},"type":"object"},"queryOrder":{"properties":{"orderAscending":{"type":"boolean"},"orderBy":{"type":"string"}},"type":"object"},"queryProperty":{"properties":{"operator":{"type":"string"},"propertyName":{"type":"string"},"propertyValue":{"type":"string"}},"type":"object"},"remoteBox":{"properties":{"baseUrl":{"type":"string"},"defaultProfile":{"$ref":"#/components/schemas/anonymizationProfile"},"name":{"type":"string"}},"type":"object"},"remoteBoxConnectionData":{"properties":{"defaultProfile":{"$ref":"#/components/schemas/anonymizationProfile"},"name":{"type":"string"}},"type":"object"},"scp":{"properties":{"aeTitle":{"type":"string"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"port":{"format":"int32","type":"integer"}},"type":"object"},"scu":{"properties":{"aeTitle":{"type":"string"},"host":{"type":"string"},"id":{"format":"int64","type":"integer"},"name":{"type":"string"},"port":{"format":"int32","type":"integer"}},"type":"object"},"series":{"properties":{"bodyPartExamined":{"$ref":"#/components/schemas/dicomPropertyValue"},"frameOfReferenceUID":{"$ref":"#/components/schemas/dicomPropertyValue"},"id":{"format":"int64","type":"integer"},"manufacturer":{"$ref":"#/components/schemas/dicomPropertyValue"},"modality":{"$ref":"#/components/schemas/dicomPropertyValue"},"protocolName":{"$ref":"#/components/schemas/dicomPropertyValue"},"seriesDate":{"$ref":"#/components/schemas/dicomPropertyValue"},"seriesDescription":{"$ref":"#/components/schemas/dicomPropertyValue"},"seriesInstanceUID":{"$ref":"#/components/schemas/dicomPropertyValue"},"stationName":{"$ref":"#/components/schemas/dicomPropertyValue"},"studyId":{"format":"int64","type":"integer"}},"type":"object"},"seriesidseriestype":{"properties":{"seriesid":{"format":"int64","type":"integer"},"seriestype":{"$ref":"#/components/schemas/seriestype"}},"type":"object"},"seriesidseriestypesresult":{"properties":{"seriesidseriestypes":{"items":{"$ref":"#/components/schemas/seriesidseriestype"},"type":"array"}},"type":"object"},"seriestag":{"properties":{"id":{"format":"int64","type":"integer"},"name":{"type":"string"}},"type":"object"},"seriestype":{"properties":{"id":{"format":"int64","type":"integer"},"name":{"type":"string"}},"type":"object"},"seriestyperule":{"properties":{"id":{"format":"int64","type":"integer"},"seriesTypeId":{"format":"int64","type":"integer"}},"type":"object"},"seriestyperuleattribute":{"properties":{"element":{"format":"int32","type":"integer"},"group":{"format":"int32","type":"integer"},"id":{"format":"int64","type":"integer"},"path":{"type":"string"},"seriesTypeRuleId":{"format":"int64","type":"integer"},"value":{"type":"string"}},"required":["id","seriesTypeRuleId","group","element","value"],"type":"object"},"seriestypeupdatestatus":{"properties":{"running":{"type":"boolean"}},"required":["running"],"type":"object"},"source":{"properties":{"sourceId":{"format":"int64","type":"integer"},"sourceName":{"type":"string"},"sourceType":{"type":"string"}},"type":"object"},"sourceRef":{"properties":{"sourceId":{"format":"int64","type":"integer"},"sourceType":{"type":"string"}},"type":"object"},"sourceTagFilter":{"properties":{"id":{"format":"int64","type":"integer"},"sourceId":{"format":"int64","type":"integer"},"sourceType":{"type":"string"},"tagFilterId":{"format":"int64","type":"integer"}},"type":"object"},"study":{"properties":{"accessionNumber":{"$ref":"#/components/schemas/dicomPropertyValue"},"id":{"format":"int64","type":"integer"},"patientAge":{"$ref":"#/components/schemas/dicomPropertyValue"},"patientId":{"format":"int64","type":"integer"},"studyDate":{"$ref":"#/components/schemas/dicomPropertyValue"},"studyDescription":{"$ref":"#/components/schemas/dicomPropertyValue"},"studyID":{"$ref":"#/components/schemas/dicomPropertyValue"},"studyInstanceUID":{"$ref":"#/components/schemas/dicomPropertyValue"}},"type":"object"},"tagMapping":{"properties":{"tagPath":{"$ref":"#/components/schemas/tagPathTag"},"value":{"type":"string"}},"type":"object"},"tagPathTag":{"properties":{"previous":{"$ref":"#/components/schemas/tagPathTrunk"},"tag":{"format":"int32","type":"integer"}},"type":"object"},"tagPathTrunk":{"properties":{"item":{"type":"string"},"previous":{"$ref":"#/components/schemas/tagPathTrunk"},"tag":{"format":"int32","type":"integer"}},"type":"object"},"tagValue":{"properties":{"tagPath":{"$ref":"#/components/schemas/tagPathTag"},"value":{"type":"string"}},"type":"object"},"user":{"properties":{"hashedPassword":{"type":"string"},"id":{"format":"int64","type":"integer"},"role":{"type":"string"},"user":{"type":"string"}},"required":["id","user","role"],"type":"object"},"userInfo":{"properties":{"id":{"format":"int64","type":"integer"},"role":{"type":"string"},"user":{"type":"string"}},"type":"object"},"userPass":{"properties":{"pass":{"type":"string"},"user":{"type":"string"}},"type":"object"},"watchedDirectory":{"properties":{"id":{"format":"int64","type":"integer"},"path":{"type":"string"}},"type":"object"}}}}