> ## Documentation Index
> Fetch the complete documentation index at: https://docs-beta.rebase.energy/llms.txt
> Use this file to discover all available pages before exploring further.

# Component Endpoints

> Build and manage visualization components

## Component Endpoints

Create and manage different types of visualization components for dashboards.

## POST /components/map

<Note>Creates a new map component for geospatial data visualization.</Note>

```python theme={null}
# Create a map component
map_component = client.components.create_map(
    name="Wind Farm Map",
    config={...},
    layer_ids=[...]
)
```

<RequestExample>
  <RequestExample.Method>POST</RequestExample.Method>
  <RequestExample.URL>/components/map</RequestExample.URL>

  <RequestExample.Body>
    ```json theme={null}
    {
      "name": "Wind Farm Map",
      "config": {
        "latitude": 55.2,
        "longitude": 3.5,
        "zoom": 8,
        "map_style": "mapbox://styles/mapbox/outdoors-v12"
      },
      "layer_ids": ["layer_123", "layer_456"]
    }
    ```
  </RequestExample.Body>
</RequestExample>

<ResponseExample>
  <ResponseExample.StatusCode>201</ResponseExample.StatusCode>

  <ResponseExample.Body>
    ```json theme={null}
    {
      "id": "comp_123",
      "name": "Wind Farm Map",
      "type": "map",
      "config": {...},
      "layer_ids": ["layer_123", "layer_456"],
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    }
    ```
  </ResponseExample.Body>
</ResponseExample>

## POST /components/timeseries

<Note>Creates a new time series component for charts and graphs.</Note>

```python theme={null}
# Create a time series component
timeseries_component = client.components.create_timeseries(
    name="DK2",
    title="DK2",
    datasets=[dk2_dayahead_dataset.id, dk2_prod_dataset.id],
    theme="wind_dark",
    echarts_options={"color": ["#6464FF", "#555555"]}
)
```

<RequestExample>
  <RequestExample.Method>POST</RequestExample.Method>
  <RequestExample.URL>/components/timeseries</RequestExample.URL>

  <RequestExample.Body>
    ```json theme={null}
    {
      "name": "DK2",
      "title": "DK2", 
      "datasets": ["dk2_dayahead_dataset.id", "dk2_prod_dataset.id"],
      "theme": "wind_dark",
      "echarts_options": {"color": ["#6464FF", "#555555"]}
    }
    ```
  </RequestExample.Body>
</RequestExample>

<ResponseExample>
  <ResponseExample.StatusCode>201</ResponseExample.StatusCode>

  <ResponseExample.Body>
    ```json theme={null}
    {
      "id": "comp_456",
      "name": "DK2",
      "title": "DK2", 
      "datasets": ["dk2_dayahead_dataset.id", "dk2_prod_dataset.id"],
      "theme": "wind_dark",
      "echarts_options": {"color": ["#6464FF", "#555555"]},
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    }
    ```
  </ResponseExample.Body>
</ResponseExample>

## GET /components

<Note>Retrieves all components in the user's library.</Note>

```python theme={null}
# List all components
components = client.components.list_components()
```

<RequestExample>
  <RequestExample.Method>GET</RequestExample.Method>
  <RequestExample.URL>/components</RequestExample.URL>
</RequestExample>

<ResponseExample>
  <ResponseExample.StatusCode>200</ResponseExample.StatusCode>

  <ResponseExample.Body>
    ```json theme={null}
    [
      {
        "id": "comp_123",
        "name": "Wind Farm Map",
        "type": "map",
        "config": {...},
        "layer_ids": ["layer_123", "layer_456"],
        "created_at": "2024-01-01T00:00:00Z",
        "updated_at": "2024-01-01T00:00:00Z"
      },
      {
        "id": "comp_456",
        "name": "Energy Production Chart",
        "type": "timeseries",
        "config": {...},
        "created_at": "2024-01-01T00:00:00Z",
        "updated_at": "2024-01-01T00:00:00Z"
      }
    ]
    ```
  </ResponseExample.Body>
</ResponseExample>

## GET /components/{component_id}

<Note>Retrieves a specific component by ID.</Note>

```python theme={null}
# Get a specific component by ID string
component = client.components.get_component("comp_123")

# Or if you have a component object
component = client.components.get_component(component.id)
```

<RequestExample>
  <RequestExample.Method>GET</RequestExample.Method>
  <RequestExample.URL>/components/{component_id}</RequestExample.URL>
</RequestExample>

