Structure Service


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
Resource: projects/<project_id>/structures 

URLhttps://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

typeoptionalstringType of the structure (eg: costStructure, specificationStructure)
nrwill be ignoredintegerThe index of the structure
coloroptionalintegerColor of the structure
idwill be ignoredstring(guid)Unique guid of the structure
startDateoptionalstring (date)Start date ( depends on type of structure )
endDateoptionalstring (date)End date ( depends on type of structure )
attributeIdoptionalstring(guid)

Free attribute Id.
When this value is set, the corresponding attribute must have a suitable controlType
to define set of structures to be created. At a moment is supported only controlType "Enumeration",
for all other controlType-s is returned status 404 Not found.

variantTypeoptionalstring(guid)Variant Type Id to whom the object will be assigned.
Used only when attributeId is defined.


 POST

 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
Resource: structures/<structure_id> 

URLhttps://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>

Example:https://api-stage.bimplus.net/v2/bimplus/structures/179439d6-df16-41cc-bd2c-74d05b7995d5

 GET
 Get details of a specified structure.
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
Resource: structures/<structure_id> 

URLhttps://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

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

typeoptionalstringType of the structure (eg: costStructure, specificationStructure)
nrwill be ignoredintegerThe index of the structure
coloroptionalintegerColor of the structure
idwill be ignoredstring(guid)Unique guid of the structure


 POST
 Create a sub-node under a particular 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
Resource: structures/<structure_id>/topology?varianttype=<varianttype_id> 

URLhttps://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>/topology?varianttype=<varianttype_id>

Example:https://api-stage.bimplus.net/v2/bimplus/structures/179439d6-df16-41cc-bd2c-74d05b7995d5/topology?varianttype=733e429a-e232-4e5d-a41e-9bd50aa9763c

Optional query parameters

NameTypeDefault valueDescription
varianttypestring (guid)Guid.Emptyid of the variant type


 GET
 Get details of a specified structure.
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
Resource: structures/<structure_id>/reorder?varianttype=<varianttype_id> 

URLhttps://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>/reorder?varianttype=<varianttype_id>

Example:https://api-stage.bimplus.net/v2/bimplus/structures/179439d6-df16-41cc-bd2c-74d05b7995d5/reorder?varianttype=733e429a-e232-4e5d-a41e-9bd50aa9763c

Optional query parameters

NameTypeDefault valueDescription
varianttypestring (guid)Guid.Emptyid of the variant type


 PUT
 Reorder the structure for specified 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
Resource: structures/<structure_id>/assign/<object_id> 

URLhttps://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

nrwill be ignoredintegerThe index of the structure-object connection
idwill be ignoredstring(guid)Unique guid of the structure-object connection
variantTypeoptionalstring(guid)Variant Type Id to whom the object will be assigned
IfcGloballyUniqueIdoptionalstringIFC globally unique ID


 POST

 Assign an object to the latest/last structure node

 

Note :

Works with two different inputs

  1. Object ID is present in the url - this object ID is used
  2. 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> 

URLhttps://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
Resource: projects/<project_id>/structures/<structure_id>/attributeassign 

URLhttps://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/structures/<structure_id>/attributeassign

Example:https://api-stage.bimplus.net/v2/bimplus/projects/f1ee5e9a-c7c9-40bc-8871-5d13a99d5794/structures/b7d583e2-a3a6-4e11-b324-401f8723840e/attributeassign

JSON Structure

Name

Mandatory / Optional

Type

Description

attributeIdmandatorystring(guid)

Free attribute Id.

variantTypeoptionalstring(guid)Variant Type Id to whom the object will be assigned.


 PUT

 Assign a project element(s) into existing structure hierarchy in according to element free attribute value
