# ComponentController
# Overview
# Description
Path /v2/components
Handles all request regarding component: creating, updating, deleting.
# Component JSON Object
An example for a component JSON object.
{
    "externalIdentifier": "door_1",
    "catalog": "roomle_white_furniture",
    "id": "roomle_white_furniture:door_1",
    "type": "door",
    "detailType": "other",
    "configuration": "a configuration JSON which describes this configuration.",
    "restrictionsForCore": "Json array of restrictions to be forwarded to the core",
    "active": false,
    "updated": "2016-06-01T07:54:07.000Z",
    "created": "2016-01-13T11:25:17.000Z",
    "perspectiveImage": "https://url-of-perspectiveImage",
    "labels": [],
    "orderable": false,
    "label": "Door",
    "language": "en",
    "links": {
        "tags": "/components/roomle_white_furniture:door_1/tags"
    },
    "version": 0
}
# fields
- externalIndentifier
- catalog
- id
- type
- detailType
- configuration
- restrictionsForCore
- active
- updated
- created
- prespectiveImage
- labels
- orderable
- label
- language
- links
- version
# API Reference
# GET /:id
Generates: json
Returns a specific component.
Response:
Component objects are described in section Component JSON Object
{
    "component": componentObject
}
# POST /
Creates a new component.
Accepts: application/json Generates: application/json
Response: Component object as described in section Component JSON Object
{
    "component": componentObject
}
# PUT /:id
Updates an existing component.
Accepts: application/json Generates: application/json
Response: Component object as described in section Component JSON Object
{
    "component": componentObject
}
# GET /:id/tags
Generates: json
Returns all tags which have are assigned to this component.
Response:
Tag objects are described in section Tag JSON Object
{
    "tags": [
        tagObject1,
        tagObject2,
        ...
    ],
    "meta": {
        "total": 2,
        "serverTime": "2019-03-14T13:02:37.222Z"
    }
}
# Component restrictions
Path /v2/components/:id
Restrictions are used to restrict views from showing parameters, parameter-values or addons. A Restriction contains
- embedId or tenantId : defines where this restriction applies. Either the given tenant in roomle, or the embedding (configurator). if none is given the restriction is global.
- fromOwner : defines if this restriction is managed by the owner of the catalog, if false, the owner of the target tenant/embed manages it.
- active : if this restriction is currently active
- restrictionTarget : "parameter", "valueIn:" or "addOn" what to apply this restriction on 
- restrictionType : EXCLUDE(1) or RESTRICT_TO(2) : exclude means this value should not be shown, restrict_to means only these values should be shown.
- restrictionValue : the value of the restriction
{
    "id":"idOfTheRestriction",
    "fromOwner":true,
    "embedId":"configuratorId",
    "restrictionTarget":"paramValue:width",
    "restrictionType":2,
    "restrictionValue":"120"
    "active":true
}
# GET /restrictions
Generates: json
returns the restrictions of this component manageable by the current tenant (fromOwner if tenant is owner, matching tenantId or embedds where this tenant is the owner)
# POST /restrictions
Accepts: json
Generates: json
creates a new restriction with the given values
# PUT /restrictions/:id
Accepts: json
Generates: json
updates the given restriction with the given values
# DELETE /restrictions/:id
deletes the given restriction
# GET /:id/perspectiveImage
returns a temporary redirect (307) to the URL of the perspectiveImage for this component