<ResponseExample>
  <ResponseExample.StatusCode>200</ResponseExample.StatusCode>

  <ResponseExample.Body>
    ```json theme={null}
    {
      "id": "comp_123",
      "name": "Wind Farm Map",
      "type": "map",
      "config": {...},
      "layer_ids": ["layer_123", "layer_456"],
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    }
    ```
  </ResponseExample.Body>
</ResponseExample>

## PUT /components/map/{component_id}

<Note>Updates an existing map component.</Note>

```python theme={null}
# Update a map component by ID string
updated_component = client.components.update_map(
    "comp_123",
    name="Updated Wind Farm Map",
    config={...},
    layer_ids=[...]
)

# Or if you have a component object
updated_component = client.components.update_map(
    component.id,
    name="Updated Wind Farm Map",
    config={...},
    layer_ids=[...]
)
```

<RequestExample>
  <RequestExample.Method>PUT</RequestExample.Method>
  <RequestExample.URL>/components/map/{component_id}</RequestExample.URL>

  <RequestExample.Body>
    ```json theme={null}
    {
      "name": "Updated Wind Farm Map",
      "config": {
        "latitude": 55.5,
        "longitude": 3.8,
        "zoom": 10,
        "map_style": "mapbox://styles/mapbox/satellite-v9"
      },
      "layer_ids": ["layer_123", "layer_456", "layer_789"]
    }
    ```
  </RequestExample.Body>
</RequestExample>

<ResponseExample>
  <ResponseExample.StatusCode>200</ResponseExample.StatusCode>

  <ResponseExample.Body>
    ```json theme={null}
    {
      "id": "comp_123",
      "name": "Updated Wind Farm Map",
      "type": "map",
      "config": {...},
      "layer_ids": ["layer_123", "layer_456", "layer_789"],
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T12:00:00Z"
    }
    ```
  </ResponseExample.Body>
</ResponseExample>

## PUT /components/timeseries/{component_id}

<Note>Updates an existing time series component.</Note>

```python theme={null}
# Update a time series component by ID string
updated_component = client.components.update_timeseries(
    "comp_456",
    name="Updated Energy Chart",
    title="New DK2",
    echarts_options={
        "color": ["#6464FF", "#555555"],
    }
)

# Or if you have a component object
updated_component = client.components.update_timeseries(
    component.id,
    name="Updated Energy Chart",
    title="New DK2",
    echarts_options={
        "color": ["#6464FF", "#555555"],
    }
)
```

<RequestExample>
  <RequestExample.Method>PUT</RequestExample.Method>
  <RequestExample.URL>/components/timeseries/{component_id}</RequestExample.URL>

  <RequestExample.Body>
    ```json theme={null}
    {
      "name": "DK2",
      "title": "DK2", 
      "datasets": ["dk2_dayahead_dataset.id", "dk2_prod_dataset.id"],
      "theme": "wind_dark",
      "echarts_options": {"color": ["#6464FF", "#555555"]}
    }
    ```
  </RequestExample.Body>
</RequestExample>

<ResponseExample>
  <ResponseExample.StatusCode>200</ResponseExample.StatusCode>

  <ResponseExample.Body>
    ```json theme={null}
    {
      "id": "comp_456",
      "name": "DK2",
      "title": "DK2", 
      "datasets": ["dk2_dayahead_dataset.id", "dk2_prod_dataset.id"],
      "theme": "wind_dark",
      "echarts_options": {"color": ["#6464FF", "#555555"]},
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T12:00:00Z"
    }
    ```
  </ResponseExample.Body>
</ResponseExample>

## DELETE /components/{component_id}

<Note>Permanently deletes a component from the user's library.</Note>

```python theme={null}
# Delete a component by ID string
client.components.delete_component("comp_123")

# Or if you have a component object
client.components.delete_component(component.id)
```

<RequestExample>
  <RequestExample.Method>DELETE</RequestExample.Method>
  <RequestExample.URL>/components/{component_id}</RequestExample.URL>
</RequestExample>

<ResponseExample>
  <ResponseExample.StatusCode>204</ResponseExample.StatusCode>

  <ResponseExample.Body>
    ```json theme={null}
    {}
    ```
  </ResponseExample.Body>
</ResponseExample>

## Component Types

### Map Component

* **Type**: `map`
* **Required**: `name`, `config` (latitude, longitude, zoom)
* **Optional**: `layer_ids` (array of layer IDs)

### Time Series Component

* **Type**: `timeseries`
* **Required**: `name`, `config` (title, datasets)
* **Optional**: `config.y_axis_label`, `config.unit`
