Cosmo Tech run API

Run Management

OpenAPI Specification

cosmo-tech-run-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Cosmo Tech Manager dataset run API
  description: Cosmo Tech Dataset Manager API
  version: 1.0.0-SNAPSHOT
servers:
- url: http://localhost:8080
security:
- oAuth2AuthCode: []
tags:
- name: run
  description: Run Management
paths:
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/runs/{run_id}:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    - $ref: '#/components/parameters/runId'
    get:
      operationId: getRun
      tags:
      - run
      description: Retrieve detailed information about a specific run.
      summary: Get the details of a run
      responses:
        '200':
          description: the Run details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'
              examples:
                Run:
                  $ref: '#/components/examples/BreweryRun'
            application/yaml:
              schema:
                $ref: '#/components/schemas/Run'
              examples:
                Run:
                  $ref: '#/components/examples/BreweryRun'
        '404':
          description: the Run specified is unknown or you don't have access to it
    delete:
      operationId: deleteRun
      tags:
      - run
      summary: Delete a run
      responses:
        '204':
          description: Request succeeded
        '400':
          description: Bad request
        '404':
          description: the Run specified is unknown or you don't have access to it
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/runs/{run_id}/status:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    - $ref: '#/components/parameters/runId'
    get:
      operationId: getRunStatus
      tags:
      - run
      description: Retrieve detailed execution status of a run.
      summary: get the status for the Run
      responses:
        '200':
          description: the run status details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunStatus'
              examples:
                Run:
                  $ref: '#/components/examples/BreweryRunStatus'
            application/yaml:
              schema:
                $ref: '#/components/schemas/RunStatus'
              examples:
                Run:
                  $ref: '#/components/examples/BreweryRunStatus'
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/runs/{run_id}/logs:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    - $ref: '#/components/parameters/runId'
    get:
      operationId: getRunLogs
      tags:
      - run
      description: Retrieve execution logs for a run as plain text. Logs are aggregated from all containers. May be truncated for long-running simulations.
      summary: get the logs for the Run
      responses:
        '200':
          description: the run logs details
          content:
            text/plain:
              schema:
                type: string
              examples:
                Run:
                  $ref: '#/components/examples/BreweryRunLogs'
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/runs:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    get:
      operationId: listRuns
      parameters:
      - name: page
        in: query
        description: page number to query (first page is at index 0)
        required: false
        schema:
          type: integer
      - name: size
        in: query
        description: amount of result by page
        required: false
        schema:
          type: integer
      tags:
      - run
      description: Retrieve a paginated list of all runs for a specific runner.
      summary: get the list of Runs for the Runner
      responses:
        '200':
          description: the run details list
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Run'
              examples:
                OneRun:
                  $ref: '#/components/examples/OneRun'
            application/yaml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Run'
              examples:
                OneRun:
                  $ref: '#/components/examples/OneRun'