(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> 

URLhttps://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

URLhttps://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>/copy?varianttype=<varianttype_id>

Example:https://api-stage.bimplus.net/v2/bimplus/structures/179439d6-df16-41cc-bd2c-74d05b7995d5/copy?varianttype=733e429a-e232-4e5d-a41e-9bd50aa9763c

JSON Structure 

Name

Mandatory / Optional

Type

Description

 

 

 

 

name

mandatory

string

Name of the new structure

 

 

 

 

typeoptionalstringType of the new structure (eg: costStructure, specificationStructure)
nrwill be ignoredintegerThe index of the new structure
coloroptionalintegerColor of the new structure
idwill be ignoredstring(guid)Unique guid of the structure
startDateoptionalstring (date)Start date ( depends on type of structure )
endDateoptionalstring (date)End date ( depends on type of structure )


Optional query parameters  

NameTypeDefault valueDescription
varianttypestring (guid)Guid.Emptyid of the variant type

 

POST

 

Update the structure
Resource: structures/<structure_id>

URLhttps://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

typeoptionalstringType of the structure (eg: costStructure, specificationStructure)
nroptionalintegerThe index of the structure
coloroptionalintegerColor of the structure
idwill be ignoredstring(guid)Unique guid of the structure
 PUT
 Update the specified 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> 

URLhttps://api-stage.bimplus.net/v2/<team_slug>/structures/<structure_id>

Example:https://api-stage.bimplus.net/v2/bimplus/structures/db540336-47a3-426e-b3bf-1e532bfac8ea

 DELETE
 Deletes a specified structure.
Authorization: BimPlus 9c1874a62c974dcfa75e0132c423a088
Content-Type: application/json
Status: 200 OK

 

 

Resource: structures/<structure_id>

URLhttps://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

typeoptionalstringType of the structure (eg: costStructure, specificationStructure)
nroptionalintegerThe index of the structure
coloroptionalintegerColor of the structure
idwill be ignoredstring(guid)Unique guid of the structure

 

Create a new variant type in a project
Resource: projects/<project_id>/variants 

URLhttps://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

idwill be ignoredstring(guid)Unique guid of the variant type


 POST
 Create a new variant type of defined structure(eg: cost structure, specification structure) under a project
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
Resource: projects/<project_id>/variants/<varianttype_id> 

URLhttps://api-stage.bimplus.net/v2/<team_slug>/projects/<project_id>/variants/<varianttype_id>

Example:https://api-stage.bimplus.net/v2/bimplus/projects/622272da-f1ff-45ab-a3f0-c8f1255c80e8/variants/733e429a-e232-4e5d-a41e-9bd50aa9763c 

 GET
 Get details of a specified variant type.
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

URLhttps://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 

 GET
 Gets the list of existing variant types created in the project.
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
Resource: projects/<project_id>/variants/<varianttype_id>

URLhttps://api-stage.bimplus.net/v2/<team_slug>projects/<project_id>/variants/<varianttype_id>

Example:https://api-stage.bimplus.net/v2/bimplus/projects/622272da-f1ff-45ab-a3f0-c8f1255c80e8/variants/733e429a-e232-4e5d-a41e-9bd50aa9763c

JSON Structure

Name

Mandatory / Optional

Type

Description

name

optional

string

Name of the variant type

description

optional

string

Description of the variant type

idwill be ignoredstring(guid)Unique guid of the variant type
 PUT
 Update the specified 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> 

URLhttps://api-stage.bimplus.net/v2/<team_slug>projects/<project_id>/variants/<varianttype_id>

Example:https://api-stage.bimplus.net/v2/bimplus/projects/622272da-f1ff-45ab-a3f0-c8f1255c80e8/variants/733e429a-e232-4e5d-a41e-9bd50aa9763c

 DELETE
 Deletes a specified variant type.
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

URLhttps://api-stage.bimplus.net/v2/<team_slug>projects/<project_id>/variants/<targetvarianttype_id>/copyfrom

Example:https://api-stage.bimplus.net/v2/bimplus/projects/622272da-f1ff-45ab-a3f0-c8f1255c80e8/variants/733e429a-e232-4e5d-a41e-9bd50aa9763c/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

idmandatorystring(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"
}