OpenAPI Specification
openapi: 3.0.3
info:
title: Cosmo Tech Manager dataset organization API
description: Cosmo Tech Dataset Manager API
version: 1.0.0-SNAPSHOT
servers:
- url: http://localhost:8080
security:
- oAuth2AuthCode: []
tags:
- name: organization
description: Organization Management
paths:
/organizations:
post:
operationId: createOrganization
tags:
- organization
description: Create a new organization.
summary: Create a new organization
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationCreateRequest'
examples:
NewOrganizationIn:
$ref: '#/components/examples/NewOrganizationIn'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationCreateRequest'
examples:
NewOrganizationIn:
$ref: '#/components/examples/NewOrganizationIn'
responses:
'201':
description: The Organization details
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
examples:
CosmoOrganization:
$ref: '#/components/examples/CosmoOrganization'
application/yaml:
schema:
$ref: '#/components/schemas/Organization'
examples:
CosmoOrganization:
$ref: '#/components/examples/CosmoOrganization'
'400':
description: Bad request
get:
operationId: listOrganizations
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/size'
tags:
- organization
description: Retrieve a paginated list of all organizations the authenticated user has permission to view. Use 'page' and 'size' query parameters for pagination.
summary: List all Organizations
responses:
'200':
description: The list of Organizations
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Organization'
examples:
TwoOrganizations:
$ref: '#/components/examples/TwoOrganizations'
application/yaml:
schema:
type: array
items:
$ref: '#/components/schemas/Organization'
examples:
TwoOrganizations:
$ref: '#/components/examples/TwoOrganizations'
/organizations/{organization_id}:
parameters:
- $ref: '#/components/parameters/organizationId'
get:
operationId: getOrganization
tags:
- organization
description: Retrieve detailed information about an organization.
summary: Get the details of an Organization
responses:
'200':
description: The Organization details
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
examples:
CosmoOrganization:
$ref: '#/components/examples/CosmoOrganization'
application/yaml:
schema:
$ref: '#/components/schemas/Organization'
examples:
CosmoOrganization:
$ref: '#/components/examples/CosmoOrganization'
'404':
description: The Organization specified is unknown or you don't have access to it
patch:
operationId: updateOrganization
tags:
- organization
summary: Update an Organization
requestBody:
description: The new Organization details. This endpoint can't be used to update security
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationUpdateRequest'
examples:
ChangeOrganizationName:
$ref: '#/components/examples/ChangeOrganizationName'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationUpdateRequest'
examples:
ChangeOrganizationName:
$ref: '#/components/examples/ChangeOrganizationName'
responses:
'200':
description: The organization details
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
examples:
UpdatedOrganization:
$ref: '#/components/examples/UpdatedOrganization'
application/yaml:
schema:
$ref: '#/components/schemas/Organization'
examples:
UpdatedOrganization:
$ref: '#/components/examples/UpdatedOrganization'
'400':
description: Bad request
'404':
description: The Organization specified is unknown or you don't have access to it
delete:
operationId: deleteOrganization
tags:
- organization
description: Permanently delete an organization. This operation cannot be undone.
summary: Delete an organization
responses:
'204':
description: Request succeeded
'404':
description: The Organization specified is unknown or you don't have access to it
/organizations/permissions:
get:
operationId: listPermissions
tags:
- organization
summary: Get all permissions per components
responses:
'200':
description: The security permission list
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ComponentRolePermissions'
examples:
permissions:
$ref: '#/components/examples/Permissions'
application/yaml:
schema:
type: array
items:
$ref: '#/components/schemas/ComponentRolePermissions'
examples:
permissions:
$ref: '#/components/examples/Permissions'
/organizations/{organization_id}/permissions/{role}:
parameters:
- $ref: '#/components/parameters/organizationId'
- name: role
in: path
description: The Role
required: true
schema:
type: string
get:
operationId: getOrganizationPermissions
tags:
- organization
summary: Get the Organization permissions by given role
responses:
'200':
description: The Organization security permission list
content:
application/json:
schema:
type: array
items:
type: string
example:
$ref: '#/components/examples/OrganizationRolePermissions'
application/yaml:
schema:
type: array
items:
type: string
example:
$ref: '#/components/examples/OrganizationRolePermissions'
/organizations/{organization_id}/security:
parameters:
- $ref: '#/components/parameters/organizationId'
get:
operationId: getOrganizationSecurity
tags:
- organization
summary: Get the Organization security information
responses:
'200':
description: The Organization security
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationSecurity'
examples:
OrganizationSecurity:
$ref: '#/components/examples/OrganizationSecurity'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationSecurity'
examples:
OrganizationSecurity:
$ref: '#/components/examples/OrganizationSecurity'
'404':
description: The Organization specified is unknown or you don't have access to it
/organizations/{organization_id}/security/default:
parameters:
- $ref: '#/components/parameters/organizationId'
patch:
operationId: updateOrganizationDefaultSecurity
tags:
- organization
summary: Update the Organization default security
requestBody:
description: This change the organization 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 organization.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationRole'
examples:
DefaultRole:
$ref: '#/components/examples/DefaultRole'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationRole'
examples:
DefaultRole:
$ref: '#/components/examples/DefaultRole'
responses:
'201':
description: The Organization default visibility
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationSecurity'
examples:
UpdatedSecurity:
$ref: '#/components/examples/UpdatedSecurity'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationSecurity'
examples:
UpdatedSecurity:
$ref: '#/components/examples/UpdatedSecurity'
'404':
description: The Organization specified is unknown or you don't have access to it
/organizations/{organization_id}/security/access:
parameters:
- $ref: '#/components/parameters/organizationId'
post:
operationId: createOrganizationAccessControl
tags:
- organization
description: Grant access to an organization for a user or group.
summary: Add a control access to the Organization
requestBody:
description: The new Organization security access to add.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationAccessControl'
examples:
OrganizationAccess:
$ref: '#/components/examples/OrganizationAccess'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationAccessControl'
examples:
OrganizationAccess:
$ref: '#/components/examples/OrganizationAccess'
responses:
'201':
description: The Organization access
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationAccessControl'
examples:
OrganizationAccessControl:
$ref: '#/components/examples/OrganizationAccessControl'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationAccessControl'
examples:
OrganizationAccessControl:
$ref: '#/components/examples/OrganizationAccessControl'
'404':
description: The Organization specified is unknown or you don't have access to it
/organizations/{organization_id}/security/access/{identity_id}:
parameters:
- $ref: '#/components/parameters/organizationId'
- name: identity_id
in: path
description: The User identifier
required: true
schema:
type: string
get:
operationId: getOrganizationAccessControl
tags:
- organization
summary: Get a control access for the Organization
responses:
'200':
description: The Organization access
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationAccessControl'
examples:
OrganizationAccessControl:
$ref: '#/components/examples/OrganizationAccessControl'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationAccessControl'
examples:
OrganizationAccessControl:
$ref: '#/components/examples/OrganizationAccessControl'
'404':
description: The Organization or user specified is unknown or you don't have access to it
patch:
operationId: updateOrganizationAccessControl
tags:
- organization
summary: Update the specified access to User for an Organization
requestBody:
description: The new Organization Access Control
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationRole'
examples:
UpdateRole:
$ref: '#/components/examples/UpdateRole'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationRole'
examples:
UpdateRole:
$ref: '#/components/examples/UpdateRole'
responses:
'200':
description: The Organization access
content:
application/json:
schema:
$ref: '#/components/schemas/OrganizationAccessControl'
examples:
UpdatedAccessControl:
$ref: '#/components/examples/UpdatedAccessControl'
application/yaml:
schema:
$ref: '#/components/schemas/OrganizationAccessControl'
examples:
UpdatedAccessControl:
$ref: '#/components/examples/UpdatedAccessControl'
'404':
description: The Organization specified is unknown or you don't have access to it
delete:
operationId: deleteOrganizationAccessControl
tags:
- organization
summary: Remove the specified access from the given Organization
responses:
'204':
description: Request succeeded
'404':
description: The Organization or the user specified is unknown or you don't have access to them
/organizations/{organization_id}/security/users:
parameters:
- $ref: '#/components/parameters/organizationId'
get:
operationId: listOrganizationSecurityUsers
tags:
- organization
summary: Get the Organization security users list
responses:
'200':
description: The Organization security users list
content:
application/json:
schema:
type: array
items:
type: string
example:
- alice@cosmotech.com
- bob@cosmotech.com
application/yaml:
schema:
type: array
items:
type: string
example:
- alice@cosmotech.com
- bob@cosmotech.com
'404':
description: The Organization specified is unknown or you don't have access to it
components:
schemas:
OrganizationSecurity:
type: object
description: Response object for organization 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 Organization with detailed access control information
items:
$ref: '#/components/schemas/OrganizationAccessControl'
required:
- default
- accessControlList
OrganizationAccessControl:
type: object
description: Response object for organization access control
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
OrganizationCreateRequest:
type: object
description: Request object for creating a new organization
properties:
name:
type: string
x-field-extra-annotation: '@com.redis.om.spring.annotations.Searchable'
description: The Organization name
minLength: 1
x-size-message: cannot be empty
security:
$ref: '#/components/schemas/OrganizationSecurity'
required:
- name
OrganizationUpdateRequest:
type: object
description: Request object for updating an organization
properties:
name:
type: string
description: The Organization name
minLength: 1
x-size-message: cannot be empty
OrganizationRole:
type: object
description: The Organization Role
properties:
role:
type: string
description: The Organization Role
required:
- role
ComponentRolePermissions:
type: object
description: A RBAC by component
properties:
component:
type: string
roles:
type: object
additionalProperties:
type: array
items:
type: string
required:
- component
- roles
OrganizationEditInfo:
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
Organization:
type: object
x-class-extra-annotation: '@com.redis.om.spring.annotations.Document'
description: An Organization
properties:
id:
x-field-extra-annotation: '@org.springframework.data.annotation.Id'
type: string
readOnly: true
description: The Organization unique identifier
name:
type: string
x-field-extra-annotation: '@com.redis.om.spring.annotations.Searchable'
description: The Organization name
createInfo:
description: The details of the Organization creation
allOf:
- $ref: '#/components/schemas/OrganizationEditInfo'
updateInfo:
description: The details of the Organization last update
allOf:
- $ref: '#/components/schemas/OrganizationEditInfo'
security:
x-field-extra-annotation: '@com.redis.om.spring.annotations.Indexed'
allOf:
- $ref: '#/components/schemas/OrganizationSecurity'
required:
- id
- name
- createInfo
- updateInfo
- security
examples:
DefaultRole:
summary: Update default role
description: Example of updating the default role
value:
role: viewer
ChangeOrganizationName:
summary: Change Name of Organization
description: Change the name of an organization
value:
name: Digital Twin Solutions
OrganizationSecurity:
summary: Organization security example
description: Example of organization security settings
value:
default: viewer
accessControlList:
- id: admin@cosmotech.com
role: admin
- id: editor@cosmotech.com
role: editor
UpdatedSecurity:
summary: Updated security settings
description: Example of updated security settings
value:
default: viewer
accessControlList:
- id: admin@cosmotech.com
role: admin
- id: editor@cosmotech.com
role: editor
CosmoOrganization:
summary: Organization response example
description: Example of an organization response with full details
value:
id: o-gZVQqV8B4pR7
name: Digital Twin Solutions
createInfo:
timestamp: 1713096000000
userId: john.doe@cosmotech.com
updateInfo:
timestamp: 1713096000000
userId: john.doe@cosmotech.com
security:
default: viewer
accessControlList:
- id: admin@cosmotech.com
role: admin
- id: editor@cosmotech.com
role: editor
NewOrganizationIn:
summary: Create a new organization
description: Create a new organization with security settings
value:
name: Digital Twin Solutions
security:
default: viewer
accessControlList:
- id: admin@cosmotech.com
role: admin
- id: editor@cosmotech.com
role: editor
UpdatedOrganization:
summary: Updated organization example
description: Example of an organization after update
value:
id: o-gZVQqV8B4pR7
name: Updated Digital Twin Solutions
createInfo:
timestamp: 1713096000000
userId: john.doe@cosmotech.com
updateInfo:
timestamp: 1713182400000
userId: john.doe@cosmotech.com
security:
default: viewer
accessControlList:
- id: admin@cosmotech.com
role: admin
- id: editor@cosmotech.com
role: editor
Permissions:
summary: Component permissions
description: Example of component role permissions
value:
- component: organization
roles:
none: []
viewer:
- read
- read_security
editor:
- read
- read_security
- write
admin:
- read
- read_security
- write
- write_security
- delete
- component: workspace
roles:
none: []
viewer:
- read
- read_security
editor:
- read
- read_security
- write
admin:
- read
- read_security
- write
- write_security
- delete
- component: runner
roles:
none: []
viewer:
- read
- read_security
editor:
- read
- read_security
- launch
- write
validator:
- read
- read_security
- launch
- write
- validate
admin:
- read
- read_security
- launch
- write
- validate
- write_security
- delete
OrganizationAccess:
summary: Organization access control example
description: Example of adding a new access control
value:
id: new.user@cosmotech.com
role: editor
OrganizationAccessControl:
summary: Organization access control response
description: Example of access control response
value:
id: user@cosmotech.com
role: editor
TwoOrganizations:
summary: Multiple organizations example
description: Example of multiple organizations in a list
value:
- id: o-gZVQqV8B4pR7
name: Digital Twin Solutions
createInfo:
timestamp: 1713096000000
userId: john.doe@cosmotech.com
updateInfo:
timestamp: 1713096000000
userId: john.doe@cosmotech.com
security:
default: viewer
accessControlList:
- id: admin@cosmotech.com
role: admin
- id: o-hWzRbW9C5qS8
name: Supply Chain Analytics
createInfo:
timestamp: 1712923200000
userId: john.doe@cosmotech.com
updateInfo:
timestamp: 1713009600000
userId: john.doe@cosmotech.com
security:
default: viewer
accessControlList:
- id: admin@cosmotech.com
role: admin
UpdatedAccessControl:
summary: Updated access control
description: Example of updated access control
value:
id: user@cosmotech.com
role: editor
UpdateRole:
summary: Update user role
description: Example of updating a user's role
value:
role: editor
OrganizationRolePermissions:
summary: List of permissions for a role
description: Example of permissions for a given role
value:
- read
- read_security
- create_children
parameters:
size:
name: size
in: query
description: Amount of result by page
required: false
schema:
type: integer
organizationId:
name: organization_id
in: path
description: The Organization identifier
required: true
schema:
type: string
pattern: ^o-\w{10,20}
page:
name: page
in: query
description: Page number to query (first page is at index 0)
required: false
schema:
type: integer
securitySchemes:
oAuth2AuthCode:
type: oauth2
description: OAuth2 authentication
flows:
authorizationCode:
authorizationUrl: https://example.com/authorize
tokenUrl: https://example.com/token
scopes: {}