Emory Digital Slide Archive REST API

Public REST API for the Emory Digital Slide Archive (computablebrain), a Girder/HistomicsTK-based platform for digital pathology and whole-slide imaging. The API exposes documented resource endpoints for systems, items, files, folders and annotations, with a live Swagger interface at /api/v1.

OpenAPI Specification

emory-digital-slide-archive.yaml Raw ↑
openapi: 3.0.3
info:
  title: Girder REST API (Emory Digital Slide Archive)
  version: 3.2.14
  description: OpenAPI 3.0 conversion of the Girder REST API powering the Emory Digital Slide Archive (computablebrain). Converted
    faithfully from the live Swagger 2.0 document at https://computablebrain.emory.edu/api/v1/describe.
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.txt
servers:
- url: https://computablebrain.emory.edu/api/v1
tags:
- description: annotation resource
  name: annotation
- description: api_key resource
  name: api_key
- description: assetstore resource
  name: assetstore
- description: collection resource
  name: collection
- description: dicomweb_assetstore resource
  name: dicomweb_assetstore
- description: file resource
  name: file
- description: files resource
  name: files
- description: folder resource
  name: folder
- description: group resource
  name: group
- description: histomicsui resource
  name: histomicsui
- description: homepage resource
  name: homepage
- description: item resource
  name: item
- description: job resource
  name: job
- description: large_image resource
  name: large_image
- description: notification resource
  name: notification
- description: resource resource
  name: resource
- description: slicer_cli_web resource
  name: slicer_cli_web
- description: system resource
  name: system
- description: tcga resource
  name: tcga
- description: token resource
  name: token
- description: user resource
  name: user
- description: worker resource
  name: worker
