Structure Service
- Create a new structure in a project
- Get the structure details
- Create a sub-node under the structure
- Get the structure topology
- Reorder the structure
- Assign an object to the latest/last structure node
- Assign additional objects to the latest structureElement node
- Assign a project element(s) into existing hierarchy structure
- Remove assigned object from the latest structureElement node
- Copy the structure
- Update the structure
- Delete the structure
- Download attachments of the structure
- Create new variant type in a project
- Get the variant type details
- Get the list of existing variant types in a project
- Update the variant type
- Delete the variant type
- Copy content of source variant type to target variant type
Structure Service
A hierarchical tree structure(eg: cost structure) could be added and later retrieved from a project/object using the Structure service
Create a new structure in a project
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/structures
Example:https://api-stage.bimplus.net/v2/bimplus/projects/622272da-f1ff-45ab-a3f0-c8f1255c80e8/structures
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
parentId |
mandatory |
string(guid) |
Parent node id of the structure (for the first structure, projectId is the parentId) |
name |
mandatory |
string |
Name of the structure |
description |
optional |
string |
Description of the structure |
type | optional | string | Type of the structure (eg: costStructure, specificationStructure) |
nr | will be ignored | integer | The index of the structure |
color | optional | integer | Color of the structure |
id | will be ignored | string(guid) | Unique guid of the structure |
startDate | optional | string (date) | Start date ( depends on type of structure ) |
endDate | optional | string (date) | End date ( depends on type of structure ) |
attributeId | optional | string(guid) | Free attribute Id. |
variantType | optional | string(guid) | Variant Type Id to whom the object will be assigned. Used only when attributeId is defined. |
Create a new structure(eg: cost structure, specification structure) under a project.
NOTE :
When is defined attributeId of attribute with controlType "Enumeration" will be created structure hierarchy.
The structure will be created under parent element (structure or project) together with its child structures.
Child structures will be created according enumDefinition (enumeration list) of attribute (defined by attributeId).
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
A) Sample to create single structure: { "parentId": "3904db18-cf1a-4665-9c2b-152b84293259", "name": "TestStructure", "description": "FullLifeCycleTest", "type": "CostStructure" } B) Sample to create structure hierarchy: { "parentId": "3904db18-cf1a-4665-9c2b-152b84293259", "name": "Status structure", "attributeId": "02bbe8de-c623-489f-9baa-87f8ff3205f2", "description": "Status of the project (enumeration)" }
Status: 201 Created
A) Sample to create single structure: { "parentId": "3904db18-cf1a-4665-9c2b-152b84293259", "name": "TestStructure", "description": "FullLifeCycleTest", "type": "CostStructure", "nr": 1, "color": 0, "id": "179439d6-df16-41cc-bd2c-74d05b7995d5" } B) Sample to create structure hierarchy: { "projectId": "3904db18-cf1a-4665-9c2b-152b84293259", "name": "Status structure", "description": "Status of the project (enumeration)", "type": "mainStructure2", "nr": 0, "id": "ee209608-19b1-40da-a089-53b20a858d41", "structuretypeid": "14c1ca64-4001-438f-a2f6-77ca951c488d", "children": [ { "structuretypeid": "14c1ca64-4001-438f-a2f6-77ca951c488d", "children": [], "elements": [], "parentId": "ee209608-19b1-40da-a089-53b20a858d41", "name": "Undefined", "description": "0", "type": "mainStructure2", "nr": 0, "id": "40da49c5-3f3a-4e12-a4f8-94fb829c7c1e" }, { "structuretypeid": "14c1ca64-4001-438f-a2f6-77ca951c488d", "children": [], "elements": [], "parentId": "ee209608-19b1-40da-a089-53b20a858d41", "name": "in planning stage", "description": "1", "type": "mainStructure2", "nr": 0, "id": "ecf9c518-1e24-4706-8557-d29d75fb7ddc" }, ...... ], "elements": [] }
Get the structure details
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>
Example:https://api-stage.bimplus.net/v2/bimplus/structures/179439d6-df16-41cc-bd2c-74d05b7995d5
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
{ "name": "TestStructure", "description": "FullLifeCycleTest", "type": "CostStructure", "nr": 1, "color": 0, "id": "179439d6-df16-41cc-bd2c-74d05b7995d5" }
Create a sub-node under the structure
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/structures/<structure_id>
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
parentId |
mandatory |
string(guid) |
Parent node id of the structure (the id specified in the resource url) |
name |
mandatory |
string |
Name of the structure |
description |
optional |
string |
Description of the structure |
type | optional | string | Type of the structure (eg: costStructure, specificationStructure) |
nr | will be ignored | integer | The index of the structure |
color | optional | integer | Color of the structure |
id | will be ignored | string(guid) | Unique guid of the structure |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "name": "Node 1" }
Status: 201 Created
{ "parentId": "179439d6-df16-41cc-bd2c-74d05b7995d5", "name": "Node 1", "type": "TopologyStructure", "nr": 1, "color": 0, "id": "adf506ae-3628-4501-9af1-22bcf27e4ab4" }
Get the structure topology
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>/topology?varianttype=<varianttype_id>
Optional query parameters
Name | Type | Default value | Description |
---|---|---|---|
varianttype | string (guid) | Guid.Empty | id of the variant type |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
{ "parent": null, "name": "TestStructure", "type": "Structure", "children": [ { "parent": "179439d6-df16-41cc-bd2c-74d05b7995d5", "name": "Node 1", "type": "Structure", "children": [], "id": "adf506ae-3628-4501-9af1-22bcf27e4ab4" } ], "id": "179439d6-df16-41cc-bd2c-74d05b7995d5" }
Reorder the structure
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>/reorder?varianttype=<varianttype_id>
Optional query parameters
Name | Type | Default value | Description |
---|---|---|---|
varianttype | string (guid) | Guid.Empty | id of the variant type |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
{ "parent": null, "name": "TestStructure", "type": "Structure", "children": [ { "parent": "179439d6-df16-41cc-bd2c-74d05b7995d5", "name": "Node 1", "type": "Structure", "children": [], "id": "adf506ae-3628-4501-9af1-22bcf27e4ab4" } ], "id": "179439d6-df16-41cc-bd2c-74d05b7995d5" }
Assign an object to the latest/last structure node
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>/assign/<object_id>
Example:https://api-stage.bimplus.net/v2/bimplus/structures/179439d6-df16-41cc-bd2c-74d05b7995d5/assign/df4a81d6-42fb-4187-bbce-82a2fc093b2f
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
color |
optional |
string(guid) |
The id of the last node to which an object will be assigned |
objectId |
will be ignored |
string(guid) |
The id of the object to whom a structure will be assigned |
name |
mandatory |
string |
The name of the structure-object connection |
nr | will be ignored | integer | The index of the structure-object connection |
id | will be ignored | string(guid) | Unique guid of the structure-object connection |
variantType | optional | string(guid) | Variant Type Id to whom the object will be assigned |
IfcGloballyUniqueId | optional | string | IFC globally unique ID |
Assign an object to the latest/last structure node
Note :
Works with two different inputs
- Object ID is present in the url - this object ID is used
- Object ID is not present, but content json contains IfcGloballyUniqueId - a corresponding Bimplus object is found and used as input object ID
- if this IFC id is not found -> return "404 Not Found", if present multiple times -> return "409 Conflict"
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "name": "WallConnection", "variantType" : "35b986c2-e9cd-482e-9281-6000671a49f0" }
Status: 201 Created
{ "structureId": "adf506ae-3628-4501-9af1-22bcf27e4ab4", "objectId": "df4a81d6-42fb-4187-bbce-82a2fc093b2f", "name": "WallConnection", "nr": 1, "id": "35b986c2-e9cd-482e-9281-6000671a49f0" }
Assign additional objects to the latest structureElement node
Resource: structures/<structureElement_id>/assign/<object_id>
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structureElement_id>/assign/<object_id>
Example:https://api-stage.bimplus.net/v2/bimplus/structures/179439d6-df16-41cc-bd2c-74d05b7995d5/assign/df4a81d6-42fb-4187-bbce-82a2fc093b2f
POST
{ "structureId": "adf506ae-3628-4501-9af1-22bcf27e4ab4", "objectId": "df4a81d6-42fb-4187-bbce-82a2fc093b2f", "name": "WallConnection", "nr": 1, "id": "35b986c2-e9cd-482e-9281-6000671a49f0",
"variantType" : "35b986c2-e9cd-482e-9281-6000671a49f0"
}
Assign a project element(s) into existing hierarchy structure
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/structures/<structure_id>/attributeassign
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
attributeId | mandatory | string(guid) | Free attribute Id. |
variantType | optional | string(guid) | Variant Type Id to whom the object will be assigned. |
Assign a project element(s) into existing hierarchy structure according attribute value of element
(i.e. structure hierarchy description is identical to free attribute value)
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "attributeId": "8ef4d2fd-8959-4aa1-8da9-3e238b1c7705", "variantType": "d120adc6-8382-4a0c-9638-a0d246590ed3" }
Status: 201 Created Function ended OK and minimal one project element was assigned to structure node Status: 204 NoContent Function ended OK, but no project element was assigned to structure node (i.e. no project element with requested free attribute was found)
{ "structuretypeid": "512b5bcd-619d-4ef5-9644-7fe5d783b73a", "children": [ { "structuretypeid": "512b5bcd-619d-4ef5-9644-7fe5d783b73a", "children": [], "elements": [ { "structureId": "f0ebc65f-6ddc-4fa3-8f02-2911665adee4", "objectId": "72bd0a48-f0e8-4385-9d95-f242d42deb60", "name": "Basic Wall:Standard 20.0:491928", "nr": 0, "id": "23ee744f-0cca-4e39-adcd-e91396ad10ea" }, { "structureId": "f0ebc65f-6ddc-4fa3-8f02-2911665adee4", "objectId": "228b0d93-f3fd-433a-9242-c4dbfe806b53", "name": "Basic Wall:Standard 20.0:491025", "nr": 0, "id": "c2586c7a-5b61-456a-ba84-c27ffe0976d6" } ], "parentId": "653afdf7-7cfb-42e5-a9b5-e99275ce5cf4", "name": "Subnode3", "description": "TestStrukturyPreAtributy1", "type": "FreeAttrTestStructure", "nr": 4, "color": 0, "disableElementAssignment": false, "id": "f0ebc65f-6ddc-4fa3-8f02-2911665adee4" } ], "elements": [], "projectId": "3904db18-cf1a-4665-9c2b-152b84293259", "name": "FreeAttrStructure", "description": "MainNode", "type": "FreeAttrTestStructure", "nr": 1, "color": 0, "disableElementAssignment": false, "id": "653afdf7-7cfb-42e5-a9b5-e99275ce5cf4" }
Remove assigned object from the latest structureElement node
Resource: structures/<structureElement_id>/delete/<object_id>
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structureElement_id>/delete/<object_id>
Example: https://api-stage.bimplus.net/v2/bimplus/structures/35b986c2-e9cd-482e-9281-6000671a49f0/delete/df4a81d6-42fb-4187-bbce-82a2fc093b2f
DELETE
HttpStatusCode.OK
Copy Structure
Resource: structures/<structure_id>/copy
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
name |
mandatory |
string |
Name of the new structure |
type | optional | string | Type of the new structure (eg: costStructure, specificationStructure) |
nr | will be ignored | integer | The index of the new structure |
color | optional | integer | Color of the new structure |
id | will be ignored | string(guid) | Unique guid of the structure |
startDate | optional | string (date) | Start date ( depends on type of structure ) |
endDate | optional | string (date) | End date ( depends on type of structure ) |
Optional query parameters
Name | Type | Default value | Description |
---|---|---|---|
varianttype | string (guid) | Guid.Empty | id of the variant type |
POST
Update the structure
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>
Example:https://api-stage.bimplus.net/v2/bimplus/structures/179439d6-df16-41cc-bd2c-74d05b7995d5
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
parentId |
optional |
string(guid) |
Parent node id of the structure (for the first structure, projectId is the parentId) |
name |
optional |
string |
Name of the structure |
description |
optional |
string |
Description of the structure |
type | optional | string | Type of the structure (eg: costStructure, specificationStructure) |
nr | optional | integer | The index of the structure |
color | optional | integer | Color of the structure |
id | will be ignored | string(guid) | Unique guid of the structure |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "name": "Updated Structure" }
Status: 200 OK
{ "parentId": "622272da-f1ff-45ab-a3f0-c8f1255c80e8", "name": "Updated Structure", "description": "FullLifeCycleTest", "type": "CostStructure", "nr": 1, "color": 0, "id": "179439d6-df16-41cc-bd2c-74d05b7995d5" }
Delete the structure
Resource: structures/<structure_id>
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>
Example:https://api-stage.bimplus.net/v2/bimplus/structures/db540336-47a3-426e-b3bf-1e532bfac8ea
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
parentId |
optional |
string(guid) |
Parent node id of the structure (for the first structure, projectId is the parentId) |
name |
optional |
string |
Name of the structure |
description |
optional |
string |
Description of the structure |
type | optional | string | Type of the structure (eg: costStructure, specificationStructure) |
nr | optional | integer | The index of the structure |
color | optional | integer | Color of the structure |
id | will be ignored | string(guid) | Unique guid of the structure |
Optional query parameters
Name | Type | Default value | Description |
---|---|---|---|
forceDelete | string(boolean) | false | if true delete also all attachments which are under structure and are not lock, if under structure are locked document return 207 and delete just not locked document and structure. |
deleteAll | string (boolean) | false | if true delete also all attachments which are under structure and are not lock, if under structure are locked document return forbidden. |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
Download attachments of the structure
URL: https://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>/downloadattachments
Downloads all attachments assigned to the required structure node including all children.
Downloaded content is a compressed zip file. The directory structure in downloaded zip file reflects hierarchy of the structure nodes where structure names represent folder names. As a attachment name are used original filenames of the attachments.
The requested attachment types included in result zip file can be defined in query parameters.
e..g. https://api-stage.bimplus.net/v2/bimplus/structures/db540336-47a3-426e-b3bf-1e532bfac8ea/downloadattachments?attachmentType=AllplanLayout&attachmentType=AllplanDrawing
When query parameter is missing will be returned all attachments of the structure node tree.
More about attachmentType can be found here Filter for getting project-only attachments & attachments that belong to a particular attachment-type
Details about created attachments can be found in 4.4 Object service, e.g. Create a new attachment in the object or in 4.8 Attachment Service
If there are not any attachments in required structure tree the return code is 404 Not Found.
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/zip
Status: 200 OK
The response format is application/octet-stream.
Create a new variant type in a project
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/variants
Example:https://api-stage.bimplus.net/v2/bimplus/projects/622272da-f1ff-45ab-a3f0-c8f1255c80e8/variants
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
name |
mandatory |
string |
Name of the variant type |
description |
optional |
string |
Description of the variant type |
id | will be ignored | string(guid) | Unique guid of the variant type |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "name": "TestVariant type", "description": "Description of the Test variant type" }
Status: 201 Created
{ "name": "TestVariant type", "description": "Description of the Test variant type", "id": "733e429a-e232-4e5d-a41e-9bd50aa9763c" }
Get the variant type details
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/variants/<varianttype_id>
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
{ "name": "TestVariant type", "description": "Description of the Test variant type", "id": "733e429a-e232-4e5d-a41e-9bd50aa9763c" }
Get the list of existing variant types in the project
Resource: projects/<project_id>/variants
URL: https://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/variants
Example:https://api-stage.bimplus.net/v2/bimplus/projects/622272da-f1ff-45ab-a3f0-c8f1255c80e8/variants
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
[ { "name": "TestVariantType1", "description": "Description of the Test variant type 1", "id": "6dc03014-8601-49fd-bae9-ef5b185603b6" }, { "name": "TestVariantType2", "description": "Description of the Test variant type 2", "id": "4c1fda6b-7fd9-42a7-a4ae-88eababd3082" }, { "name": "TestVariantType3", "description": "Description of the Test variant type 3", "id": "f2cf9b21-c1bb-463d-bbee-a6fbfb5e8b3e" }, { "name": "TestVariantType4", "description": "Description of the Test variant type 4", "id": "733e429a-e232-4e5d-a41e-9bd50aa9763c" } ]
Update the variant type
URL: https://api-stage.bimplus.net/v2/<team_slug>projects/<project_id>/variants/<varianttype_id>
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
name |
optional |
string |
Name of the variant type |
description |
optional |
string |
Description of the variant type |
id | will be ignored | string(guid) | Unique guid of the variant type |
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "name": "Updated TestVariantType4 name" "description": "Updated description of the TestVariantType4" }
Status: 200 OK
{ "name": "Updated TestVariantType4 name", "description": "Updated description of the TestVariant type 4", "id": "733e429a-e232-4e5d-a41e-9bd50aa9763c" }
Delete the variant
Resource: projects/<project_id>/variants/<varianttype_id>
URL: https://api-stage.bimplus.net/v2/<team_slug>projects/<project_id>/variants/<varianttype_id>
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
Status: 200 OK
Copy content of source variant type to target variant type
Resource: projects/<project_id>/variants/<targetvarianttype_id>/copyfrom
URL: https://api-stage.bimplus.net/v2/<team_slug>projects/<project_id>/variants/<targetvarianttype_id>/copyfrom
JSON Structure:
Name |
Mandatory / Optional |
Type |
Description |
---|---|---|---|
name |
will be ignored |
string |
Name of the variant type |
description |
will be ignored |
string | Description of the variant type |
id | mandatory | string(guid) | Unique guid of the source variant type |
PUT
Updates the specified target variant type with all structure element's assignments of elements from source variant type.
When variant type id is missing will be used internally default variant type (Guid.Empty) as a source variant type
Note:
In case when at least one element is already assigned in target variant type and the same element is also present in source variant type,
such api call will return Conflict response and target variant type will not be updated.
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088 Content-Type: application/json
{ "name": "ignored variant type name", "description": "ignored description of variant type", "id": "f2cf9b21-c1bb-463d-bbee-a6fbfb5e8b3e" }
Status: 200 OK
{ "name": "Updated TestVariantType4 name", "description": "Updated description of the TestVariant type 4", "id": "733e429a-e232-4e5d-a41e-9bd50aa9763c" }