Skip to main content
Version: v5.0

NamedUserCollection

A NamedUserCollection is a collection of RelatedItems—it is the most commonly used NamedUserItem sub-type. NamedUserCollections and their RelatedItems are similar to database tables and their records. NamedUserCollections support single, compound, text and unique indexes.

Figure: Building elements NamedUserCollection diagram

For more information, see the following example code of a NamedUserCollection with its mandatory properties only:

{
"_id": "1e7433c4-a3de-4c15-b8fb-657c1d9b814c",
"_name": "Building elements collection",
"_userType": "building_elem_col", // A short custom name to describe the collection
"_itemClass": "NamedUserCollection", // Enter NamedUserCollection
}

Revit model data example

For the example of using imported Revit model data, you can store the building elements as RelatedItems in a NamedUserCollection you call ‘Building Elements’. Similarly, you can store the building element properties as RelatedItems in a NamedUserCollection you call ‘Element Properties’, where each RelatedItem contains all the properties of a single building element.

The following figure shows an example of how you can organize Revit model data into NamedUserCollections, RelatedItems, and relationships:

Support For encryption

The Item Service supports encryption for related items, using the standard encryption key. This feature was introduced in version 4.3 and is supported in the NamedUserCollection using the field _encryptionEnabled.

When this field is set to "True", any related items in the NamedUserCollection that are prefixed with a dot (".") will be encrypted before being stored in the database. These related items will then be decrypted when retrieved from the database.

Using the encryption field

The _encryptionEnabled field can be edited and works as follows:

  • When _encryptionEnabled is set to "True", encryption and decryption will be enabled.
  • When _encryptionEnabled is set to "False" or is given no value, then encryption and decryption will not be used.

Notes on encryption

Note the following when using this feature:

  • The encryption field can be a first level of RelatedItem JSON.
  • This feature is best suited for securely storing secrets in the database.
  • A field which is encrypted (perfixed with .) cannot be used in searches. This improves security for storing and retrieving sensitive information.

Example of using encryption

In the sample code, below, we have a Related Item, where the api_secret field is preceeded with a . which indicates that this field is to be encrypted. This field cannot be used in a search.

Original Related Item:

{
"_id":"6530c3852b4b7812d3486f72",
"api_host": "https://xxxxxxxx.companyx.com",
"api_key":"345df45ffddsfdf4554545dfdf44",
".api_secret":"gfE3PRIz7kB4vKUhrBRTgzSaqL5Fvk9FD6TXMgphuNFgNTvtYd6HKjEQz4NKYIMg"
}

Related Item as Stored in Database:

{
"_id":"6530c3852b4b7812d3486f72",
"api_host": "https://xxxxxxxx.companyx.com",
"api_key":"345df45ffddsfdf4554545dfdf44",
".api_secret":"Z2ZFM1BSSXo3a0I0dktVaHJCUlRnelNhcUw1RnZrOUZENlZ2ZFM1BSSXo3a0I0dktVaHJCUlRnelNhcUw1RnZrOUZENlRYTWdwaHVORmdOVHZ0WWQ2SEtqRVF6NE5LWUlNZw==RYTWdwaHVORmdOVHZ0WWQ2SEtqRVF6NE5LWUlNZw=="
}

Note that the api_secret information is now encrypted.

Related Item When Retrieved from Database:

{
"_id":"6530c3852b4b7812d3486f72",
"api_host": "https://xxxxxxxx.companyx.com",
"api_key":"345df45ffddsfdf4554545dfdf44",
".api_secret":"gfE3PRIz7kB4vKUhrBRTgzSaqL5Fvk9FD6TXMgphuNFgNTvtYd6HKjEQz4NKYIMg"
}

In this example, clients can search by the fields api_host and api_key but not by .api_secret because that field is encrypted. If an unauthorized person got direct access to the database they would not be able to obtain information about that secret.

Further reading

Refer to Named User Collections in the Rest API section for more information on using the encryption feature.

Schema

NamedUserCollection schema

API

You can create and manage NamedUserCollection with the IafItemSvc JavaScript Platform API or the Item Service REST API.