OpenAPI Specification
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