Cosmo Tech runner API

Runner Management

OpenAPI Specification

cosmo-tech-runner-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Cosmo Tech Manager dataset runner API
  description: Cosmo Tech Dataset Manager API
  version: 1.0.0-SNAPSHOT
servers:
- url: http://localhost:8080
security:
- oAuth2AuthCode: []
tags:
- name: runner
  description: Runner Management
paths:
  /organizations/{organization_id}/workspaces/{workspace_id}/runners:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    post:
      operationId: createRunner
      tags:
      - runner
      description: Create a new runner for executing simulations. Use parentId to create a child runner that inherits configuration from a parent.
      summary: Create a new Runner
      requestBody:
        description: the Runner to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunnerCreateRequest'
            examples:
              MasterRunner:
                $ref: '#/components/examples/BreweryRunnerIn'
              ChildRunner:
                $ref: '#/components/examples/BreweryChildRunnerIn'
          application/yaml:
            schema:
              $ref: '#/components/schemas/RunnerCreateRequest'
            examples:
              MasterRunner:
                $ref: '#/components/examples/BreweryRunnerIn'
              ChildRunner:
                $ref: '#/components/examples/BreweryChildRunnerIn'
      responses:
        '201':
          description: the runner details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Runner'
              examples:
                Runner:
                  $ref: '#/components/examples/BreweryRunner'
            application/yaml:
              schema:
                $ref: '#/components/schemas/Runner'
              examples:
                Runner:
                  $ref: '#/components/examples/BreweryRunner'
        '400':
          description: Bad request
    get:
      operationId: listRunners
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      tags:
      - runner
      description: Retrieve a paginated list of all runners in a workspace.
      summary: List all Runners
      responses:
        '200':
          description: the list of Runners
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Runner'
              examples:
                ThreeRunner:
                  $ref: '#/components/examples/ThreeRunners'
            application/yaml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Runner'
              examples:
                ThreeRunner:
                  $ref: '#/components/examples/ThreeRunners'
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    get:
      operationId: getRunner
      tags:
      - runner
      description: Retrieve detailed information about a runner.
      summary: Get the details of a runner
      responses:
        '200':
          description: the Runner details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Runner'
              examples:
                Runner:
                  $ref: '#/components/examples/BreweryRunner'
            application/yaml:
              schema:
                $ref: '#/components/schemas/Runner'
              examples:
                Runner:
                  $ref: '#/components/examples/BreweryRunner'
        '404':
          description: the Runner specified is unknown or you don't have access to it
    patch:
      operationId: updateRunner
      tags:
      - runner
      summary: Update a runner
      requestBody:
        description: the new Runner details. This endpoint can't be used to update security
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunnerUpdateRequest'
            examples:
              BreweryUpdate:
                $ref: '#/components/examples/BreweryRunnerUpdate'
          application/yaml:
            schema:
              $ref: '#/components/schemas/RunnerUpdateRequest'
            examples:
              BreweryUpdate:
                $ref: '#/components/examples/BreweryRunnerUpdate'
      responses:
        '200':
          description: the runner details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Runner'
              examples:
                BreweryUpdated:
                  $ref: '#/components/examples/BreweryRunnerUpdated'
            application/yaml:
              schema:
                $ref: '#/components/schemas/Runner'
              examples:
                BreweryUpdated:
                  $ref: '#/components/examples/BreweryRunnerUpdated'
        '400':
          description: Bad request
        '404':
          description: the Runner specified is unknown or you don't have access to it
    delete:
      operationId: deleteRunner
      tags:
      - runner
      description: 'Delete a runner. Cannot delete while runs are in progress. Note: Child runners that reference this runner are not deleted automatically.'
      summary: Delete a runner
      responses:
        '204':
          description: Request succeeded
        '404':
          description: the Runner specified is unknown or you don't have access to it
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/start:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    post:
      operationId: startRun
      tags:
      - runner
      description: Start a new simulation run using the runner's current configuration. Returns the run Id. The run executes asynchronously - use the run status endpoint to monitor progress
      summary: Start a run with runner parameters
      responses:
        '202':
          description: the newly created Run info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatedRun'
            application/yaml:
              schema:
                $ref: '#/components/schemas/CreatedRun'
        '404':
          description: the Runner specified is unknown or you don't have access to it
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/stop:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    post:
      operationId: stopRun
      tags:
      - runner
      description: Stop the currently executing run for this runner. The stop operation is asynchronous - the run may continue briefly before stopping.
      summary: Stop the last run
      responses:
        '202':
          description: the last Run has been stopped
        '404':
          description: the Runner specified is unknown or you don't have access to it
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/permissions/{role}:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    - name: role
      in: path
      description: the Role
      required: true
      schema:
        type: string
    get:
      operationId: listRunnerPermissions
      tags:
      - runner
      summary: Get the Runner permission by given role
      responses:
        '200':
          description: The Runners security permission list
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              examples:
                RunnerRolePermissions:
                  $ref: '#/components/examples/RunnerRolePermissions'
            application/yaml:
              schema:
                type: array
                items:
                  type: string
              examples:
                RunnerRolePermissions:
                  $ref: '#/components/examples/RunnerRolePermissions'
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/security:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    get:
      operationId: getRunnerSecurity
      tags:
      - runner
      summary: Get the Runner security information
      responses:
        '200':
          description: The Runner security
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunnerSecurity'
              examples:
                RunnerSecurity:
                  $ref: '#/components/examples/BreweryRunnerSecurity'
            application/yaml:
              schema:
                $ref: '#/components/schemas/RunnerSecurity'
              examples:
                RunnerSecurity:
                  $ref: '#/components/examples/BreweryRunnerSecurity'
        '404':
          description: the Runner specified is unknown or you don't have access to it
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/security/default:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    patch:
      operationId: updateRunnerDefaultSecurity
      tags:
      - runner
      summary: Set the Runner default security
      requestBody:
        description: This change the runner default security. The default security is the role assigned to any person not on the Access Control List. If the default security is None, then nobody outside of the ACL can access the runner.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunnerRole'
            examples:
              BreweryRunnerRole:
                $ref: '#/components/examples/BreweryRunnerRole'
          application/yaml:
            schema:
              $ref: '#/components/schemas/RunnerRole'
            examples:
              BreweryRunnerRole:
                $ref: '#/components/examples/BreweryRunnerRole'
      responses:
        '201':
          description: The Runner default visibility
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunnerSecurity'
              examples:
                NoneRunnerSecurity:
                  $ref: '#/components/examples/BreweryDefaultSecurityRoleNone'
                WriterRunnerSecurity:
                  $ref: '#/components/examples/BreweryDefaultSecurityRoleWriter'
            application/yaml:
              schema:
                $ref: '#/components/schemas/RunnerSecurity'
              examples:
                NoneRunnerSecurity:
                  $ref: '#/components/examples/BreweryDefaultSecurityRoleNone'
                WriterRunnerSecurity:
                  $ref: '#/components/examples/BreweryDefaultSecurityRoleWriter'
        '404':
          description: the Runner specified is unknown or you don't have access to it
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/security/access:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    post:
      operationId: createRunnerAccessControl
      tags:
      - runner
      description: 'Grant access to a runner for a user or group. Valid roles: viewer, editor, validator (can validate runs), admin.'
      summary: Add a control access to the Runner
      requestBody:
        description: the new Runner security access to add.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunnerAccessControl'
            examples:
              RunnerAccess:
                $ref: '#/components/examples/BreweryRunnerAccessControl'
          application/yaml:
            schema:
              $ref: '#/components/schemas/RunnerAccessControl'
            examples:
              RunnerAccess:
                $ref: '#/components/examples/BreweryRunnerAccessControl'
      responses:
        '201':
          description: The Runner access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunnerAccessControl'
              examples:
                RunnerAccessControl:
                  $ref: '#/components/examples/BreweryRunnerAccessControl'
            application/yaml:
              schema:
                $ref: '#/components/schemas/RunnerAccessControl'
              examples:
                RunnerAccessControl:
                  $ref: '#/components/examples/BreweryRunnerAccessControl'
        '404':
          description: the Runner specified is unknown or you don't have access to it
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/security/access/{identity_id}:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    - name: identity_id
      in: path
      description: the User identifier
      required: true
      schema:
        type: string
    get:
      operationId: getRunnerAccessControl
      tags:
      - runner
      summary: Get a control access for the Runner
      responses:
        '200':
          description: The Runner access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunnerAccessControl'
              examples:
                RunnerAccessControl:
                  $ref: '#/components/examples/BreweryRunnerAccessControl'
            application/yaml:
              schema:
                $ref: '#/components/schemas/RunnerAccessControl'
              examples:
                RunnerAccessControl:
                  $ref: '#/components/examples/BreweryRunnerAccessControl'
        '404':
          description: the Runner or user specified is unknown or you don't have access to it
    patch:
      operationId: updateRunnerAccessControl
      tags:
      - runner
      summary: Update the specified access to User for a Runner
      requestBody:
        description: The new Runner Access Control
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunnerRole'
            examples:
              BreweryRunnerRole:
                $ref: '#/components/examples/BreweryRunnerRole'
          application/yaml:
            schema:
              $ref: '#/components/schemas/RunnerRole'
            examples:
              BreweryRunnerRole:
                $ref: '#/components/examples/BreweryRunnerRole'
      responses:
        '200':
          description: The Runner access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunnerAccessControl'
              examples:
                RunnerAccessControl:
                  $ref: '#/components/examples/BreweryRunnerAccessControl'
            application/yaml:
              schema:
                $ref: '#/components/schemas/RunnerAccessControl'
              examples:
                RunnerAccessControl:
                  $ref: '#/components/examples/BreweryRunnerAccessControl'
        '404':
          description: The Organization specified is unknown or you don't have access to it
    delete:
      operationId: deleteRunnerAccessControl
      tags:
      - runner
      summary: Remove the specified access from the given Runner
      responses:
        '204':
          description: Request succeeded
        '404':
          description: the Runner or the user specified is unknown or you don't have access to them
  /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/security/users:
    parameters:
    - $ref: '#/components/parameters/organizationId'
    - $ref: '#/components/parameters/workspaceId'
    - $ref: '#/components/parameters/runnerId'
    get:
      operationId: listRunnerSecurityUsers
      tags:
      - runner
      summary: Get the Runner security users list
      responses:
        '200':
          description: The Runner security users list
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                example:
                - alice@mycompany.com
                - bob@mycompany.com
            application/yaml:
              schema:
                type: array
                items:
                  type: string
                example:
                - alice@mycompany.com
                - bob@mycompany.com
        '404':
          description: the Runner specified is unknown or you don't have access to it
