openapi: 3.0.1
info:
  title: Dockstore API
  description: "This describes the dockstore API, a webservice that manages pairs\
    \ of Docker images and associated metadata such as CWL documents and Dockerfiles\
    \ used to build those images. Explore swagger.json for a Swagger 2.0 description\
    \ of our API and explore openapi.yaml for OpenAPI 3.0 descriptions."
  termsOfService: https://github.com/dockstore/dockstore-ui2/raw/develop/src/assets/docs/Dockstore_Terms_of_Service.pdf
  contact:
    name: Dockstore@ga4gh
    url: https://discuss.dockstore.org/t/opening-helpdesk-tickets/1506
    email: theglobalalliance@genomicsandhealth.org
  license:
    name: Apache License Version 2.0
    url: https://github.com/dockstore/dockstore/blob/develop/LICENSE
  version: 1.15.2
servers:
- url: /api
  description: Current server when hosted on AWS
- url: /
  description: When working locally
- url: https://dockstore.org/api
  description: Production server
- url: https://staging.dockstore.org/api
  description: Staging server
- url: https://dev.dockstore.net/api
  description: Nightly build server
tags:
- name: aliases
  description: "Create, update list aliases for accessing entries"
- name: categories
  description: Operations on Dockstore categories
- name: organizations
  description: Operations on Dockstore organizations
- name: NIHdatacommons
  description: "Needed for SmartAPI compatibility apparantly, might be cargo cult\
    \ behaviour"
- name: entries
  description: Interact with entries in Dockstore regardless of whether they are containers
    or workflows
- name: containers
  description: List and register entries in the dockstore (pairs of images + metadata
    (CWL and Dockerfile))
- name: containertags
  description: List and modify tags for containers
- name: GA4GHV1
  description: "A curated subset of resources proposed as a common standard for tool\
    \ repositories. Implements TRS [1.0.0](https://github.com/ga4gh/tool-registry-service-schemas/releases/tag/1.0.0)\
    \ and is considered final (not subject to change)"
- name: GA4GHV20BETA
  description: "A curated subset of resources proposed as a common standard for tool\
    \ repositories. Implements TRS [2.0.0-beta.2](https://github.com/ga4gh/tool-registry-service-schemas/releases/tag/2.0.0-beta.2)\
    \ . Integrators are welcome to use these endpoints but they are subject to change\
    \ based on community input."
- name: GA4GHV20
  description: "A curated subset of resources proposed as a common standard for tool\
    \ repositories. Implements TRS [2.0.1](https://github.com/ga4gh/tool-registry-service-schemas/releases/tag/2.0.1)."
- name: extendedGA4GH
  description: Optional experimental extensions of the GA4GH API
- name: tokens
  description: "List, modify, refresh, and delete tokens for external services"
- name: workflows
  description: "List and register workflows in the dockstore (CWL, Nextflow, WDL)"
- name: toolTester
  description: Interactions with the Dockstore-support's ToolTester application
- name: curation
  description: List and modify notifications for users of Dockstore
- name: hosted
  description: Created and modify hosted entries in the dockstore
- name: users
  description: "List, modify, and manage end users of the dockstore"
- name: metadata
  description: "Information about Dockstore like RSS, sitemap, lists of dependencies,\
    \ etc."
- name: lambdaEvents
  description: Query lambda events triggered by GitHub Apps