paths:
  /annotation:
    get:
      operationId: annotation_find_annotation
      parameters:
      - name: itemId
        in: query
        required: false
        description: List all annotations in this item.
        schema:
          type: string
      - name: userId
        in: query
        required: false
        description: List all annotations created by this user.
        schema:
          type: string
      - name: text
        in: query
        required: false
        description: Pass this to perform a full text search for annotation names and descriptions.
        schema:
          type: string
      - name: name
        in: query
        required: false
        description: Pass to lookup an annotation by exact name match.
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: Result set size limit.
        schema:
          type: integer
          format: int32
          default: 50
      - name: offset
        in: query
        required: false
        description: Offset into result set.
        schema:
          type: integer
          format: int32
          default: 0
      - name: sort
        in: query
        required: false
        description: Field to sort the result set by.
        schema:
          type: string
          default: lowerName
      - name: sortdir
        in: query
        required: false
        description: 'Sort order: 1 for ascending, -1 for descending.'
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - -1
          default: 1
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Annotation'
        '400':
          description: A parameter was invalid.
        '403':
          description: Read access was denied on the parent item.
      summary: Search for annotations.
      tags:
      - annotation
    post:
      operationId: annotation_createAnnotation_post_annotation
      parameters:
      - name: itemId
        in: query
        required: true
        description: The ID of the associated item.
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Annotation'
        '400':
          description: 'ID was invalid.


            Invalid JSON passed in request body.


            Validation Error: JSON doesn''t follow schema.'
        '403':
          description: Read access was denied for the item.
      summary: Create an annotation.
      tags:
      - annotation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/string'
        required: true
        description: A JSON object containing the annotation.
  /annotation/counts:
    get:
      operationId: annotation_getItemListAnnotationCounts_counts
      parameters:
      - name: items
        in: query
        required: true
        description: A comma-separated list of item ids.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: A parameter was invalid.
      summary: Get annotation counts for a list of items.  If using actual a database other than DocumentDB, this also indicates
        if items are referenced as annotations.
      tags:
      - annotation
  /annotation/folder/{id}:
    delete:
      operationId: annotation_deleteFolderAnnotations_delete_folder_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the folder
        schema:
          type: string
      - name: recurse
        in: query
        required: false
        description: Whether or not to retrieve all annotations from subfolders
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
      summary: Delete all user-owned annotations from the items in a folder
      tags:
      - annotation
    get:
      operationId: annotation_returnFolderAnnotations_folder_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the folder
        schema:
          type: string
      - name: recurse
        in: query
        required: false
        description: Whether or not to retrieve all annotations from subfolders
        schema:
          type: boolean
          default: false
      - name: limit
        in: query
        required: false
        description: Result set size limit.
        schema:
          type: integer
          format: int32
          default: 50
      - name: offset
        in: query
        required: false
        description: Offset into result set.
        schema:
          type: integer
          format: int32
          default: 0
      - name: sort
        in: query
        required: false
        description: Field to sort the result set by.
        schema:
          type: string
          default: created
      - name: sortdir
        in: query
        required: false
        description: 'Sort order: 1 for ascending, -1 for descending.'
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - -1
          default: -1
      responses:
        '200':
          description: Success
        '400':
          description: A parameter was invalid.
      summary: Get the user-owned annotations from the items in a folder
      tags:
      - annotation
  /annotation/folder/{id}/access:
    put:
      operationId: annotation_setFolderAnnotationAccess_put_folder_id_access
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the folder
        schema:
          type: string
      - name: access
        in: query
        required: true
        description: The JSON-encoded access control list.
        schema:
          type: string
      - name: public
        in: query
        required: false
        description: Whether the annotation should be publicly visible.
        schema:
          type: boolean
      - name: recurse
        in: query
        required: false
        description: Whether or not to retrieve all annotations from subfolders
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
      summary: Set the access for all the user-owned annotations from the items in a folder
      tags:
      - annotation
  /annotation/folder/{id}/create:
    get:
      operationId: annotation_canCreateFolderAnnotations_folder_id_create
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the folder
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
      summary: Check if the user can create annotations in a folder
      tags:
      - annotation
  /annotation/folder/{id}/present:
    get:
      operationId: annotation_existFolderAnnotations_folder_id_present
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the folder
        schema:
          type: string
      - name: recurse
        in: query
        required: false
        description: Whether or not to recursively check subfolders for annotations
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: Success
        '400':
          description: A parameter was invalid.
      summary: Check if the user owns any annotations for the items in a folder
      tags:
      - annotation
  /annotation/images:
    get:
      description: By default, this endpoint will return a list of recently annotated images.  This list can be further filtered
        by passing the creatorId and/or imageName parameters.  The creatorId parameter will limit results to annotations created
        by the given user.  The imageName parameter will only include images whose name (or a token in the name) begins with
        the given string.
      operationId: annotation_findAnnotatedImages_images
      parameters:
      - name: creatorId
        in: query
        required: false
        description: Limit to annotations created by this user
        schema:
          type: string
      - name: imageName
        in: query
        required: false
        description: Filter results by image name (case-insensitive)
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: Result set size limit.
        schema:
          type: integer
          format: int32
          default: 50
      - name: offset
        in: query
        required: false
        description: Offset into result set.
        schema:
          type: integer
          format: int32
          default: 0
      - name: sort
        in: query
        required: false
        description: Field to sort the result set by.
        schema:
          type: string
          default: updated
      - name: sortdir
        in: query
        required: false
        description: 'Sort order: 1 for ascending, -1 for descending.'
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - -1
          default: -1
      responses:
        '200':
          description: Success
        '400':
          description: A parameter was invalid.
      summary: Search for annotated images.
      tags:
      - annotation
  /annotation/item/{id}:
    delete:
      description: This deletes all annotation model records.
      operationId: annotation_deleteItemAnnotations_delete_item_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the document.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Write access was denied for the item.
      summary: Delete all annotations for an item.
      tags:
      - annotation
    get:
      description: This returns a list of annotation model records.
      operationId: annotation_getItemAnnotations_item_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the document.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Read access was denied for the item.
      summary: Get all annotations for an item.
      tags:
      - annotation
    post:
      operationId: annotation_createItemAnnotations_post_item_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the document.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: 'ID was invalid.


            Invalid JSON passed in request body.


            Validation Error: JSON doesn''t follow schema.'
        '403':
          description: Write access was denied for the item.
      summary: Create multiple annotations on an item.
      tags:
      - annotation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/string'
        required: true
        description: A JSON list of annotation model records or annotations.  If these are complete models, the value of the
          "annotation" key is used and the other information is ignored (such as original creator ID).
  /annotation/item/{id}/plot/data:
    post:
      operationId: annotation_getItemPlottableData_post_item_id_plot_data
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the document.
        schema:
          type: string
      - name: adjacentItems
        in: query
        required: false
        description: Whether to include adjacent item data.
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
          - __all__
          default: false
      - name: keys
        in: query
        required: true
        description: A comma separated list of data keys to retrieve (not json).
        schema:
          type: string
      - name: requiredKeys
        in: query
        required: false
        description: A comma separated list of data keys that must be non null in all response rows (not json).
        schema:
          type: string
      - name: sources
        in: query
        required: false
        description: An optional comma separated list that can contain folder, item, annotation, annotationelement, datafile.
        schema:
          type: string
      - name: uuid
        in: query
        required: false
        description: An optional uuid to allow cancelling a previous request.  If specified and there are any outstanding
          requests with the same uuid, they may be cancelled to save resources.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Read access was denied for the item.
      summary: Get plottable data related to an item and its annotations.
      tags:
      - annotation
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                annotations:
                  type: string
                  description: A JSON list of annotation IDs that should be included.  An entry of \__all__ will include all
                    annotations.
                compute:
                  type: string
                  description: 'A dictionary with keys "columns": a list of columns to include in the computation; if unspecified
                    or an empty list, no computation is done, "function": a string with the name of the function, such as
                    umap, "params": additional parameters to pass to the function.  If none of the requiredKeys are compute.(x|y|z),
                    the computation will not be performed.  Only rows which have all selected columns present will be included
                    in the computation.'
  /annotation/item/{id}/plot/list:
    post:
      operationId: annotation_getItemPlottableElements_post_item_id_plot_list
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the document.
        schema:
          type: string
      - name: adjacentItems
        in: query
        required: false
        description: Whether to include adjacent item data.
        schema:
          type: string
          enum:
          - 'false'
          - 'true'
          - __all__
          default: false
      - name: sources
        in: query
        required: false
        description: An optional comma separated list that can contain folder, item, annotation, annotationelement, datafile.
        schema:
          type: string
      - name: uuid
        in: query
        required: false
        description: An optional uuid to allow cancelling a previous request.  If specified and there are any outstanding
          requests with the same uuid, they may be cancelled to save resources.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Read access was denied for the item.
      summary: Get a list of plottable data related to an item and its annotations.
      tags:
      - annotation
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                annotations:
                  type: string
                  description: A JSON list of annotation IDs that should be included.  An entry of \__all__ will include all
                    annotations.
  /annotation/old:
    delete:
      operationId: annotation_deleteOldAnnotations_delete_old
      parameters:
      - name: age
        in: query
        required: false
        description: The minimum age in days.
        schema:
          type: integer
          format: int32
          default: 30
      - name: versions
        in: query
        required: false
        description: Keep at least this many history entries for each annotation.
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        '200':
          description: Success
        '400':
          description: A parameter was invalid.
      summary: Delete old annotations.
      tags:
      - annotation
    get:
      operationId: annotation_getOldAnnotations_old
      parameters:
      - name: age
        in: query
        required: false
        description: The minimum age in days.
        schema:
          type: integer
          format: int32
          default: 30
      - name: versions
        in: query
        required: false
        description: Keep at least this many history entries for each annotation.
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        '200':
          description: Success
        '400':
          description: A parameter was invalid.
      summary: Report on old annotations.
      tags:
      - annotation
  /annotation/schema:
    get:
      description: In addition to the schema, if IDs are specified on elements, all IDs must be unique.
      operationId: annotation_getAnnotationSchema_schema
      responses:
        '200':
          description: Success
        '400':
          description: A parameter was invalid.
      summary: Get the official Annotation schema
      tags:
      - annotation
      parameters: []
  /annotation/{id}:
    delete:
      operationId: annotation_deleteAnnotation_delete_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Write access was denied for the annotation.
      summary: Delete an annotation.
      tags:
      - annotation
    get:
      description: Use "size" or "details" as possible sort keys.
      operationId: annotation_getAnnotation_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      - name: left
        in: query
        required: false
        description: The left column of the area to fetch.
        schema:
          type: number
          format: float
      - name: right
        in: query
        required: false
        description: The right column (exclusive) of the area to fetch.
        schema:
          type: number
          format: float
      - name: top
        in: query
        required: false
        description: The top row of the area to fetch.
        schema:
          type: number
          format: float
      - name: bottom
        in: query
        required: false
        description: The bottom row (exclusive) of the area to fetch.
        schema:
          type: number
          format: float
      - name: low
        in: query
        required: false
        description: The lowest z value of the area to fetch.
        schema:
          type: number
          format: float
      - name: high
        in: query
        required: false
        description: The highest z value (exclusive) of the area to fetch.
        schema:
          type: number
          format: float
      - name: minimumSize
        in: query
        required: false
        description: Only annotations larger than or equal to this size in pixels will be returned.  Size is determined by
          the length of the diagonal of the bounding box of an element.  This probably should be 1 at the maximum zoom, 2
          at the next level down, 4 at the next, etc.
        schema:
          type: number
          format: float
      - name: maxDetails
        in: query
        required: false
        description: Limit the number of annotations returned based on complexity.  The complexity of an annotation is how
          many points are used to defined it.  This is applied in addition to the limit.  Using maxDetails helps ensure results
          will be able to be rendered.
        schema:
          type: integer
          format: int32
      - name: minElements
        in: query
        required: false
        description: If maxDetails is specified, always return at least this many elements, even if they are very detailed.
        schema:
          type: integer
          format: int32
      - name: centroids
        in: query
        required: false
        description: If true, only return the centroids of each element.  The results are returned as a packed binary array
          with a json wrapper.
        schema:
          type: boolean
      - name: bbox
        in: query
        required: false
        description: If true, add _bbox records to each element.  These are computed when the annotation is stored and cannot
          be modified.  Cannot be used with the centroids option.
        schema:
          type: boolean
      - name: limit
        in: query
        required: false
        description: Result set size limit.
        schema:
          type: integer
          format: int32
      - name: offset
        in: query
        required: false
        description: Offset into result set.
        schema:
          type: integer
          format: int32
          default: 0
      - name: sort
        in: query
        required: false
        description: Field to sort the result set by.
        schema:
          type: string
          default: _id
      - name: sortdir
        in: query
        required: false
        description: 'Sort order: 1 for ascending, -1 for descending.'
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - -1
          default: 1
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Read access was denied for the annotation.
      summary: Get an annotation by id.
      tags:
      - annotation
    patch:
      operationId: annotation_patchAnnotation_patch_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '204':
          description: No Content; the annotation was successfully updated but is not returned
        '400':
          description: 'Invalid JSON passed in request body.


            Validation Error: JSON doesn''t follow schema.'
        '403':
          description: Write access was denied for the item.
      summary: Patch an annotation or its elements.
      tags:
      - annotation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/string'
        required: true
        description: A JSON object containing the annotation patch.  This is a list.  Each entry is an operation that contains
          "op", "path", and possibly "value".  "op" can be any of "replace", "add", or "remove".  "path" is either a root
          property (e.g., "name"), or "elements/id:{element id}".  Any path to a dictionary or list can be extended via .../(key
          or index) components.  Add and replace operations must include the value.
    put:
      operationId: annotation_updateAnnotation_put_id
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      - name: itemId
        in: query
        required: false
        description: Pass this to move the annotation to a new item.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: 'Invalid JSON passed in request body.


            Validation Error: JSON doesn''t follow schema.'
        '403':
          description: Write access was denied for the item.
      summary: Update an annotation or move it to a different item.
      tags:
      - annotation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/string'
        description: A JSON object containing the annotation.  If the "annotation":"elements" property is not set, the elements
          will not be modified.
  /annotation/{id}/access:
    get:
      operationId: annotation_getAnnotationAccess_id_access
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Admin access was denied for the annotation.
      summary: Get the access control list for an annotation.
      tags:
      - annotation
    put:
      operationId: annotation_updateAnnotationAccess_put_id_access
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      - name: access
        in: query
        required: true
        description: The JSON-encoded access control list.
        schema:
          type: string
      - name: public
        in: query
        required: false
        description: Whether the annotation should be publicly visible.
        schema:
          type: boolean
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Admin access was denied for the annotation.
      summary: Update the access control list for an annotation.
      tags:
      - annotation
  /annotation/{id}/copy:
    post:
      operationId: annotation_copyAnnotation_post_id_copy
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      - name: itemId
        in: query
        required: true
        description: The ID of the destination item.
        schema:
          type: string
      responses:
        '200':
          description: Success
        '400':
          description: ID was invalid.
        '403':
          description: Write access was denied for the item.
      summary: Copy an annotation from one item to an other.
      tags:
      - annotation
  /annotation/{id}/history:
    get:
      operationId: annotation_getAnnotationHistoryList_id_history
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: Result set size limit.
        schema:
          type: integer
          format: int32
          default: 0
      - name: offset
        in: query
        required: false
        description: Offset into result set.
        schema:
          type: integer
          format: int32
          default: 0
      - name: sort
        in: query
        required: false
        description: Field to sort the result set by.
        schema:
          type: string
          default: _version
      - name: sortdir
        in: query
        required: false
        description: 'Sort order: 1 for ascending, -1 for descending.'
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - -1
          default: -1
      responses:
        '200':
          description: Success
        '403':
          description: Read access was denied for the annotation.
      summary: Get a list of an annotation's history.
      tags:
      - annotation
  /annotation/{id}/history/revert:
    put:
      description: This can be used to undelete an annotation by reverting to the most recent version.
      operationId: annotation_revertAnnotationHistory_put_id_history_revert
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      - name: version
        in: query
        required: false
        description: The version of the annotation.  If not specified, if the annotation was deleted this undeletes it.  If
          it was not deleted, this reverts to the previous version.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Success
        '400':
          description: Annotation history version not found.
        '403':
          description: Read access was denied for the annotation.
      summary: Revert an annotation to a specific version.
      tags:
      - annotation
  /annotation/{id}/history/{version}:
    get:
      operationId: annotation_getAnnotationHistory_id_history_version
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      - name: version
        in: path
        required: true
        description: The version of the annotation.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Success
        '400':
          description: Annotation history version not found.
        '403':
          description: Read access was denied for the annotation.
      summary: Get a specific version of an annotation's history.
      tags:
      - annotation
  /annotation/{id}/metadata:
    delete:
      operationId: annotation_deleteMetadata_delete_id_metadata
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the annotation.
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/It

# --- truncated at 32 KB (539 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/emory/refs/heads/main/openapi/emory-digital-slide-archive.yaml