components:
  examples:
    BreweryRunLogs:
      summary: Brewery Run logs example
      description: Brewery Run logs with plain text example
      value: '[2021-05-18T16:15:29Z] INFO: Starting run execution

        [2021-05-18T16:15:30Z] INFO: Fetching datasets...

        [2021-05-18T16:15:43Z] INFO: Datasets fetched successfully

        [2021-05-18T16:15:43Z] INFO: Applying parameters...

        [2021-05-18T16:15:53Z] INFO: Parameters applied successfully

        [2021-05-18T16:15:53Z] INFO: Validating data...

        [2021-05-18T16:16:03Z] INFO: Data validated successfully

        [2021-05-18T16:16:03Z] INFO: Starting pre-run container...

        [2021-05-18T16:16:25Z] INFO: Pre-run completed

        [2021-05-18T16:16:25Z] INFO: Starting main simulation...

        [2021-05-18T16:16:42Z] INFO: Simulation completed

        [2021-05-18T16:16:42Z] INFO: Starting post-run container...

        [2021-05-18T16:16:57Z] INFO: Post-run completed

        [2021-05-18T16:16:57Z] INFO: Run completed successfully

        '
    BreweryRunStatus:
      summary: Brewery status example
      description: Brewery Runner Run status example
      value:
        id: run-bDMr5lM9Vp
        organizationId: o-gZVQqV8B4pR7
        workspaceId: w-OGNQqJ7wP0
        runnerId: r-EEYpWeM0kW
        workflowId: workflow-a1b2c3d4-e5f6-7890-abcd-ef1234567890
        workflowName: workflow-brewery-lsczk
        createInfo:
          timestamp: 1621353329000
          userId: john.doe@cosmotech.com
        startTime: '2021-05-18T16:15:29.000Z'
        endTime: '2021-05-18T16:17:07.000Z'
        phase: Succeeded
        progress: 5/5
        message: null
        estimatedDuration: 98
        state: Successful
        nodes:
        - id: node-main-1
          name: workflow-brewery-lsczk
          containerName: main
          estimatedDuration: 98
          hostNodeName: null
          message: null
          phase: Succeeded
          progress: 5/5
          startTime: '2021-05-18T16:15:29.000Z'
          endTime: '2021-05-18T16:17:07.000Z'
        - id: node-apply-params-1
          name: workflow-brewery-lsczk.applyParametersContainer
          containerName: applyParametersContainer
          estimatedDuration: 14
          hostNodeName: worker-node-1
          message: null
          phase: Succeeded
          progress: 1/1
          startTime: '2021-05-18T16:15:29.000Z'
          endTime: '2021-05-18T16:15:43.000Z'
        - id: node-validate-data-1
          name: workflow-brewery-lsczk.validateDataContainer
          containerName: validateDataContainer
          estimatedDuration: 10
          hostNodeName: worker-node-1
          message: null
          phase: Succeeded
          progress: 1/1
          startTime: '2021-05-18T16:15:53.000Z'
          endTime: '2021-05-18T16:16:03.000Z'
        - id: node-prerun-1
          name: workflow-brewery-lsczk.preRunContainer
          containerName: preRunContainer
          estimatedDuration: 12
          hostNodeName: worker-node-1
          message: null
          phase: Succeeded
          progress: 1/1
          startTime: '2021-05-18T16:16:13.000Z'
          endTime: '2021-05-18T16:16:25.000Z'
        - id: node-run-1
          name: workflow-brewery-lsczk.runContainer
          containerName: runContainer
          estimatedDuration: 7
          hostNodeName: worker-node-2
          message: null
          phase: Succeeded
          progress: 1/1
          startTime: '2021-05-18T16:16:35.000Z'
          endTime: '2021-05-18T16:16:42.000Z'
        - id: node-postrun-1
          name: workflow-brewery-lsczk.postRunContainer
          containerName: postRunContainer
          estimatedDuration: 12
          hostNodeName: worker-node-1
          message: null
          phase: Succeeded
          progress: 1/1
          startTime: '2021-05-18T16:16:45.000Z'
          endTime: '2021-05-18T16:16:57.000Z'
    BreweryRun:
      summary: Brewery Run example
      description: Brewery Run example
      value:
        id: run-bDMr5lM9Vp
        state: Running
        organizationId: o-gZVQqV8B4pR7
        createInfo:
          timestamp: 1621353329000
          userId: john.doe@cosmotech.com
        workflowId: workflow-a1b2c3d4-e5f6-7890-abcd-ef1234567890
        csmSimulationRun: sim-a2b3c4d5-e6f7-8901-bcde-f12345678901
        generateName: workflow-brewery-
        workflowName: workflow-brewery-lsczk
        workspaceId: w-OGNQqJ7wP0
        workspaceKey: Brewery
        runnerId: r-EEYpWeM0kW
        solutionId: sol-w4Kn79JXKz
        runTemplateId: hundred
        computeSize: basic
        datasetList:
        - d-1AbCdEfGhIj
        - d-2XyZaBcDeFg
        parametersValues:
        - parameterId: stock
          varType: int
          value: '100'
        - parameterId: restock
          varType: int
          value: '50'
        nodeLabel: basicpool
    OneRun:
      summary: Brewery Run list example
      description: Brewery Run list example
      value:
      - id: run-dEfGhIjKlMn
        state: Successful
        organizationId: o-gZVQqV8B4pR7
        createInfo:
          timestamp: 1621353329000
          userId: john.doe@cosmotech.com
        workflowId: c3d4e5f6-a7b8-9012-cdef-a34567890123
        csmSimulationRun: c4d5e6f7-b8a9-0123-defg-b45678901234
        generateName: workflow-list-
        workflowName: workflow-list-xyz789
        workspaceId: w-OGNQqJ7wP0
        workspaceKey: Brewery
        runnerId: r-EEYpWeM0kW
        solutionId: sol-w4Kn79JXKz
        runTemplateId: hundred
        computeSize: basic
        datasetList:
        - d-1AbCdEfGhIj
        parametersValues:
        - parameterId: stock
          varType: int
          value: '100'
        nodeLabel: basicpool
  parameters:
    workspaceId:
      name: workspace_id
      in: path
      description: The Workspace identifier
      required: true
      schema:
        type: string
        pattern: ^w-\w{10,20}
    runId:
      name: run_id
      in: path
      description: The Run identifier
      required: true
      schema:
        type: string
        pattern: ^(run|sr)-\w{10,20}
    runnerId:
      name: runner_id
      in: path
      description: The Runner identifier
      required: true
      schema:
        type: string
        pattern: ^(r|s)-\w{10,20}
    organizationId:
      name: organization_id
      in: path
      description: The Organization identifier
      required: true
      schema:
        type: string
        pattern: ^o-\w{10,20}
  schemas:
    ContainerResourceSizing:
      type: object
      description: a description object for resource requests and limits (default same configuration as basic sizing)
      properties:
        requests:
          $ref: '#/components/schemas/ContainerResourceSizeInfo'
        limits:
          $ref: '#/components/schemas/ContainerResourceSizeInfo'
      required:
      - requests
      - limits
    RunStatusNode:
      type: object
      description: status of a Run Node
      properties:
        id:
          type: string
          description: the node id
        name:
          type: string
          description: the node unique name
        containerName:
          type: string
          description: the Run container name
        outboundNodes:
          type: array
          readOnly: true
          description: the list of outbound nodes
          items:
            type: string
        resourcesDuration:
          $ref: '#/components/schemas/RunResourceRequested'
        estimatedDuration:
          type: integer
          description: estimatedDuration in seconds
        hostNodeName:
          type: string
          description: HostNodeName name of the Kubernetes node on which the Pod is running, if applicable
        message:
          type: string
          description: a human readable message indicating details about why the node is in this condition
        phase:
          type: string
          description: high-level summary of where the node is in its lifecycle
        progress:
          type: string
          description: progress to completion
        startTime:
          type: string
          description: the node start time
        endTime:
          type: string
          description: the node end time
    ContainerResourceSizeInfo:
      type: object
      description: Define cpus and memory needs
      properties:
        cpu:
          type: string
          description: Define cpu needs
        memory:
          type: string
          description: Define memory needs
      required:
      - cpu
      - memory
    RunContainer:
      type: object
      description: a Run container description
      properties:
        id:
          type: string
          readOnly: true
          description: the container Id
        name:
          type: string
          description: the container name
        labels:
          type: object
          description: the metadata labels
          additionalProperties:
            type: string
        envVars:
          type: object
          description: environment variable map
          additionalProperties:
            type: string
        image:
          type: string
          description: the container image URI
        entrypoint:
          type: string
          description: the container entry point
        runArgs:
          type: array
          description: the list of run arguments for the container
          items:
            type: string
        dependencies:
          type: array
          description: the list of dependencies container name to run this container
          items:
            type: string
        solutionContainer:
          type: boolean
          readOnly: true
          description: whether or not this container is a Cosmo Tech solution container
        nodeLabel:
          type: string
          description: the node label request
        runSizing:
          $ref: '#/components/schemas/ContainerResourceSizing'
      required:
      - name
      - image
    RunTemplateParameterValue:
      type: object
      description: the value of Analysis parameter for a Runner for this Run
      properties:
        parameterId:
          type: string
          description: the parameter Id
        varType:
          type: string
          readOnly: true
          description: the parameter value type
        value:
          type: string
          description: the parameter value
      required:
      - parameterId
      - value
    RunState:
      type: string
      readOnly: true
      description: the Run end-to-end state
      enum:
      - Running
      - Successful
      - Failed
      - Unknown
      - NotStarted
    RunResourceRequested:
      type: object
      description: the memory and CPU requested by the pod
      properties:
        cpu:
          type: integer
          format: int64
          description: Define cpu needs
        memory:
          type: integer
          format: int64
          description: Define memory needs
    RunStatus:
      type: object
      description: a Run status
      properties:
        id:
          type: string
          description: the Run id
        organizationId:
          type: string
          description: the Organization id
        workspaceId:
          type: string
          description: the Workspace id
        runnerId:
          type: string
          description: the Runner id
        workflowId:
          type: string
          description: the Cosmo Tech compute cluster Argo Workflow Id to search
        workflowName:
          type: string
          description: the Cosmo Tech compute cluster Argo Workflow Name
        createInfo:
          description: The timestamp of the Run creation in milliseconds
          allOf:
          - $ref: '#/components/schemas/RunEditInfo'
        startTime:
          type: string
          description: the Run start Date Time
        endTime:
          type: string
          description: the Run end Date Time
        phase:
          type: string
          description: high-level summary of where the workflow is in its lifecycle
        progress:
          type: string
          description: progress to completion
        message:
          type: string
          description: a  human readable message indicating details about why the workflow is in this condition
        estimatedDuration:
          type: integer
          description: estimatedDuration in seconds
        nodes:
          type: array
          description: status of Run nodes
          items:
            $ref: '#/components/schemas/RunStatusNode'
        state:
          $ref: '#/components/schemas/RunState'
    RunEditInfo:
      type: object
      properties:
        timestamp:
          description: The timestamp of the modification in millisecond
          type: integer
          format: int64
        userId:
          description: The id of the user who did the modification
          type: string
      required:
      - timestamp
      - userId
    Run:
      type: object
      x-class-extra-annotation: '@com.redis.om.spring.annotations.Document'
      description: a Run with only base properties
      properties:
        id:
          type: string
          x-field-extra-annotation: '@org.springframework.data.annotation.Id'
          readOnly: true
          description: the Run
        state:
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Searchable'
          allOf:
          - $ref: '#/components/schemas/RunState'
        organizationId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: the Organization id
        createInfo:
          description: The details of the Run creation
          allOf:
          - $ref: '#/components/schemas/RunEditInfo'
        workflowId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: the Cosmo Tech compute cluster Argo Workflow Id to search
        csmSimulationRun:
          type: string
          readOnly: true
          description: the Cosmo Tech Simulation Run Id
        generateName:
          type: string
          description: the base name for workflow name generation
        workflowName:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: the Cosmo Tech compute cluster Argo Workflow Name
        workspaceId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          readOnly: true
          description: the Workspace Id
        workspaceKey:
          type: string
          readOnly: true
          description: technical key for resource name convention and version grouping. Must be unique
        runnerId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          readOnly: true
          description: the Runner Id
        solutionId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          readOnly: true
          description: the Solution Id
        runTemplateId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          readOnly: true
          description: the Solution Run Template id
        computeSize:
          type: string
          readOnly: true
          description: the compute size needed for this Analysis. Standard sizes are basic and highcpu. Default is basic
        datasetList:
          type: array
          readOnly: true
          description: the list of Dataset Id associated to this Run
          items:
            type: string
        parametersValues:
          type: array
          readOnly: true
          description: the list of Run Template parameters values
          items:
            $ref: '#/components/schemas/RunTemplateParameterValue'
        nodeLabel:
          type: string
          readOnly: true
          description: the node label request
        containers:
          type: array
          description: the containers list. This information is not returned by the API.
          items:
            $ref: '#/components/schemas/RunContainer'
      required:
      - createInfo
  securitySchemes:
    oAuth2AuthCode:
      type: oauth2
      description: OAuth2 authentication
      flows:
        authorizationCode:
          authorizationUrl: https://example.com/authorize
          tokenUrl: https://example.com/token
          scopes: {}