Skip to content

Workspaces#

Workspaces represent a consortium of users, computations, and resources that provides a single way to allow management of resources in the system. The workspaces / workspaces simplify access control by allowing only users who are in a particular workspace to access resources which they have been assigned to.

Within workspaces, different users have different roles that allow them to only perform certain operations within the workspace, such as creation of other users and other admin related tasks. A single user can belong to multiple workspaces, with which they can have different roles based on the policy assigned.

For any user to access the CoCoS system, they must be part of an workspace, and have to be signed in to the workspace.

Create an workspace#

curl -sSiX POST https://prism.ultraviolet.rs/auth/domains/ -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>" -d @- << EOF
{
  "name": "workspace 1",
  "alias": "org1"
}
EOF

For example:

curl -sSiX POST https://prism.ultraviolet.rs/auth/domains/ -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>" -d @- << EOF
{
  "name": "workspace 1",
  "alias": "org1"
}
EOF

HTTP/1.1 200 OK
Content-Type: application/json
Date: Tue, 30 Apr 2024 13:17:33 GMT
Content-Length: 235

{
  "id":"fda88db8-97e1-4560-8db1-29e8a40b5d0c",
  "name":"workspace 1",
  "alias":"org1",
  "status":"enabled",
  "created_by":"0dce22c6-1a94-4a8e-a701-185a4c37df58",
  "created_at":"2024-04-30T13:17:32.884558Z",
  "updated_at":"0001-01-01T00:00:00Z"
}

On the ui the steps are as follows:

  1. Log in to prism platform with a user with administrator permission.
  2. On successfully log in, workspaces page is displayed. Click on 'New Project'. Workspaces page
  3. Fill the required fields and click 'Create Project' Project Creation

Update workspace#

Update workspace

curl -sSiX PUT https://prism.ultraviolet.rs/auth/domains/<workspace_id> -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>" -d @- << EOF
{
  "name": "workspace 1",
  "alias": "org1"
}
EOF

For example:

curl -sSiX PATCH https://prism.ultraviolet.rs/auth/domains/127910df-7eca-42dc-a625-1f8fda70229c -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>" -d @- << EOF
{
  "name": "workspace 1",
  "alias": "org1"
}
EOF
HTTP/1.1 200 OK
Content-Type: application/json
Date: Fri, 24 May 2024 06:28:08 GMT
Content-Length: 294

{
  "id":"127910df-7eca-42dc-a625-1f8fda70229c",
  "name":"workspace 1",
  "alias":"org1",
  "status":"enabled",
  "created_by":"c7a1374c-b6e1-4cfd-b333-696bec0c672d",
  "created_at":"2024-05-24T05:29:47.030197Z",
  "updated_by":"c7a1374c-b6e1-4cfd-b333-696bec0c672d",
  "updated_at":"2024-05-24T06:28:08.121207Z"
}

On the ui the steps are as follows:

  1. Click on 'Workspaces' on the navigation panel to view workspace details. Project Details

  2. Click on 'Update Project' to navigate to the update workspace page.

  3. Make necessary changes and click 'update' Updating an Project

Get workspace#

curl -isSX GET https://prism.ultraviolet.rs/auth/domains/<workspace_id> -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>"

For example:

curl -sSiX GET https://prism.ultraviolet.rs/auth/domains/127910df-7eca-42dc-a625-1f8fda70229c -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>"

HTTP/1.1 200 OK
Content-Type: application/json
Date: Fri, 24 May 2024 06:32:29 GMT
Content-Length: 294

{
  "id":"127910df-7eca-42dc-a625-1f8fda70229c",
  "name":"workspace 1",
  "alias":"org1",
  "status":"enabled",
  "created_by":"c7a1374c-b6e1-4cfd-b333-696bec0c672d",
  "created_at":"2024-05-24T05:29:47.030197Z",
  "updated_by":"c7a1374c-b6e1-4cfd-b333-696bec0c672d",
  "updated_at":"2024-05-24T06:28:08.121207Z"
}

On the ui the steps are as follows:

  1. Click on 'Workspaces' on the navigation panel to view workspace details. Project Details

Get workspaces#

To paginate the results, use offset, limit, metadata, name, status, parentID, ownerID, tree and dir as query parameters.

curl -isSX GET https://prism.ultraviolet.rs/auth/domains/ -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>"

