An open API service indexing awesome lists of open source software.

https://github.com/dotwee/node-red-raindrop

Node-RED contribution package for interacting with the Raindrop.io API. Nodes for managing bookmarks, collections, tags, and user information.
https://github.com/dotwee/node-red-raindrop

node-red node-red-architecture node-red-contrib node-red-flow nodejs npm npm-module npm-package

Last synced: about 1 month ago
JSON representation

Node-RED contribution package for interacting with the Raindrop.io API. Nodes for managing bookmarks, collections, tags, and user information.

Awesome Lists containing this project

README

          

# Node-RED Raindrop Client

[![GitHub License](https://img.shields.io/github/license/dotWee/node-red-raindrop)](https://github.com/dotWee/node-red-raindrop)
[![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/dotwee/node-red-raindrop)](https://github.com/dotWee/node-red-raindrop)
[![NPM Version](https://img.shields.io/npm/v/%40dotwee%2Fnode-red-raindrop)](https://www.npmjs.com/package/@dotwee/node-red-raindrop)
[![NPM Downloads](https://img.shields.io/npm/dm/%40dotwee%2Fnode-red-raindrop)](https://www.npmjs.com/package/@dotwee/node-red-raindrop)
[![CI Status](https://github.com/dotWee/node-red-raindrop/actions/workflows/ci.yml/badge.svg)](https://github.com/dotWee/node-red-raindrop/actions/workflows/ci.yml)

A comprehensive [Node-RED](https://nodered.org) contribution package for interacting with the [Raindrop.io](https://raindrop.io) API. This package provides a complete set of nodes for managing bookmarks, collections, tags, and user information in Raindrop.io.

## Features

- ✅ **Full CRUD Operations** for raindrops (bookmarks) and collections
- ✅ **Advanced Search & Filtering** with support for Raindrop.io search operators
- ✅ **Tag Management** for organizing and retrieving tags
- ✅ **User Information** access and management
- ✅ **Authentication** via OAuth access tokens
- ✅ **Comprehensive Testing** with unit test coverage
- ✅ **TypeScript Client** integration using `@lasuillard/raindrop-client`

## Installation

### From npm

```bash
cd ~/.node-red
npm install @dotwee/node-red-raindrop
```

### From GitHub Packages

```bash
cd ~/.node-red
npm install @dotwee/node-red-raindrop --registry=https://npm.pkg.github.com
```

### From source

```bash
cd ~/.node-red
# Clone the repository first if you haven't
# git clone https://github.com/dotWee/node-red-raindrop.git
# cd node-red-raindrop
npm install
# cd ..
# Then link it or install directly
npm install /path/to/your-local/node-red-raindrop
```

## Quick Start

### 1. Get Your API Access Token

1. Go to [Raindrop.io Integrations](https://app.raindrop.io/settings/integrations)
2. Create a new app to get your access token
3. Copy the access token for use in Node-RED

### 2. Configure Authentication

1. Add a **Raindrop Config** node to your flow
2. Enter your access token
3. Test the connection to verify it works

### 3. Start Using the Nodes

You can now use any of the Raindrop nodes in your flows. All operational nodes require a Raindrop Config node to be configured.

## Available Nodes

### Configuration

- **raindrop-config** - Authentication and API configuration

### Raindrop Operations

- **raindrop-create** - Create new bookmarks
- **raindrop-get** - Retrieve individual bookmarks by ID
- **raindrop-update** - Update existing bookmarks
- **raindrop-delete** - Delete bookmarks
- **raindrop-search** - Search and filter bookmarks with pagination

### Collection Operations

- **collection-create** - Create new collections
- **collection-get** - Retrieve individual collections by ID
- **collection-update** - Update existing collections
- **collection-delete** - Delete collections
- **collection-list** - List all collections

### Tag Operations

- **tags-get** - Retrieve tags from collections
- **tags-manage** - Manage tags (rename, merge, delete)

### User Operations

- **user-get** - Get current user information

### Highlight Operations

- **highlights-get** - Retrieve text highlights

## Node Details

### Raindrop Search Node

The search node supports all Raindrop.io search operators:

```text
tag:javascript # Search by tag
type:article # Search by type
domain:github.com # Search by domain
important:true # Important bookmarks only
broken:true # Broken links only
created:2023 # By creation year
"exact phrase" # Exact phrase search
```

### Collection IDs

Special collection IDs in Raindrop.io:

- **0** - All raindrops (except Trash)
- **-1** - Unsorted collection
- **-99** - Trash collection

### Error Handling

All nodes include comprehensive error handling:

- Invalid authentication tokens
- Network connectivity issues
- API rate limiting
- Missing required parameters
- Invalid data formats

## Examples

### Create a Bookmark

```json
[
{
"id": "create-example",
"type": "raindrop-create",
"name": "Create Bookmark",
"config": "raindrop-config-node-id"
}
]
```

Input message:

```json
{
"payload": {
"link": "https://nodejs.org",
"title": "Node.js Official Website",
"tags": ["nodejs", "javascript", "development"],
"important": true,
"collectionId": 12345
}
}
```

### Search Bookmarks

```json
[
{
"id": "search-example",
"type": "raindrop-search",
"name": "Search JS Articles",
"config": "raindrop-config-node-id",
"search": "tag:javascript type:article",
"sort": "-created",
"perpage": "10"
}
]
```

### List Collections

```json
[
{
"id": "list-example",
"type": "collection-list",
"name": "Get All Collections",
"config": "raindrop-config-node-id",
"includeChildCollections": true
}
]
```

## Example Flows

This package provides ready-to-use example flows to help you get started quickly. You can find them in the `examples/` directory:

- **Create Bookmark**: `examples/Create Bookmark.json`
- **Search Bookmarks**: `examples/Search Bookmarks.json`
- **List Collections**: `examples/List Collections.json`

### Importing Example Flows in Node-RED

1. In Node-RED, click the menu (☰) in the top right corner.
2. Select **Import** > **Examples** > **@dotwee/node-red-raindrop**.
3. Choose the example you want to import.

Alternatively, you can import the JSON files directly:

1. Open the `examples/` directory in this repository.
2. Copy the contents of the desired `.json` file.
3. In Node-RED, click the menu (☰) > **Import** > **Clipboard** and paste the JSON.

These examples are designed to be short and self-contained, with comment nodes describing their functionality. No third-party nodes are required beyond this package.

## Development

### Requirements

- Node.js 14+
- Node-RED 2.0+

### Dependencies

- `@lasuillard/raindrop-client` - TypeScript client for Raindrop.io API
- `axios` - HTTP client

### Development Dependencies

- `node-red-node-test-helper` - Testing framework
- `mocha` - Test runner
- `should` - Assertion library

### Running Tests

```bash
npm test
```

### Project Structure

```text
node-red-raindrop/
├── nodes/ # Node implementations
│ ├── raindrop-config.js # Configuration node
│ ├── raindrop-*.js # Raindrop operation nodes
│ ├── collection-*.js # Collection operation nodes
│ ├── tags-*.js # Tag operation nodes
│ └── user-*.js # User operation nodes
├── test/ # Unit tests
│ └── *_spec.js # Test files
├── package.json # Package configuration
├── openapi.yaml # API specification
└── README.md # This file
```

## API Coverage

This package provides nodes for the following Raindrop.io API endpoints:

### Raindrops

- ✅ Create raindrop
- ✅ Get raindrop
- ✅ Update raindrop
- ✅ Delete raindrop
- ✅ Search raindrops
- ✅ Upload files
- ✅ Upload covers

### Collections

- ✅ Create collection
- ✅ Get collection
- ✅ Update collection
- ✅ Delete collection
- ✅ List collections
- ✅ Upload collection covers
- ✅ Merge collections
- ✅ Share collections

### Tags

- ✅ Get tags
- ✅ Rename/merge tags
- ✅ Delete tags

### Users

- ✅ Get current user
- ✅ Update user
- ✅ Get public user

### Highlights

- ✅ Get highlights

### Authentication

- ✅ OAuth token management

## Contributing

1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Ensure all tests pass
5. Submit a pull request

## License

This project is licensed under the WTFPL License. See [LICENSE](./LICENSE) for details.

## Links

- [Raindrop.io](https://raindrop.io)
- [Raindrop.io API Documentation](https://developer.raindrop.io)
- [Node-RED](https://nodered.org)
- [OpenAPI Specification](./openapi.yaml)

## Support

For issues and questions:

- [GitHub Issues](https://github.com/dotWee/node-red-raindrop/issues)
- [Node-RED Forum](https://discourse.nodered.org)

## Changelog

See [CHANGELOG.md](CHANGELOG.md) for a detailed history of changes.