OpenAPI Specification
openapi: 3.0.3
info:
title: Cosmo Tech Manager dataset solution API
description: Cosmo Tech Dataset Manager API
version: 1.0.0-SNAPSHOT
servers:
- url: http://localhost:8080
security:
- oAuth2AuthCode: []
tags:
- name: solution
description: Solution Management
paths:
/organizations/{organization_id}/solutions:
parameters:
- $ref: '#/components/parameters/organizationId'
post:
operationId: createSolution
tags:
- solution
description: Create a new solution with optional run templates and parameter definitions.
summary: Create a new solution
requestBody:
description: The Solution to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionCreateRequest'
examples:
BreweryCreate:
$ref: '#/components/examples/BreweryCreate'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionCreateRequest'
examples:
BreweryCreate:
$ref: '#/components/examples/BreweryCreate'
responses:
'201':
description: Solution successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/Solution'
examples:
Brewery:
$ref: '#/components/examples/Brewery'
application/yaml:
schema:
$ref: '#/components/schemas/Solution'
examples:
Brewery:
$ref: '#/components/examples/Brewery'
'400':
description: Bad request
get:
operationId: listSolutions
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/size'
tags:
- solution
description: Retrieve a paginated list of all solutions in an organization that the user has permission to view.
summary: List all Solutions
responses:
'200':
description: List of solutions successfully retrieved
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Solution'
examples:
SolutionList:
$ref: '#/components/examples/SolutionList'
application/yaml:
schema:
type: array
items:
$ref: '#/components/schemas/Solution'
examples:
SolutionList:
$ref: '#/components/examples/SolutionList'
/organizations/{organization_id}/solutions/{solution_id}:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
get:
operationId: getSolution
tags:
- solution
description: Retrieve detailed information about a solution.
summary: Get the details of a solution
responses:
'200':
description: Solution details successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/Solution'
examples:
Brewery:
$ref: '#/components/examples/Brewery'
application/yaml:
schema:
$ref: '#/components/schemas/Solution'
examples:
Brewery:
$ref: '#/components/examples/Brewery'
'404':
description: Solution not found or insufficient access rights
patch:
operationId: updateSolution
tags:
- solution
summary: Update a solution
requestBody:
description: The new Solution details. This endpoint can't be used to update security
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionUpdateRequest'
examples:
BreweryUpdate:
$ref: '#/components/examples/BreweryUpdate'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionUpdateRequest'
examples:
BreweryUpdate:
$ref: '#/components/examples/BreweryUpdate'
responses:
'200':
description: Solution successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/Solution'
examples:
BreweryUpdated:
$ref: '#/components/examples/BreweryUpdated'
application/yaml:
schema:
$ref: '#/components/schemas/Solution'
examples:
BreweryUpdated:
$ref: '#/components/examples/BreweryUpdated'
'400':
description: Bad request - Invalid update parameters
'404':
description: Solution not found or insufficient access rights
delete:
operationId: deleteSolution
tags:
- solution
summary: Delete a solution
responses:
'204':
description: Solution successfully deleted
'404':
description: Solution not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/parameters:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
get:
operationId: listSolutionParameters
tags:
- solution
summary: List all solution parameters
responses:
'200':
description: Parameters successfully retrieved
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RunTemplateParameter'
examples:
ParameterList:
$ref: '#/components/examples/ParameterList'
application/yaml:
schema:
type: array
items:
$ref: '#/components/schemas/RunTemplateParameter'
examples:
ParameterList:
$ref: '#/components/examples/ParameterList'
'400':
description: Bad Request
'404':
description: Solution not found or insufficient access rights
post:
operationId: createSolutionParameter
tags:
- solution
summary: Create solution parameter for a solution
requestBody:
description: Parameter to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameterCreateRequest'
examples:
ParameterCreate:
$ref: '#/components/examples/ParameterCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameterCreateRequest'
examples:
ParameterCreate:
$ref: '#/components/examples/ParameterCreate'
responses:
'200':
description: Parameters successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameter'
examples:
ParameterCreate:
$ref: '#/components/examples/ParameterCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameter'
examples:
ParameterCreate:
$ref: '#/components/examples/ParameterCreate'
'400':
description: Bad request
'404':
description: Solution not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/parameters/{parameter_id}:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
- $ref: '#/components/parameters/parameterId'
get:
operationId: getSolutionParameter
tags:
- solution
summary: Get the details of a solution parameter
responses:
'200':
description: Parameters successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameter'
examples:
ParameterCreate:
$ref: '#/components/examples/ParameterCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameter'
examples:
ParameterCreate:
$ref: '#/components/examples/ParameterCreate'
'400':
description: Bad Request
'404':
description: Solution or parameter not found or insufficient access rights
patch:
operationId: updateSolutionParameter
tags:
- solution
summary: Update solution parameter
requestBody:
description: Parameter to update
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameterUpdateRequest'
examples:
ParameterUpdate:
$ref: '#/components/examples/ParameterUpdate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameterUpdateRequest'
examples:
ParameterUpdate:
$ref: '#/components/examples/ParameterUpdate'
responses:
'201':
description: Parameters successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameter'
examples:
ParameterCreate:
$ref: '#/components/examples/ParameterCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameter'
examples:
ParameterCreate:
$ref: '#/components/examples/ParameterCreate'
'400':
description: Bad request
'404':
description: Solution or parameter not found or insufficient access rights
delete:
operationId: deleteSolutionParameter
tags:
- solution
summary: Delete specific parameter from the solution
responses:
'204':
description: Parameter successfully deleted
'404':
description: Solution or parameter not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/parameterGroups:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
post:
operationId: createSolutionParameterGroup
tags:
- solution
summary: Create a solution parameter group
requestBody:
description: Parameter group to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroupCreateRequest'
examples:
ParameterGroupCreate:
$ref: '#/components/examples/ParameterGroupCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroupCreateRequest'
examples:
ParameterGroupCreate:
$ref: '#/components/examples/ParameterGroupCreate'
responses:
'201':
description: Parameter group successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroup'
examples:
ParameterGroupCreate:
$ref: '#/components/examples/ParameterGroupCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroup'
examples:
ParameterGroupCreate:
$ref: '#/components/examples/ParameterGroupCreate'
'400':
description: Bad request - Invalid parameter group
'404':
description: Solution not found or insufficient access rights
get:
operationId: listSolutionParameterGroups
tags:
- solution
summary: List all solution parameter groups
responses:
'200':
description: Parameter groups successfully listed
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RunTemplateParameterGroup'
examples:
ParameterGroupList:
$ref: '#/components/examples/ParameterGroupList'
application/yaml:
schema:
type: array
items:
$ref: '#/components/schemas/RunTemplateParameterGroup'
examples:
ParameterGroupList:
$ref: '#/components/examples/ParameterGroupList'
'404':
description: Solution not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/parameterGroups/{parameter_group_id}:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
- $ref: '#/components/parameters/parameterGroupId'
patch:
operationId: updateSolutionParameterGroup
tags:
- solution
summary: Update a solution parameter group
requestBody:
description: Parameter groups to update
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroupUpdateRequest'
examples:
ParameterGroupUpdate:
$ref: '#/components/examples/ParameterGroupUpdate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroupUpdateRequest'
examples:
ParameterGroupUpdate:
$ref: '#/components/examples/ParameterGroupUpdate'
responses:
'200':
description: Parameter groups successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroup'
examples:
ParameterGroupCreate:
$ref: '#/components/examples/ParameterGroupCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroup'
examples:
ParameterGroupCreate:
$ref: '#/components/examples/ParameterGroupCreate'
'400':
description: Bad request - Invalid parameter group
'404':
description: Solution or parameter group not found or insufficient access rights
get:
operationId: getSolutionParameterGroup
tags:
- solution
summary: Get details of a solution parameter group
responses:
'200':
description: Parameter groups successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroup'
examples:
ParameterGroupCreate:
$ref: '#/components/examples/ParameterGroupCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateParameterGroup'
examples:
ParameterGroupCreate:
$ref: '#/components/examples/ParameterGroupCreate'
'404':
description: Solution or parameter group not found or insufficient access rights
delete:
operationId: deleteSolutionParameterGroup
tags:
- solution
summary: Delete a parameter group from the solution
responses:
'204':
description: Parameter group successfully deleted
'404':
description: Solution or parameter group not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/runTemplates:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
get:
operationId: listRunTemplates
tags:
- solution
summary: List all solution run templates
responses:
'200':
description: Run templates successfully listed
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RunTemplate'
examples:
RunTemplateList:
$ref: '#/components/examples/RunTemplateList'
application/yaml:
schema:
type: array
items:
$ref: '#/components/schemas/RunTemplate'
examples:
RunTemplateList:
$ref: '#/components/examples/RunTemplateList'
'404':
description: Solution not found or insufficient access rights
post:
operationId: createSolutionRunTemplate
tags:
- solution
summary: Create a solution run template
requestBody:
description: Run template to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateCreateRequest'
examples:
RunTemplateCreate:
$ref: '#/components/examples/RunTemplateCreate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateCreateRequest'
examples:
RunTemplateCreate:
$ref: '#/components/examples/RunTemplateCreate'
responses:
'201':
description: Run template successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplate'
examples:
RunTemplate:
$ref: '#/components/examples/RunTemplate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplate'
examples:
RunTemplate:
$ref: '#/components/examples/RunTemplate'
'400':
description: Bad request - Invalid run template
'404':
description: Solution not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/runTemplates/{run_template_id}:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
- $ref: '#/components/parameters/runTemplateId'
get:
operationId: getRunTemplate
tags:
- solution
summary: Retrieve a solution run templates
responses:
'200':
description: Run template successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplate'
examples:
RunTemplate:
$ref: '#/components/examples/RunTemplate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplate'
examples:
RunTemplate:
$ref: '#/components/examples/RunTemplate'
'404':
description: Solution not found or insufficient access rights
patch:
operationId: updateSolutionRunTemplate
tags:
- solution
summary: Update a specific run template
requestBody:
description: Run template updates
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplateUpdateRequest'
examples:
RunTemplateUpdate:
$ref: '#/components/examples/RunTemplateUpdate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplateUpdateRequest'
examples:
RunTemplateUpdate:
$ref: '#/components/examples/RunTemplateUpdate'
responses:
'200':
description: Run template successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/RunTemplate'
examples:
RunTemplate:
$ref: '#/components/examples/RunTemplate'
application/yaml:
schema:
$ref: '#/components/schemas/RunTemplate'
examples:
RunTemplate:
$ref: '#/components/examples/RunTemplate'
'400':
description: Bad request - Invalid run template updates
'404':
description: Solution or run template not found or insufficient access rights
delete:
operationId: deleteSolutionRunTemplate
tags:
- solution
summary: Delete a specific run template
responses:
'204':
description: Run template successfully deleted
'404':
description: Solution or run template not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/security:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
get:
operationId: getSolutionSecurity
tags:
- solution
summary: Get solution security information
responses:
'200':
description: Solution security information successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionSecurity'
examples:
SolutionSecurity:
$ref: '#/components/examples/SolutionSecurity'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionSecurity'
examples:
SolutionSecurity:
$ref: '#/components/examples/SolutionSecurity'
'404':
description: Solution not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/security/default:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
patch:
operationId: updateSolutionDefaultSecurity
tags:
- solution
summary: Update solution default security
requestBody:
description: This changes the solution 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 solution.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionRole'
examples:
BrewerySolutionRole:
$ref: '#/components/examples/BrewerySolutionRole'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionRole'
examples:
BrewerySolutionRole:
$ref: '#/components/examples/BrewerySolutionRole'
responses:
'200':
description: Solution default security successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionSecurity'
examples:
SolutionSecurity:
$ref: '#/components/examples/SolutionSecurity'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionSecurity'
examples:
SolutionSecurity:
$ref: '#/components/examples/SolutionSecurity'
'404':
description: Solution not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/security/users:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
get:
operationId: listSolutionSecurityUsers
tags:
- solution
summary: List solution security users
responses:
'200':
description: Solution security users list successfully retrieved
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: Solution not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/security/access:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
post:
operationId: createSolutionAccessControl
tags:
- solution
description: Grant access to a solution for a user or group.
summary: Create solution access control
requestBody:
description: Access control to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionAccessControl'
examples:
SolutionAccess:
$ref: '#/components/examples/BrewerySolutionAccessControl'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionAccessControl'
examples:
SolutionAccess:
$ref: '#/components/examples/BrewerySolutionAccessControl'
responses:
'201':
description: Solution access control successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionAccessControl'
examples:
SolutionAccessControl:
$ref: '#/components/examples/BrewerySolutionAccessControl'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionAccessControl'
examples:
SolutionAccessControl:
$ref: '#/components/examples/BrewerySolutionAccessControl'
'404':
description: Solution not found or insufficient access rights
/organizations/{organization_id}/solutions/{solution_id}/security/access/{identity_id}:
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/solutionId'
- name: identity_id
in: path
description: The User identifier
required: true
schema:
type: string
get:
operationId: getSolutionAccessControl
tags:
- solution
summary: Get solution access control
responses:
'200':
description: Solution access control successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionAccessControl'
examples:
SolutionAccessControl:
$ref: '#/components/examples/BrewerySolutionAccessControl'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionAccessControl'
examples:
SolutionAccessControl:
$ref: '#/components/examples/BrewerySolutionAccessControl'
'404':
description: Solution or user not found or insufficient access rights
patch:
operationId: updateSolutionAccessControl
tags:
- solution
summary: Update solution access control
requestBody:
description: Access control updates
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionRole'
examples:
BrewerySolutionRole:
$ref: '#/components/examples/BrewerySolutionRole'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionRole'
examples:
BrewerySolutionRole:
$ref: '#/components/examples/BrewerySolutionRole'
responses:
'200':
description: Solution access control successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/SolutionAccessControl'
examples:
SolutionAccessControl:
$ref: '#/components/examples/BrewerySolutionAccessControl'
application/yaml:
schema:
$ref: '#/components/schemas/SolutionAccessControl'
examples:
SolutionAccessControl:
$ref: '#/components/examples/BrewerySolutionAccessControl'
'404':
description: Solution not found or insufficient access rights
delete:
operationId: deleteSolutionAccessControl
tags:
- solution
summary: Delete solution access control
responses:
'204':
description: Solution access control successfully deleted
'404':
description: Solution or user not found or insufficient access rights
components:
examples:
RunTemplateUpdate:
summary: Run template update example
description: Example of updating a run template
value:
name: Updated Standard Simulation
description: Run the updated standard simulation
computeSize: large
BrewerySolutionRole:
summary: Set a Solution Role.
description: Set a Role for a user to a solution.
value:
role: editor
Brewery:
summary: Brewery Solution
description: Brewery Solution example
value:
id: sol-1AbCdEfGhIj
organizationId: o-gZVQqV8B4pR7
key: brewery-solution
name: Brewery Solution
description: A Brewery Supplier Solution Model which simulate stock, production, transport and customer satisfaction
repository: cosmotech/brewery_solution
alwaysPull: false
version: 1.0.0
createInfo:
timestamp: 1621353329000
userId: john.doe@cosmotech.com
updateInfo:
timestamp: 1621353329000
userId: john.doe@cosmotech.com
sdkVersion: 12.0.0-40296.1c163396
url: https://github.com/Cosmo-Tech/brewery_sample_solution
tags:
- brewery
- optimization
parameters:
- id: prefix
labels:
fr: Prefix des noms
en: Names prefix
varType: string
parameterGroups:
- id: consumers
labels:
fr: Consommateurs
en: Consumers
parameters:
- prefix
runTemplates:
- id: hundred
name: Full simulation 100 steps
description: Run a full simulation with 100 steps
tags:
- full
- supply
computeSize: highcpu
parameterGroups:
- consumers
security:
default: none
accessControlList:
- id: jane.doe@cosmotech.com
role: admin
- id: john.doe@cosmotech.com
role: viewer
ParameterGroupCreate:
summary: Parameter group create example
description: Example of creating a parameter group
value:
id: inventory
description: Inventory parameters
labels:
en: Inventory
fr: Inventaire
parameters:
- stock_level
ParameterUpdate:
summary: Parameter update example
description: Example of updating a run template parameter
value:
description: Upda
# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cosmo-tech/refs/heads/main/openapi/cosmo-tech-solution-api-openapi.yml