paths:
  /aliases/workflow-versions/{workflowVersionId}:
    post:
      tags:
      - aliases
      description: Add aliases linked to a workflow version in Dockstore.
      operationId: addAliases
      parameters:
      - name: workflowVersionId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: aliases
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowVersion'
      security:
      - BEARER: []
  /aliases/workflow-versions/{alias}:
    get:
      tags:
      - aliases
      description: Retrieves workflow version path information by alias.
      operationId: getWorkflowVersionPathInfoByAlias
      parameters:
      - name: alias
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowVersionPathInfo'
      security:
      - BEARER: []
  /categories:
    get:
      tags:
      - categories
      summary: Retrieve all categories.
      description: Retrieve all categories.
      operationId: getCategories
      parameters:
      - name: name
        in: query
        description: Name of category to retrieve
        schema:
          type: string
      - name: include
        in: query
        description: "Comma-delimited list of fields to include: entries"
        schema:
          type: string
      responses:
        "200":
          description: Successfully retrieved categories
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Category'
  /categories/{id}:
    get:
      tags:
      - categories
      summary: Retrieve a category by ID.
      description: Retrieve a category by ID.
      operationId: getCategoryById
      parameters:
      - name: id
        in: path
        description: Category ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Successfully retrieved category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
        "404":
          description: Category not found
  /cloudInstances/{cloudInstanceId}:
    delete:
      tags:
      - Cloud Instances
      summary: "Delete a public cloud instance, admin only"
      operationId: deleteCloudInstance
      parameters:
      - name: cloudInstanceId
        in: path
        description: ID of cloud instance to delete
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: No Content
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
      security:
      - BEARER: []
  /cloudInstances:
    get:
      tags:
      - Cloud Instances
      summary: Get all known public cloud instances
      operationId: getCloudInstances
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CloudInstance'
    post:
      tags:
      - Cloud Instances
      summary: "Add a new public cloud instance, admin only"
      operationId: postCloudInstance
      requestBody:
        description: Cloud instance to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudInstance'
        required: true
      responses:
        "204":
          description: No Content
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
      security:
      - BEARER: []
  /organizations/collections/{collectionId}/aliases:
    post:
      tags:
      - organizations
      summary: Add aliases linked to a collection in Dockstore.
      description: "Aliases are alphanumerical (case-insensitive and may contain internal\
        \ hyphens), given in a comma-delimited list."
      operationId: addCollectionAliases
      parameters:
      - name: collectionId
        in: path
        description: Collection to modify.
        required: true
        schema:
          type: integer
          format: int64
      - name: aliases
        in: query
        description: Comma-delimited list of aliases.
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Successfully added alias to collection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
  /organizations/{organizationId}/collections/{collectionId}/entry:
    post:
      tags:
      - organizations
      summary: Add an entry to a collection.
      description: Add an entry to a collection.
      operationId: addEntryToCollection
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: collectionId
        in: path
        description: Collection ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: entryId
        in: query
        description: Entry ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: versionId
        in: query
        description: Version ID.
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
    delete:
      tags:
      - organizations
      summary: Delete an entry to a collection.
      description: Delete an entry to a collection.
      operationId: deleteEntryFromCollection
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: collectionId
        in: path
        description: Collection ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: entryId
        in: query
        description: Entry ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: versionName
        in: query
        description: Version Name.
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
  /organizations/{organizationId}/collections:
    get:
      tags:
      - organizations
      summary: Retrieve all collections for an organization.
      description: Retrieve all collections for an organization. Supports optional
        authentication.
      operationId: getCollectionsFromOrganization
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: include
        in: query
        description: Included fields.
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
    post:
      tags:
      - organizations
      summary: Create a collection in the given organization.
      description: Create a collection in the given organization.
      operationId: createCollection
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Collection to register.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Collection'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
  /organizations/{organizationId}/collections/{collectionId}:
    get:
      tags:
      - organizations
      summary: Retrieve a collection by ID.
      description: Retrieve a collection by ID. Supports optional authentication.
      operationId: getCollectionById
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: collectionId
        in: path
        description: Collection ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
    put:
      tags:
      - organizations
      summary: Update a collection.
      description: "Update a collection. Currently only name, display name, description,\
        \ and topic can be updated."
      operationId: updateCollection
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: collectionId
        in: path
        description: Collection ID.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Collection to register.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Collection'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
    delete:
      tags:
      - organizations
      summary: Delete a collection.
      description: Delete a collection.
      operationId: deleteCollection
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: collectionId
        in: path
        description: Collection ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: Successfully deleted the collection
        "404":
          description: Collection not found
        "401":
          description: Unauthorized
      security:
      - BEARER: []
  /organizations/collections/{alias}/aliases:
    get:
      tags:
      - organizations
      summary: Retrieve a collection by alias.
      description: Retrieve a collection by alias.
      operationId: getCollectionByAlias
      parameters:
      - name: alias
        in: path
        description: Alias of the collection.
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
  /organizations/{organizationName}/collections/{collectionName}/name:
    get:
      tags:
      - organizations
      summary: Retrieve a collection by name.
      description: Retrieve a collection by name. Supports optional authentication.
      operationId: getCollectionByName
      parameters:
      - name: organizationName
        in: path
        description: Organization name.
        required: true
        schema:
          type: string
      - name: collectionName
        in: path
        description: Collection name.
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
  /organizations/{organizationId}/collections/{collectionId}/description:
    get:
      tags:
      - organizations
      summary: Retrieve a collection description by organization ID and collection
        ID.
      description: Retrieve a collection description by organization ID and collection
        ID. Supports optional authentication.
      operationId: getCollectionDescription
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: collectionId
        in: path
        description: Collection ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: string
      security:
      - BEARER: []
    put:
      tags:
      - organizations
      summary: Update a collection's description.
      description: Update a collection's description. Description in markdown.
      operationId: updateCollectionDescription
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: collectionId
        in: path
        description: Collection ID.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Collections's description in markdown.
        content:
          '*/*':
            schema:
              type: string
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
      security:
      - BEARER: []
  /containers/{containerId}/testParameterFiles:
    get:
      tags:
      - containers
      description: Get the corresponding test parameter files.
      operationId: getTestParameterFiles
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tag
        in: query
        schema:
          type: string
      - name: descriptorType
        in: query
        schema:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
    put:
      tags:
      - containers
      description: Add test parameter files to a tag.
      operationId: addTestParameterFiles
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: testParameterPaths
        in: query
        schema:
          type: array
          items:
            type: string
      - name: tagName
        in: query
        schema:
          type: string
      - name: descriptorType
        in: query
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
    delete:
      tags:
      - containers
      description: Delete test parameter files to a tag.
      operationId: deleteTestParameterFiles
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: testParameterPaths
        in: query
        schema:
          type: array
          items:
            type: string
      - name: tagName
        in: query
        schema:
          type: string
      - name: descriptorType
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /containers/published:
    get:
      tags:
      - containers
      description: List all published tools.
      operationId: allPublishedContainers
      parameters:
      - name: offset
        in: query
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        schema:
          type: integer
          format: int32
          default: 100
      - name: filter
        in: query
        schema:
          type: string
          default: ""
      - name: sortCol
        in: query
        schema:
          type: string
          default: stars
      - name: sortOrder
        in: query
        schema:
          type: string
          default: desc
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DockstoreTool'
  /containers/{containerId}:
    get:
      tags:
      - containers
      description: Retrieve a tool
      operationId: getContainer
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: include
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
    put:
      tags:
      - containers
      summary: Update the tool with the given tool.
      description: "Updates default descriptor paths, default Dockerfile paths, default\
        \ test parameter paths, git url, and default version. Also updates tool maintainer\
        \ email, and private access for manual tools."
      operationId: updateContainer
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DockstoreTool'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
    delete:
      tags:
      - containers
      description: Delete a tool.
      operationId: deleteContainer
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /containers/{containerId}/dockerfile:
    get:
      tags:
      - containers
      description: Get the corresponding Dockerfile.
      operationId: dockerfile
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tag
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /containers/path/{repository}:
    get:
      tags:
      - containers
      summary: Get a list of tools by path.
      description: Do not include tool name.
      operationId: getContainerByPath
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/path/tool/{repository}:
    get:
      tags:
      - containers
      summary: Get a tool by the specific tool path
      description: Requires full path (including tool name if applicable).
      operationId: getContainerByToolPath
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      - name: include
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/published/{containerId}:
    get:
      tags:
      - containers
      description: Get a published tool.
      operationId: getPublishedContainer
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: include
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
  /containers/path/{repository}/published:
    get:
      tags:
      - containers
      summary: Get a list of published tools by path.
      description: Do not include tool name.
      operationId: getPublishedContainerByPath
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/path/tool/{repository}/published:
    get:
      tags:
      - containers
      summary: Get a published tool by the specific tool path.
      description: Requires full path (including tool name if applicable).
      operationId: getPublishedContainerByToolPath
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      - name: include
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
  /containers/schema/{containerId}/published:
    get:
      tags:
      - containers
      description: Get a published tool's schema by ID.
      operationId: getPublishedContainerSchema
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
  /containers/namespace/{namespace}/published:
    get:
      tags:
      - containers
      description: List all published tools belonging to the specified namespace.
      operationId: getPublishedContainersByNamespace
      parameters:
      - name: namespace
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DockstoreTool'
  /containers/{containerId}/starredUsers:
    get:
      tags:
      - containers
      description: Returns list of users who starred a tool.
      operationId: getStarredUsers
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/User'
  /containers/{toolId}/zip/{tagId}:
    get:
      tags:
      - containers
      description: Download a ZIP file of a tool and all associated files.
      operationId: getToolZip
      parameters:
      - name: toolId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tagId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/zip: {}
      security:
      - BEARER: []
  /containers/{containerId}/users:
    get:
      tags:
      - containers
      description: Get users of a tool.
      operationId: getUsers
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
      security:
      - BEARER: []
  /containers/{containerId}/primaryDescriptor:
    get:
      tags:
      - containers
      description: Get the primary descriptor file.
      operationId: primaryDescriptor
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tag
        in: query
        schema:
          type: string
      - name: language
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /containers/{containerId}/publish:
    post:
      tags:
      - containers
      description: Publish or unpublish a tool.
      operationId: publish
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishRequest'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/{containerId}/refresh:
    get:
      tags:
      - containers
      description: Refresh one particular tool.
      operationId: refresh
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/registerManual:
    post:
      tags:
      - containers
      description: "Register a tool manually, along with tags."
      operationId: registerManual
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DockstoreTool'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/{containerId}/descriptor/{relative-path}:
    get:
      tags:
      - containers
      description: Get the corresponding descriptor file.
      operationId: secondaryDescriptorPath
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tag
        in: query
        schema:
          type: string
      - name: relative-path
        in: path
        required: true
        schema:
          type: string
      - name: language
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /containers/{containerId}/secondaryDescriptors:
    get:
      tags:
      - containers
      description: Get a list of secondary descriptor files.
      operationId: secondaryDescriptors
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tag
        in: query
        schema:
          type: string
      - name: language
        in: query
        schema:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /containers/{containerId}/star:
    put:
      tags:
      - containers
      description: Star a tool.
      operationId: starEntry
      parameters:
      - name: containerId
        in: path
        description: Tool to star.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: StarRequest to star a repo for a user
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StarRequest'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /containers/tags:
    get:
      tags:
      - containers
      description: List the tags for a tool.
      operationId: tags
      parameters:
      - name: containerId
        in: query
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
      security:
      - BEARER: []
  /containers/{toolId}/defaultVersion:
    put:
      tags:
      - containers
      description: Update the default version of the given tool.
      operationId: updateDefaultVersion
      parameters:
      - name: toolId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          '*/*':
            schema:
              type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/{containerId}/labels:
    put:
      tags:
      - containers
      description: Update the labels linked to a tool.
      operationId: updateLabels
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: labels
        in: query
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/{containerId}/updateTagPaths:
    put:
      tags:
      - containers
      description: Change the tool paths.
      operationId: updateTagContainerPath
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DockstoreTool'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/{containerId}/tags:
    put:
      tags:
      - containertags
      description: Update the tags linked to a tool.
      operationId: updateTags
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Tag'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
      security:
      - BEARER: []
    post:
      tags:
      - containertags
      description: Add new tags linked to a tool.
      operationId: addTags
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Tag'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
      security:
      - BEARER: []
  /containers/{containerId}/tags/{tagId}:
    delete:
      tags:
      - containertags
      description: Delete tag linked to a tool.
      operationId: deleteTags
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tagId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /containers/{containerId}/tags/{tagId}/description:
    get:
      tags:
      - containertags
      description: Retrieve a tag's description
      operationId: getTagDescription
      parameters:
      - name: containerId
        in: path
        description: Container to retrieve the version from
        required: true
        schema:
          type: integer
          format: int64
      - name: tagId
        in: path
        description: Tag to retrieve the description from
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            text/plain:
              schema:
                type: string
      security:
      - BEARER: []
  /containers/path/{containerId}/tags:
    get:
      tags:
      - containertags
      description: Get tags for a tool by id.
      operationId: getTagsByPath
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
      security:
      - BEARER: []
  /containers/{containerId}/tags/{tagId}/sourcefiles:
    get:
      tags:
      - containertags
      description: Retrieve sourcefiles for a container's version
      operationId: getTagsSourcefiles
      parameters:
      - name: containerId
        in: path
        description: Container to retrieve the version from
        required: true
        schema:
          type: integer
          format: int64
      - name: tagId
        in: path
        description: Tag to retrieve the sourcefiles from
        required: true
        schema:
          type: integer
          format: int64
      - name: fileTypes
        in: query
        description: List of file types to filter sourcefiles by
        schema:
          type: array
          items:
            type: string
            enum:
            - DOCKSTORE_SMK
            - SMK_TEST_PARAMS
            - DOCKSTORE_CWL
            - CWL_TEST_JSON
            - DOCKSTORE_WDL
            - WDL_TEST_JSON
            - DOCKERFILE
            - NEXTFLOW
            - NEXTFLOW_CONFIG
            - NEXTFLOW_TEST_PARAMS
            - DOCKSTORE_YML
            - DOCKSTORE_SERVICE_YML
            - DOCKSTORE_SERVICE_TEST_JSON
            - DOCKSTORE_SERVICE_OTHER
            - DOCKSTORE_GXFORMAT2
            - GXFORMAT2_TEST_FILE
            - DOCKSTORE_SWL
            - SWL_TEST_JSON
            - DOCKSTORE_JUPYTER
            - DOCKSTORE_NOTEBOOK_REES
            - DOCKSTORE_NOTEBOOK_DEVCONTAINER
            - DOCKSTORE_NOTEBOOK_TEST_FILE
            - DOCKSTORE_NOTEBOOK_OTHER
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /containers/{containerId}/requestDOI/{tagId}:
    post:
      tags:
      - containertags
      description: Request a DOI for this version of a tool.
      operationId: requestDOIForToolTag
      parameters:
      - name: containerId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tagId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
      security:
      - BEARER: []
  /entries/{id}/aliases:
    post:
      tags:
      - entries
      description: Add aliases linked to a entry in Dockstore.
      operationId: addAliases_1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: aliases
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully added alias to entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /entries/{id}/archive:
    post:
      tags:
      - entries
      description: Archive an entry.
      operationId: archiveEntry
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Successfully archived the entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /entries/{entryId}/versions/{versionId}/descriptionMetrics:
    get:
      tags:
      - entries
      description: Retrieve metrics on the description of an entry
      operationId: getDescriptionMetrics
      parameters:
      - name: entryId
        in: path
        description: Entry to retrieve the version from
        required: true
        schema:
          type: integer
          format: int64
      - name: versionId
        in: path
        description: Version to retrieve the sourcefile types from
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Successfully calculated description metrics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DescriptionMetrics'
      security:
      - BEARER: []
  /entries/{id}:
    delete:
      tags:
      - entries
      description: Completely remove an entry from Dockstore.
      operationId: deleteEntry
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Successfully deleted the entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
        "403":
          description: The specified entry is not deletable.
      security:
      - BEARER: []
  /entries/{id}/categories:
    get:
      tags:
      - entries
      description: Get the categories that contain the published entry
      operationId: entryCategories
      parameters:
      - name: id
        in: path
        description: Entry ID
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Successfully retrieved categories
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Category'
        "400":
          description: Entry must be published
  /entries/{id}/collections:
    get:
      tags:
      - entries
      description: Get the collections and approved organizations that contain the
        published entry
      operationId: entryCollections
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CollectionOrganization'
  /entries/{entryId}/exportToOrcid:
    post:
      tags:
      - entries
      description: Export entry to ORCID. DOI is required
      operationId: exportToORCID
      parameters:
      - name: entryId
        in: path
        description: The id of the entry to export.
        required: true
        schema:
          type: integer
          format: int64
      - name: versionId
        in: query
        description: Optional version ID of the entry version to export.
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Successfully exported entry to ORCID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
        "500":
          description: Internal Server Error
        "404":
          description: Not Found
        "400":
          description: Bad Request
      security:
      - BEARER: []
  /entries/{alias}/aliases:
    get:
      tags:
      - entries
      description: Retrieves an entry by alias.
      operationId: getEntryByAlias
      parameters:
      - name: alias
        in: path
        description: Alias
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Successfully retrieved entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /entries/{entryId}/verifiedPlatforms:
    get:
      tags:
      - entries
      description: Get the verified platforms for each version of an entry.
      operationId: getVerifiedPlatforms
      parameters:
      - name: entryId
        in: path
        description: id of the entry
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VersionVerifiedPlatform'
      security:
      - BEARER: []
  /entries/{entryId}/versions/{versionId}/fileTypes:
    get:
      tags:
      - entries
      description: Retrieve the unique file types of a version's sourcefile
      operationId: getVersionsFileTypes
      parameters:
      - name: entryId
        in: path
        description: Entry to retrieve the version from
        required: true
        schema:
          type: integer
          format: int64
      - name: versionId
        in: path
        description: Version to retrieve the sourcefile types from
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  type: string
                  enum:
                  - DOCKSTORE_SMK
                  - SMK_TEST_PARAMS
                  - DOCKSTORE_CWL
                  - CWL_TEST_JSON
                  - DOCKSTORE_WDL
                  - WDL_TEST_JSON
                  - DOCKERFILE
                  - NEXTFLOW
                  - NEXTFLOW_CONFIG
                  - NEXTFLOW_TEST_PARAMS
                  - DOCKSTORE_YML
                  - DOCKSTORE_SERVICE_YML
                  - DOCKSTORE_SERVICE_TEST_JSON
                  - DOCKSTORE_SERVICE_OTHER
                  - DOCKSTORE_GXFORMAT2
                  - GXFORMAT2_TEST_FILE
                  - DOCKSTORE_SWL
                  - SWL_TEST_JSON
                  - DOCKSTORE_JUPYTER
                  - DOCKSTORE_NOTEBOOK_REES
                  - DOCKSTORE_NOTEBOOK_DEVCONTAINER
                  - DOCKSTORE_NOTEBOOK_TEST_FILE
                  - DOCKSTORE_NOTEBOOK_OTHER
      security:
      - BEARER: []
  /entries/{id}/topic:
    post:
      tags:
      - entries
      description: Create a discourse topic for an entry.
      operationId: setDiscourseTopic
      parameters:
      - name: id
        in: path
        description: The id of the entry to add a topic to.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /entries/{id}/unarchive:
    post:
      tags:
      - entries
      description: Unarchive an entry.
      operationId: unarchiveEntry
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Successfully unarchived the entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /entries/updateEntryToGetTopics:
    get:
      tags:
      - entries
      description: Attempt to get the topic of all entries that use GitHub as the
        source control.
      operationId: updateEntryToGetTopics
      responses:
        "200":
          description: Get the number of entries that failed to have their topics
            retrieved from GitHub.
          content:
            application/json:
              schema:
                type: integer
                format: int32
      deprecated: true
      security:
      - BEARER: []
  /entries/updateLanguageVersions:
    post:
      tags:
      - entries
      description: Update language versions
      operationId: updateLanguageVersions
      parameters:
      - name: allVersions
        in: query
        description: Whether to process all versions or only versions without language
          descriptor already set
        schema:
          type: boolean
          default: false
      responses:
        "200":
          description: Number of entries processed
          content:
            application/json:
              schema:
                type: integer
                format: int32
      security:
      - BEARER: []
  /entries/updateOpenData:
    post:
      tags:
      - entries
      description: Update open data
      operationId: updateOpenData
      parameters:
      - name: allVersions
        in: query
        description: Whether to process all versions or only versions without open
          data already set
        schema:
          type: boolean
          default: false
      responses:
        "200":
          description: Number of entries processed
          content:
            application/json:
              schema:
                type: integer
                format: int32
      security:
      - BEARER: []
  /events:
    get:
      tags:
      - events
      summary: Get events based on filters.
      description: Requires authentication.
      operationId: getEvents
      parameters:
      - name: eventSearchType
        in: query
        required: true
        schema:
          type: string
          enum:
          - STARRED_ENTRIES
          - STARRED_ORGANIZATION
          - ALL_STARRED
          - PROFILE
          - SELF_ORGANIZATIONS
      - name: limit
        in: query
        schema:
          maximum: 100
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        "200":
          description: A list of events
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event'
      security:
      - BEARER: []
  /events/{userId}:
    get:
      tags:
      - events
      summary: Get events based on filter and user id.
      description: Optional authentication.
      operationId: getUserEvents
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: eventSearchType
        in: query
        required: true
        schema:
          type: string
          enum:
          - STARRED_ENTRIES
          - STARRED_ORGANIZATION
          - ALL_STARRED
          - PROFILE
          - SELF_ORGANIZATIONS
      - name: limit
        in: query
        schema:
          maximum: 100
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        "200":
          description: A list of events
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event'
        "404":
          description: User not found
  /containers/hostedEntry:
    post:
      tags:
      - hosted
      description: Create a hosted tool.
      operationId: createHostedTool
      parameters:
      - name: registry
        in: query
        schema:
          type: string
      - name: name
        in: query
        schema:
          type: string
      - name: descriptorType
        in: query
        schema:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      - name: namespace
        in: query
        schema:
          type: string
      - name: entryName
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully created a hosted tool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /containers/hostedEntry/{entryId}:
    delete:
      tags:
      - hosted
      description: Delete a revision of a hosted tool.
      operationId: deleteHostedToolVersion
      parameters:
      - name: entryId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: version
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully deleted hosted entry version
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
    patch:
      tags:
      - hosted
      description: Non-idempotent operation for creating new revisions of hosted tools.
      operationId: editHostedTool
      parameters:
      - name: entryId
        in: path
        description: Entry to modify
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: "Set of updated source files, add files by adding new files with\
          \ unknown paths, delete files by including them with null content"
        content:
          application/json:
            schema:
              uniqueItems: true
              type: array
              items:
                $ref: '#/components/schemas/SourceFile'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockstoreTool'
      security:
      - BEARER: []
  /workflows/hostedEntry/{entryId}:
    post:
      tags:
      - hosted
      summary: Creates a new revision of a hosted workflow from a zip
      operationId: addZip
      parameters:
      - name: entryId
        in: path
        description: hosted entry ID
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      deprecated: true
      security:
      - BEARER: []
    delete:
      tags:
      - hosted
      description: Delete a revision of a hosted workflow.
      operationId: deleteHostedWorkflowVersion
      parameters:
      - name: entryId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: version
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully deleted hosted entry version
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
    patch:
      tags:
      - hosted
      description: Non-idempotent operation for creating new revisions of hosted workflows
      operationId: editHostedWorkflow
      parameters:
      - name: entryId
        in: path
        description: Entry to modify
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: "Set of updated source files, add files by adding new files with\
          \ unknown paths, delete files by including them with null content"
        content:
          application/json:
            schema:
              uniqueItems: true
              type: array
              items:
                $ref: '#/components/schemas/SourceFile'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/hostedEntry:
    post:
      tags:
      - hosted
      description: Create a hosted workflow.
      operationId: createHostedWorkflow
      parameters:
      - name: registry
        in: query
        schema:
          type: string
      - name: name
        in: query
        schema:
          type: string
      - name: descriptorType
        in: query
        schema:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      - name: namespace
        in: query
        schema:
          type: string
      - name: entryName
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully created a hosted workflow.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /lambdaEvents/{organization}:
    get:
      tags:
      - lambdaEvents
      description: Get all of the Lambda Events for the given GitHub organization.
      operationId: getLambdaEventsByOrganization
      parameters:
      - name: organization
        in: path
        required: true
        schema:
          type: string
      - name: offset
        in: query
        description: "Start index of paging. Pagination results can be based on numbers\
          \ or other values chosen by the registry implementor (for example, SHA values).\
          \ If this exceeds the current result set return an empty set.  If not specified\
          \ in the request, this will start at the beginning of the results."
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        description: "Amount of records to return in a given page, limited to 100"
        schema:
          maximum: 100
          type: integer
          format: int32
          default: 100
      - name: filter
        in: query
        schema:
          type: string
          default: ""
      - name: sortCol
        in: query
        schema:
          type: string
          default: dbCreateDate
      - name: sortOrder
        in: query
        schema:
          type: string
          default: desc
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LambdaEvent'
      security:
      - BEARER: []
  /lambdaEvents/user/{userid}:
    get:
      tags:
      - lambdaEvents
      description: Get all of the Lambda Events for the given user.
      operationId: getUserLambdaEvents
      parameters:
      - name: userid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: "Start index of paging. Pagination results can be based on numbers\
          \ or other values chosen by the registry implementor (for example, SHA values).\
          \ If this exceeds the current result set return an empty set.  If not specified\
          \ in the request, this will start at the beginning of the results."
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        description: "Amount of records to return in a given page, limited to 100"
        schema:
          maximum: 100
          type: integer
          format: int32
          default: 100
      - name: filter
        in: query
        schema:
          type: string
          default: ""
      - name: sortCol
        in: query
        schema:
          type: string
          default: dbCreateDate
      - name: sortOrder
        in: query
        schema:
          type: string
          default: desc
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LambdaEvent'
      security:
      - BEARER: []
  /metadata/elasticSearch:
    get:
      tags:
      - metadata
      summary: Successful response if elastic search is up and running
      description: "Successful response if elastic search is up and running, NO authentication"
      operationId: checkElasticSearch
      responses:
        default:
          description: default response
          content:
            text/html: {}
            text/xml: {}
  /metadata/health:
    get:
      tags:
      - metadata
      summary: Successful response if the health checks succeed
      description: "Successful response if the health checks succeed, NO authentication"
      operationId: checkHealth
      parameters:
      - name: include
        in: query
        description: "List of health checks to run. If unspecified, run all health\
          \ checks"
        schema:
          type: array
          items:
            type: string
            enum:
            - hibernate
            - deadlocks
            - connectionPool
      responses:
        "200":
          description: All health checks successful
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/HealthCheckResult'
        "400":
          description: Bad Request
        "500":
          description: Health checks failed
  /metadata/okHttpCachePerformance:
    get:
      tags:
      - metadata
      summary: Get measures of cache performance
      description: "Get measures of cache performance, NO authentication"
      operationId: getCachePerformance
      responses:
        default:
          description: Cache performance information
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
  /metadata/cli-info:
    get:
      tags:
      - metadata
      summary: Get Dockstore CLI information.
      description: Get Dockstore CLI information. NO authentication
      operationId: getCliVersion
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CLIInfo'
  /metadata/config.json:
    get:
      tags:
      - metadata
      summary: Configuration for UI clients of the API
      description: "Configuration, NO authentication"
      operationId: getConfig
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Config'
  /metadata/descriptorLanguageList:
    get:
      tags:
      - metadata
      summary: Get the list of descriptor languages supported on Dockstore
      description: "Get the list of descriptor languages supported on Dockstore, NO\
        \ authentication"
      operationId: getDescriptorLanguages
      responses:
        default:
          description: List of descriptor languages
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DescriptorLanguageBean'
  /metadata/dockerRegistryList:
    get:
      tags:
      - metadata
      summary: Get the list of docker registries supported on Dockstore
      description: "Get the list of docker registries supported on Dockstore, NO authentication"
      operationId: getDockerRegistries
      responses:
        default:
          description: List of Docker registries
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RegistryBean'
  /metadata/entryTypeMetadataList:
    get:
      tags:
      - metadata
      summary: Get the metadata for each entry type
      description: Get the metadata for each entry type
      operationId: getEntryTypeMetadataList
      responses:
        default:
          description: List of entry type metadata
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EntryTypeMetadata'
  /metadata/runner_dependencies:
    get:
      tags:
      - metadata
      summary: Returns the file containing runner dependencies
      description: "Returns the file containing runner dependencies, NO authentication"
      operationId: getRunnerDependencies
      parameters:
      - name: client_version
        in: query
        description: The Dockstore client version (e.g. 1.13.0)
        schema:
          pattern: "(^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\\
            d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\\
            +([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$)|(^development-build$)"
          type: string
      - name: python_version
        in: query
        description: "Python version, only relevant for the cwltool runner"
        schema:
          type: string
          default: "3"
      - name: runner
        in: query
        description: The tool runner
        schema:
          type: string
          default: cwltool
          enum:
          - cwltool
      - name: output
        in: query
        description: Response type
        schema:
          type: string
          default: text
          enum:
          - json
          - text
      responses:
        default:
          description: The requirements.txt file
          content:
            application/json:
              schema:
                type: string
  /metadata/sourceControlList:
    get:
      tags:
      - metadata
      summary: Get the list of source controls supported on Dockstore
      description: "Get the list of source controls supported on Dockstore, NO authentication"
      operationId: getSourceControlList
      responses:
        default:
          description: List of source control repositories
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SourceControlBean'
  /metadata/rss:
    get:
      tags:
      - metadata
      summary: List all published tools and workflows in creation order
      description: "List all published tools and workflows in creation order, NO authentication"
      operationId: rssFeed
      responses:
        default:
          description: default response
          content:
            text/xml:
              schema:
                type: string
  /metadata/sitemap:
    get:
      tags:
      - metadata
      summary: "List all available workflow, tool, organization, and collection paths."
      description: "List all available workflow, tool, organization, and collection\
        \ paths. Available means published for tools/workflows, and approved for organizations\
        \ and their respective collections. NO authentication"
      operationId: sitemap
      responses:
        default:
          description: default response
          content:
            text/html:
              schema:
                type: string
            text/xml:
              schema:
                type: string
  /curation/notifications:
    get:
      tags:
      - curation
      description: Return all active notifications
      operationId: getActiveNotifications
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Notification'
    post:
      tags:
      - curation
      description: Create a notification
      operationId: createNotification
      requestBody:
        description: Notification to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Notification'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Notification'
      security:
      - BEARER: []
  /curation/notifications/{id}:
    get:
      tags:
      - curation
      description: Return the notification with given id
      operationId: getNotification
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Notification'
    put:
      tags:
      - curation
      description: Update a notification
      operationId: updateNotification
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Notification'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Notification'
      security:
      - BEARER: []
    delete:
      tags:
      - curation
      description: Delete a notification
      operationId: deleteNotification
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /organizations/{organizationId}/invitation:
    post:
      tags:
      - organizations
      summary: Accept or reject an organization invitation.
      description: "Accept or reject an organization invitation. True accepts the\
        \ invitation, false rejects the invitation."
      operationId: acceptOrRejectInvitation
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: accept
        in: query
        description: Accept or reject.
        required: true
        schema:
          type: boolean
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /organizations/{organizationId}/aliases:
    post:
      tags:
      - organizations
      summary: Add aliases linked to a listing in Dockstore.
      description: "Add aliases linked to a listing in Dockstore. Aliases are alphanumerical\
        \ (case-insensitive and may contain internal hyphens), given in a comma-delimited\
        \ list."
      operationId: addOrganizationAliases
      parameters:
      - name: organizationId
        in: path
        description: Organization to modify.
        required: true
        schema:
          type: integer
          format: int64
      - name: aliases
        in: query
        description: Comma-delimited list of aliases.
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Successfully created organization alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /organizations/{organizationId}/user:
    put:
      tags:
      - organizations
      summary: Add a user role to an organization.
      description: Add a user role to an organization.
      operationId: addUserToOrg
      parameters:
      - name: role
        in: query
        description: Role of user.
        required: true
        schema:
          type: string
          enum:
          - ADMIN
          - MAINTAINER
          - MEMBER
      - name: userId
        in: query
        description: User ID of user to add to organization.
        required: true
        schema:
          type: integer
          format: int64
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: "This is here to appease Swagger. It requires PUT methods to\
          \ have a body, even if it is empty. Please leave it empty."
        content:
          '*/*':
            schema:
              type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationUser'
      security:
      - BEARER: []
    post:
      tags:
      - organizations
      summary: Update a user role in an organization.
      description: Update a user role in an organization.
      operationId: updateUserRole
      parameters:
      - name: role
        in: query
        description: Role of user.
        required: true
        schema:
          type: string
          enum:
          - ADMIN
          - MAINTAINER
          - MEMBER
      - name: userId
        in: query
        description: User ID of user to add to organization.
        required: true
        schema:
          type: integer
          format: int64
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationUser'
      security:
      - BEARER: []
    delete:
      tags:
      - organizations
      summary: Remove a user from an organization.
      description: Remove a user from an organization.
      operationId: deleteUserRole
      parameters:
      - name: userId
        in: query
        description: User ID of user to add to organization.
        required: true
        schema:
          type: integer
          format: int64
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /organizations/{organizationId}/users/{username}:
    put:
      tags:
      - organizations
      summary: Add a user role to an organization.
      description: Add a user role to an organization.
      operationId: addUserToOrgByUsername
      parameters:
      - name: username
        in: path
        description: User to add to org.
        required: true
        schema:
          type: string
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Role of user.
        content:
          '*/*':
            schema:
              type: string
              enum:
              - MAINTAINER
              - MEMBER
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationUser'
      security:
      - BEARER: []
  /organizations/{organizationId}/approve:
    post:
      tags:
      - organizations
      summary: Approve an organization.
      description: Approve the organization with the given id. Admin/curator only.
      operationId: approveOrganization
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /organizations:
    get:
      tags:
      - organizations
      summary: List all available organizations.
      description: "List all organizations that have been approved by a curator or\
        \ admin, sorted by number of stars."
      operationId: getApprovedOrganizations
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Organization'
    post:
      tags:
      - organizations
      summary: Create an organization.
      description: Create an organization. Organization requires approval by an admin
        before being made public.
      operationId: createOrganization
      requestBody:
        description: Organization to register.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Organization'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /organizations/{organizationId}:
    get:
      tags:
      - organizations
      summary: Retrieve an organization by ID.
      description: Retrieve an organization by ID. Supports optional authentication.
      operationId: getOrganizationById
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
    put:
      tags:
      - organizations
      summary: Update an organization.
      description: "Update an organization. Currently only name, display name, description,\
        \ topic, email, link, avatarUrl, and location can be updated."
      operationId: updateOrganization
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Organization to register.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Organization'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
    delete:
      tags:
      - organizations
      summary: Delete pending or rejected organization
      description: Delete pending or rejected organization
      operationId: deleteRejectedOrPendingOrganization
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: NO CONTENT
        "400":
          description: BAD REQUEST
        "403":
          description: FORBIDDEN
      security:
      - BEARER: []
  /organizations/all:
    get:
      tags:
      - organizations
      summary: List all organizations.
      description: "List all organizations, regardless of organization status. Admin/curator\
        \ only."
      operationId: getAllOrganizations
      parameters:
      - name: type
        in: query
        description: Filter to apply to organizations.
        required: true
        schema:
          type: string
          enum:
          - all
          - pending
          - rejected
          - approved
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /organizations/{alias}/aliases:
    get:
      tags:
      - organizations
      summary: Retrieve an organization by alias.
      description: Retrieve an organization by alias.
      operationId: getOrganizationByAlias
      parameters:
      - name: alias
        in: path
        description: Alias.
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
  /organizations/name/{name}:
    get:
      tags:
      - organizations
      summary: Retrieve an organization by name.
      description: Retrieve an organization by name. Supports optional authentication.
      operationId: getOrganizationByName
      parameters:
      - name: name
        in: path
        description: Organization name.
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /organizations/{organizationId}/description:
    get:
      tags:
      - organizations
      summary: Retrieve an organization description by organization ID.
      description: Retrieve an organization description by organization ID. Supports
        optional authentication.
      operationId: getOrganizationDescription
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: string
      security:
      - BEARER: []
    put:
      tags:
      - organizations
      summary: Update an organization's description.
      description: Update an organization's description. Expects description in markdown
        format.
      operationId: updateOrganizationDescription
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Organization's description in markdown.
        content:
          '*/*':
            schema:
              type: string
        required: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /organizations/{organizationId}/events:
    get:
      tags:
      - organizations
      summary: Retrieve all events for an organization.
      description: Retrieve all events for an organization. Supports optional authentication.
      operationId: getOrganizationEvents
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      - name: offset
        in: query
        description: "Start index of paging.  If this exceeds the current result set\
          \ return an empty set.  If not specified in the request, this will start\
          \ at the beginning of the results."
        required: true
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        description: "Amount of records to return in a given page, limited to 100"
        required: true
        schema:
          maximum: 100
          minimum: 1
          type: integer
          format: int32
          default: 100
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Event'
      security:
      - BEARER: []
  /organizations/{organizationId}/members:
    get:
      tags:
      - organizations
      summary: Retrieve all members for an organization.
      description: Retrieve all members for an organization. Supports optional authentication.
      operationId: getOrganizationMembers
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/OrganizationUser'
      security:
      - BEARER: []
  /organizations/{organizationId}/starredUsers:
    get:
      tags:
      - organizations
      summary: Return list of users who starred the given approved organization.
      description: Return list of users who starred the given approved organization.
      operationId: getStarredUsersForApprovedOrganization
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/User'
  /organizations/{organizationId}/reject:
    post:
      tags:
      - organizations
      summary: Reject an organization.
      description: Reject the organization with the given id. Admin/curator only.
      operationId: rejectOrganization
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /organizations/{organizationId}/request:
    post:
      tags:
      - organizations
      summary: Re-request an organization review.
      description: Re-request a review of the given organization. Requires the organization
        to be rejected.
      operationId: requestOrganizationReview
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /organizations/{organizationId}/star:
    put:
      tags:
      - organizations
      summary: Star an organization.
      description: Star an organization.
      operationId: starOrganization
      parameters:
      - name: organizationId
        in: path
        description: Organization ID.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: StarRequest to star an organization for a user.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StarRequest'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /auth/tokens/bitbucket.org:
    get:
      tags:
      - tokens
      description: "Add a new bitbucket.org token, used by quay.io redirect."
      operationId: addBitbucketToken
      parameters:
      - name: code
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully added a new bitbucket.org token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_User'
        "400":
          description: Bad request
        "404":
          description: Not found
        "409":
          description: Conflict
      security:
      - BEARER: []
  /auth/tokens/github.com:
    get:
      tags:
      - tokens
      description: "Add a new github.com token, used by accounts page."
      operationId: addGithubToken
      parameters:
      - name: code
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully added a new github.com token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_User'
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "409":
          description: Conflict
      security:
      - BEARER: []
  /auth/tokens/gitlab.com:
    get:
      tags:
      - tokens
      description: Add a new gitlab.com token.
      operationId: addGitlabToken
      parameters:
      - name: code
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully added a new gitlab.com token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_User'
        "400":
          description: Bad request
        "404":
          description: Not found
        "409":
          description: Conflict
      security:
      - BEARER: []
  /auth/tokens/google:
    post:
      tags:
      - tokens
      description: Allow satellizer to post a new Google token to Dockstore.
      operationId: addGoogleToken
      requestBody:
        content:
          application/json:
            schema:
              type: string
      responses:
        "200":
          description: Successfully posted a new Google token to Dockstore
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_Auth'
        "400":
          description: Bad request
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "409":
          description: Conflict
        "417":
          description: Expectation failed
      security:
      - BEARER: []
  /auth/tokens/orcid.org:
    post:
      tags:
      - tokens
      summary: Add a new orcid.org token
      description: "Using OAuth code from ORCID, request and store tokens from ORCID\
        \ API"
      operationId: addOrcidToken
      parameters:
      - name: code
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully added orcid.org token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_User'
        "400":
          description: Bad request
        "404":
          description: Not found
        "409":
          description: Conflict
        "500":
          description: Internal server error
      security:
      - BEARER: []
  /auth/tokens/quay.io:
    get:
      tags:
      - tokens
      description: Add a new Quay.io token.
      operationId: addQuayToken
      parameters:
      - name: access_token
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully added a new Quay.io token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_User'
        "400":
          description: Bad request
        "404":
          description: Not found
        "409":
          description: Conflict
      security:
      - BEARER: []
  /auth/tokens/github:
    post:
      tags:
      - tokens
      description: "Allow satellizer to post a new GitHub token to dockstore, used\
        \ by login, can create new users."
      operationId: addToken
      requestBody:
        content:
          '*/*':
            schema:
              type: string
      responses:
        "200":
          description: Satellizer successfully posted a new GitHub token to Dockstore
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_Auth'
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "409":
          description: Conflict
      security:
      - BEARER: []
  /auth/tokens/zenodo.org:
    get:
      tags:
      - tokens
      description: "Add a new zenodo.org token, used by accounts page."
      operationId: addZenodoToken
      parameters:
      - name: code
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully added a new zenodo.org token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_User'
        "400":
          description: Bad request
        "404":
          description: Not found
        "409":
          description: Conflict
      security:
      - BEARER: []
  /auth/tokens/{tokenId}:
    get:
      tags:
      - tokens
      description: Get information about a specific token by id.
      operationId: listToken
      parameters:
      - name: tokenId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A token specified by id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token_User'
        "404":
          description: Token not found
      security:
      - BEARER: []
    delete:
      tags:
      - tokens
      description: Delete a token.
      operationId: deleteToken
      parameters:
      - name: tokenId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: Successfully deleted token
        "403":
          description: Forbidden
        "404":
          description: Token not found
      security:
      - BEARER: []
  /toolTester/logs:
    get:
      tags:
      - toolTester
      summary: Get ToolTester log file
      operationId: getToolTesterLog
      parameters:
      - name: tool_id
        in: query
        description: TRS Tool Id
        required: true
        schema:
          type: string
        example: '#workflow/github.com/dockstore/hello_world'
      - name: tool_version_name
        in: query
        required: true
        schema:
          type: string
        example: v1.0.0
      - name: test_filename
        in: query
        required: true
        schema:
          type: string
        example: hello_world.cwl.json
      - name: runner
        in: query
        required: true
        schema:
          type: string
        example: cwltool
      - name: log_type
        in: query
        required: true
        schema:
          type: string
          enum:
          - FULL
          - SUMMARY
      - name: filename
        in: query
        required: true
        schema:
          type: string
        example: 1554477737092.log
      responses:
        default:
          description: default response
          content:
            text/plain:
              schema:
                type: string
  /toolTester/logs/search:
    get:
      tags:
      - toolTester
      summary: Search for ToolTester log files
      operationId: search
      parameters:
      - name: tool_id
        in: query
        description: TRS Tool Id
        required: true
        schema:
          type: string
        example: '#workflow/github.com/dockstore/hello_world'
      - name: tool_version_name
        in: query
        required: true
        schema:
          type: string
        example: v1.0.0
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolTesterLog'
  /users/{userId}/workflows:
    get:
      tags:
      - users
      description: List all workflows owned by the authenticated user.
      operationId: userWorkflows
      parameters:
      - name: userId
        in: path
        description: User ID
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A list of workflows owned by the user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
    patch:
      tags:
      - users
      description: Adds the logged-in user to any Dockstore workflows that they should
        have access to.
      operationId: addUserToDockstoreWorkflows
      parameters:
      - name: userId
        in: path
        description: User to update
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: "This is here to appease Swagger. It requires PATCH methods to\
          \ have a body, even if it is empty. Please leave it empty."
        content:
          '*/*':
            schema:
              type: string
      responses:
        "200":
          description: Successfully added user to Dockstore workflows that they should
            have access to
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
        "400":
          description: Bad request
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/user/{userId}/bannedStatus:
    put:
      tags:
      - users
      description: Update banned status of user. Removes all tokens for banned users.
      operationId: banUser
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              type: boolean
        required: true
      responses:
        "204":
          description: Successfully banned/unbanned user
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/user/changeUsername:
    post:
      tags:
      - users
      description: Change username if possible.
      operationId: changeUsername
      parameters:
      - name: username
        in: query
        schema:
          type: string
      responses:
        "200":
          description: Successfully changed username
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        "400":
          description: Bad request
        "403":
          description: Forbidden
      security:
      - BEARER: []
  /users/checkUser/{username}:
    get:
      tags:
      - users
      description: Check if user with some username exists.
      operationId: checkUserExists
      parameters:
      - name: username
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Boolean indicating if a user with the specified username exists
          content:
            application/json:
              schema:
                type: boolean
        "400":
          description: Bad request
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/{userId}/cloudInstances/{cloudInstanceId}:
    put:
      tags:
      - users
      description: Update a cloud instance belonging to the user
      operationId: putUserCloudInstance
      parameters:
      - name: userId
        in: path
        description: ID of user to update the cloud instance for
        required: true
        schema:
          type: integer
          format: int64
      - name: cloudInstanceId
        in: path
        description: ID of cloud instance to update/delete
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Cloud instance to replace for a user
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudInstance'
        required: true
      responses:
        "204":
          description: No content
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "404":
          description: Not found
      security:
      - BEARER: []
    delete:
      tags:
      - users
      description: Delete a cloud instance belonging to the user
      operationId: deleteUserCloudInstance
      parameters:
      - name: userId
        in: path
        description: ID of user to delete the cloud instance for
        required: true
        schema:
          type: integer
          format: int64
      - name: cloudInstanceId
        in: path
        description: ID of cloud instance to update/delete
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "204":
          description: No content
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "404":
          description: Not found
      security:
      - BEARER: []
  /users/emails:
    get:
      tags:
      - users
      description: Admin-only endpoint. Get the emails of all Dockstore users
      operationId: getAllUserEmails
      responses:
        "200":
          description: A list of Dockstore users' emails.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserInfo'
        "403":
          description: Forbidden
      security:
      - BEARER: []
  /users/user/extended:
    get:
      tags:
      - users
      description: Get additional information about the authenticated user.
      operationId: getExtendedUserData
      responses:
        "200":
          description: Additional information about the authenticated user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtendedUserData'
      security:
      - BEARER: []
  /users/starredNotebooks:
    get:
      tags:
      - users
      description: Get the authenticated user's starred notebooks.
      operationId: getStarredNotebooks
      responses:
        "200":
          description: A list of the authenticated user's starred notebooks
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /users/starredOrganizations:
    get:
      tags:
      - users
      description: Get the authenticated user's starred organizations.
      operationId: getStarredOrganizations
      responses:
        "200":
          description: A list of the authenticated user's starred organizations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Organization'
      security:
      - BEARER: []
  /users/starredServices:
    get:
      tags:
      - users
      description: Get the authenticated user's starred services.
      operationId: getStarredServices
      responses:
        "200":
          description: A list of the authenticated user's starred services
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /users/starredTools:
    get:
      tags:
      - users
      description: Get the authenticated user's starred tools.
      operationId: getStarredTools
      responses:
        "200":
          description: A list of the authenticated user's starred tools
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /users/starredWorkflows:
    get:
      tags:
      - users
      description: Get the authenticated user's starred workflows.
      operationId: getStarredWorkflows
      responses:
        "200":
          description: A list of the authenticated user's starred workflows
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /users/user:
    get:
      tags:
      - users
      description: Get the logged-in user.
      operationId: getUser
      responses:
        "200":
          description: The logged-in user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      security:
      - BEARER: []
    delete:
      tags:
      - users
      description: Delete user if possible.
      operationId: selfDestruct
      parameters:
      - name: userId
        in: query
        description: Optional user id if deleting another user. Only admins can delete
          another user.
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Boolean indicating if user was deleted successfully
          content:
            application/json:
              schema:
                type: boolean
        "400":
          description: Bad request
        "403":
          description: Forbidden
        "500":
          description: Internal server error
      security:
      - BEARER: []
  /users/{userId}/cloudInstances:
    get:
      tags:
      - users
      description: Get all cloud instances belonging to the user
      operationId: getUserCloudInstances
      parameters:
      - name: userId
        in: path
        description: ID of user to get cloud instances for
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CloudInstance'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
    post:
      tags:
      - users
      description: Create a new cloud instance belonging to the user
      operationId: postUserCloudInstance
      parameters:
      - name: userId
        in: path
        description: ID of user to create the cloud instance for
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Cloud instance to add to the user
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudInstance'
        required: true
      responses:
        "204":
          description: No content
        "403":
          description: Forbidden
        "401":
          description: Unauthorized
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/users/organizations:
    get:
      tags:
      - users
      description: "Get all of the Dockstore organizations for a user, sorted by most\
        \ recently updated."
      operationId: getUserDockstoreOrganizations
      parameters:
      - name: count
        in: query
        description: Maximum number of organizations to return
        schema:
          type: integer
          format: int32
      - name: filter
        in: query
        description: Filter paths with matching text
        schema:
          type: string
      responses:
        "200":
          description: A list of the Dockstore organizations for a user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrganizationUpdateTime'
      security:
      - BEARER: []
  /users/users/entries:
    get:
      tags:
      - users
      description: "Get all of the entries for a user, sorted by most recently updated."
      operationId: getUserEntries
      parameters:
      - name: count
        in: query
        description: Maximum number of entries to return
        schema:
          type: integer
          format: int32
      - name: filter
        in: query
        description: Filter paths with matching text
        schema:
          type: string
      - name: type
        in: query
        description: Type of entry
        schema:
          type: string
          enum:
          - TOOLS
          - WORKFLOWS
          - SERVICES
          - NOTEBOOKS
      responses:
        "200":
          description: A list of the entries for a user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EntryUpdateTime'
      security:
      - BEARER: []
  /users/github/events:
    get:
      tags:
      - users
      description: Get all of the GitHub Events for the logged in user.
      operationId: getUserGitHubEvents
      parameters:
      - name: offset
        in: query
        schema:
          type: integer
          format: int32
      - name: limit
        in: query
        schema:
          type: integer
          format: int32
          default: 100
      - name: filter
        in: query
        schema:
          type: string
          default: ""
      - name: sortCol
        in: query
        schema:
          type: string
          default: dbCreateDate
      - name: sortOrder
        in: query
        schema:
          type: string
          default: desc
      responses:
        "200":
          description: A list of GitHub Events for the logged in user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LambdaEvent'
      security:
      - BEARER: []
  /users/user/{userId}/limits:
    get:
      tags:
      - users
      description: Returns the specified user's limits. ADMIN or CURATOR only
      operationId: getUserLimits
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A user's limits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Limits'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
    put:
      tags:
      - users
      description: Update the specified user's limits. ADMIN or CURATOR only
      operationId: setUserLimits
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Limits'
      responses:
        "200":
          description: Successfully updated the user's limits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Limits'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/user/memberships:
    get:
      tags:
      - users
      description: Get the logged-in user's memberships.
      operationId: getUserMemberships
      responses:
        "200":
          description: A set of the logged-in user's memberships
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrganizationUser'
      security:
      - BEARER: []
  /users/registries/{gitRegistry}/organizations/{organization}:
    get:
      tags:
      - users
      description: Get all of the repositories for an organization for a given git
        registry accessible to the logged in user.
      operationId: getUserOrganizationRepositories
      parameters:
      - name: gitRegistry
        in: path
        description: Git registry
        required: true
        schema:
          type: string
          enum:
          - dockstore.org
          - github.com
          - bitbucket.org
          - gitlab.com
      - name: organization
        in: path
        description: Git organization
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A list of repositories for an organization for a given git
            registry accessible to the logged in user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Repository'
      security:
      - BEARER: []
  /users/registries/{gitRegistry}/organizations:
    get:
      tags:
      - users
      description: Get all of the organizations for a given git registry accessible
        to the logged in user.
      operationId: getUserOrganizations
      parameters:
      - name: gitRegistry
        in: path
        description: Git registry
        required: true
        schema:
          type: string
          enum:
          - dockstore.org
          - github.com
          - bitbucket.org
          - gitlab.com
      responses:
        "200":
          description: A list of organizations for a given git registry accessible
            to the logged in user
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  type: string
      security:
      - BEARER: []
  /users/registries:
    get:
      tags:
      - users
      description: Get all of the git registries accessible to the logged in user.
      operationId: getUserRegistries
      responses:
        "200":
          description: A list of the git registries accessible to the logged in user
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  enum:
                  - dockstore.org
                  - github.com
                  - bitbucket.org
                  - gitlab.com
      security:
      - BEARER: []
  /users/{userId}/tokens:
    get:
      tags:
      - users
      description: Get information about tokens with user id.
      operationId: getUserTokens
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A list of tokens belonging to user specified by userId
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Token_User'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/username/{username}:
    get:
      tags:
      - users
      description: Get a user by username.
      operationId: listUser
      parameters:
      - name: username
        in: path
        required: true
        schema:
          type: string
      - name: include
        in: query
        description: "Comma-delimited list of fields to include: userProfiles, ..."
        schema:
          type: string
      responses:
        "200":
          description: A user with the specified username
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        "400":
          description: Bad request
        "404":
          description: User not found
  /users/{userId}/containers/{organization}/refresh:
    get:
      tags:
      - users
      description: Refresh all tools owned by the authenticated user with specified
        organization.
      operationId: refreshToolsByOrganization
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: organization
        in: path
        required: true
        schema:
          type: string
      - name: dockerRegistry
        in: query
        schema:
          type: string
      responses:
        "200":
          description: A list of tools owned by the user with the specified organization
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DockstoreTool'
        "400":
          description: Bad request
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/{userId}/privileges:
    put:
      tags:
      - users
      description: "Updates the provided userID to admin or curator status, usable\
        \ by ADMINs only"
      operationId: setUserPrivileges
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivilegeRequest'
        required: true
      responses:
        "200":
          description: Successfully updated user to admin or curator status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/github/sync:
    post:
      tags:
      - users
      description: Syncs Dockstore account with GitHub App Installations.
      operationId: syncUserWithGitHub
      responses:
        "200":
          description: Successfully synced Dockstore account with GitHub App installations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
        "400":
          description: Bad request
      security:
      - BEARER: []
  /users/user/updateAcceptedDocuments:
    get:
      tags:
      - users
      description: Update the user's TOS and privacy policy to the latest versions.
      operationId: updateAcceptedDocuments
      responses:
        "200":
          description: User with updated TOS/Privacy Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
      security:
      - BEARER: []
  /users/user/updateUserMetadata:
    get:
      tags:
      - users
      description: Update metadata for logged in user.
      operationId: updateLoggedInUserMetadata
      parameters:
      - name: source
        in: query
        schema:
          type: string
          enum:
          - quay.io
          - github.com
          - dockstore
          - bitbucket.org
          - gitlab.com
          - zenodo.org
          - google.com
          - orcid.org
      responses:
        "200":
          description: Successfully updated metadata for logged in user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        "403":
          description: Forbidden
      security:
      - BEARER: []
  /users/updateUserMetadata:
    get:
      tags:
      - users
      description: Update metadata of all users.
      operationId: updateUserMetadata
      responses:
        "200":
          description: Successfully updated metadata of all users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
        "403":
          description: Forbidden
      security:
      - BEARER: []
  /users/updateUserWorkflows:
    post:
      tags:
      - users
      description: Check workflow ownership
      operationId: checkWorkflowOwnership
      responses:
        "204":
          description: Successfully updated workflow ownership for all users
        "403":
          description: Forbidden
      security:
      - BEARER: []
  /users/{userId}/appTools:
    get:
      tags:
      - users
      description: List all appTools owned by the authenticated user.
      operationId: userAppTools
      parameters:
      - name: userId
        in: path
        description: User ID
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A list of GitHub App tools owned by the user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/{userId}/containers:
    get:
      tags:
      - users
      description: List all tools owned by the authenticated user.
      operationId: userContainers
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A list of tools owned by the user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DockstoreTool'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/{userId}/notebooks:
    get:
      tags:
      - users
      description: List all notebooks owned by the authenticated user.
      operationId: userNotebooks
      parameters:
      - name: userId
        in: path
        description: User ID
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A list of notebooks owned by the user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/{userId}/containers/published:
    get:
      tags:
      - users
      description: List all published tools from a user.
      operationId: userPublishedContainers
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A list of published tools from a user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DockstoreTool'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/{userId}/workflows/published:
    get:
      tags:
      - users
      description: List all published workflows from a user.
      operationId: userPublishedWorkflows
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A list of published workflows from a user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/{userId}/services:
    get:
      tags:
      - users
      description: List all services owned by the authenticated user.
      operationId: userServices
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: A list of services owned by the user
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
        "403":
          description: Forbidden
        "404":
          description: User not found
      security:
      - BEARER: []
  /users/dockerRegistries/{dockerRegistry}/organizations:
    get:
      tags:
      - users
      description: Get all of the organizations/namespaces of the Docker registry
        accessible to the logged-in user.
      operationId: getDockerRegistriesOrganization
      parameters:
      - name: dockerRegistry
        in: path
        description: Name of Docker registry
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
      security:
      - BEARER: []
  /users/dockerRegistries/{dockerRegistry}/organizations/{organization}/repositories:
    get:
      tags:
      - users
      description: Get names of repositories associated with a specific namespace
        and Docker registry of the logged-in user.
      operationId: getDockerRegistryOrganizationRepositories
      parameters:
      - name: dockerRegistry
        in: path
        description: Name of Docker registry
        required: true
        schema:
          type: string
      - name: organization
        in: path
        description: Name of organization or namespace
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
      security:
      - BEARER: []
  /users/dockerRegistries:
    get:
      tags:
      - users
      description: Get all of the Docker registries accessible to the logged-in user.
      operationId: getUserDockerRegistries
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
      security:
      - BEARER: []
  /workflows/{workflowId}/testParameterFiles:
    get:
      tags:
      - workflows
      description: Get the corresponding test parameter files.
      operationId: getTestParameterFiles_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: version
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
    put:
      tags:
      - workflows
      description: Add test parameter files for a given version.
      operationId: addTestParameterFiles_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: testParameterPaths
        in: query
        schema:
          type: array
          items:
            type: string
      - name: version
        in: query
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
    delete:
      tags:
      - workflows
      description: Delete test parameter files for a given version.
      operationId: deleteTestParameterFiles_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: testParameterPaths
        in: query
        schema:
          type: array
          items:
            type: string
      - name: version
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /workflows/registries/{gitRegistry}/organizations/{organization}/repositories/{repositoryName}:
    post:
      tags:
      - workflows
      description: Adds a workflow for a registry and repository path with defaults
        set.
      operationId: addWorkflow
      parameters:
      - name: gitRegistry
        in: path
        description: Git registry
        required: true
        schema:
          type: string
          enum:
          - dockstore.org
          - github.com
          - bitbucket.org
          - gitlab.com
      - name: organization
        in: path
        description: Git repository organization
        required: true
        schema:
          type: string
      - name: repositoryName
        in: path
        description: Git repository name
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BioWorkflow'
      security:
      - BEARER: []
    delete:
      tags:
      - workflows
      description: Delete a stubbed workflow for a registry and repository path.
      operationId: deleteWorkflow
      parameters:
      - name: gitRegistry
        in: path
        description: Git registry
        required: true
        schema:
          type: string
          enum:
          - github.com
          - bitbucket.org
          - gitlab.com
      - name: organization
        in: path
        description: Git repository organization
        required: true
        schema:
          type: string
      - name: repositoryName
        in: path
        description: Git repository name
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /workflows/path/workflow/{repository}/permissions:
    get:
      tags:
      - workflows
      description: Get all permissions for a workflow.
      operationId: getWorkflowPermissions
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      - name: subclass
        in: query
        description: Which Workflow subclass to retrieve permissions for.
        required: true
        schema:
          $ref: '#/components/schemas/WorkflowSubClass'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Permission'
      security:
      - BEARER: []
    delete:
      tags:
      - workflows
      description: Remove the specified user role for a workflow.
      operationId: removeWorkflowRole
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      - name: email
        in: query
        schema:
          type: string
      - name: role
        in: query
        schema:
          type: string
          enum:
          - OWNER
          - WRITER
          - READER
      - name: subclass
        in: query
        description: Which Workflow subclass to remove a role from.
        required: true
        schema:
          $ref: '#/components/schemas/WorkflowSubClass'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Permission'
      security:
      - BEARER: []
    patch:
      tags:
      - workflows
      description: Set the specified permission for a user on a workflow.
      operationId: addWorkflowPermission
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      - name: subclass
        in: query
        description: Which Workflow subclass to add a permission to.
        required: true
        schema:
          $ref: '#/components/schemas/WorkflowSubClass'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Permission'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Permission'
      security:
      - BEARER: []
  /workflows/published:
    get:
      tags:
      - workflows
      description: List all published workflows.
      operationId: allPublishedWorkflows
      parameters:
      - name: offset
        in: query
        schema:
          type: integer
          format: int32
          default: 0
      - name: limit
        in: query
        schema:
          type: integer
          format: int32
          default: 100
      - name: filter
        in: query
        schema:
          type: string
          default: ""
      - name: sortCol
        in: query
        schema:
          type: string
          default: stars
      - name: sortOrder
        in: query
        schema:
          type: string
          default: desc
      - name: services
        in: query
        schema:
          type: boolean
          default: false
      - name: subclass
        in: query
        schema:
          $ref: '#/components/schemas/WorkflowSubClass'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
  /workflows/path/{repository}/published:
    get:
      tags:
      - workflows
      summary: Get a list of published workflows by path.
      description: Do not include workflow name.
      operationId: getAllPublishedWorkflowByPath
      parameters:
      - name: repository
        in: path
        description: repository path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/path/{repository}:
    get:
      tags:
      - workflows
      summary: Get a list of workflows by path.
      description: Do not include workflow name.
      operationId: getAllWorkflowByPath
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/path/entry/{repository}:
    get:
      tags:
      - workflows
      summary: Get an entry by path.
      description: Requires full path (including entry name if applicable).
      operationId: getEntryByPath
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /workflows/path/entry/{repository}/published:
    get:
      tags:
      - workflows
      summary: Get a published entry by path.
      description: Requires full path (including entry name if applicable).
      operationId: getPublishedEntryByPath
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
  /workflows/published/{workflowId}:
    get:
      tags:
      - workflows
      description: Get a published workflow.
      operationId: getPublishedWorkflow
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: include
        in: query
        description: "Comma-delimited list of fields to include: versions, orcidputcodes,\
          \ validations, aliases, images, authors, metrics"
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
  /workflows/path/workflow/{repository}/published:
    get:
      tags:
      - workflows
      summary: Get a published workflow by path
      description: Does not require workflow name.
      operationId: getPublishedWorkflowByPath
      parameters:
      - name: repository
        in: path
        description: Repository path
        required: true
        schema:
          type: string
      - name: include
        in: query
        description: "Comma-delimited list of fields to include: versions, orcidputcodes,\
          \ validations, aliases, images, authors, metrics"
        schema:
          type: string
      - name: subclass
        in: query
        description: Which Workflow subclass to retrieve.
        required: true
        schema:
          $ref: '#/components/schemas/WorkflowSubClass'
      - name: versionName
        in: query
        description: Version name
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
  /workflows/organization/{organization}/published:
    get:
      tags:
      - workflows
      description: List all published workflows of an organization.
      operationId: getPublishedWorkflowsByOrganization
      parameters:
      - name: organization
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
  /workflows/{workflowId}/starredUsers:
    get:
      tags:
      - workflows
      description: Returns list of users who starred the given workflow.
      operationId: getStarredUsers_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/User'
  /workflows/{workflowId}/tools/{workflowVersionId}:
    get:
      tags:
      - workflows
      description: Get the Tools for a given workflow version.
      operationId: getTableToolContent
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: string
      security:
      - BEARER: []
  /workflows/{workflowId}/users:
    get:
      tags:
      - workflows
      description: Get users of a workflow.
      operationId: getUsers_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
      security:
      - BEARER: []
  /workflows/{workflowId}:
    get:
      tags:
      - workflows
      description: Retrieve a workflow
      operationId: getWorkflow
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: include
        in: query
        description: "Comma-delimited list of fields to include: versions, orcidputcodes,\
          \ validations, aliases, images, authors, metrics"
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
    put:
      tags:
      - workflows
      description: Update the workflow with the given workflow.
      operationId: updateWorkflow
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Workflow'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/path/workflow/{repository}/actions:
    get:
      tags:
      - workflows
      description: Gets all actions a user can perform on a workflow.
      operationId: getWorkflowActions
      parameters:
      - name: repository
        in: path
        required: true
        schema:
          type: string
      - name: subclass
        in: query
        description: Which Workflow subclass to retrieve actions for.
        required: true
        schema:
          $ref: '#/components/schemas/WorkflowSubClass'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  enum:
                  - write
                  - read
                  - delete
                  - share
      security:
      - BEARER: []
  /workflows/path/workflow/{repository}:
    get:
      tags:
      - workflows
      summary: Get a workflow by path.
      description: Requires full path (including workflow name if applicable).
      operationId: getWorkflowByPath
      parameters:
      - name: repository
        in: path
        description: Repository path
        required: true
        schema:
          type: string
      - name: include
        in: query
        description: "Comma-delimited list of fields to include: versions, orcidputcodes,\
          \ validations, aliases, images, authors, metrics"
        schema:
          type: string
      - name: subclass
        in: query
        description: Which Workflow subclass to retrieve.
        required: true
        schema:
          $ref: '#/components/schemas/WorkflowSubClass'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{workflowId}/dag/{workflowVersionId}:
    get:
      tags:
      - workflows
      description: Get the DAG for a given workflow version.
      operationId: getWorkflowDag
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: string
      security:
      - BEARER: []
  /workflows/{workflowId}/workflowVersions/{workflowVersionId}:
    get:
      tags:
      - workflows
      description: Retrieve a workflow version by ID
      operationId: getWorkflowVersionById
      parameters:
      - name: workflowId
        in: path
        description: id of the workflow
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        description: id of the workflow version
        required: true
        schema:
          type: integer
          format: int64
      - name: include
        in: query
        description: "Comma-delimited list of fields to include: validations, aliases,\
          \ images, authors, metrics"
        schema:
          type: string
      responses:
        "200":
          description: Get a workflow version by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowVersion'
        "400":
          description: Bad Request
      security:
      - BEARER: []
  /workflows/{workflowId}/workflowVersions/{workflowVersionId}/description:
    get:
      tags:
      - workflows
      description: Retrieve a workflow version's description
      operationId: getWorkflowVersionDescription
      parameters:
      - name: workflowId
        in: path
        description: id of the workflow
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        description: id of the workflow version
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Retrieve a workflow version's description
          content:
            text/plain:
              schema:
                type: string
        "400":
          description: Bad Request
      security:
      - BEARER: []
  /workflows/{workflowId}/workflowVersions/{workflowVersionId}/orcidAuthors:
    get:
      tags:
      - workflows
      description: Retrieve ORCID author information for a workflow version
      operationId: getWorkflowVersionOrcidAuthors
      parameters:
      - name: workflowId
        in: path
        description: id of the workflow
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        description: id of the workflow version
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Retrieve ORCID author information for a workflow version
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrcidAuthorInformation'
        "400":
          description: Bad Request
      security:
      - BEARER: []
  /workflows/{workflowId}/workflowVersions:
    get:
      tags:
      - workflows
      description: Return first 200 versions in an entry
      operationId: getWorkflowVersions
      parameters:
      - name: workflowId
        in: path
        description: id of the worflow
        required: true
        schema:
          type: integer
          format: int64
      responses:
        "200":
          description: Get list workflow versions in a workflow
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkflowVersion'
        "400":
          description: Bad Request
      security:
      - BEARER: []
    put:
      tags:
      - workflows
      description: Update the workflow versions linked to a workflow.
      operationId: updateWorkflowVersion
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/WorkflowVersion'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/WorkflowVersion'
      security:
      - BEARER: []
  /workflows/{workflowId}/workflowVersions/{workflowVersionId}/sourcefiles:
    get:
      tags:
      - workflows
      description: Retrieve sourcefiles for an entry's version
      operationId: getWorkflowVersionsSourcefiles
      parameters:
      - name: workflowId
        in: path
        description: Workflow to retrieve the version from.
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        description: Workflow version to retrieve the version from.
        required: true
        schema:
          type: integer
          format: int64
      - name: fileTypes
        in: query
        description: List of file types to filter sourcefiles by
        schema:
          type: array
          items:
            type: string
            enum:
            - DOCKSTORE_SMK
            - SMK_TEST_PARAMS
            - DOCKSTORE_CWL
            - CWL_TEST_JSON
            - DOCKSTORE_WDL
            - WDL_TEST_JSON
            - DOCKERFILE
            - NEXTFLOW
            - NEXTFLOW_CONFIG
            - NEXTFLOW_TEST_PARAMS
            - DOCKSTORE_YML
            - DOCKSTORE_SERVICE_YML
            - DOCKSTORE_SERVICE_TEST_JSON
            - DOCKSTORE_SERVICE_OTHER
            - DOCKSTORE_GXFORMAT2
            - GXFORMAT2_TEST_FILE
            - DOCKSTORE_SWL
            - SWL_TEST_JSON
            - DOCKSTORE_JUPYTER
            - DOCKSTORE_NOTEBOOK_REES
            - DOCKSTORE_NOTEBOOK_DEVCONTAINER
            - DOCKSTORE_NOTEBOOK_TEST_FILE
            - DOCKSTORE_NOTEBOOK_OTHER
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /workflows/{workflowId}/zip/{workflowVersionId}:
    get:
      tags:
      - workflows
      description: Download a ZIP file of a workflow and all associated files.
      operationId: getWorkflowZip
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/zip: {}
      security:
      - BEARER: []
  /workflows/github:
    delete:
      tags:
      - workflows
      description: Handles the deletion of a branch on GitHub. Will delete all workflow
        versions that match in all workflows that share the same repository.
      operationId: handleGitHubBranchDeletion
      parameters:
      - name: repository
        in: query
        description: Repository path (ex. dockstore/dockstore-ui2)
        required: true
        schema:
          type: string
      - name: username
        in: query
        description: Username of user on GitHub who triggered action
        required: true
        schema:
          type: string
      - name: gitReference
        in: query
        description: Full git reference for a GitHub branch/tag. Ex. refs/heads/master
          or refs/tags/v1.0
        required: true
        schema:
          type: string
      - name: installationId
        in: query
        description: GitHub App installation ID
        schema:
          type: integer
          format: int64
      - name: X-GitHub-Delivery
        in: header
        description: A GUID to identify the GitHub webhook delivery
        required: true
        schema:
          type: string
      responses:
        "418":
          description: This code tells AWS Lambda not to retry.
      security:
      - BEARER: []
  /workflows/github/install:
    post:
      tags:
      - workflows
      description: Handle the installation of our GitHub app onto a repository or
        organization.
      operationId: handleGitHubInstallation
      parameters:
      - name: X-GitHub-Delivery
        in: header
        description: A GUID to identify the GitHub webhook delivery
        required: true
        schema:
          type: string
      requestBody:
        description: GitHub App repository installation event payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallationRepositoriesPayload'
        required: true
      responses:
        "418":
          description: This code tells AWS Lambda not to retry.
      security:
      - BEARER: []
  /workflows/github/release:
    post:
      tags:
      - workflows
      description: Handle a release of a repository on GitHub. Will create a workflow/service
        and version when necessary.
      operationId: handleGitHubRelease
      parameters:
      - name: X-GitHub-Delivery
        in: header
        description: A GUID to identify the GitHub webhook delivery
        required: true
        schema:
          type: string
      requestBody:
        description: GitHub push event payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PushPayload'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /workflows/manualRegister:
    post:
      tags:
      - workflows
      description: Manually register a workflow.
      operationId: manualRegister
      parameters:
      - name: workflowRegistry
        in: query
        schema:
          type: string
      - name: workflowPath
        in: query
        schema:
          type: string
      - name: defaultWorkflowPath
        in: query
        schema:
          type: string
      - name: workflowName
        in: query
        schema:
          type: string
      - name: descriptorType
        in: query
        schema:
          type: string
      - name: defaultTestParameterFilePath
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{workflowId}/workflowVersions/{workflowVersionId}/parsedInformation:
    post:
      tags:
      - workflows
      description: Language parser calls this endpoint to update parsed information
        for this version
      operationId: postParsedInformation
      parameters:
      - name: workflowId
        in: path
        description: Workflow to retrieve the version from.
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        description: Workflow version to retrieve the version from.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        description: Response from language parsing lambda
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/LanguageParsingResponse'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /workflows/{workflowId}/primaryDescriptor:
    get:
      tags:
      - workflows
      description: Get the primary descriptor file.
      operationId: primaryDescriptor_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tag
        in: query
        schema:
          type: string
      - name: language
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /workflows/{workflowId}/publish:
    post:
      tags:
      - workflows
      description: Publish or unpublish a workflow.
      operationId: publish_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishRequest'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{workflowId}/refresh:
    get:
      tags:
      - workflows
      description: Refresh one particular workflow.
      operationId: refresh_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: hardRefresh
        in: query
        schema:
          type: boolean
          default: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{workflowId}/refresh/{version}:
    get:
      tags:
      - workflows
      description: Refresh one particular workflow version.
      operationId: refreshVersion
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: version
        in: path
        required: true
        schema:
          type: string
      - name: hardRefresh
        in: query
        schema:
          type: boolean
          default: true
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{entryId}/registerCheckerWorkflow/{descriptorType}:
    post:
      tags:
      - workflows
      description: Register a checker workflow and associates it with the given tool/workflow.
      operationId: registerCheckerWorkflow
      parameters:
      - name: checkerWorkflowPath
        in: query
        schema:
          type: string
      - name: testParameterPath
        in: query
        schema:
          type: string
      - name: entryId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: descriptorType
        in: path
        required: true
        schema:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entry'
      security:
      - BEARER: []
  /workflows/{workflowId}/requestDOI/{workflowVersionId}:
    put:
      tags:
      - workflows
      description: Request a DOI for this version of a workflow.
      operationId: requestDOIForWorkflowVersion
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: workflowVersionId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          '*/*':
            schema:
              type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                uniqueItems: true
                type: array
                items:
                  $ref: '#/components/schemas/WorkflowVersion'
      security:
      - BEARER: []
  /workflows/{workflowId}/restub:
    get:
      tags:
      - workflows
      summary: Restub a workflow
      description: Restub a workflow
      operationId: restub
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{workflowId}/descriptor/{relative-path}:
    get:
      tags:
      - workflows
      description: Get the corresponding descriptor file from source control.
      operationId: secondaryDescriptorPath_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tag
        in: query
        schema:
          type: string
      - name: relative-path
        in: path
        required: true
        schema:
          type: string
      - name: language
        in: query
        schema:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /workflows/{workflowId}/secondaryDescriptors:
    get:
      tags:
      - workflows
      description: Get the corresponding descriptor documents from source control.
      operationId: secondaryDescriptors_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: tag
        in: query
        schema:
          type: string
      - name: language
        in: query
        schema:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SourceFile'
      security:
      - BEARER: []
  /workflows/shared:
    get:
      tags:
      - workflows
      description: Retrieve all workflows shared with user.
      operationId: sharedWorkflows
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SharedWorkflows'
      security:
      - BEARER: []
  /workflows/{workflowId}/star:
    put:
      tags:
      - workflows
      description: Star a workflow.
      operationId: starEntry_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StarRequest'
      responses:
        default:
          description: default response
          content:
            application/json: {}
      security:
      - BEARER: []
  /workflows/versions:
    get:
      tags:
      - workflows
      description: List the versions for a published workflow.
      operationId: tags_1
      parameters:
      - name: workflowId
        in: query
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WorkflowVersion'
      security:
      - BEARER: []
  /workflows/{workflowId}/defaultVersion:
    put:
      tags:
      - workflows
      description: Update the default version of a workflow.
      operationId: updateDefaultVersion_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          '*/*':
            schema:
              type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{workflowId}/labels:
    put:
      tags:
      - workflows
      description: Update the labels linked to a workflow.
      operationId: updateLabels_1
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: labels
        in: query
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{workflowId}/descriptorType:
    post:
      tags:
      - workflows
      summary: "Changes the descriptor type of an unpublished, invalid workflow."
      description: "Use with caution. This deletes all the workflowVersions, only\
        \ use if there's nothing worth keeping in the workflow."
      operationId: updateDescriptorType
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      - name: descriptorType
        in: query
        schema:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /workflows/{workflowId}/resetVersionPaths:
    put:
      tags:
      - workflows
      description: Reset the workflow paths.
      operationId: updateWorkflowPath
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Workflow'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workflow'
      security:
      - BEARER: []
  /api/ga4gh/v2/extended/{id}/versions/{version_id}/aggregatedMetrics:
    get:
      tags:
      - extendedGA4GH
      summary: Get aggregated execution metrics for a tool from all platforms
      description: This endpoint retrieves aggregated metrics for a tool from all
        platforms
      operationId: aggregatedMetricsGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`"
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        description: "An identifier of the tool version for this particular tool registry,\
          \ for example `v1`"
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/Metrics'
      security:
      - BEARER: []
    put:
      tags:
      - extendedGA4GH
      summary: Add aggregated execution metrics for a workflow that was executed on
        a platform.
      description: This endpoint adds aggregated metrics for a workflow that was executed
        on a platform
      operationId: aggregatedMetricsPut
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`"
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        description: "An identifier of the tool version for this particular tool registry,\
          \ for example `v1`"
        required: true
        schema:
          type: string
      - name: platform
        in: query
        description: Platform that the tool was executed on
        required: true
        schema:
          type: string
          enum:
          - GALAXY
          - TERRA
          - DNA_STACK
          - DNA_NEXUS
          - CGC
          - NHLBI_BIODATA_CATALYST
          - ANVIL
          - CAVATICA
          - NEXTFLOW_TOWER
          - ELWAZI
          - AGC
          - OTHER
          - ALL
      requestBody:
        description: Aggregated metrics to add to the version
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Metrics'
        required: true
      responses:
        "200":
          description: Aggregated metrics added successfully.
          content:
            application/json:
              schema:
                type: string
        "401":
          description: Credentials not provided or incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: The tool cannot be found to add aggregated metrics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /api/ga4gh/v2/extended/organizations:
    get:
      tags:
      - extendedGA4GH
      summary: List all organizations
      description: This endpoint returns list of all organizations.
      operationId: entriesOrgsGet
      responses:
        "200":
          description: An array of organizations' names.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
  /api/ga4gh/v2/extended/containers/{organization}:
    get:
      tags:
      - extendedGA4GH
      summary: List entries of an organization
      description: This endpoint returns entries of an organization.
      operationId: entriesOrgGet
      parameters:
      - name: organization
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: An array of Tools of the input organization.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolV1'
  /api/ga4gh/v2/extended/{id}/versions/{version_id}/execution:
    get:
      tags:
      - extendedGA4GH
      summary: Get an execution for a tool by execution ID
      description: This endpoint retrieves an execution for a tool by execution ID
      operationId: executionGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`"
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        description: "An identifier of the tool version for this particular tool registry,\
          \ for example `v1`"
        required: true
        schema:
          type: string
      - name: platform
        in: query
        description: Platform that the tool was executed on
        required: true
        schema:
          type: string
          enum:
          - GALAXY
          - TERRA
          - DNA_STACK
          - DNA_NEXUS
          - CGC
          - NHLBI_BIODATA_CATALYST
          - ANVIL
          - CAVATICA
          - NEXTFLOW_TOWER
          - ELWAZI
          - AGC
          - OTHER
          - ALL
      - name: executionId
        in: query
        description: The execution ID of the execution to retrieve
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Execution retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionsRequestBody'
        "401":
          description: Credentials not provided or incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: The execution cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /api/ga4gh/v2/extended/{id}/versions/{version_id}/executions:
    put:
      tags:
      - extendedGA4GH
      summary: "Update workflow executions that were executed on a platform. Does\
        \ not update aggregated metrics, which is deprecated."
      description: "This endpoint updates workflow executions that were executed on\
        \ a platform. Does not update aggregated metrics, which is deprecated."
      operationId: ExecutionMetricsUpdate
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`"
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        description: "An identifier of the tool version for this particular tool registry,\
          \ for example `v1`"
        required: true
        schema:
          type: string
      - name: platform
        in: query
        description: Platform that the tool was executed on
        required: true
        schema:
          type: string
          enum:
          - GALAXY
          - TERRA
          - DNA_STACK
          - DNA_NEXUS
          - CGC
          - NHLBI_BIODATA_CATALYST
          - ANVIL
          - CAVATICA
          - NEXTFLOW_TOWER
          - ELWAZI
          - AGC
          - OTHER
          - ALL
      - name: description
        in: query
        description: Optional description about the execution metrics that are being
          updated
        schema:
          type: string
      requestBody:
        description: The updated executions
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecutionsRequestBody'
        required: true
      responses:
        "207":
          description: Executions to update processed. Please view the individual
            responses.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExecutionsResponseBody'
        "401":
          description: Credentials not provided or incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: The tool cannot be found to update the executions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
    post:
      tags:
      - extendedGA4GH
      summary: Submit individual execution metrics for a tool that was executed on
        a platform. Submitting aggregated execution metrics is deprecated.
      description: This endpoint submits individual execution metrics for a tool that
        was executed on a platform. Submitting aggregated execution metrics is deprecated.
      operationId: executionMetricsPost
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`"
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        description: "An identifier of the tool version for this particular tool registry,\
          \ for example `v1`"
        required: true
        schema:
          type: string
      - name: platform
        in: query
        description: Platform that the tool was executed on
        required: true
        schema:
          type: string
          enum:
          - GALAXY
          - TERRA
          - DNA_STACK
          - DNA_NEXUS
          - CGC
          - NHLBI_BIODATA_CATALYST
          - ANVIL
          - CAVATICA
          - NEXTFLOW_TOWER
          - ELWAZI
          - AGC
          - OTHER
          - ALL
      - name: description
        in: query
        description: Optional description about the execution metrics
        schema:
          type: string
      requestBody:
        description: Individual execution metrics to submit. Submitting aggregated
          execution metrics is deprecated.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecutionsRequestBody'
        required: true
      responses:
        "204":
          description: Execution metrics submitted successfully.
        "401":
          description: Credentials not provided or incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: The tool cannot be found to submit execution metrics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /api/ga4gh/v2/extended/{id}/versions/{version_id}/{type}/tests/{relative_path}:
    post:
      tags:
      - extendedGA4GH
      summary: Annotate test JSON with information on whether it ran successfully
        on particular platforms plus metadata
      description: Test JSON can be annotated with whether they ran correctly keyed
        by platform and associated with some metadata.
      operationId: verifyTestParameterFilePost
      parameters:
      - name: type
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      - name: relative_path
        in: path
        required: true
        schema:
          pattern: .+
          type: string
      - name: platform
        in: query
        schema:
          type: string
      - name: platform_version
        in: query
        schema:
          type: string
      - name: verified
        in: query
        schema:
          type: boolean
      - name: metadata
        in: query
        schema:
          type: string
      responses:
        "200":
          description: The tool test JSON response.
          content:
            application/json:
              schema:
                type: string
        "401":
          description: Credentials not provided or incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: The tool test cannot be found to annotate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /api/ga4gh/v2/extended/tools/index:
    post:
      tags:
      - extendedGA4GH
      summary: Update the workflows and tools indices
      description: This endpoint updates the indices for all published tools and workflows.
      operationId: Update the workflows and tools indices
      responses:
        "200":
          description: Workflows and tools indices populated with entries.
          content:
            application/json:
              schema:
                type: integer
                format: int32
            text/plain:
              schema:
                type: integer
                format: int32
      security:
      - BEARER: []
  /api/ga4gh/v2/extended/tools/entry/_search:
    post:
      tags:
      - extendedGA4GH
      summary: Search the tools and workflows indices.
      description: This endpoint searches the indices for all published tools and
        workflows. Used by utilities that expect to talk to an elastic search endpoint.
      operationId: toolsIndexSearch
      requestBody:
        content:
          application/json:
            schema:
              type: string
      responses:
        "200":
          description: An elastic search result.
          content:
            application/json:
              schema:
                type: string
  /api/ga4gh/v2/extended/tools/{organization}:
    get:
      tags:
      - extendedGA4GH
      summary: List tools of an organization
      description: This endpoint returns tools of an organization.
      operationId: toolsOrgGet
      parameters:
      - name: organization
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: An array of Tools of the input organization.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolV1'
  /api/ga4gh/v2/extended/workflows/{organization}:
    get:
      tags:
      - extendedGA4GH
      summary: List workflows of an organization
      description: This endpoint returns workflows of an organization.
      operationId: workflowsOrgGet
      parameters:
      - name: organization
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: An array of Tools of the input organization.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolV1'
  /ga4gh/trs/v2/service-info:
    get:
      tags:
      - GA4GHV20
      summary: Show information about this service. It is assumed that removing this
        endpoint from a URL will result in a valid URL to query against
      operationId: getServiceInfo
      responses:
        "200":
          description: A successful operation to request the service information about
            this running service.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRSService'
  /ga4gh/trs/v2/toolClasses:
    get:
      tags:
      - GA4GHV20
      summary: List all tool types
      description: 'This endpoint returns all tool-classes available. '
      operationId: toolClassesGet
      responses:
        "200":
          description: A list of potential tool classes.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolClass'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools:
    get:
      tags:
      - GA4GHV20
      summary: List all tools
      description: 'This endpoint returns all tools available or a filtered subset
        using metadata query parameters. '
      operationId: toolsGet
      parameters:
      - name: id
        in: query
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        schema:
          type: string
      - name: alias
        in: query
        description: Support for this parameter is optional for tool registries that
          support aliases. If provided will only return entries with the given alias.
        schema:
          type: string
      - name: toolClass
        in: query
        description: Filter tools by the name of the subclass (#/definitions/ToolClass)
        schema:
          type: string
          enum:
          - CommandLineTool
          - Workflow
      - name: descriptorType
        in: query
        description: Filter tools by the name of the descriptor type
        schema:
          type: string
          enum:
          - CWL
          - WDL
          - NFL
          - GALAXY
          - SMK
          - SERVICE
          - JUPYTER
      - name: registry
        in: query
        description: The image registry that contains the image.
        schema:
          type: string
      - name: organization
        in: query
        description: The organization in the registry that published the image.
        schema:
          type: string
      - name: name
        in: query
        description: The name of the image.
        schema:
          type: string
      - name: toolname
        in: query
        description: The name of the tool.
        schema:
          type: string
      - name: description
        in: query
        description: The description of the tool.
        schema:
          type: string
      - name: author
        in: query
        description: "The author of the tool (TODO a thought occurs, are we assuming\
          \ that the author of the CWL and the image are the same?)."
        schema:
          type: string
      - name: checker
        in: query
        description: Return only checker workflows.
        schema:
          type: boolean
      - name: offset
        in: query
        description: "Start index of paging. Pagination results can be based on numbers\
          \ or other values chosen by the registry implementor (for example, SHA values).\
          \ If this exceeds the current result set return an empty set.  If not specified\
          \ in the request, this will start at the beginning of the results."
        schema:
          type: string
      - name: limit
        in: query
        description: Amount of records to return in a given page.
        schema:
          type: integer
          format: int32
          default: 1000
      responses:
        "200":
          description: An array of Tools that match the filter.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tool'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools/{id}:
    get:
      tags:
      - GA4GHV20
      summary: "List one specific tool, acts as an anchor for self references"
      description: This endpoint returns one specific tool (which has ToolVersions
        nested inside it).
      operationId: toolsIdGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A tool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tool'
            text/plain:
              schema:
                $ref: '#/components/schemas/Tool'
        "404":
          description: The tool can not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
            text/plain:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools/{id}/versions:
    get:
      tags:
      - GA4GHV20
      summary: List versions of a tool
      description: Returns all versions of the specified tool.
      operationId: toolsIdVersionsGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        required: true
        schema:
          type: string
      responses:
        "200":
          description: An array of tool versions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolVersion'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools/{id}/versions/{version_id}/containerfile:
    get:
      tags:
      - GA4GHV20
      summary: Get the container specification(s) for the specified image.
      description: "Returns the container specifications(s) for the specified image.\
        \ For example, a CWL CommandlineTool can be associated with one specification\
        \ for a container, a CWL Workflow can be associated with multiple specifications\
        \ for containers."
      operationId: toolsIdVersionsVersionIdContainerfileGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        description: "An identifier of the tool version, scoped to this registry,\
          \ for example `v1`. We recommend that versions use semantic versioning https://semver.org/spec/v2.0.0.html\
          \  (For example, `1.0.0` instead of `develop`)"
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool payload.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileWrapper'
        "404":
          description: There are no container specifications for this tool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools/{id}/versions/{version_id}:
    get:
      tags:
      - GA4GHV20
      summary: "List one specific tool version, acts as an anchor for self references"
      description: This endpoint returns one specific tool version.
      operationId: toolsIdVersionsVersionIdGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        description: "An identifier of the tool version, scoped to this registry,\
          \ for example `v1`. We recommend that versions use semantic versioning https://semver.org/spec/v2.0.0.html\
          \  (For example, `1.0.0` instead of `develop`)"
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A tool version.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolVersion'
        "404":
          description: The tool can not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools/{id}/versions/{version_id}/{type}/descriptor:
    get:
      tags:
      - GA4GHV20
      summary: Get the tool descriptor for the specified tool
      description: "Returns the descriptor for the specified tool (examples include\
        \ CWL, WDL, Nextflow, Galaxy, or Snakemake documents)."
      operationId: toolsIdVersionsVersionIdTypeDescriptorGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        required: true
        schema:
          type: string
      - name: type
        in: path
        description: The output type of the descriptor. Plain types return the bare
          descriptor while the "non-plain" types return a descriptor wrapped with
          metadata.
        required: true
        schema:
          type: string
          enum:
          - CWL
          - WDL
          - NFL
          - GALAXY
          - SMK
          - JUPYTER
          - PLAIN_CWL
          - PLAIN_WDL
          - PLAIN_NFL
          - PLAIN_GALAXY
          - PLAIN_SMK
          - PLAIN_JUPYTER
      - name: version_id
        in: path
        description: "An identifier of the tool version, scoped to this registry,\
          \ for example `v1`. We recommend that versions use semantic versioning https://semver.org/spec/v2.0.0.html\
          \  (For example, `1.0.0` instead of `develop`)"
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool descriptor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileWrapper'
            text/plain:
              schema:
                $ref: '#/components/schemas/FileWrapper'
        "404":
          description: The tool descriptor can not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
            text/plain:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools/{id}/versions/{version_id}/{type}/descriptor/{relative_path}:
    get:
      tags:
      - GA4GHV20
      summary: Get additional tool descriptor files relative to the main file
      description: Descriptors can often include imports that refer to additional
        descriptors. This returns additional descriptors for the specified tool in
        the same or other directories that can be reached as a relative path. This
        endpoint can be useful for workflow engine implementations like cwltool to
        programmatically download all the descriptors for a tool and run it. This
        can optionally include other files described with FileWrappers such as test
        parameters and containerfiles.
      operationId: toolsIdVersionsVersionIdTypeDescriptorRelativePathGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        required: true
        schema:
          type: string
      - name: type
        in: path
        description: The output type of the descriptor. Plain types return the bare
          descriptor while the "non-plain" types return a descriptor wrapped with
          metadata.
        required: true
        schema:
          type: string
          enum:
          - CWL
          - WDL
          - NFL
          - GALAXY
          - SMK
          - JUPYTER
          - PLAIN_CWL
          - PLAIN_WDL
          - PLAIN_NFL
          - PLAIN_GALAXY
          - PLAIN_SMK
          - PLAIN_JUPYTER
      - name: version_id
        in: path
        description: "An identifier of the tool version, scoped to this registry,\
          \ for example `v1`. We recommend that versions use semantic versioning https://semver.org/spec/v2.0.0.html\
          \  (For example, `1.0.0` instead of `develop`)"
        required: true
        schema:
          type: string
      - name: relative_path
        in: path
        description: "A relative path to the additional file (same directory or subdirectories),\
          \ for example 'foo.cwl' would return a 'foo.cwl' from the same directory\
          \ as the main descriptor. 'nestedDirectory/foo.cwl' would return the file\
          \  from a nested subdirectory.  Unencoded paths such 'sampleDirectory/foo.cwl'\
          \ should also be allowed."
        required: true
        schema:
          pattern: .+
          type: string
      responses:
        "200":
          description: The tool descriptor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileWrapper'
            text/plain:
              schema:
                $ref: '#/components/schemas/FileWrapper'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
            text/plain:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools/{id}/versions/{version_id}/{type}/files:
    get:
      tags:
      - GA4GHV20
      summary: Get a list of objects that contain the relative path and file type
      description: "Get a list of objects that contain the relative path and file\
        \ type. The descriptors are intended for use with the /tools/{id}/versions/{version_id}/{type}/descriptor/{relative_path\
        \ : .+} endpoint. Returns a zip file of all files when format=zip is specified."
      operationId: toolsIdVersionsVersionIdTypeFilesGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        required: true
        schema:
          type: string
      - name: type
        in: path
        description: The output type of the descriptor.
        required: true
        schema:
          type: string
          enum:
          - CWL
          - WDL
          - NFL
          - GALAXY
          - SMK
          - SERVICE
          - JUPYTER
      - name: version_id
        in: path
        description: "An identifier of the tool version, scoped to this registry,\
          \ for example `v1`. We recommend that versions use semantic versioning https://semver.org/spec/v2.0.0.html\
          \  (For example, `1.0.0` instead of `develop`)"
        required: true
        schema:
          type: string
      - name: format
        in: query
        description: Returns a zip file of all files when format=zip is specified.
        schema:
          type: string
          enum:
          - zip
      responses:
        "200":
          description: The array of File JSON responses.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolFile'
            application/zip:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolFile'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
            application/zip:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /ga4gh/trs/v2/tools/{id}/versions/{version_id}/{type}/tests:
    get:
      tags:
      - GA4GHV20
      summary: Get a list of test JSONs
      description: Get a list of test JSONs (these allow you to execute the tool successfully)
        suitable for use with this descriptor type.
      operationId: toolsIdVersionsVersionIdTypeTestsGet
      parameters:
      - name: id
        in: path
        description: "A unique identifier of the tool, scoped to this registry, for\
          \ example `123456`."
        required: true
        schema:
          type: string
      - name: type
        in: path
        description: The output type of the descriptor. Plain types return the bare
          descriptor while the "non-plain" types return a descriptor wrapped with
          metadata.
        required: true
        schema:
          type: string
          enum:
          - CWL
          - WDL
          - NFL
          - GALAXY
          - SMK
          - JUPYTER
          - PLAIN_CWL
          - PLAIN_WDL
          - PLAIN_NFL
          - PLAIN_GALAXY
          - PLAIN_SMK
          - PLAIN_JUPYTER
      - name: version_id
        in: path
        description: "An identifier of the tool version, scoped to this registry,\
          \ for example `v1`. We recommend that versions use semantic versioning https://semver.org/spec/v2.0.0.html\
          \  (For example, `1.0.0` instead of `develop`)"
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool test JSON response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileWrapper'
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileWrapper'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
            text/plain:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - BEARER: []
  /api/ga4gh/v2/metadata:
    get:
      tags:
      - GA4GHV20BETA
      summary: Return some metadata that is useful for describing this registry
      description: Return some metadata that is useful for describing this registry
      operationId: metadataGet
      responses:
        "200":
          description: A Metadata object describing this service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/MetadataV20beta'
  /api/ga4gh/v1/metadata:
    get:
      tags:
      - GA4GHV1
      operationId: metadataGet_1
      responses:
        default:
          description: default response
          content:
            application/json: {}
            text/plain: {}
  /api/ga4gh/v2/toolClasses:
    get:
      tags:
      - GA4GHV20BETA
      summary: List all tool types
      description: 'This endpoint returns all tool-classes available '
      operationId: toolClassesGet_1
      responses:
        "200":
          description: A list of potential tool classes.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolClassV20beta'
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolClassV20beta'
  /api/ga4gh/v1/tool-classes:
    get:
      tags:
      - GA4GHV1
      operationId: toolClassesGet_2
      responses:
        default:
          description: default response
          content:
            application/json: {}
            text/plain: {}
  /api/ga4gh/v2/tools:
    get:
      tags:
      - GA4GHV20BETA
      summary: List all tools
      description: 'This endpoint returns all tools available or a filtered subset
        using metadata query parameters. '
      operationId: toolsGet_1
      parameters:
      - name: id
        in: query
        schema:
          type: string
      - name: alias
        in: query
        schema:
          type: string
      - name: registry
        in: query
        schema:
          type: string
      - name: organization
        in: query
        schema:
          type: string
      - name: name
        in: query
        schema:
          type: string
      - name: toolname
        in: query
        schema:
          type: string
      - name: description
        in: query
        schema:
          type: string
      - name: author
        in: query
        schema:
          type: string
      - name: checker
        in: query
        schema:
          type: boolean
      - name: offset
        in: query
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
          format: int32
          default: 1000
      responses:
        "200":
          description: An array of Tools that match the filter.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolV20beta'
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolV20beta'
  /api/ga4gh/v2/tools/{id}:
    get:
      tags:
      - GA4GHV20BETA
      summary: "List one specific tool, acts as an anchor for self references"
      description: This endpoint returns one specific tool (which has ToolVersions
        nested inside it)
      operationId: toolsIdGet_1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A tool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ToolV20beta'
        "404":
          description: The tool can not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
  /api/ga4gh/v2/tools/{id}/versions:
    get:
      tags:
      - GA4GHV20BETA
      summary: List versions of a tool
      description: Returns all versions of the specified tool
      operationId: toolsIdVersionsGet_1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: An array of tool versions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolVersionV20beta'
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolVersionV20beta'
  /api/ga4gh/v2/tools/{id}/versions/{version_id}/containerfile:
    get:
      tags:
      - GA4GHV20BETA
      summary: Get the container specification(s) for the specified image.
      description: "Returns the container specifications(s) for the specified image.\
        \ For example, a CWL CommandlineTool can be associated with one specification\
        \ for a container, a CWL Workflow can be associated with multiple specifications\
        \ for containers"
      operationId: toolsIdVersionsVersionIdContainerfileGet_1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool payload.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileWrapperV20beta'
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileWrapperV20beta'
        "404":
          description: There are no container specifications for this tool
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
  /api/ga4gh/v2/tools/{id}/versions/{version_id}:
    get:
      tags:
      - GA4GHV20BETA
      summary: "List one specific tool version, acts as an anchor for self references"
      description: This endpoint returns one specific tool version
      operationId: toolsIdVersionsVersionIdGet_1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A tool version.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolVersionV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ToolVersionV20beta'
        "404":
          description: The tool can not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
  /api/ga4gh/v2/tools/{id}/versions/{version_id}/{type}/descriptor:
    get:
      tags:
      - GA4GHV20BETA
      summary: Get the tool descriptor for the specified tool
      description: "Returns the descriptor for the specified tool (examples include\
        \ CWL, WDL, or Nextflow documents)."
      operationId: toolsIdVersionsVersionIdTypeDescriptorGet_1
      parameters:
      - name: type
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool descriptor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileWrapperV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/FileWrapperV20beta'
        "404":
          description: The tool descriptor can not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
  /api/ga4gh/v2/tools/{id}/versions/{version_id}/{type}/descriptor/{relative_path}:
    get:
      tags:
      - GA4GHV20BETA
      summary: Get additional tool descriptor files relative to the main file
      description: 'Descriptors can often include imports that refer to additional
        descriptors. This returns additional descriptors for the specified tool in
        the same or other directories that can be reached as a relative path. This
        endpoint can be useful for workflow engine implementations like cwltool to
        programmatically download all the descriptors for a tool and run it. This
        can optionally include other files described with FileWrappers such as test
        parameters and containerfiles. '
      operationId: toolsIdVersionsVersionIdTypeDescriptorRelativePathGet_1
      parameters:
      - name: type
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      - name: relative_path
        in: path
        required: true
        schema:
          pattern: .+
          type: string
      responses:
        "200":
          description: The tool descriptor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileWrapperV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/FileWrapperV20beta'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
  /api/ga4gh/v2/tools/{id}/versions/{version_id}/{type}/files:
    get:
      tags:
      - GA4GHV20BETA
      summary: Get a list of objects that contain the relative path and file type
      description: "Get a list of objects that contain the relative path and file\
        \ type. The descriptors are intended for use with the /tools/{id}/versions/{version_id}/{type}/descriptor/{relative_path\
        \ : .+} endpoint."
      operationId: toolsIdVersionsVersionIdTypeFilesGet_1
      parameters:
      - name: type
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The array of File JSON responses.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolFileV20beta'
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolFileV20beta'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
  /api/ga4gh/v2/tools/{id}/versions/{version_id}/{type}/tests:
    get:
      tags:
      - GA4GHV20BETA
      summary: Get a list of test JSONs
      description: Get a list of test JSONs (these allow you to execute the tool successfully)
        suitable for use with this descriptor type.
      operationId: toolsIdVersionsVersionIdTypeTestsGet_1
      parameters:
      - name: type
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool test JSON response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileWrapperV20beta'
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileWrapperV20beta'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorV20beta'
  /api/ga4gh/v1/tools:
    get:
      tags:
      - GA4GHV1
      summary: List all tools
      description: This endpoint returns all tools available or a filtered subset
        using metadata query parameters.
      operationId: toolsGetV1
      parameters:
      - name: id
        in: query
        schema:
          type: string
      - name: registry
        in: query
        schema:
          type: string
      - name: organization
        in: query
        schema:
          type: string
      - name: name
        in: query
        schema:
          type: string
      - name: toolname
        in: query
        schema:
          type: string
      - name: description
        in: query
        schema:
          type: string
      - name: author
        in: query
        schema:
          type: string
      - name: offset
        in: query
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: An array of Tools that match the filter.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolV1'
  /api/ga4gh/v1/tools/{id}:
    get:
      tags:
      - GA4GHV1
      summary: "List one specific tool, acts as an anchor for self references"
      description: This endpoint returns one specific tool (which has ToolVersions
        nested inside it)
      operationId: toolsIdGetV1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A tool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolV1'
  /api/ga4gh/v1/tools/{id}/versions:
    get:
      tags:
      - GA4GHV1
      summary: List versions of a tool
      description: Returns all versions of the specified tool
      operationId: toolsIdVersionGetV1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: An array of tool versions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolVersionV1'
  /api/ga4gh/v1/tools/{id}/versions/{version_id}/dockerfile:
    get:
      tags:
      - GA4GHV1
      summary: Get the dockerfile for the specified image.
      description: Returns the dockerfile for the specified image.
      operationId: dockerfileGetV1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool payload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolDockerfile'
  /api/ga4gh/v1/tools/{id}/versions/{version_id}:
    get:
      tags:
      - GA4GHV1
      summary: "List one specific tool version, acts as an anchor for self references"
      description: This endpoint returns one specific tool version
      operationId: versionIdGetV1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: A tool version.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolVersionV1'
  /api/ga4gh/v1/tools/{id}/versions/{version_id}/{type}/descriptor:
    get:
      tags:
      - GA4GHV1
      summary: Get the tool descriptor (CWL/WDL) for the specified tool.
      description: Returns the CWL or WDL descriptor for the specified tool.
      operationId: descriptorGetV1
      parameters:
      - name: type
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool descriptor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolDescriptor'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolDescriptor'
  /api/ga4gh/v1/tools/{id}/versions/{version_id}/{type}/descriptor/{relative_path}:
    get:
      tags:
      - GA4GHV1
      summary: Get additional tool descriptor files (CWL/WDL) relative to the main
        file
      description: Returns additional CWL or WDL descriptors for the specified tool
        in the same or subdirectories
      operationId: relativeDescriptorGetV1
      parameters:
      - name: type
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      - name: relative_path
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool descriptor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolDescriptor'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolDescriptor'
  /api/ga4gh/v1/tools/{id}/versions/{version_id}/{type}/tests:
    get:
      tags:
      - GA4GHV1
      summary: Get an array of test JSONs suitable for use with this descriptor type.
      operationId: testsGetV1
      parameters:
      - name: type
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version_id
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: The tool test JSON response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolTestsV1'
        "404":
          description: The tool can not be output in the specified type.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ToolTestsV1'
components:
  schemas:
    AggregatedExecution:
      required:
      - executionId
      - executionStatusCount
      type: object
      description: Aggregated metrics of multiple executions on a platform
      deprecated: true
      allOf:
      - $ref: '#/components/schemas/Metrics'
      - type: object
        properties:
          executionId:
            type: string
            description: User-provided ID of the execution. Must be unique and not
              used for previous executions. This ID is used to identify the execution
              when updating the execution
          additionalAggregatedMetrics:
            type: object
            additionalProperties:
              type: object
              description: Additional aggregated metrics
            description: Additional aggregated metrics
    Alias:
      type: object
      properties:
        content:
          type: string
    Author:
      type: object
      properties:
        name:
          type: string
        role:
          type: string
        affiliation:
          type: string
        email:
          type: string
    Checksum:
      required:
      - checksum
      - type
      type: object
      properties:
        checksum:
          type: string
          description: 'The hex-string encoded checksum for the data. '
        type:
          type: string
          description: "The digest method used to create the checksum. The value (e.g.\
            \ `sha-256`) SHOULD be listed as `Hash Name String` in the https://github.com/ga4gh-discovery/ga4gh-checksum/blob/master/hash-alg.csv[GA4GH\
            \ Checksum Hash Algorithm Registry]. Other values MAY be used, as long\
            \ as implementors are aware of the issues discussed in https://tools.ietf.org/html/rfc6920#section-9.4[RFC6920].\
            \ GA4GH may provide more explicit guidance for use of non-IANA-registered\
            \ algorithms in the future."
      description: "A production (immutable) tool version is required to have a hashcode.\
        \ Not required otherwise, but might be useful to detect changes. "
      example:
      - checksum: ea2a5db69bd20a42976838790bc29294df3af02b
        type: sha1
    CostMetric:
      required:
      - average
      - maximum
      - minimum
      - numberOfDataPointsForAverage
      type: object
      properties:
        minimum:
          type: number
          description: The minimum value from the data points
          format: double
        maximum:
          type: number
          description: The maximum value from the data points
          format: double
        average:
          type: number
          description: The average value from the data points
          format: double
        numberOfDataPointsForAverage:
          type: integer
          description: The number of data points used to calculate the average
          format: int32
        id:
          type: integer
          description: Implementation specific ID for statistical metrics in this
            webservice
          format: int64
        unit:
          type: string
          description: The unit of the data points
          readOnly: true
          default: USD
      description: This describes aggregated cost metrics for workflow executions
        in USD.
    CpuMetric:
      required:
      - average
      - maximum
      - minimum
      - numberOfDataPointsForAverage
      type: object
      properties:
        id:
          type: integer
          description: Implementation specific ID for statistical metrics in this
            webservice
          format: int64
        minimum:
          type: number
          description: The minimum value from the data points
          format: double
        maximum:
          type: number
          description: The maximum value from the data points
          format: double
        average:
          type: number
          description: The average value from the data points
          format: double
        numberOfDataPointsForAverage:
          type: integer
          description: The number of data points used to calculate the average
          format: int32
        unit:
          type: string
          description: The unit of the data points
          readOnly: true
      description: This describes aggregated CPU metrics for workflow executions.
    ExecutionStatusMetric:
      required:
      - count
      type: object
      properties:
        id:
          type: integer
          description: Implementation specific ID for the count metrics in this webservice
          format: int64
        count:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/MetricsByStatus'
          description: A map containing the metrics for each execution status
        numberOfSuccessfulExecutions:
          type: integer
          description: Number of successful executions
          format: int32
          readOnly: true
          example: 5
        numberOfFailedExecutions:
          type: integer
          description: Number of failed executions. An execution may have failed because
            it was semantically or runtime invalid
          format: int32
          readOnly: true
          example: 2
        numberOfAbortedExecutions:
          type: integer
          description: Number of aborted executions. An execution is aborted if its
            execution is stopped after it has started
          format: int32
          readOnly: true
          example: 0
      description: Aggregated metrics about workflow execution statuses
    ExecutionTimeMetric:
      required:
      - average
      - maximum
      - minimum
      - numberOfDataPointsForAverage
      type: object
      properties:
        minimum:
          type: number
          description: The minimum value from the data points
          format: double
        maximum:
          type: number
          description: The maximum value from the data points
          format: double
        average:
          type: number
          description: The average value from the data points
          format: double
        numberOfDataPointsForAverage:
          type: integer
          description: The number of data points used to calculate the average
          format: int32
        id:
          type: integer
          description: Implementation specific ID for statistical metrics in this
            webservice
          format: int64
        unit:
          type: string
          description: The unit of the data points
          readOnly: true
          default: s
      description: This describes aggregated execution time metrics in seconds for
        workflow executions.
    FileFormat:
      type: object
      properties:
        value:
          type: string
    Image:
      type: object
      properties:
        checksums:
          type: array
          items:
            $ref: '#/components/schemas/Checksum'
        repository:
          type: string
        tag:
          type: string
        imageID:
          type: string
        imageRegistry:
          type: string
          enum:
          - QUAY_IO
          - DOCKER_HUB
          - GITLAB
          - AMAZON_ECR
          - SEVEN_BRIDGES
          - GITHUB_CONTAINER_REGISTRY
        architecture:
          type: string
        os:
          type: string
        specifier:
          type: string
          enum:
          - PARAMETER
          - NO_TAG
          - LATEST
          - TAG
          - DIGEST
        size:
          type: integer
          format: int64
        imageUpdateDate:
          type: string
        dbUpdateDate:
          type: string
          format: date-time
    MemoryMetric:
      required:
      - average
      - maximum
      - minimum
      - numberOfDataPointsForAverage
      type: object
      properties:
        minimum:
          type: number
          description: The minimum value from the data points
          format: double
        maximum:
          type: number
          description: The maximum value from the data points
          format: double
        average:
          type: number
          description: The average value from the data points
          format: double
        numberOfDataPointsForAverage:
          type: integer
          description: The number of data points used to calculate the average
          format: int32
        id:
          type: integer
          description: Implementation specific ID for statistical metrics in this
            webservice
          format: int64
        unit:
          type: string
          description: The unit of the data points
          readOnly: true
          default: GB
      description: This describes aggregated memory metrics for workflow executions
        in GB.
    Metrics:
      required:
      - executionStatusCount
      type: object
      properties:
        id:
          type: integer
          description: Implementation specific ID for the metrics in this webservice
          format: int64
        executionStatusCount:
          $ref: '#/components/schemas/ExecutionStatusMetric'
        validationStatus:
          $ref: '#/components/schemas/ValidationStatusMetric'
      description: Aggregated metrics associated with entry versions
    MetricsByStatus:
      required:
      - executionStatusCount
      type: object
      properties:
        id:
          type: integer
          description: Implementation specific ID for the metrics in this webservice
          format: int64
        executionStatusCount:
          type: integer
          description: The number of executions for the status
          format: int32
        executionTime:
          $ref: '#/components/schemas/ExecutionTimeMetric'
        memory:
          $ref: '#/components/schemas/MemoryMetric'
        cpu:
          $ref: '#/components/schemas/CpuMetric'
        cost:
          $ref: '#/components/schemas/CostMetric'
      description: Aggregated metrics grouped by execution status
    OrcidAuthor:
      type: object
      properties:
        id:
          type: integer
          format: int64
        orcid:
          type: string
    OrcidPutCode:
      type: object
      properties:
        orcidPutCode:
          type: string
      description: An ORCID put code uniquely identifies a work on ORCID
    ParsedInformation:
      type: object
      properties:
        descriptorLanguage:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
        hasHTTPImports:
          type: boolean
        hasLocalImports:
          type: boolean
    Profile:
      type: object
      properties:
        name:
          type: string
        avatarURL:
          type: string
        company:
          type: string
        location:
          type: string
        bio:
          type: string
        link:
          type: string
        username:
          type: string
    SourceFile:
      required:
      - absolutePath
      - path
      - type
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          type: string
          description: Enumerates the type of file
          enum:
          - DOCKSTORE_SMK
          - SMK_TEST_PARAMS
          - DOCKSTORE_CWL
          - CWL_TEST_JSON
          - DOCKSTORE_WDL
          - WDL_TEST_JSON
          - DOCKERFILE
          - NEXTFLOW
          - NEXTFLOW_CONFIG
          - NEXTFLOW_TEST_PARAMS
          - DOCKSTORE_YML
          - DOCKSTORE_SERVICE_YML
          - DOCKSTORE_SERVICE_TEST_JSON
          - DOCKSTORE_SERVICE_OTHER
          - DOCKSTORE_GXFORMAT2
          - GXFORMAT2_TEST_FILE
          - DOCKSTORE_SWL
          - SWL_TEST_JSON
          - DOCKSTORE_JUPYTER
          - DOCKSTORE_NOTEBOOK_REES
          - DOCKSTORE_NOTEBOOK_DEVCONTAINER
          - DOCKSTORE_NOTEBOOK_TEST_FILE
          - DOCKSTORE_NOTEBOOK_OTHER
        content:
          type: string
        path:
          type: string
          description: Path to sourcefile relative to its parent
        absolutePath:
          type: string
          description: Absolute path of sourcefile in git repo
        frozen:
          type: boolean
        checksums:
          type: array
          items:
            $ref: '#/components/schemas/Checksum'
        verifiedBySource:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/VerificationInformation'
        metadata:
          $ref: '#/components/schemas/SourceFileMetadata'
    SourceFileMetadata:
      type: object
      properties:
        id:
          type: integer
          format: int64
        typeVersion:
          type: string
          description: The language version for the given descriptor file type
        parent:
          $ref: '#/components/schemas/SourceFile'
    User:
      type: object
      properties:
        id:
          type: integer
          format: int64
        username:
          type: string
        isAdmin:
          type: boolean
          description: Indicates whether the user is an admin.  The value is always
            false unless requested for oneself or by an admin
        userProfiles:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Profile'
        avatarUrl:
          type: string
        curator:
          type: boolean
          description: Indicates whether this user is a curator. The value is always
            false unless requested for oneself or by an admin
        platformPartner:
          type: string
          description: Indicates whether this account corresponds to a platform partner
          enum:
          - GALAXY
          - TERRA
          - DNA_STACK
          - DNA_NEXUS
          - CGC
          - NHLBI_BIODATA_CATALYST
          - ANVIL
          - CAVATICA
          - NEXTFLOW_TOWER
          - ELWAZI
          - AGC
          - OTHER
          - ALL
        setupComplete:
          type: boolean
        privacyPolicyVersion:
          type: string
          enum:
          - NONE
          - PRIVACY_POLICY_VERSION_2_5
        privacyPolicyVersionAcceptanceDate:
          type: integer
          format: int64
        usernameChangeRequired:
          type: boolean
          description: Indicates whether the user is required to change their username
            before being allowed to do various operations on Dockstore.
        orcid:
          type: string
        name:
          type: string
        tosversion:
          type: string
          enum:
          - NONE
          - TOS_VERSION_1
          - TOS_VERSION_2
        tosacceptanceDate:
          type: integer
          format: int64
        tosversionAcceptanceDate:
          type: integer
          format: int64
          writeOnly: true
    Validation:
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          type: string
          enum:
          - DOCKSTORE_SMK
          - SMK_TEST_PARAMS
          - DOCKSTORE_CWL
          - CWL_TEST_JSON
          - DOCKSTORE_WDL
          - WDL_TEST_JSON
          - DOCKERFILE
          - NEXTFLOW
          - NEXTFLOW_CONFIG
          - NEXTFLOW_TEST_PARAMS
          - DOCKSTORE_YML
          - DOCKSTORE_SERVICE_YML
          - DOCKSTORE_SERVICE_TEST_JSON
          - DOCKSTORE_SERVICE_OTHER
          - DOCKSTORE_GXFORMAT2
          - GXFORMAT2_TEST_FILE
          - DOCKSTORE_SWL
          - SWL_TEST_JSON
          - DOCKSTORE_JUPYTER
          - DOCKSTORE_NOTEBOOK_REES
          - DOCKSTORE_NOTEBOOK_DEVCONTAINER
          - DOCKSTORE_NOTEBOOK_TEST_FILE
          - DOCKSTORE_NOTEBOOK_OTHER
        valid:
          type: boolean
        message:
          type: string
    ValidationStatusMetric:
      required:
      - validatorTools
      type: object
      properties:
        id:
          type: integer
          description: Implementation specific ID for the count metrics in this webservice
          format: int64
        validatorTools:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ValidatorInfo'
          description: A map containing key-value pairs indicating whether the validator
            tool successfully validated the workflow
      description: Aggregated metrics about workflow validation statuses
    ValidatorInfo:
      required:
      - mostRecentVersionName
      - numberOfRuns
      - passingRate
      - validatorVersions
      type: object
      properties:
        id:
          type: integer
          format: int64
        validatorVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ValidatorVersionInfo'
        mostRecentVersionName:
          type: string
          description: The version of the validator tool that was most recently executed
        passingRate:
          type: number
          description: A percentage representing how often the validator successfully
            validated the workflow
          format: double
          example: 100.0
        numberOfRuns:
          type: integer
          description: The number of times the validator was executed on the workflow
          format: int32
          example: 1
      description: Aggregated validation information for a particular validator tool
        like miniwdl
    ValidatorVersionInfo:
      required:
      - dateExecuted
      - isValid
      - name
      - numberOfRuns
      - passingRate
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
          description: The version name of the validator tool
        isValid:
          type: boolean
          description: Boolean indicating if the workflow was validated successfully
          example: true
        errorMessage:
          type: string
          description: The error message for a failed validation by the validator
            tool
        dateExecuted:
          type: string
          description: The date and time that the validator tool was executed in ISO
            8601 UTC date format
          example: 2023-03-31T15:06:49.888745366Z
        passingRate:
          type: number
          description: A percentage representing how often the validator successfully
            validates the workflow
          format: double
          example: 100.0
        numberOfRuns:
          type: integer
          description: The number of times the validator was executed on the workflow
          format: int32
          example: 1
      description: "Validation information for a version of a specific validator tool,\
        \ like miniwdl v1.9.1"
    VerificationInformation:
      type: object
      properties:
        verified:
          type: boolean
        metadata:
          type: string
        platformVersion:
          type: string
    VersionMetadata:
      type: object
      properties:
        parsedInformationSet:
          type: array
          items:
            $ref: '#/components/schemas/ParsedInformation'
        userIdToOrcidPutCode:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/OrcidPutCode'
          description: The presence of the put code for a userid indicates the version
            was exported to ORCID for the corresponding Dockstore user.
        id:
          type: integer
          format: int64
        publicAccessibleTestParameterFile:
          type: boolean
          description: Whether the version has everything needed to run without restricted
            access permissions
        descriptorTypeVersions:
          type: array
          items:
            type: string
        engineVersions:
          type: array
          items:
            type: string
    WorkflowVersion:
      required:
      - name
      - reference
      type: object
      properties:
        id:
          type: integer
          format: int64
        reference:
          type: string
          description: git commit/tag/branch
          example: master
        name:
          type: string
          description: "Implementation specific, can be a quay.io or docker hub tag\
            \ name"
          example: latest
        commitID:
          type: string
        frozen:
          type: boolean
        referenceType:
          type: string
          enum:
          - COMMIT
          - TAG
          - BRANCH
          - NOT_APPLICABLE
          - UNSET
        valid:
          type: boolean
        dirtyBit:
          type: boolean
        versionMetadata:
          $ref: '#/components/schemas/VersionMetadata'
        versionEditor:
          $ref: '#/components/schemas/User'
        authors:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Author'
        orcidAuthors:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/OrcidAuthor'
        validations:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Validation'
        images:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Image'
        metricsByPlatform:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Metrics'
        userFiles:
          type: array
          items:
            type: string
        readMePath:
          type: string
        aliases:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Alias'
        synced:
          type: boolean
        kernelImagePath:
          type: string
          description: User-specified notebook kernel image reference
        workingDirectory:
          type: string
        legacyVersion:
          type: boolean
        hidden:
          type: boolean
        doiStatus:
          type: string
          enum:
          - NOT_REQUESTED
          - REQUESTED
          - CREATED
        doiURL:
          type: string
        verified:
          type: boolean
        verifiedSource:
          type: string
        verifiedSources:
          type: array
          items:
            type: string
        verifiedPlatforms:
          type: array
          description: Verified platforms for the version
          items:
            type: string
            description: Verified platforms for the version
        descriptionSource:
          type: string
          enum:
          - README
          - CUSTOM_README
          - DESCRIPTOR
        descriptorTypeVersionsFromSourceFiles:
          uniqueItems: true
          type: array
          writeOnly: true
          items:
            $ref: '#/components/schemas/SourceFile'
        author:
          type: string
        email:
          type: string
        dbUpdateDate:
          type: integer
          format: int64
        input_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        output_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        workflow_path:
          type: string
        last_modified:
          type: integer
          format: int64
      description: This describes one workflow version associated with a workflow.
    EntryType:
      type: string
      description: Entry type
      enum:
      - TOOL
      - WORKFLOW
      - SERVICE
      - APPTOOL
      - NOTEBOOK
    EntryTypeMetadata:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/EntryType'
        term:
          type: string
          description: Singular term used to refer to an instance of this entry type
        termPlural:
          type: string
          description: Plural term used to refer to instances of this entry type
        sitePath:
          type: string
          description: Relative path from the root of the site to the 'pages' where
            entries of this type are displayed
        trsSupported:
          type: boolean
          description: TRS support for this entry type
        trsPrefix:
          type: string
          description: TRS ID prefix for this entry type
        searchSupported:
          type: boolean
          description: Search support for this entry type
        searchEntryType:
          type: string
          description: Search 'entryType' parameter value for this entry type
      description: Information about an entry type
    WorkflowVersionPathInfo:
      type: object
      properties:
        fullWorkflowPath:
          type: string
          description: Dockstore path to workflow
        entryType:
          $ref: '#/components/schemas/EntryType'
        entryTypeMetadata:
          $ref: '#/components/schemas/EntryTypeMetadata'
        tagName:
          type: string
          description: Name of workflow version tag
    Category:
      required:
      - name
      - topic
      type: object
      properties:
        id:
          type: integer
          description: Implementation specific ID for the collection in this web service
          format: int64
        name:
          maxLength: 39
          minLength: 3
          pattern: "[a-zA-Z](-?[a-zA-Z\\d]){0,38}"
          type: string
          description: Name of the collection
          example: alignment
        description:
          type: string
          description: Description of the collection
        displayName:
          maxLength: 50
          minLength: 3
          pattern: "[\\w ,_\\-&()']*"
          type: string
        topic:
          type: string
          description: Short description of the collection
          example: A collection of alignment algorithms
        workflowsLength:
          type: integer
          description: Number of workflows inside this collection
          format: int64
        toolsLength:
          type: integer
          description: Number of tools inside this collection
          format: int64
        notebooksLength:
          type: integer
          description: Number of notebooks inside this collection
          format: int64
        servicesLength:
          type: integer
          description: Number of services inside this collection
          format: int64
        organizationID:
          type: integer
          format: int64
        aliases:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Alias'
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
        entries:
          type: array
          items:
            $ref: '#/components/schemas/CollectionEntry'
        organizationName:
          type: string
      description: Category of entries
    CategorySummary:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        displayName:
          type: string
        topic:
          type: string
    CollectionEntry:
      type: object
      properties:
        entryPath:
          type: string
        dbUpdateDate:
          type: integer
          format: int64
        id:
          type: integer
          format: int64
        entryType:
          type: string
        versionName:
          type: string
        descriptorTypes:
          type: array
          items:
            type: string
        verified:
          type: boolean
        labels:
          type: array
          items:
            type: string
        categories:
          type: array
          items:
            $ref: '#/components/schemas/CategorySummary'
    CloudInstance:
      type: object
      properties:
        id:
          type: integer
          format: int64
        partner:
          type: string
          enum:
          - GALAXY
          - TERRA
          - DNA_STACK
          - DNA_NEXUS
          - CGC
          - NHLBI_BIODATA_CATALYST
          - ANVIL
          - CAVATICA
          - NEXTFLOW_TOWER
          - ELWAZI
          - AGC
          - OTHER
          - ALL
        url:
          type: string
        displayName:
          type: string
        supportsHttpImports:
          type: boolean
        supportsFileImports:
          type: boolean
        supportedLanguages:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Language'
    Language:
      type: object
      properties:
        language:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
        version:
          type: string
    Collection:
      required:
      - name
      - topic
      type: object
      properties:
        id:
          type: integer
          description: Implementation specific ID for the collection in this web service
          format: int64
        name:
          maxLength: 39
          minLength: 3
          pattern: "[a-zA-Z](-?[a-zA-Z\\d]){0,38}"
          type: string
          description: Name of the collection
          example: alignment
        description:
          type: string
          description: Description of the collection
        displayName:
          maxLength: 50
          minLength: 3
          pattern: "[\\w ,_\\-&()']*"
          type: string
        topic:
          type: string
          description: Short description of the collection
          example: A collection of alignment algorithms
        workflowsLength:
          type: integer
          description: Number of workflows inside this collection
          format: int64
        toolsLength:
          type: integer
          description: Number of tools inside this collection
          format: int64
        notebooksLength:
          type: integer
          description: Number of notebooks inside this collection
          format: int64
        servicesLength:
          type: integer
          description: Number of services inside this collection
          format: int64
        organizationID:
          type: integer
          format: int64
        aliases:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Alias'
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
        entries:
          type: array
          items:
            $ref: '#/components/schemas/CollectionEntry'
        organizationName:
          type: string
      description: "Collection in an organization, collects entries"
    DockstoreTool:
      type: object
      properties:
        id:
          type: integer
          format: int64
        description:
          type: string
        labels:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Label'
        users:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
        starredUsers:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
        lastUpdated:
          type: integer
          format: int64
        gitUrl:
          type: string
        aliases:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Alias'
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
        topicId:
          type: integer
          format: int64
        conceptDoi:
          type: string
        licenseInformation:
          $ref: '#/components/schemas/LicenseInformation'
        userIdToOrcidPutCode:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/OrcidPutCode'
          description: The presence of the put code for a userid indicates the entry
            was exported to ORCID for the corresponding Dockstore user.
        topicAutomatic:
          maxLength: 150
          type: string
          description: Short description of the entry gotten automatically
        topicManual:
          maxLength: 150
          type: string
          description: Short description of the entry manually updated
        topicAI:
          maxLength: 150
          type: string
          description: Short description of the entry generated by AI
        topicSelection:
          type: string
          description: Which topic to display to the public users
          enum:
          - AUTOMATIC
          - MANUAL
          - AI
        authors:
          uniqueItems: true
          type: array
          description: "Non-ORCID authors for the entry, retrieved from the default\
            \ version"
          readOnly: true
          items:
            $ref: '#/components/schemas/Author'
        orcidAuthors:
          uniqueItems: true
          type: array
          description: "ORCID authors for the entry, retrieved from the default version"
          readOnly: true
          items:
            $ref: '#/components/schemas/OrcidAuthor'
        archived:
          type: boolean
        mode:
          type: string
          enum:
          - AUTO_DETECT_QUAY_TAGS_AUTOMATED_BUILDS
          - AUTO_DETECT_QUAY_TAGS_WITH_MIXED
          - MANUAL_IMAGE_PATH
          - HOSTED
        name:
          type: string
        toolname:
          maxLength: 256
          minLength: 0
          type: string
        namespace:
          type: string
        lastBuild:
          type: string
          format: date-time
        descriptorType:
          type: array
          items:
            type: string
        forumUrl:
          maxLength: 256
          minLength: 0
          type: string
        workflowVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        tags:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        path:
          type: string
        entryType:
          $ref: '#/components/schemas/EntryType'
        entryTypeMetadata:
          $ref: '#/components/schemas/EntryTypeMetadata'
        customerDockerRegistryPath:
          type: string
          writeOnly: true
        metadataFromVersion:
          $ref: '#/components/schemas/Version'
        metadataFromEntry:
          $ref: '#/components/schemas/DockstoreTool'
        author:
          type: string
        defaultVersion:
          type: string
        email:
          type: string
        topic:
          type: string
        deletable:
          type: boolean
        is_published:
          type: boolean
        last_modified:
          type: integer
          format: int32
        input_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        output_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        tool_maintainer_email:
          type: string
        private_access:
          type: boolean
        registry_string:
          type: string
        tool_path:
          type: string
        default_dockerfile_path:
          type: string
        default_cwl_path:
          type: string
        default_wdl_path:
          type: string
        registry:
          type: string
          enum:
          - QUAY_IO
          - DOCKER_HUB
          - GITLAB
          - AMAZON_ECR
          - SEVEN_BRIDGES
          - GITHUB_CONTAINER_REGISTRY
        custom_docker_registry_path:
          type: string
        defaultWDLTestParameterFile:
          type: string
        defaultCWLTestParameterFile:
          type: string
        last_modified_date:
          type: integer
          format: int64
        has_checker:
          type: boolean
        checker_id:
          type: integer
          format: int64
      description: "This describes one entry in the dockstore. Logically, this currently\
        \ means one tuple of registry (either quay or docker hub), organization, image\
        \ name, and toolname which can be associated with CWL and Dockerfile documents"
    Label:
      type: object
      properties:
        id:
          type: integer
          format: int64
        value:
          type: string
    LicenseInformation:
      type: object
      properties:
        licenseName:
          type: string
    Tag:
      required:
      - name
      - reference
      type: object
      properties:
        id:
          type: integer
          format: int64
        reference:
          type: string
          description: git commit/tag/branch
          example: master
        name:
          type: string
          description: "Implementation specific, can be a quay.io or docker hub tag\
            \ name"
          example: latest
        commitID:
          type: string
        frozen:
          type: boolean
        referenceType:
          type: string
          enum:
          - COMMIT
          - TAG
          - BRANCH
          - NOT_APPLICABLE
          - UNSET
        valid:
          type: boolean
        dirtyBit:
          type: boolean
        versionMetadata:
          $ref: '#/components/schemas/VersionMetadata'
        versionEditor:
          $ref: '#/components/schemas/User'
        authors:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Author'
        orcidAuthors:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/OrcidAuthor'
        validations:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Validation'
        images:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Image'
        metricsByPlatform:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Metrics'
        userFiles:
          type: array
          items:
            type: string
        readMePath:
          type: string
        size:
          type: integer
          format: int64
        automated:
          type: boolean
        workingDirectory:
          type: string
        hidden:
          type: boolean
        doiStatus:
          type: string
          enum:
          - NOT_REQUESTED
          - REQUESTED
          - CREATED
        doiURL:
          type: string
        verified:
          type: boolean
        verifiedSource:
          type: string
        verifiedSources:
          type: array
          items:
            type: string
        verifiedPlatforms:
          type: array
          description: Verified platforms for the version
          items:
            type: string
            description: Verified platforms for the version
        descriptionSource:
          type: string
          enum:
          - README
          - CUSTOM_README
          - DESCRIPTOR
        descriptorTypeVersionsFromSourceFiles:
          uniqueItems: true
          type: array
          writeOnly: true
          items:
            $ref: '#/components/schemas/SourceFile'
        author:
          type: string
        email:
          type: string
        dbUpdateDate:
          type: integer
          format: int64
        input_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        output_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        last_built:
          type: integer
          format: int64
        image_id:
          type: string
        dockerfile_path:
          type: string
        cwl_path:
          type: string
        wdl_path:
          type: string
      description: This describes one tag associated with a container.
    Version:
      required:
      - name
      - reference
      type: object
      properties:
        id:
          type: integer
          format: int64
        reference:
          type: string
          description: git commit/tag/branch
          example: master
        name:
          type: string
          description: "Implementation specific, can be a quay.io or docker hub tag\
            \ name"
          example: latest
        commitID:
          type: string
        frozen:
          type: boolean
        referenceType:
          type: string
          enum:
          - COMMIT
          - TAG
          - BRANCH
          - NOT_APPLICABLE
          - UNSET
        valid:
          type: boolean
        dirtyBit:
          type: boolean
        versionMetadata:
          $ref: '#/components/schemas/VersionMetadata'
        versionEditor:
          $ref: '#/components/schemas/User'
        authors:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Author'
        orcidAuthors:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/OrcidAuthor'
        validations:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Validation'
        images:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Image'
        metricsByPlatform:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Metrics'
        userFiles:
          type: array
          items:
            type: string
        readMePath:
          type: string
        hidden:
          type: boolean
        workingDirectory:
          type: string
        doiStatus:
          type: string
          enum:
          - NOT_REQUESTED
          - REQUESTED
          - CREATED
        doiURL:
          type: string
        verified:
          type: boolean
        verifiedSource:
          type: string
        verifiedSources:
          type: array
          items:
            type: string
        verifiedPlatforms:
          type: array
          description: Verified platforms for the version
          items:
            type: string
            description: Verified platforms for the version
        descriptionSource:
          type: string
          enum:
          - README
          - CUSTOM_README
          - DESCRIPTOR
        descriptorTypeVersionsFromSourceFiles:
          uniqueItems: true
          type: array
          writeOnly: true
          items:
            $ref: '#/components/schemas/SourceFile'
        author:
          type: string
        email:
          type: string
        dbUpdateDate:
          type: integer
          format: int64
        input_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        output_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
      description: This describes a version of an entry in Dockstore
    PublishRequest:
      type: object
      properties:
        publish:
          type: boolean
    StarRequest:
      type: object
      properties:
        star:
          type: boolean
    Entry:
      type: object
      properties:
        id:
          type: integer
          format: int64
        description:
          type: string
        labels:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Label'
        users:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
        starredUsers:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
        lastUpdated:
          type: integer
          format: int64
        gitUrl:
          type: string
        aliases:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Alias'
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
        topicId:
          type: integer
          format: int64
        conceptDoi:
          type: string
        licenseInformation:
          $ref: '#/components/schemas/LicenseInformation'
        userIdToOrcidPutCode:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/OrcidPutCode'
          description: The presence of the put code for a userid indicates the entry
            was exported to ORCID for the corresponding Dockstore user.
        topicAutomatic:
          maxLength: 150
          type: string
          description: Short description of the entry gotten automatically
        topicManual:
          maxLength: 150
          type: string
          description: Short description of the entry manually updated
        topicAI:
          maxLength: 150
          type: string
          description: Short description of the entry generated by AI
        topicSelection:
          type: string
          description: Which topic to display to the public users
          enum:
          - AUTOMATIC
          - MANUAL
          - AI
        authors:
          uniqueItems: true
          type: array
          description: "Non-ORCID authors for the entry, retrieved from the default\
            \ version"
          readOnly: true
          items:
            $ref: '#/components/schemas/Author'
        orcidAuthors:
          uniqueItems: true
          type: array
          description: "ORCID authors for the entry, retrieved from the default version"
          readOnly: true
          items:
            $ref: '#/components/schemas/OrcidAuthor'
        archived:
          type: boolean
        workflowVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Version'
        entryType:
          $ref: '#/components/schemas/EntryType'
        entryTypeMetadata:
          $ref: '#/components/schemas/EntryTypeMetadata'
        metadataFromVersion:
          $ref: '#/components/schemas/Version'
        metadataFromEntry:
          $ref: '#/components/schemas/Entry'
        author:
          type: string
        defaultVersion:
          type: string
        email:
          type: string
        topic:
          type: string
        deletable:
          type: boolean
        is_published:
          type: boolean
        last_modified:
          type: integer
          format: int32
        input_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        output_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        last_modified_date:
          type: integer
          format: int64
        has_checker:
          type: boolean
        checker_id:
          type: integer
          format: int64
      description: This describes one high-level entity in the dockstore
    DescriptionMetrics:
      type: object
      properties:
        descriptionLength:
          type: integer
          format: int64
        calculatedEntropy:
          type: integer
          format: int64
        calculatedWordCount:
          type: integer
          format: int64
    CollectionOrganization:
      type: object
      properties:
        collectionId:
          type: integer
          format: int64
        collectionName:
          type: string
        collectionDisplayName:
          type: string
        organizationId:
          type: integer
          format: int64
        organizationName:
          type: string
        organizationDisplayName:
          type: string
        organizationAvatarUrl:
          type: string
    VersionVerifiedPlatform:
      type: object
      properties:
        versionId:
          type: integer
          format: int64
        metadata:
          type: string
        source:
          type: string
        platformVersion:
          type: string
        path:
          type: string
        verified:
          type: boolean
    AppTool:
      type: object
      description: This describes one app tool in dockstore as a special degenerate
        case of a workflow
      allOf:
      - $ref: '#/components/schemas/Workflow'
    BioWorkflow:
      type: object
      description: This describes one workflow in the dockstore
      allOf:
      - $ref: '#/components/schemas/Workflow'
      - type: object
        properties:
          parent_id:
            type: integer
            format: int64
    Event:
      type: object
      properties:
        id:
          type: integer
          format: int64
        user:
          $ref: '#/components/schemas/User'
        organization:
          $ref: '#/components/schemas/Organization'
        tool:
          $ref: '#/components/schemas/DockstoreTool'
        workflow:
          $ref: '#/components/schemas/Workflow'
        apptool:
          $ref: '#/components/schemas/AppTool'
        service:
          $ref: '#/components/schemas/Service'
        notebook:
          $ref: '#/components/schemas/Notebook'
        collection:
          $ref: '#/components/schemas/Collection'
        initiatorUser:
          $ref: '#/components/schemas/User'
        version:
          $ref: '#/components/schemas/Version'
        type:
          type: string
          enum:
          - CREATE_ORG
          - DELETE_ORG
          - MODIFY_ORG
          - APPROVE_ORG
          - REJECT_ORG
          - REREQUEST_ORG
          - ADD_USER_TO_ORG
          - REMOVE_USER_FROM_ORG
          - MODIFY_USER_ROLE_ORG
          - APPROVE_ORG_INVITE
          - REJECT_ORG_INVITE
          - CREATE_COLLECTION
          - MODIFY_COLLECTION
          - DELETE_COLLECTION
          - REMOVE_FROM_COLLECTION
          - ADD_TO_COLLECTION
          - ADD_VERSION_TO_ENTRY
          - PUBLISH_ENTRY
          - UNPUBLISH_ENTRY
          - ARCHIVE_ENTRY
          - UNARCHIVE_ENTRY
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
    Notebook:
      type: object
      description: This describes one notebook in the dockstore as a special degenerate
        case of a workflow
      allOf:
      - $ref: '#/components/schemas/Workflow'
    Organization:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          maxLength: 39
          minLength: 3
          pattern: "[a-zA-Z][a-zA-Z\\d]*"
          type: string
        description:
          type: string
        link:
          type: string
        location:
          type: string
        email:
          type: string
        status:
          type: string
          enum:
          - PENDING
          - REJECTED
          - APPROVED
          - HIDDEN
        users:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/OrganizationUser'
        topic:
          type: string
        displayName:
          maxLength: 50
          minLength: 3
          pattern: "[\\w ,_\\-&()']*"
          type: string
        starredUsers:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
        aliases:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Alias'
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
        avatarUrl:
          pattern: "([^\\s]+)(\\.jpg|\\.jpeg|\\.png|\\.gif)"
          type: string
        categorizer:
          type: boolean
        collectionsLength:
          type: integer
          format: int64
    OrganizationUser:
      required:
      - status
      type: object
      properties:
        id:
          $ref: '#/components/schemas/OrganizationUserId'
        user:
          $ref: '#/components/schemas/User'
        organization:
          $ref: '#/components/schemas/Organization'
        role:
          type: string
          enum:
          - ADMIN
          - MAINTAINER
          - MEMBER
        status:
          type: string
          description: The status of the organization invitation
          enum:
          - PENDING
          - REJECTED
          - ACCEPTED
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
    OrganizationUserId:
      type: object
      properties:
        userId:
          type: integer
          format: int64
        organizationId:
          type: integer
          format: int64
    Service:
      type: object
      description: This describes one service in the dockstore as a special degenerate
        case of a workflow
      allOf:
      - $ref: '#/components/schemas/Workflow'
    Workflow:
      required:
      - type
      type: object
      properties:
        descriptorType:
          type: string
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
        id:
          type: integer
          format: int64
        description:
          type: string
        labels:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Label'
        users:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
        starredUsers:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/User'
        lastUpdated:
          type: integer
          format: int64
        gitUrl:
          type: string
        aliases:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Alias'
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
        topicId:
          type: integer
          format: int64
        conceptDoi:
          type: string
        licenseInformation:
          $ref: '#/components/schemas/LicenseInformation'
        userIdToOrcidPutCode:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/OrcidPutCode'
          description: The presence of the put code for a userid indicates the entry
            was exported to ORCID for the corresponding Dockstore user.
        topicAutomatic:
          maxLength: 150
          type: string
          description: Short description of the entry gotten automatically
        topicManual:
          maxLength: 150
          type: string
          description: Short description of the entry manually updated
        topicAI:
          maxLength: 150
          type: string
          description: Short description of the entry generated by AI
        topicSelection:
          type: string
          description: Which topic to display to the public users
          enum:
          - AUTOMATIC
          - MANUAL
          - AI
        authors:
          uniqueItems: true
          type: array
          description: "Non-ORCID authors for the entry, retrieved from the default\
            \ version"
          readOnly: true
          items:
            $ref: '#/components/schemas/Author'
        orcidAuthors:
          uniqueItems: true
          type: array
          description: "ORCID authors for the entry, retrieved from the default version"
          readOnly: true
          items:
            $ref: '#/components/schemas/OrcidAuthor'
        archived:
          type: boolean
        mode:
          type: string
          enum:
          - FULL
          - STUB
          - HOSTED
          - DOCKSTORE_YML
        workflowName:
          maxLength: 256
          minLength: 0
          type: string
        organization:
          type: string
        repository:
          type: string
        sourceControl:
          type: string
          enum:
          - dockstore.org
          - github.com
          - bitbucket.org
          - gitlab.com
        forumUrl:
          maxLength: 256
          minLength: 0
          type: string
        descriptorTypeSubclass:
          type: string
          enum:
          - docker-compose
          - helm
          - swarm
          - kubernetes
          - Python
          - R
          - Javascript
          - Scala
          - Julia
          - other
          - n/a
        workflowVersions:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/WorkflowVersion'
        path:
          type: string
        isChecker:
          type: boolean
        deletable:
          type: boolean
        entryType:
          $ref: '#/components/schemas/EntryType'
        entryTypeMetadata:
          $ref: '#/components/schemas/EntryTypeMetadata'
        metadataFromVersion:
          $ref: '#/components/schemas/Version'
        metadataFromEntry:
          $ref: '#/components/schemas/Workflow'
        author:
          type: string
        defaultVersion:
          type: string
        email:
          type: string
        topic:
          type: string
        is_published:
          type: boolean
        last_modified:
          type: integer
          format: int32
        input_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        output_file_formats:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/FileFormat'
        full_workflow_path:
          type: string
        defaultTestParameterFilePath:
          type: string
        workflow_path:
          type: string
        source_control_provider:
          type: string
        last_modified_date:
          type: integer
          format: int64
        has_checker:
          type: boolean
        checker_id:
          type: integer
          format: int64
        type:
          type: string
      description: This describes one workflow in the dockstore
      discriminator:
        propertyName: type
    LambdaEvent:
      type: object
      properties:
        id:
          type: integer
          format: int64
        organization:
          type: string
        repository:
          type: string
        githubUsername:
          type: string
        reference:
          type: string
        success:
          type: boolean
        message:
          type: string
        type:
          type: string
          enum:
          - PUSH
          - DELETE
          - INSTALL
          - PUBLISH
        entryName:
          type: string
          description: The name of the entry associated with the event. An empty string
            indicates an entry with no name specified.
        deliveryId:
          type: string
          description: "The GitHub delivery ID, used to group events that belong to\
            \ the same GitHub webhook invocation."
        ignored:
          type: boolean
          description: Whether or not the event was ignored.
        eventDate:
          type: integer
          format: int64
    HealthCheckResult:
      type: object
      properties:
        healthCheckName:
          type: string
        healthy:
          type: boolean
    CLIInfo:
      type: object
      properties:
        cliLatestDockstoreScriptDownloadUrl:
          type: string
        cliLatestUnstableDockstoreScriptDownloadUrl:
          type: string
        cliLatestVersion:
          type: string
        cliLatestUnstableVersion:
          type: string
    Config:
      type: object
      properties:
        dnaStackImportUrl:
          type: string
        dnaNexusImportUrl:
          type: string
        terraImportUrl:
          type: string
        bdCatalystTerraImportUrl:
          type: string
        bdCatalystSevenBridgesImportUrl:
          type: string
        elwaziImportUrl:
          type: string
        colabImportUrl:
          type: string
        mybinderImportUrl:
          type: string
        gitHubCodespacesImportUrl:
          type: string
        gitHubAuthUrl:
          type: string
        gitHubRedirectPath:
          type: string
        gitHubScope:
          type: string
        quayIoAuthUrl:
          type: string
        quayIoRedirectPath:
          type: string
        quayIoScope:
          type: string
        bitBucketAuthUrl:
          type: string
        gitlabAuthUrl:
          type: string
        gitlabRedirectPath:
          type: string
        gitlabScope:
          type: string
        zenodoAuthUrl:
          type: string
        zenodoRedirectPath:
          type: string
        zenodoScope:
          type: string
        orcidAuthUrl:
          type: string
        orcidRedirectPath:
          type: string
        orcidScope:
          type: string
        googleScope:
          type: string
        cwlVisualizerUri:
          type: string
        tagManagerId:
          type: string
        gitHubAppInstallationUrl:
          type: string
        documentationUrl:
          type: string
        featuredContentUrl:
          type: string
        featuredNewsUrl:
          type: string
        deployVersion:
          type: string
        cwlParsingLambdaVersion:
          type: string
        wdlParsingLambdaVersion:
          type: string
        nextflowParsingLambdaVersion:
          type: string
        galaxyParsingPluginVersion:
          type: string
        checkUrlLambdaVersion:
          type: string
        githubClientId:
          type: string
        quayIoClientId:
          type: string
        bitBucketClientId:
          type: string
        gitlabClientId:
          type: string
        zenodoClientId:
          type: string
        googleClientId:
          type: string
        orcidClientId:
          type: string
        discourseUrl:
          type: string
        gitCommitId:
          type: string
        gitBuildVersion:
          type: string
    DescriptorLanguageBean:
      type: object
      properties:
        value:
          type: string
        friendlyName:
          type: string
    RegistryBean:
      type: object
      properties:
        dockerPath:
          type: string
        friendlyName:
          type: string
        url:
          type: string
        privateOnly:
          type: string
        customDockerPath:
          type: string
        enum:
          type: string
    SourceControlBean:
      type: object
      properties:
        value:
          type: string
        friendlyName:
          type: string
    Notification:
      type: object
      properties:
        id:
          type: integer
          format: int64
        message:
          maxLength: 1024
          minLength: 0
          type: string
        expiration:
          type: integer
          format: int64
        type:
          type: string
          enum:
          - SITEWIDE
          - NEWSBODY
        priority:
          type: string
          enum:
          - LOW
          - MEDIUM
          - CRITICAL
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
    Token_User:
      type: object
      properties:
        id:
          type: integer
          format: int64
        tokenSource:
          type: string
          enum:
          - quay.io
          - github.com
          - dockstore
          - bitbucket.org
          - gitlab.com
          - zenodo.org
          - google.com
          - orcid.org
        username:
          type: string
        userId:
          type: integer
          format: int64
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
    Token_Auth:
      type: object
      properties:
        id:
          type: integer
          format: int64
        tokenSource:
          type: string
          enum:
          - quay.io
          - github.com
          - dockstore
          - bitbucket.org
          - gitlab.com
          - zenodo.org
          - google.com
          - orcid.org
        content:
          type: string
        username:
          type: string
        refreshToken:
          type: string
        userId:
          type: integer
          format: int64
        dbCreateDate:
          type: integer
          format: int64
        dbUpdateDate:
          type: integer
          format: int64
        token:
          type: string
    ToolTesterLog:
      type: object
      properties:
        toolId:
          type: string
        toolVersionName:
          type: string
        testFilename:
          type: string
        runner:
          type: string
        logType:
          type: string
          enum:
          - FULL
          - SUMMARY
        filename:
          type: string
    UserInfo:
      type: object
      properties:
        dockstoreUsername:
          type: string
        thirdPartyUsername:
          type: string
        thirdPartyEmail:
          type: string
        tokenType:
          type: string
    ExtendedUserData:
      type: object
      properties:
        canChangeUsername:
          type: boolean
    OrganizationUpdateTime:
      type: object
      properties:
        name:
          type: string
        displayName:
          type: string
        lastUpdateDate:
          type: integer
          format: int64
    EntryUpdateTime:
      type: object
      properties:
        path:
          type: string
        prettyPath:
          type: string
        entryType:
          $ref: '#/components/schemas/EntryType'
        lastUpdateDate:
          type: integer
          format: int64
    Limits:
      type: object
      properties:
        hostedEntryCountLimit:
          type: integer
          format: int32
        hostedEntryVersionLimit:
          type: integer
          format: int32
    Repository:
      type: object
      properties:
        organization:
          type: string
        repositoryName:
          type: string
        gitRegistry:
          type: string
          enum:
          - dockstore.org
          - github.com
          - bitbucket.org
          - gitlab.com
        canDelete:
          type: boolean
        present:
          type: boolean
        path:
          type: string
    PrivilegeRequest:
      type: object
      properties:
        admin:
          type: boolean
        curator:
          type: boolean
        platformPartner:
          type: string
          enum:
          - GALAXY
          - TERRA
          - DNA_STACK
          - DNA_NEXUS
          - CGC
          - NHLBI_BIODATA_CATALYST
          - ANVIL
          - CAVATICA
          - NEXTFLOW_TOWER
          - ELWAZI
          - AGC
          - OTHER
          - ALL
    Permission:
      type: object
      properties:
        email:
          type: string
        role:
          type: string
          enum:
          - OWNER
          - WRITER
          - READER
    WorkflowSubClass:
      type: string
      enum:
      - BIOWORKFLOW
      - SERVICE
      - APPTOOL
      - NOTEBOOK
    OrcidAuthorInformation:
      type: object
      properties:
        name:
          type: string
        role:
          type: string
        affiliation:
          type: string
        email:
          type: string
        orcid:
          type: string
    Installation:
      required:
      - id
      type: object
      properties:
        id:
          type: integer
          description: The installation ID
          format: int64
      description: The GitHub App installation
    InstallationRepositoriesPayload:
      required:
      - installation
      - repositories_added
      - sender
      type: object
      description: A model for a GitHub webhook installation event
      example:
        sender:
          login: string
        installation:
          id: 0
        repositories_added:
        - full_name: dockstore/dockstore-ui2
      allOf:
      - $ref: '#/components/schemas/Payload'
      - type: object
        properties:
          repositories_added:
            type: array
            description: "An array of repository objects, which were added to the\
              \ installation"
            items:
              $ref: '#/components/schemas/WebhookRepository'
    Payload:
      required:
      - installation
      - sender
      type: object
      properties:
        repository:
          $ref: '#/components/schemas/WebhookRepository'
        sender:
          $ref: '#/components/schemas/Sender'
        installation:
          $ref: '#/components/schemas/Installation'
      description: Describes the common fields of all GitHub webhook payloads
    PushPayload:
      required:
      - installation
      - ref
      - repository
      - sender
      type: object
      description: A model for a GitHub webhook push event
      allOf:
      - $ref: '#/components/schemas/Payload'
      - type: object
        properties:
          ref:
            type: string
            description: The full git ref that was pushed
            example: refs/heads/master OR refs/tags/v1.0
          after:
            type: string
            description: The SHA of the most recent commit on ref after the push
            example: 6d96270004515a0486bb7f76196a72b40c55a47f
    Sender:
      required:
      - login
      type: object
      properties:
        login:
          type: string
          description: GitHub username of the sender of the GitHub webhook event
      description: The user that triggered the event
    WebhookRepository:
      required:
      - full_name
      type: object
      properties:
        full_name:
          type: string
          description: Full name of the GitHub repository
          example: dockstore/dockstore-ui2
      description: The repository where the GitHub webhook event occurred
    LanguageParsingRequest:
      required:
      - branch
      - descriptorRelativePathInGit
      - entryId
      - uri
      - versionId
      type: object
      properties:
        uri:
          type: string
          description: The Git URI
        branch:
          type: string
          description: The Git branch/tag
        descriptorRelativePathInGit:
          type: string
          description: The relative path to the primary descriptor (relative to the
            base in Git)
        entryId:
          type: integer
          description: Id of the Dockstore entry
          format: int64
        versionId:
          type: integer
          description: Id of the Dockstore entry's workflowVersion
          format: int64
        sourceFiles:
          type: array
          description: List of SourceFiles that will be required for parsing hosted
            entries from Dockstore
          items:
            $ref: '#/components/schemas/SourceFile'
        descriptorLanguage:
          type: string
          description: The language of the workflow
          enum:
          - SMK
          - CWL
          - WDL
          - gxformat2
          - SWL
          - NFL
          - service
          - jupyter
      description: Request sent to the external language parsing service
    LanguageParsingResponse:
      type: object
      properties:
        clonedRepositoryAbsolutePath:
          type: string
        versionTypeValidation:
          $ref: '#/components/schemas/VersionTypeValidation'
        secondaryFilePaths:
          type: array
          items:
            type: string
        languageParsingRequest:
          $ref: '#/components/schemas/LanguageParsingRequest'
        author:
          type: string
          description: Author found from parsing the version (may possibly be different
            from what will be stored in Dockstore)
        email:
          type: string
          description: Email found from parsing the version (may possibly be different
            from what will be stored in Dockstore)
        description:
          type: string
          description: Description found from parsing the version (may possibly be
            different from what will be stored in Dockstore)
        parsedInformation:
          $ref: '#/components/schemas/ParsedInformation'
        sourceFiles:
          type: array
          description: List of SourceFiles returned after parsing a non-hosted entry
          items:
            $ref: '#/components/schemas/SourceFile'
        orcidID:
          type: string
          description: ORCID ID found from parsing the version (may possibly be different
            from what will be stored in Dockstore)
      description: Response from the external lambda parsing service
    VersionTypeValidation:
      type: object
      properties:
        message:
          type: object
          additionalProperties:
            type: string
        valid:
          type: boolean
    SharedWorkflows:
      type: object
      properties:
        role:
          type: string
          enum:
          - OWNER
          - WRITER
          - READER
        workflows:
          type: array
          items:
            $ref: '#/components/schemas/Workflow'
    Error:
      required:
      - code
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
    ToolClassV20beta:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
    ToolV1:
      type: object
      properties:
        url:
          type: string
        id:
          type: string
        organization:
          type: string
        toolname:
          type: string
        toolclass:
          $ref: '#/components/schemas/ToolClassV20beta'
        description:
          type: string
        author:
          type: string
        meta-version:
          type: string
        contains:
          type: array
          items:
            type: string
        verified:
          type: boolean
        verified-source:
          type: string
        signed:
          type: boolean
        versions:
          type: array
          items:
            $ref: '#/components/schemas/ToolVersionV1'
    ToolVersionV1:
      type: object
      properties:
        name:
          type: string
        url:
          type: string
        id:
          type: string
        image:
          type: string
        descriptor-type:
          type: array
          items:
            type: string
            enum:
            - CWL
            - WDL
        dockerfile:
          type: boolean
        meta-version:
          type: string
        verified:
          type: boolean
        verified-source:
          type: string
    Cost:
      type: object
      properties:
        value:
          type: number
          description: The numerical value of the cost
          format: double
          example: 5.99
        currency:
          type: string
          description: The currency of the cost value
          readOnly: true
          default: USD
      description: Cost represents a monetary amount in USD
    Execution:
      required:
      - dateExecuted
      - executionId
      type: object
      properties:
        executionId:
          type: string
          description: User-provided ID of the execution. Must be unique and not used
            for previous executions. This ID is used to identify the execution when
            updating the execution
        dateExecuted:
          type: string
          description: The date and time that the execution occurred in ISO 8601 UTC
            date format
          example: 2023-03-31T15:06:49.888745366Z
        additionalProperties:
          type: object
          additionalProperties:
            type: object
            description: "Additional properties that aren't defined. Provide a context,\
              \ like one from schema.org, if you want to use a specific vocabulary"
            example:
              '@context':
                schema: https://schema.org
              schema:actionStatus: CompletedActionStatus
          description: "Additional properties that aren't defined. Provide a context,\
            \ like one from schema.org, if you want to use a specific vocabulary"
          example:
            '@context':
              schema: https://schema.org
            schema:actionStatus: CompletedActionStatus
      description: Metrics of a workflow execution on a platform
    ExecutionsRequestBody:
      required:
      - aggregatedExecutions
      - runExecutions
      - taskExecutions
      - validationExecutions
      type: object
      properties:
        runExecutions:
          type: array
          description: List of workflow run executions to submit
          items:
            $ref: '#/components/schemas/RunExecution'
        taskExecutions:
          type: array
          description: List of task run executions to submit. Each TaskExecution represents
            the tasks executed during a workflow execution.
          items:
            $ref: '#/components/schemas/TaskExecutions'
        validationExecutions:
          type: array
          description: List of workflow validation executions to submit
          items:
            $ref: '#/components/schemas/ValidationExecution'
        aggregatedExecutions:
          type: array
          description: List of aggregated executions to submit
          deprecated: true
          items:
            $ref: '#/components/schemas/AggregatedExecution'
      description: Request body model for executionMetricsPost
    RunExecution:
      required:
      - dateExecuted
      - executionId
      - executionStatus
      type: object
      description: Metrics of an execution on a platform
      allOf:
      - $ref: '#/components/schemas/Execution'
      - type: object
        properties:
          executionStatus:
            type: string
            description: The status of the execution
            example: SUCCESSFUL
            enum:
            - ALL
            - SUCCESSFUL
            - FAILED
            - FAILED_SEMANTIC_INVALID
            - FAILED_RUNTIME_INVALID
            - ABORTED
          executionTime:
            type: string
            description: The total time it took for the execution to complete in ISO
              8601 duration format
            example: PT30S
          memoryRequirementsGB:
            type: number
            description: Memory requirements for the execution in GB
            format: double
            example: 2
          cpuRequirements:
            type: integer
            description: Number of CPUs required for the execution
            format: int32
            example: 2
          cost:
            $ref: '#/components/schemas/Cost'
          region:
            type: string
            description: The region the workflow was executed in
            example: us-central1
    TaskExecutions:
      required:
      - dateExecuted
      - executionId
      type: object
      description: Metrics of individual tasks that were executed during the workflow
        execution.
      allOf:
      - $ref: '#/components/schemas/Execution'
      - type: object
        properties:
          taskExecutions:
            type: array
            description: Metrics of individual tasks that were executed during the
              workflow execution.
            items:
              $ref: '#/components/schemas/RunExecution'
    ValidationExecution:
      required:
      - dateExecuted
      - executionId
      - isValid
      - validatorTool
      - validatorToolVersion
      type: object
      description: Metrics of a workflow validated on a platform
      allOf:
      - $ref: '#/components/schemas/Execution'
      - type: object
        properties:
          validatorTool:
            type: string
            description: The validator tool used to validate the workflow
            example: miniwdl
            enum:
            - MINIWDL
            - WOMTOOL
            - CWLTOOL
            - NF_VALIDATION
            - OTHER
          validatorToolVersion:
            type: string
            description: The version of the validator tool
          isValid:
            type: boolean
            description: Boolean indicating if the workflow was validated successfully
            example: true
          errorMessage:
            type: string
            description: The error message for a failed validation by the validator
              tool
    ExecutionResponse:
      required:
      - executionId
      - status
      type: object
      properties:
        executionId:
          type: string
          description: The ID of the execution that the response is for
        status:
          type: integer
          description: The response status code of the action for the execution
          format: int32
        error:
          type: string
          description: The error message if one exists
      description: Response for a single execution metric as a result of an API
    ExecutionsResponseBody:
      type: object
      properties:
        executionResponses:
          type: array
          description: A list of responses for the executions submitted
          items:
            $ref: '#/components/schemas/ExecutionResponse'
      description: Response body model for execution metric APIs
    ServiceType:
      required:
      - artifact
      - group
      - version
      type: object
      properties:
        group:
          type: string
          description: "Namespace in reverse domain name format. Use `org.ga4gh` for\
            \ implementations compliant with official GA4GH specifications. For services\
            \ with custom APIs not standardized by GA4GH, or implementations diverging\
            \ from official GA4GH specifications, use a different namespace (e.g.\
            \ your organization's reverse domain name)."
          example: org.ga4gh
        artifact:
          type: string
          description: Name of the API or GA4GH specification implemented. Official
            GA4GH types should be assigned as part of standards approval process.
            Custom artifacts are supported.
          example: beacon
        version:
          type: string
          description: Version of the API or specification. GA4GH specifications use
            semantic versioning.
          example: 1.0.0
      description: Type of a GA4GH service
    TRSService:
      required:
      - id
      - name
      - organization
      - type
      - version
      type: object
      properties:
        id:
          type: string
          description: "Unique ID of this service. Reverse domain name notation is\
            \ recommended, though not required. The identifier should attempt to be\
            \ globally unique so it can be used in downstream aggregator services\
            \ e.g. Service Registry."
          example: org.ga4gh.myservice
        name:
          type: string
          description: Name of this service. Should be human readable.
          example: My project
        type:
          $ref: '#/components/schemas/ServiceType'
        description:
          type: string
          description: Description of the service. Should be human readable and provide
            information about the service.
          example: This service provides...
        organization:
          $ref: '#/components/schemas/TRSServiceOrganization'
        contactUrl:
          type: string
          description: "URL of the contact for the provider of this service, e.g.\
            \ a link to a contact form (RFC 3986 format), or an email (RFC 2368 format)."
          example: mailto:support@example.com
        documentationUrl:
          type: string
          description: "URL of the documentation of this service (RFC 3986 format).\
            \ This should help someone learn how to use your service, including any\
            \ specifics required to access data, e.g. authentication."
          example: https://docs.myservice.example.com
        createdAt:
          type: string
          description: Timestamp describing when the service was first deployed and
            available (RFC 3339 format)
          format: date-time
          example: 2019-06-04T12:58:19Z
        updatedAt:
          type: string
          description: Timestamp describing when the service was last updated (RFC
            3339 format)
          format: date-time
          example: 2019-06-04T12:58:19Z
        environment:
          type: string
          description: "Environment the service is running in. Use this to distinguish\
            \ between production, development and testing/staging deployments. Suggested\
            \ values are prod, test, dev, staging. However this is advised and not\
            \ enforced."
          example: test
        version:
          type: string
          description: "Version of the service being described. Semantic versioning\
            \ is recommended, but other identifiers, such as dates or commit hashes,\
            \ are also allowed. The version should be changed whenever the service\
            \ is updated."
          example: 1.0.0
      description: GA4GH service
    TRSServiceOrganization:
      required:
      - name
      - url
      type: object
      properties:
        name:
          type: string
          description: Name of the organization responsible for the service
          example: My organization
        url:
          type: string
          description: URL of the website of the organization (RFC 3986 format)
          example: https://example.com
      description: Organization providing the service
    ToolClass:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the class.
        name:
          type: string
          description: A short friendly name for the class.
        description:
          type: string
          description: A longer explanation of what this class is and what it can
            accomplish.
      description: "Describes a class (type) of tool allowing us to categorize workflows,\
        \ tasks, and maybe even other entities (such as services) separately."
    ImageData:
      type: object
      properties:
        registry_host:
          type: string
          description: A docker registry or a URL to a Singularity registry. Used
            along with image_name to locate a specific image.
          example: "[\"registry.hub.docker.com\"]"
        image_name:
          type: string
          description: Used in conjunction with a registry_url if provided to locate
            images.
          example: "[\"quay.io/seqware/seqware_full/1.1\",\"ubuntu:latest\"]"
        size:
          type: integer
          description: Size of the container in bytes.
          format: int64
        updated:
          type: string
          description: Last time the container was updated.
        checksum:
          type: array
          description: "A production (immutable) tool version is required to have\
            \ a hashcode. Not required otherwise, but might be useful to detect changes.\
            \  This exposes the hashcode for specific image versions to verify that\
            \ the container version pulled is actually the version that was indexed\
            \ by the registry."
          example:
          - checksum: 77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182
            type: sha256
          items:
            $ref: '#/components/schemas/Checksum'
        image_type:
          type: string
          enum:
          - Docker
          - Singularity
          - Conda
      description: Describes one container image.
    Tool:
      required:
      - id
      - organization
      - toolclass
      - url
      - versions
      type: object
      properties:
        url:
          type: string
          description: The URL for this tool in this registry.
          example: http://agora.broadinstitute.org/tools/123456
        id:
          type: string
          description: "A unique identifier of the tool, scoped to this registry."
          example: "123456"
        aliases:
          type: array
          description: Support for this parameter is optional for tool registries
            that support aliases. A list of strings that can be used to identify this
            tool which could be  straight up URLs.  This can be used to expose alternative
            ids (such as GUIDs) for a tool for registries. Can be used to match tools
            across registries.
          items:
            type: string
            description: Support for this parameter is optional for tool registries
              that support aliases. A list of strings that can be used to identify
              this tool which could be  straight up URLs.  This can be used to expose
              alternative ids (such as GUIDs) for a tool for registries. Can be used
              to match tools across registries.
        organization:
          type: string
          description: The organization that published the image.
        name:
          type: string
          description: The name of the tool.
        toolclass:
          $ref: '#/components/schemas/ToolClass'
        description:
          type: string
          description: The description of the tool.
        meta_version:
          type: string
          description: "The version of this tool in the registry. Iterates when fields\
            \ like the description, author, etc. are updated."
        has_checker:
          type: boolean
          description: Whether this tool has a checker tool associated with it.
        checker_url:
          type: string
          description: Optional url to the checker tool that will exit successfully
            if this tool produced the expected result given test data.
        versions:
          type: array
          description: A list of versions for this tool.
          items:
            $ref: '#/components/schemas/ToolVersion'
      description: "A tool (or described tool) is defined as a tuple of a descriptor\
        \ file (which potentially consists of multiple files), a set of container\
        \ images, and a set of instructions for creating those images."
    ToolVersion:
      required:
      - id
      - url
      type: object
      properties:
        author:
          type: array
          description: Contact information for the author of this version of the tool
            in the registry. (More complex authorship information is handled by the
            descriptor).
          items:
            type: string
            description: Contact information for the author of this version of the
              tool in the registry. (More complex authorship information is handled
              by the descriptor).
        name:
          type: string
          description: The name of the version.
        url:
          type: string
          description: The URL for this tool version in this registry.
          example: http://agora.broadinstitute.org/tools/123456/versions/1
        id:
          type: string
          description: An identifier of the version of this tool for this particular
            tool registry.
          example: v1
        is_production:
          type: boolean
          description: "This version of a tool is guaranteed to not change over time\
            \ (for example, a  tool built from a tag in git as opposed to a branch).\
            \ A production quality tool  is required to have a checksum"
        images:
          type: array
          description: "All known docker images (and versions/hashes) used by this\
            \ tool. If the tool has to evaluate any of the docker images strings at\
            \ runtime, those ones cannot be reported here."
          items:
            $ref: '#/components/schemas/ImageData'
        descriptor_type:
          type: array
          description: The type (or types) of descriptors available.
          items:
            type: string
            description: The type (or types) of descriptors available.
            enum:
            - CWL
            - WDL
            - NFL
            - GALAXY
            - SMK
            - SERVICE
            - JUPYTER
        descriptor_type_version:
          type: object
          additionalProperties:
            type: array
            description: "A map providing information about the language versions\
              \ used in this tool. The keys should be the same values used in the\
              \ `descriptor_type` field, and the value should be an array of all the\
              \ language versions used for the given `descriptor_type`. Depending\
              \ on the `descriptor_type` (e.g. CWL) multiple version values may be\
              \ used in a single tool."
            example:
              WDL:
              - "1.0"
              - "1.0"
              CWL:
              - v1.0.2
              NFL:
              - DSL2
            items:
              type: string
              description: "A map providing information about the language versions\
                \ used in this tool. The keys should be the same values used in the\
                \ `descriptor_type` field, and the value should be an array of all\
                \ the language versions used for the given `descriptor_type`. Depending\
                \ on the `descriptor_type` (e.g. CWL) multiple version values may\
                \ be used in a single tool."
              example: "{\"WDL\":[\"1.0\",\"1.0\"],\"CWL\":[\"v1.0.2\"],\"NFL\":[\"\
                DSL2\"]}"
          description: "A map providing information about the language versions used\
            \ in this tool. The keys should be the same values used in the `descriptor_type`\
            \ field, and the value should be an array of all the language versions\
            \ used for the given `descriptor_type`. Depending on the `descriptor_type`\
            \ (e.g. CWL) multiple version values may be used in a single tool."
          example:
            WDL:
            - "1.0"
            - "1.0"
            CWL:
            - v1.0.2
            NFL:
            - DSL2
        containerfile:
          type: boolean
          description: "Reports if this tool has a containerfile available. (For Docker-based\
            \ tools, this would indicate the presence of a Dockerfile)"
        meta_version:
          type: string
          description: "The version of this tool version in the registry. Iterates\
            \ when fields like the description, author, etc. are updated."
        verified:
          type: boolean
          description: Reports whether this tool has been verified by a specific organization
            or individual.
        verified_source:
          type: array
          description: "Source of metadata that can support a verified tool, such\
            \ as an email or URL."
          items:
            type: string
            description: "Source of metadata that can support a verified tool, such\
              \ as an email or URL."
        signed:
          type: boolean
          description: Reports whether this version of the tool has been signed.
        included_apps:
          type: array
          description: An array of IDs for the applications that are stored inside
            this tool.
          example:
          - https://bio.tools/tool/mytum.de/SNAP2/1
          - https://bio.tools/bioexcel_seqqc
          items:
            type: string
            description: An array of IDs for the applications that are stored inside
              this tool.
            example: "[\"https://bio.tools/tool/mytum.de/SNAP2/1\",\"https://bio.tools/bioexcel_seqqc\"\
              ]"
      description: A tool version describes a particular iteration of a tool as described
        by a reference to a specific image and/or documents.
    FileWrapper:
      type: object
      properties:
        content:
          type: string
          description: The content of the file itself. One of url or content is required.
        checksum:
          type: array
          description: "A production (immutable) tool version is required to have\
            \ a hashcode. Not required otherwise, but might be useful to detect changes. "
          example:
          - checksum: ea2a5db69bd20a42976838790bc29294df3af02b
            type: sha1
          items:
            $ref: '#/components/schemas/Checksum'
        image_type:
          $ref: '#/components/schemas/OneOfFileWrapperImageType'
        url:
          type: string
          description: "Optional url to the underlying content, should include version\
            \ information, and can include a git hash.  Note that this URL should\
            \ resolve to the raw unwrapped content that would otherwise be available\
            \ in content. One of url or content is required."
          example: "{\"descriptorfile\":{\"url\":\"https://raw.githubusercontent.com/ICGC-TCGA-PanCancer/pcawg_delly_workflow/ea2a5db69bd20a42976838790bc29294df3af02b/delly_docker/Delly.cwl\"\
            },\"containerfile\":{\"url\":\"https://raw.githubusercontent.com/ICGC-TCGA-PanCancer/pcawg_delly_workflow/c83478829802b4d36374870843821abe1b625a71/delly_docker/Dockerfile\"\
            }}"
      description: 'A file provides content for one of - A tool descriptor is a metadata
        document that describes one or more tools. - A tool document that describes
        how to test with one or more sample test JSON. - A containerfile is a document
        that describes how to build a particular container image. Examples include
        Dockerfiles for creating Docker images and Singularity recipes for Singularity
        images '
    OneOfFileWrapperImageType:
      type: object
      description: Optionally return additional information on the type of file this
        is
    ToolFile:
      type: object
      properties:
        path:
          type: string
          description: "Relative path of the file.  A descriptor's path can be used\
            \ with the GA4GH .../{type}/descriptor/{relative_path : .+} endpoint."
        file_type:
          type: string
          enum:
          - TEST_FILE
          - PRIMARY_DESCRIPTOR
          - SECONDARY_DESCRIPTOR
          - CONTAINERFILE
          - OTHER
        checksum:
          $ref: '#/components/schemas/Checksum'
    MetadataV20beta:
      required:
      - api_version
      - version
      type: object
      properties:
        version:
          type: string
        api_version:
          type: string
        country:
          type: string
        friendly_name:
          type: string
    ToolV20beta:
      required:
      - author
      - id
      - organization
      - toolclass
      - url
      - versions
      type: object
      properties:
        url:
          type: string
        id:
          type: string
        aliases:
          type: array
          items:
            type: string
        organization:
          type: string
        toolname:
          type: string
        toolclass:
          $ref: '#/components/schemas/ToolClassV20beta'
        description:
          type: string
        author:
          type: string
        meta_version:
          type: string
        contains:
          type: array
          items:
            type: string
        has_checker:
          type: boolean
        checker_url:
          type: string
        verified:
          type: boolean
        verified_source:
          type: string
        signed:
          type: boolean
        versions:
          type: array
          items:
            $ref: '#/components/schemas/ToolVersionV20beta'
    ToolVersionV20beta:
      required:
      - id
      - url
      type: object
      properties:
        name:
          type: string
        url:
          type: string
        id:
          type: string
        image:
          type: string
        registry_url:
          type: string
        image_name:
          type: string
        descriptor_type:
          type: array
          items:
            type: string
            enum:
            - SMK
            - CWL
            - WDL
            - NFL
            - SERVICE
            - GXFORMAT2
        containerfile:
          type: boolean
        meta_version:
          type: string
        verified:
          type: boolean
        verified_source:
          type: string
    ErrorV20beta:
      required:
      - code
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
    FileWrapperV20beta:
      type: object
      properties:
        content:
          type: string
        url:
          type: string
    ToolFileV20beta:
      type: object
      properties:
        path:
          type: string
        file_type:
          type: string
          enum:
          - TEST_FILE
          - PRIMARY_DESCRIPTOR
          - SECONDARY_DESCRIPTOR
          - CONTAINERFILE
          - OTHER
    ToolDockerfile:
      type: object
      properties:
        dockerfile:
          type: string
        url:
          type: string
    ToolDescriptor:
      required:
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - CWL
          - WDL
          - NFL
          - GALAXY
          - SMK
          - SERVICE
          - JUPYTER
        descriptor:
          type: string
        url:
          type: string
    ToolTestsV1:
      type: object
      properties:
        test:
          type: string
        url:
          type: string
  securitySchemes:
    BEARER:
      type: http
      scheme: bearer
