Rights and Roles Service
- Get all the available roles
- Get all the available rights
- Create a new role
- Get details of the role
- Update the role
- Delete the role
- Make a team member part of a project by assigning a role to him
- Get the project members along with their respective roles
- Update the project role of a team member
- Remove the user from the project
Rights and Roles Service
Get all the available roles
URL: https://api-stage.bimplus.net/v2/<team_slug>/roles
Example: https://api-stage.bimplus.net/v2/best-company/roles
Optional query parameters
Name | Type | Default value | Description |
---|---|---|---|
rights | boolean | true | When query parameter "rights=false" is defined, the API call will returns all roles. i.e. not only roles which contains |
customrole | boolean | When query parameter customrole is defined e.g. "customrole=true", the API call will returns only roles which have value of property "customRole" equal to query parameter. |
|
rightsandrolestemplate | string (guid) | When query parameter rightsandrolestemplate is defined e.g. "rightsandrolestemplate=482176be-84ab-4d8f-93e4-2c58863d4eae", |
Get all the available roles. Right now, we support only project based roles and custom roles.
Here is the definition of Bimplus Rights and Roles.
Account Owner | Project Admin | Project Editor | Project Viewer | |
Create project | x | |||
Admin project | x | x | ||
Delete project | x | x | ||
Edit project | x | x | x | |
View project | x | x | x | x |
Create model | x | x | ||
View all models | x | x | x | x |
Model rights and roles are not supported yet, the project rights are used instead - meaning e.g. update model requires ProjectEdit rights
The custom roles contains also definition for which resource and rights are valid.
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 Ok
[ { "id": "94a60a79-7c81-454b-8158-ffdb9a2bf4d6", "name": "TEST1", "customRole": true, "resources": [ { "id": "4e587ea1-5098-45cd-9655-15f90c16dc58", "resource": "Layer", "rights": [ "RoomModel" ], "rightsAccess": [ { "id": "52bbc329-dab3-a81c-b548-09c715786a81", "name": "RoomModel", "access": "Edit" } ] } ], "projectRightsRolesTemplate": { "id": "482176be-84ab-4d8f-93e4-2c58863d4eae", "name": "DefaultProjectRightsRolesTemplate", "description": "Default template for rights and roles" } }, { "id": "391fb0fc-43ec-464c-bd18-b5223b32bd14", "name": "TEST2", "customRole": true, "resources": [ { "id": "9dae8bb5-77c1-47a6-a916-d4948583b0b9", "resource": "Global", "rights": [ "AllModels", "ProjectCreate", "AllAttributes" ], "rightsAccess": [ { "id": "cc3416d3-c570-4dc6-aa84-72216d3f58da", "name": "AllModels", "access": "Edit" }, { "id": "6bbc401b-7cd5-4684-a11d-e2448befb3c1", "name": "ProjectCreate", "access": "Edit" }, { "id": "99bad6fc-0539-4848-84af-62b6df31eaa3", "name": "AllAttributes", "access": "Edit" } ] } ], "projectRightsRolesTemplate": { "id": "482176be-84ab-4d8f-93e4-2c58863d4eae", "name": "DefaultProjectRightsRolesTemplate", "description": "Default template for rights and roles" } } ... ]
Get all the available rights
Resource: <team_slug>/rights
URL: https://api-stage.bimplus.net/v2/<team_slug>/rights
Example: https://api-stage.bimplus.net/v2/best-company/rights
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
id |
mandatory |
string (guid) |
Id of the right resource type |
resource |
mandatory |
string |
The name of the right resource type |
rights |
mandatory |
object |
Dictionary of the pairs of right id together with its name |
access |
mandatory |
JSON Array |
Array of the strings represented access right. Can be combination of predefined rights "View", "Edit", "Admin" |
Optional query parameters:
Following query parameters allows reduce set of returned right resource types. By default will be returned all defined right resource types.
Name |
Type |
Default value |
Description |
---|---|---|---|
project |
boolean |
true |
When query parameter "project=false" is defined, the API call will returns all right resource types except project right resource type. |
global |
boolean |
true |
When query parameter "global=false" is defined, the API call will returns all right resource types except global right resource type. |
document |
boolean |
true |
When query parameter "document=false" is defined, the API call will returns all right resource types except document right resource type. |
globalfreeattributes |
boolean |
true |
When query parameter "globalfreeattributes=false" is defined, the API call will returns all right resource types except globalfreeattributes right resource type. |
layer |
boolean |
true |
When query parameter "layer=false" is defined, the API call will returns all right resource types except layer right resource type. |
Get all the available rights returns array of right resource types with defined rights.
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 Ok
[{ "id":"4e587ea1-5098-45cd-9655-15f90c16dc58", "resource":"Layer", "rights":{ "231222ba-7495-f438-cf38-629cf0482364":"building", "dd9b9e2c-f4af-576f-4dda-9e122ab13d31":"general objects", "92f8a361-5990-0cb0-b257-e13c85f0f7b1":"mep", "0047e2ed-3348-a97b-93d2-a6817cc9cb8e":"steel design", "8095dfcf-fbdf-3317-b873-a7cbccccb206":"timber design", "f7819a2d-1498-2468-b120-fdefedfccf0b":"terrain", "903fe394-5e84-5c8d-2760-eeadad3baa35":"reinforcement", "44c2ff85-9691-6def-9583-56d8b776c846":"finish", "6719f657-ea4a-3016-1bda-0c56c7f113d4":"inventory", "52bbc329-dab3-a81c-b548-09c715786a81":"room", "4a4da391-b804-b20f-f49a-470bdc68be8f":"structural analysis", "7f27fd11-7992-8fb5-3541-9daa4f8196b2":"opening", "8ba5ec82-5b93-6192-55b0-b7790f4d0007":"door/window", "5c695e85-ea7c-7df4-9fb7-eca7aa1f69fd":"precast", "85d0b1a9-11bb-6de1-9cfd-54f85ee11da3":"bridge", "d726e8d2-12c6-641d-b19d-37511349dce1":"structural loads", "3517d0e2-9814-fc08-b3e7-59d453940efa":"connection" }, "access":["View", "Edit" ] }, { "id":"173e7a88-16d9-4d88-92bf-270fff458435", "resource":"Document", "rights":{ "73ca755b-eb41-4abf-8d72-6360f638a34c":"documentshare", "f53dac0d-8ef8-48bd-9fa5-b49831bcf671":"documentdelete", "6513c54f-0531-47e2-853d-56a25a226765":"documentdownloaddenied", "820eb26b-7469-48bd-b10f-0c69e631c910":"documentviewdenied", "d7727bed-38b8-4a77-b61d-397fb01f1ad8":"documentupdate" }, "access":["Edit" ] }, { "id":"cc49128e-9416-4bfc-a695-b17365dc7a5e", "resource":"Project", "rights":{ "815ce797-da07-4372-8a59-609f7106ab09":"project" }, "access":["View", "Edit", "Admin" ] }, { "id":"9dae8bb5-77c1-47a6-a916-d4948583b0b9", "resource":"Global", "rights":{ "c64151c5-ecde-4e2c-ba53-d0390f480461":"projectdelete", "6bbc401b-7cd5-4684-a11d-e2448befb3c1":"projectcreate", "99bad6fc-0539-4848-84af-62b6df31eaa3":"allattributes", "3b3f10c1-93a6-4d15-a727-e38e2fb9b0b2":"alldocuments", "cc3416d3-c570-4dc6-aa84-72216d3f58da":"allmodels", "9351251b-9631-499e-8e23-68ffe70ef3b7":"allprojects" }, "access":["Edit" ] }, { "id":"500766a6-2525-45db-b9cd-b2a3d8092ba9", "resource":"GlobalFreeAttributes", "rights":{ "061a3842-9b4d-4d19-8651-2f9373c42842":"freeattribute", "63b9bfad-db9f-4bbe-a902-7716c440a200":"attributetemplate", "04f5c272-3dec-4bce-85ae-6abb2e936ef8":"projectattributetemplate", "2a0e7bed-9fbf-46bc-987a-7a6c5c638f98":"freeattributegroup", "b886cab2-fcce-4a77-ab2d-09f704e363b7":"teammembership" }, "access":["View", "Edit" ] } ]
Create a new role
URL: https://api-stage.bimplus.net/v2/<team_slug>/roles
Example: https://api-stage.bimplus.net/v2/bimplus/roles
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
id |
optional |
string (guid) |
Id of the role |
name |
mandatory |
string |
The name of the role |
parent |
optional |
string (guid) |
The Id of the parent role |
customRole |
optional |
boolean |
When this flag is true the role is custom role otherwise will role is 'built in' role |
resources |
optional |
JSON Array |
Array of the right resource type definition objects for which the role is valid |
JSON Structure of the right resource type definition object:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
id | optional | string(Guid) | Id of the right resource type |
resource |
mandatory |
string |
Describe kind of right resource type e.g. Global" or "Layer", etc. |
rights |
mandatory |
JSON Array |
Array of the strings with right names e.g.: "FreeAttributeView", "RoomModel" |
rightsAccess | mandatory | JSON Array | Array of the objects with properties id, name, access :
|
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "name":"Test", "customRole":true, "resources":[{ "id":"4e587ea1-5098-45cd-9655-15f90c16dc58", "resource":"Layer", "rights":["RoomModel" ], "rightsAccess":[{ "id":"52bbc329-dab3-a81c-b548-09c715786a81", "name":"RoomModel", "access":"Edit" } ] } ] }
Status: 201 Created
{ "name":"Test", "customRole":true, "resources":[{ "id":"4e587ea1-5098-45cd-9655-15f90c16dc58", "resource":"Layer", "rights":["RoomModel" ], "rightsAccess":[{ "id":"52bbc329-dab3-a81c-b548-09c715786a81", "name":"RoomModel", "access":"Edit" } ] } ] }
Get details of the role
Resource: <team_slug>/roles/<role_id>
URL: https://api-stage.bimplus.net/v2/<team_slug>/roles/<role_id>
Example: https://api-stage.bimplus.net/v2/bimplus/roles/213becc0-ad48-4cd0-aef2-b922b21bbfd7
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
{ "name":"Test", "customRole":true, "resources":[{ "id":"52bbc329-dab3-a81c-b548-09c715786a81", "resource":"UserRightLayer", "rights":["Room" ], "rightsAccess":[{ "id":"4e587ea1-5098-45cd-9655-15f90c16dc58", "name":"Room", "access":"View" } ] } ] }
Update the role
Resource: <team_slug>/roles/<role_id>
URL: https://api-stage.bimplus.net/v2/<team_slug>/roles/<role_id>
Example: https://api-stage.bimplus.net/v2/bimplus/roles/213becc0-ad48-4cd0-aef2-b922b21bbfd7
Json structure : See above in Create a new role section.
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "name":"Test", "customRole":true, "resources":[{ "id":"52bbc329-dab3-a81c-b548-09c715786a81", "resource":"UserRightLayer", "rights":["Room" ], "rightsAccess":[{ "id":"4e587ea1-5098-45cd-9655-15f90c16dc58", "name":"Room", "access":"View" } ] } ] }
Status: 200 OK
{ "name":"Test", "customRole":true, "resources":[{ "id":"52bbc329-dab3-a81c-b548-09c715786a81", "resource":"UserRightLayer", "rights":["Room" ], "rightsAccess":[{ "id":"4e587ea1-5098-45cd-9655-15f90c16dc58", "name":"Room", "access":"View" } ] } ] }
Delete the role
Resource: <team_slug>/roles/<role_id>
URL: https://api-stage.bimplus.net/v2/<team_slug>/roles/<role_id>
Example: https://api-stage.bimplus.net/v2/bimplus/roles/213becc0-ad48-4cd0-aef2-b922b21bbfd7
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
Make a team member part of a project by assigning a role to him
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/members
Example: https://api-stage.bimplus.net/v2/bimplus/projects/b8615afc-99cc-4bcd-b0ca-ff0593ce15c6/members
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
member |
mandatory |
object |
The member who will be assigned a role to the project. |
role |
mandatory |
object |
The project role which will be assigned to the team member. |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "member": { "id" : "bf5b2382-1d14-b8df-8454-947f83b45c25" }, role: { "id" : "f11d32e2-30b7-4f81-8a74-2165ecc00cf6" }
Status: 201 Created
{ "member": { "id": "bf5b2382-1d14-b8df-8454-947f83b45c25", "email": "testuser@bimplus.net", "firstname" : "Test", "lastname" : "User", ... }, "role": { "id": "f11d32e2-30b7-4f81-8a74-2165ecc00cf6", "name": "Project_Editor" }
Get the project members along with their respective roles
Resource: projects/<project_id>/members
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/members
Example: https://api-stage.bimplus.net/v2/bimplus/projects/b8615afc-99cc-4bcd-b0ca-ff0593ce15c6/members
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
[ { "member": { "id": "bf5b2382-1d14-b8df-8454-947f83b45c25", "email": "testuser@bimplus.net", "firstname" : "Test", "lastname" : "User", ... }, "role": { "id": "f11d32e2-30b7-4f81-8a74-2165ecc00cf6", "name": "Project_Editor" }, { "member": { "id": "bf5b2382-1d14-b8df-8454-947f83b45c25", "email": "customer2@bimplus.net" "firstname" : "Some", "lastname" : "Customer", ... }, "role": { "id": "e11d32e2-30b7-4f81-8a74-2165ecc00cf6", "name": "Project_Viewer" } } ]
Update the project role of a team member
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/members
Example: https://api-stage.bimplus.net/v2/bimplus/projects/b8615afc-99cc-4bcd-b0ca-ff0593ce15c6/members
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
member |
mandatory |
object |
The member who will be assigned a role to the project |
id |
mandatory |
string (guid) |
Id of the user |
role |
mandatory |
object |
The project role which will be assigned to the team member |
id |
mandatory |
string (guid) |
Id of the role |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "member": { "id": "bf5b2382-1d14-b8df-8454-947f83b45c25" }, "role": { "id": "f11d32e2-30b7-4f81-8a74-2165ecc00cf6" }
Status: 200 OK
{ "member": { "id": "bf5b2382-1d14-b8df-8454-947f83b45c25", "email": "customer@bimplus.net", "firstname" : "Some", "lastname" : "Customer", ... }, "role": { "id": "f11d32e2-30b7-4f81-8a74-2165ecc00cf6", "name": "Project_Viewer" }
Remove the user from the project
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/members
Example: https://api-stage.bimplus.net/v2/bimplus/projects/b8615afc-99cc-4bcd-b0ca-ff0593ce15c6/members
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK