@dotwee/node-red-raindrop 1.0.0
Node-RED nodes for interacting with the RainDrop.io web service.
Node-RED Raindrop Client
A comprehensive Node-RED contribution package for interacting with the 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
cd ~/.node-red
npm install @dotwee/node-red-raindrop
From GitHub Packages
cd ~/.node-red
npm install @dotwee/node-red-raindrop --registry=https://npm.pkg.github.com
From source
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
- Go to Raindrop.io Integrations
- Create a new app to get your access token
- Copy the access token for use in Node-RED
2. Configure Authentication
- Add a Raindrop Config node to your flow
- Enter your access token
- 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:
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
[
{
"id": "create-example",
"type": "raindrop-create",
"name": "Create Bookmark",
"config": "raindrop-config-node-id"
}
]
Input message:
{
"payload": {
"link": "https://nodejs.org",
"title": "Node.js Official Website",
"tags": ["nodejs", "javascript", "development"],
"important": true,
"collectionId": 12345
}
}
Search Bookmarks
[
{
"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
[
{
"id": "list-example",
"type": "collection-list",
"name": "Get All Collections",
"config": "raindrop-config-node-id",
"includeChildCollections": true
}
]
Development
Requirements
- Node.js 14+
- Node-RED 2.0+
Dependencies
@lasuillard/raindrop-client
- TypeScript client for Raindrop.io APIaxios
- HTTP client
Development Dependencies
node-red-node-test-helper
- Testing frameworkmocha
- Test runnershould
- Assertion library
Running Tests
npm test
Project Structure
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
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
License
This project is licensed under the WTFPL License.
Links
Support
For issues and questions:
Changelog
See CHANGELOG.md for a detailed history of changes.