npm package: @rhombussystems/n8n-nodes-client
Description: n8n community node for Rhombus security cameras, access control, and IoT sensors
Author: gulleyjeremy
Latest version: 0.3.2

# @rhombussystems/n8n-nodes-client

This is an n8n community node for integrating with the [Rhombus](https://rhombussystems.com/) physical security API. It lets you automate security camera management, access control operations, event monitoring, and organization workflows within your n8n workflows.

[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

**Table of Contents**
- [Installation](#installation)
- [Operations](#operations)
- [Credentials](#credentials)
- [Compatibility](#compatibility)
- [Usage Examples](#usage-examples)
- [Resources](#resources)

## Installation

Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

### Quick Install

In n8n, go to **Settings > Community Nodes** and enter:

```
@rhombussystems/n8n-nodes-client
```

## Operations

This node provides access to the Rhombus API across 6 resource types with 19 operations. All endpoints are validated against the [Rhombus Public OpenAPI Spec](https://api2.rhombussystems.com/api/openapi/public.json).

### Camera Operations

Manage security cameras and retrieve video content.

| Operation | Description | API Endpoint |
|-----------|-------------|-------------|
| **Get** | Get full state of a single camera | `getFullCameraState` |
| **Get Many** | List all cameras in the organization | `getMinimalCameraStateList` |
| **Create Clip** | Create a video clip from a camera | `spliceV3` |
| **Get Frame** | Get an exact frame image URL from a camera | `getExactFrameUri` |
| **Update** | Update camera name, description, or location | `updateDetailsV2` |

### Door Operations

Control access points and monitor door events.

| Operation | Description | API Endpoint |
|-----------|-------------|-------------|
| **Get Many** | List all access-controlled doors | `findMinimalStateAccessControlledDoors` |
| **Unlock** | Temporarily unlock an access-controlled door | `unlockAccessControlledDoor` |
| **Get Events** | Get access event history for a door | `findComponentEventsByAccessControlledDoor` |

### Event Operations

Monitor security events and alerts.

| Operation | Description | API Endpoint |
|-----------|-------------|-------------|
| **Get Alerts** | Get policy alerts with time and device filters | `getPolicyAlerts` |
| **Get Many** | Get a list of saved video clips | `getSavedClipsV2` |

### User Operations

Manage users in the organization.

| Operation | Description | API Endpoint |
|-----------|-------------|-------------|
| **Create** | Create a new user with email and name | `createUser` |
| **Get Many** | List all users in the organization | `getUsersInOrg` |
| **Update** | Update user name, permissions, or MFA settings | `updateUserSelective` |

### Organization Operations

Manage organization-level settings and locations.

| Operation | Description | API Endpoint |
|-----------|-------------|-------------|
| **Get** | Get organization information | `getOrgV2` |
| **Get Locations** | List locations in the organization | `getLocations` |
| **Update** | Update organization name, contacts, or settings | `updateGeneralSettings` |

### Webhook Operations

Configure webhook integrations for event notifications.

| Operation | Description | API Endpoint |
|-----------|-------------|-------------|
| **Get** | Get the webhook integration configuration | `getWebhookIntegration` |
| **Create/Update** | Create or update webhook settings (URL, secret, enabled) | `updateWebhookIntegration` |
| **Delete** | Delete the webhook integration | `deleteWebhookIntegration` |

## Credentials

### Rhombus API Key

You'll need a Rhombus API key to authenticate requests.

#### Getting Your API Key

1. Log in to the [Rhombus Console](https://console.rhombussystems.com/)
2. Navigate to **Settings > API Keys**
3. Click **Generate New API Key**
4. Give your API key a descriptive name (e.g., "n8n Integration")
5. Copy the generated API key (you won't be able to see it again)

#### Configuring Credentials in n8n

1. In n8n, go to **Credentials** and create a new **Rhombus API** credential
2. Paste your API key into the **API Key** field
3. Click **Save**

The node automatically includes the required authentication headers:
- `x-auth-apikey`: Your API key
- `x-auth-scheme`: `api-token`

**Note:** Keep your API key secure. Anyone with access to your API key can control your Rhombus devices and access your data.

## Compatibility

- **n8n version:** 1.60.0 or later
- **Node.js:** 22+
- **Rhombus API:** All endpoints use the public API at `api2.rhombussystems.com`

## Usage Examples

### Example 1: Daily Security Alert Report

Generate a daily summary of security alerts.

1. **Schedule Trigger** (daily at 8 AM)
2. **Rhombus Node:** Resource: Event, Operation: Get Alerts
   - After Time: `{{$now.minus({hours: 24}).toISO()}}`
   - Max Results: 100
3. **Code Node:** Format alerts into a report
4. **Email Node:** Send to security team

### Example 2: Unlock Door on Calendar Event

Automatically unlock a conference room door before a meeting.

1. **Google Calendar Trigger** (meeting starts in 5 minutes)
2. **Rhombus Node:** Resource: Door, Operation: Unlock
   - Door: Select from dropdown

### Example 3: User Onboarding Automation

Create Rhombus accounts when employees join.

1. **Webhook Trigger** from HR system
2. **Rhombus Node:** Resource: User, Operation: Create
   - Email: `{{$json.email}}`
   - Name: `{{$json.name}}`
   - Suppress Welcome Email: false

### Example 4: Camera Clip on Alert

Automatically save a clip when an alert fires.

1. **Schedule Trigger** (every 5 minutes)
2. **Rhombus Node:** Resource: Event, Operation: Get Alerts
   - After Time: `{{$now.minus({minutes: 5}).toISO()}}`
3. **Rhombus Node:** Resource: Camera, Operation: Create Clip
   - Camera: from alert device UUID
   - Start Time: from alert timestamp
   - Duration: 60 seconds
   - Save to Console: true

## API Rate Limits

Rhombus enforces rate limits of **1,000 requests/hour** and **100 requests/minute** burst. Design workflows with appropriate intervals (typically no more than once per minute for polling).

## Development

### Building from Source

```bash
npm install
npm run build
npm run lint
npm run lint:fix  # auto-fix linting issues
```

### Project Structure

```
credentials/
  RhombusApi.credentials.ts       # API key auth
nodes/Rhombus/
  Rhombus.node.ts                 # Main node class
  Rhombus.node.json               # Codex metadata
  resources/                      # One directory per resource
    camera/                       # get, getAll, getClip, getThumbnail, update
    door/                         # getAll, unlock, getAccessLogs
    event/                        # getAll, getAlerts
    organization/                 # get, getLocations, update
    user/                         # create, getAll, update
    webhook/                      # get, create, delete
  shared/
    transport.ts                  # Authenticated HTTP helper
    descriptions.ts               # Reusable resourceLocator fields
    utils.ts                      # Timestamp conversion, response extraction
  listSearch/                     # Searchable dropdown methods
icons/                            # SVG icons (light/dark)
```

## Resources

- [Rhombus API Documentation](https://api-docs.rhombus.community/)
- [Rhombus OpenAPI Spec](https://api2.rhombussystems.com/api/openapi/public.json)
- [Rhombus Console](https://console.rhombussystems.com/)
- [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/#community-nodes)
- [Rhombus Developer Community](https://rhombus.community)

## License

[MIT](LICENSE)

## Support

- **Node Issues:** [GitHub Issues](https://github.com/RhombusSystems/n8n-Rhombus-client-node/issues)
- **Rhombus API Support:** api@rhombus.com
- **n8n Community:** [n8n Forum](https://community.n8n.io/)