For example:

curl -sSiX GET https://prism.ultraviolet.rs/auth/domains/ -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>"

HTTP/1.1 200 OK
Content-Type: application/json
Date: Fri, 24 May 2024 06:32:59 GMT
Content-Length: 898

{
  "total":3,
  "offset":0,
  "limit":10,
  "domains": [
    {
      "id":"2c8f3651-eb61-4a2d-8473-a84ae7a94845",
      "name":"Test Org2",
      "alias":"Desc 2",
      "status":"enabled",
      "permission":"administrator",
      "created_by":"c7a1374c-b6e1-4cfd-b333-696bec0c672d",
      "created_at":"2024-05-24T05:37:43.870852Z",
      "updated_at":"0001-01-01T00:00:00Z"
    },
    {
      "id":"f5bc07b4-bdc1-426f-8d18-d625bb5da8ac",
      "name":"Another Org",
      "alias":"Desc 2",
      "status":"enabled",
      "permission":"administrator",
      "created_by":"c7a1374c-b6e1-4cfd-b333-696bec0c672d",
      "created_at":"2024-05-24T05:47:32.275316Z",
      "updated_at":"0001-01-01T00:00:00Z"
    },
    {"id":"127910df-7eca-42dc-a625-1f8fda70229c",
    "name":"workspace 1",
    "alias":"org1",
    "status":"enabled",
    "permission":"administrator",
    "created_by":"c7a1374c-b6e1-4cfd-b333-696bec0c672d",
    "created_at":"2024-05-24T05:29:47.030197Z",
    "updated_by":"c7a1374c-b6e1-4cfd-b333-696bec0c672d",
    "updated_at":"2024-05-24T06:28:08.121207Z"
    }
  ]
}

On the ui the steps are as follows:

  1. Click on user profile at the top right, then click on "Switch Workspaces" on the menu. This navigates to the workspaces page. user profile
  2. Project page is displayed. Workspaces

Assign#

Assign user to an workspace

curl -sSiX POST https://prism.ultraviolet.rs/auth/domains/<workspace_id>/members -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>" -d @- << EOF
{
  "subject": "<user_id>",
  "object": "<workspace_id>",
  "relation": ["<relations>"]
}
EOF

For example:

curl -sSiX POST https://prism.ultraviolet.rs/auth/domains/127910df-7eca-42dc-a625-1f8fda70229c/users/assign -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>" -d @- << EOF
{
  "relation": "member",
  "user_ids": ["1470462e-70d3-4e3f-82d8-7df5ad643de3"]
}
EOF

HTTP/1.1 201 Created
Content-Type: application/json
Date: Fri, 24 May 2024 06:51:37 GMT
Content-Length: 0

On the ui the steps are as follows:

  1. From Project details page, click on 'Members'. This navigates to Members page. Project Details

  2. From Member page, click on 'Assign Member'. A modal dialog will appear that allowing member relation assignment. Assign Member

Members#

To paginate the results, use offset, limit, metadata, name, status, parentID, ownerID, tree and dir as query parameters.

Must take into consideration the user identified by the user_token needs to be assigned to the same workspace identified by group_id with g_list action or be the owner of the workspace identified by group_id.

curl -isSX GET https://prism.ultraviolet.rs/auth/domains/<workspace_id>/users -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>"

For example:

 curl -sSiX GET https://prism.ultraviolet.rs/auth/domains/ec7f6b62-3b0b-4f6f-925f-c1f09ab2f883/users\?permission\=view -H "Content-Type: application/json" -H "Authorization: Bearer <user_token>"

HTTP/1.1 200 OK
Content-Type: application/json
Date: Sat, 25 May 2024 08:44:49 GMT
Content-Length: 216

{
  "limit":10,
  "offset":0,
  "total":1,
  "users": [
    {
      "id":"986a04e5-be5b-4041-b649-f64346720219",
      "name":"John Doe",
      "credentials":{},
      "created_at":"0001-01-01T00:00:00Z",
      "updated_at":"0001-01-01T00:00:00Z",
      "status":"enabled"
    }
  ]
}

On the ui steps are as follows: On the ui, steps are as follows:

  1. From Project details page, click on 'Members'. This navigates to Members page. Project Details
  2. Project members page is displayed. Project Members