# Different types of configurations

The configurator can load every `configurable-item`, `configuration` and `configuration string`. Let's digg into what these terms mean.

#### Configurable item <a href="#configurable-item" id="configurable-item"></a>

A configurable item is a product which is saved to the Roomle Database (or external service). Every configurable item is attached to a catalog and get's a combined ID. The ID of the configurable item looks like: `catalogID:itemID` (for example: `usm:frame`). That there is one `:` inside the ID indicates that it is a configurable item. All configurable items also have a configuration string. This string is a script which is written in the Roomle Scripting Language. You can find details about [scripting here (opens new window)](https://github.com/Roomle/scripting-docu). Since a configurable item is part of a catalog it is possible to add meta data, like dimensions, labels etc to it. To load a configurable item you can use the following code: `roomleConfigurator.getApi().loadConfigurableItemById(id)`. You get the IDs of your product when you add them to the Roomle Rubens Admin platform.

#### Configuration <a href="#configuration" id="configuration"></a>

A configuration is a specific configuration string which is saved to the Roomle Database (or external service). The regular way to create a configuration is to load a configurable item and then change it. If you then save the changed configurable item to the Roomle Furniture Platform it becomes a configuration. In contrast to a configurable item the configuration has no meta data like labels etc. But like a configurable item a configuration has an ID. The ID consists of the id of a catalog, and a root component, extended by a [hash (opens new window)](https://en.wikipedia.org/wiki/Hash_function)which describes the configuration. The ids and the hash are seperated by `:` therefore the ID has two `:` an example configuration ID looks like:

```
usm:frame:0003390D41E3F803F1CFE98B7A13CFD00E51D068D187F7EC840FEDEB774AB13A
```

#### Configuration String <a href="#configuration-string" id="configuration-string"></a>

A configuration string is a string which is written in Roomle Scripting Language. This script can be saved to a configurable item or can be the result of a change to a configurable item. If you want to load a configuration string you can use the following code: `roomleConfigurator.getApi().loadConfiguration(configurationString)`. The configuration string can be scripted. For details about scripting [see here (opens new window)](https://github.com/Roomle/scripting-docu). A sample configuration string looks as follows:

```
{ "componentId": "usm:frame" }
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roomle.com/rubens/rubens-sdk/rubens-configurator/different-types-of-configurations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