components:
  schemas:
    RunnerAccessControl:
      type: object
      description: a Runner access control item
      properties:
        id:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: the identity id
        role:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: a role
      required:
      - id
      - role
    ResourceSizeInfo:
      type: object
      description: "Define CPUs and memory needs.\nValues must follow the Kubernetes resource requirements/limits syntax: \nSee https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes\n"
      properties:
        cpu:
          type: string
          description: Define cpu needs
        memory:
          type: string
          description: Define memory needs
      required:
      - cpu
      - memory
    RunnerResourceSizing:
      type: object
      description: "A description object for resource requests and limits.\nValues must follow the Kubernetes resource requirements/limits syntax: \nSee https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes\nDefault configuration is basic sizing\n"
      properties:
        requests:
          $ref: '#/components/schemas/ResourceSizeInfo'
        limits:
          $ref: '#/components/schemas/ResourceSizeInfo'
      required:
      - requests
      - limits
    RunnerRole:
      type: object
      description: the Runner Role
      properties:
        role:
          type: string
          description: the Runner Role
      required:
      - role
    RunnerRunTemplateParameterValue:
      type: object
      description: the value of a Solution Run Template parameter for a Runner
      properties:
        parameterId:
          type: string
          description: the parameter Id
        varType:
          type: string
          description: the parameter value type
        value:
          type: string
          description: the parameter value
        isInherited:
          type: boolean
          description: whether or not the value is inherited from parent or has been changed
      required:
      - parameterId
      - value
    RunnerValidationStatus:
      type: string
      description: the validation status of the runner
      enum:
      - Draft
      - Rejected
      - Unknown
      - Validated
    RunnerStatus:
      type: string
      description: the status of the runner
      enum:
      - Ok
      - Archived
    RunnerSecurity:
      type: object
      description: the Runner security information
      properties:
        default:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: the role by default
        accessControlList:
          type: array
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: the list which can access this Runner with detailed access control information
          items:
            $ref: '#/components/schemas/RunnerAccessControl'
      required:
      - default
      - accessControlList
    Runner:
      type: object
      x-class-extra-annotation: '@com.redis.om.spring.annotations.Document'
      description: a Runner with complete information
      properties:
        id:
          type: string
          x-field-extra-annotation: '@org.springframework.data.annotation.Id'
          readOnly: true
          description: the Runner unique identifier
        name:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Searchable'
          description: the Runner name
        description:
          type: string
          description: the Runner description
        tags:
          type: array
          description: the list of tags
          items:
            type: string
        parentId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: the Runner parent id
        createInfo:
          description: The details of the Runner creation
          allOf:
          - $ref: '#/components/schemas/RunnerEditInfo'
        updateInfo:
          description: The details of the Runner last update
          allOf:
          - $ref: '#/components/schemas/RunnerEditInfo'
        rootId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          readOnly: true
          description: the runner root id
        solutionId:
          type: string
          readOnly: true
          description: the Solution Id associated with this Runner
        runTemplateId:
          type: string
          description: the Solution Run Template Id associated with this Runner
        organizationId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          readOnly: true
          description: the associated Organization Id
        workspaceId:
          type: string
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          readOnly: true
          description: the associated Workspace Id
        solutionName:
          type: string
          readOnly: true
          description: the Solution name
        runTemplateName:
          type: string
          readOnly: true
          description: the Solution Run Template name associated with this Runner
        additionalData:
          type: object
          description: Free form additional data
          additionalProperties: true
        datasets:
          allOf:
          - $ref: '#/components/schemas/RunnerDatasets'
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: definition of datasets used by the runner
        runSizing:
          allOf:
          - $ref: '#/components/schemas/RunnerResourceSizing'
          description: definition of resources needed for the runner run
        parametersValues:
          type: array
          description: the list of Solution Run Template parameters values
          items:
            $ref: '#/components/schemas/RunnerRunTemplateParameterValue'
        lastRunInfo:
          allOf:
          - $ref: '#/components/schemas/LastRunInfo'
          description: last run info from current runner
        status:
          allOf:
          - $ref: '#/components/schemas/RunnerStatus'
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          default: Ok
        validationStatus:
          allOf:
          - $ref: '#/components/schemas/RunnerValidationStatus'
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Searchable'
        security:
          allOf:
          - $ref: '#/components/schemas/RunnerSecurity'
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
      required:
      - id
      - name
      - createInfo
      - updateInfo
      - solutionId
      - runTemplateId
      - organizationId
      - workspaceId
      - datasets
      - parametersValues
      - lastRunInfo
      - validationStatus
      - security
    RunnerCreateRequest:
      type: object
      description: Request object for creating a new runner
      properties:
        name:
          type: string
          description: the Runner name
          minLength: 1
          x-size-message: cannot be empty
        description:
          type: string
          description: the Runner description
        tags:
          type: array
          description: the list of tags
          items:
            type: string
        solutionId:
          type: string
          description: the Solution Id associated with this Runner
          pattern: ^sol-\w{10,20}
          example: sol-123456aBcDeF
        parentId:
          type: string
          description: the Runner parent id
          pattern: ^r-\w{10,20}
          example: r-123456aBcDeF
        runTemplateId:
          type: string
          description: the Solution Run Template Id associated with this Runner
          minLength: 1
          x-size-message: cannot be empty
        datasetList:
          type: array
          description: the list of Dataset Id associated to this Runner Run Template
          items:
            type: string
          default: []
        runSizing:
          allOf:
          - $ref: '#/components/schemas/RunnerResourceSizing'
          description: definition of resources needed for the runner run
        parametersValues:
          type: array
          description: the list of Solution Run Template parameters values
          items:
            $ref: '#/components/schemas/RunnerRunTemplateParameterValue'
          default: []
        additionalData:
          type: object
          description: Free form additional data
          additionalProperties: true
        solutionName:
          type: string
          description: the Solution name
          minLength: 1
          x-size-message: cannot be empty
        runTemplateName:
          type: string
          description: the Solution Run Template name associated with this Runner
          minLength: 1
          x-size-message: cannot be empty
        security:
          $ref: '#/components/schemas/RunnerSecurity'
      required:
      - name
      - solutionId
      - runTemplateId
    LastRunInfo:
      type: object
      description: last run info from current runner
      properties:
        lastRunId:
          description: last run id from current runner
          type: string
        lastRunStatus:
          description: last run status from current runner
          type: string
          enum:
          - NotStarted
          - Running
          - Successful
          - Failed
          - Unknown
    RunnerEditInfo:
      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
    RunnerDatasets:
      type: object
      properties:
        bases:
          type: array
          description: a list of Dataset Id used to build the Runner
          items:
            type: string
        parameter:
          x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
          description: The dataset id used for dataset parameters on current Runner
          type: string
        parameters:
          description: The dataset parts retrieved from the parameter property (programmatically fulfilled)
          type: array
          items:
            type: object
      required:
      - bases
      - parameter
    RunnerUpdateRequest:
      type: object
      description: Request object for updating a runner
      properties:
        name:
          type: string
          description: the Runner name
          minLength: 1
          x-size-message: cannot be empty
        description:
          type: string
          description: the Runner description
        tags:
          type: array
          description: the list of tags
          items:
            type: string
        runTemplateId:
          type: string
          description: the Solution Run Template Id associated with this Runner
          minLength: 1
          x-size-message: cannot be empty
        datasetList:
          type: array
          description: the list of Dataset Id associated to this Runner Run Template
          items:
            type: string
        runSizing:
          allOf:
          - $ref: '#/components/schemas/RunnerResourceSizing'
          description: definition of resources needed for the runner run
        parametersValues:
          type: array
          description: the list of Solution Run Template parameters values
          items:
            $ref: '#/components/schemas/RunnerRunTemplateParameterValue'
        additionalData:
          type: object
          description: Free form additional data
          additionalProperties: true
        solutionName:
          type: string
          description: the Solution name
          minLength: 1
          x-size-message: cannot be empty
        runTemplateName:
          type: string
          description: the Solution Run Template name associated with this Runner
          minLength: 1
          x-size-message: cannot be empty
        validationStatus:
          allOf:
          - $ref: '#/components/schemas/RunnerValidationStatus'
    CreatedRun:
      type: object
      description: Newly created Run info
      properties:
        id:
          type: string
          description: Run id
      required:
      - id
  examples:
    ThreeRunners:
      summary: Three Runners with parent and children
      description: Three Runners with parent master Runner and two children Runners
      value:
      - id: r-1AbCdEfGhIj
        organizationId: o-gZVQqV8B4pR7
        workspaceId: w-1AbCdEfGhIj
        name: Brewery Master Analysis
        description: Brewery master reference analysis
        tags:
        - Brewery
        - reference
        solutionId: sol-feo16eua48o
        solutionName: Brewery Solution
        runTemplateId: hundred
        runTemplateName: Full simulation 100 steps
        createInfo:
          timestamp: 1621353329000
          userId: john.doe@cosmotech.com
        updateInfo:
          timestamp: 1621353329000
          userId: john.doe@cosmotech.com
        datasets:
          bases:
          - d-1AbCdEfGhIj
          parameter: d-vxn7fnw5tHc
        parametersValues:
        - parameterId: prefix
          varType: string
          value: ''
        lastRunInfo:
          lastRunId: run-bDMr5lM9Vp
          lastRunStatus: Successful
        validationStatus: Validated
        security:
          default: viewer
          accessControlList:
          - id: alice.doe@cosmotech.com
            role: admin
      - id: r-2XyZaBcDeFg
        organizationId: o-gZVQqV8B4pR7
        workspaceId: w-1AbCdEfGhIj
        parentId: r-1AbCdEfGhIj
        name: Brewery Analysis name example
        description: Brewery analysis with example as name prefix
        tags:
        - Brewery
        - example
        solutionId: sol-feo16eua48o
        solutionName: Brewery Solution
        runTemplateId: hundred
        runTemplateName: Full simulation 100 steps
        createInfo:
          timestamp: 1621353329000
          userId: john.doe@cosmotech.com
        updateInfo:
          timestamp: 1621353329000
          userId: john.doe@cosmotech.com
        datasets:
          bases:
          - d-1AbCdEfGhIj
          parameter: d-vxn7fnw5tHc
        parametersValues:
        - parameterId: prefix
          varType: string
          value: example
        lastRunInfo:
          lastRunId: run-bDMr5lM9Vp
          lastRunStatus: Successful
        validationStatus: Val

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cosmo-tech/refs/heads/main/openapi/cosmo-tech-runner-api-openapi.yml