npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

n8n-nodes-skyflow

v0.1.1

Published

n8n node for Skyflow data privacy operations including detokenization

Readme

n8n-nodes-skyflow

This is an n8n community node for Skyflow, a data privacy vault platform. It provides secure tokenization, detokenization, and text deidentification capabilities for sensitive data.

n8n is a workflow automation platform that allows you to connect various services and build powerful integrations.

Skyflow is a data privacy vault that helps you protect sensitive data through tokenization, encryption, and granular access controls.

Installation

Community Nodes (Recommended)

For n8n users, you can install this node directly from the n8n Community Nodes:

  1. Go to Settings > Community Nodes
  2. Select Install
  3. Enter n8n-nodes-skyflow in Enter npm package name
  4. Click Install

Manual Installation

To install the node manually:

npm install n8n-nodes-skyflow

For local development and testing:

# Clone the repository
git clone https://github.com/SkyflowFoundry/Skyflowforn8n.git
cd Skyflowforn8n

# Install dependencies
npm install

# Build the node
npm run build

# Link the package locally
npm link

# In your n8n installation directory
npm link n8n-nodes-skyflow

Prerequisites

Before using this node, you'll need:

  1. Skyflow Account: Sign up at Skyflow
  2. Skyflow Vault: Create a vault in the Skyflow Studio
  3. API Key: Generate an API key with appropriate permissions
  4. Vault Details: Note your Vault ID and Cluster ID from the vault URL

Configuration

Setting Up Credentials

  1. In n8n, go to Credentials > New
  2. Search for and select Skyflow API
  3. Fill in the required fields:
    • API Key: Your Skyflow API key
    • Vault ID: The ID of your Skyflow vault
    • Cluster ID: The cluster identifier from your vault URL (e.g., my-cluster from https://my-cluster.vault.skyflowapis.com)
    • Environment: Select the appropriate environment (Production, Development, Sandbox, or Stage)
    • Log Level: Set logging level (ERROR recommended for production)
  4. Click Create to save the credentials

Finding Your Vault Information

  • Vault ID: Found in Skyflow Studio under vault settings
  • Cluster ID: Extract from your vault URL: https://{clusterId}.vault.skyflowapis.com
  • API Key: Generate in Skyflow Studio under API Keys section

Operations

Deidentify Text

Automatically detects and replaces sensitive data in text with tokens using Skyflow's AI-powered entity detection.

Parameters:

  • Text (required): The text containing sensitive data to deidentify
  • Entities: Types of entities to detect (Credit Card, SSN, Phone Number, Name, Date of Birth, Driver License)
    • Leave empty to detect all supported entity types
  • Options:
    • Token Type: How to format replacement tokens
      • Vault Token: Store in vault and return token (recommended)
      • Entity Only: Replace with entity type (e.g., [SSN])
      • Entity Counter: Replace with entity type and counter (e.g., [SSN_1])

Example Input:

My SSN is 123-45-6789 and my card is 4111 1111 1111 1111.

Example Output:

{
  "processedText": "My SSN is [SSN_1] and my card is [CREDIT_CARD_1].",
  "entities": [
    {
      "token": "SSN_1",
      "value": "123-45-6789",
      "entity_type": "SSN",
      "location": {...}
    },
    {
      "token": "CREDIT_CARD_1",
      "value": "4111 1111 1111 1111",
      "entity_type": "CREDIT_CARD",
      "location": {...}
    }
  ],
  "wordCount": 13
}

Detokenize

Converts tokens back to their original values.

Single Token Mode

Detokenize one token at a time.

Parameters:

  • Token (required): The token to detokenize
  • Redaction Type: How to redact the returned data
    • Plain Text: Return unredacted values
    • Masked: Return partially masked values
    • Redacted: Return fully redacted values
    • Default: Use default redaction settings

Example:

{
  "token": "9738-1683-0486-1480",
  "redactionType": "PLAIN_TEXT"
}

Response:

{
  "detokenizedFields": [
    {
      "token": "9738-1683-0486-1480",
      "value": "4111111111111115",
      "type": "STRING"
    }
  ]
}

Batch Tokens Mode

Detokenize multiple tokens in a single request (more efficient).

Parameters:

  • Tokens (required): JSON array of tokens to detokenize
  • Redaction Type: How to redact the returned data

Example:

{
  "tokens": ["token1", "token2", "token3"],
  "redactionType": "PLAIN_TEXT"
}

Response:

{
  "detokenizedFields": [
    {
      "token": "token1",
      "value": "value1",
      "type": "STRING"
    },
    {
      "token": "token2",
      "value": "value2",
      "type": "STRING"
    },
    {
      "token": "token3",
      "value": "value3",
      "type": "STRING"
    }
  ]
}

Advanced Options

Continue On Error

  • When enabled, the operation continues processing all tokens even if some fail
  • Failed tokens are included in the errors array in the response
  • When disabled, the operation stops at the first error

Download URL

  • When enabled, generates download URLs for file tokens
  • Useful when working with file-type data stored in Skyflow

Example with Errors:

{
  "detokenizedFields": [
    {
      "token": "valid-token",
      "value": "value",
      "type": "STRING"
    }
  ],
  "errors": [
    {
      "token": "invalid-token",
      "error": "Token Not Found"
    }
  ]
}

Reidentify Text

Converts tokens in text back to their original or redacted values.

Parameters:

  • Text (required): Text containing tokens to reidentify (e.g., from deidentify operation)
  • Redaction Type: How to display the reidentified values
    • Plain Text: Return original unredacted values
    • Masked: Return masked values (show last 4 characters)
    • Redacted: Return fully redacted values

Example Input:

My SSN is [SSN_1] and my card is [CREDIT_CARD_1].

Example Output (Masked):

{
  "processedText": "My SSN is ***-**-6789 and my card is ****-****-****-1111."
}

Example Output (Plain Text):

{
  "processedText": "My SSN is 123-45-6789 and my card is 4111 1111 1111 1111."
}

Tokenize

Tokenizes sensitive data and returns secure tokens for safe reference.

Parameters:

  • Table Name (required): The vault table where data will be inserted
  • Records (required): JSON object or array of objects containing the data
    • Single record: {"card_number": "4111111111111111", "name": "John Doe"}
    • Multiple records: [{"field1": "value1"}, {"field2": "value2"}]
  • Options:
    • Return Tokens (default: true): Whether to return tokens for the inserted data
    • Continue On Error (default: false): Continue if some records fail
    • Upsert Column: Column name for upsert (update if exists, insert if not)

Example Input:

{
  "tableName": "cards",
  "records": {
    "card_number": "4111111111111111",
    "cardholder_name": "John Doe",
    "expiry": "12/25"
  }
}

Example Output:

{
  "insertedFields": [
    {
      "skyflowId": "a8f3ed5d-55eb-4f32-bf7e-2dbf4b9d9097",
      "card_number": "5484-7829-1702-9110",
      "cardholder_name": "b2308e2a-c1f5-469b-97b7-1f193159399b",
      "expiry": "c7f89a1d-33ed-4821-ab12-5e4d8f1a2b3c"
    }
  ]
}

Batch Insert Example:

{
  "tableName": "users",
  "records": [
    {"email": "[email protected]", "ssn": "123-45-6789"},
    {"email": "[email protected]", "ssn": "987-65-4321"}
  ]
}

Usage Examples

Example 1: Deidentify Sensitive Text

  1. Add the Skyflow node to your workflow
  2. Select Deidentify Text operation
  3. Enter text containing sensitive data
  4. Optionally select specific entity types to detect
  5. Execute the workflow to get tokenized text

Example 2: Tokenize Customer Data

  1. Add the Skyflow node to your workflow
  2. Select Tokenize operation
  3. Enter table name (e.g., customers)
  4. Enter records as JSON: {"email": "[email protected]", "ssn": "123-45-6789"}
  5. Enable Return Tokens to get tokens back
  6. Execute the workflow

Example 3: Detokenize for Display

  1. Add the Skyflow node to your workflow
  2. Select Detokenize operation
  3. Choose Batch Tokens input mode
  4. Enter tokens in JSON array format: ["token1", "token2", "token3"]
  5. Select Masked redaction type to show last 4 digits
  6. Execute the workflow

Example 4: End-to-End Data Protection Workflow

[Webhook] → [Skyflow: Deidentify Text] → [Store in DB] → [Skyflow: Reidentify Text] → [Send Email]

Use expressions to pass data between nodes:

  • Pass processed text: {{ $json.processedText }}
  • Pass tokens: {{ JSON.stringify($json.entities) }}

Error Handling

The node provides detailed error messages for common issues:

  • Invalid token format: Validates that tokens are not empty
  • Invalid JSON: For batch mode, ensures the input is a valid JSON array
  • API errors: Wraps Skyflow API errors with helpful context
  • Empty arrays: Validates that at least one token is provided

All errors include the item index for debugging workflows with multiple inputs.

Compatibility

  • n8n version: Requires n8n v1.0.0 or later
  • Node.js: Requires Node.js v18 or later
  • Skyflow SDK: Uses skyflow-node v2.0.2

Development

Building

npm run build

Development Mode (Watch)

npm run dev

Linting

npm run lint
npm run lint:fix

Code Formatting

npm run format

Resources

Support

If you encounter issues or have questions:

License

MIT

Version History

0.1.0 (Initial Release)

  • Deidentify Text: Automatically detect and replace sensitive data in text
  • Detokenize: Convert tokens back to values with single and batch modes
  • Reidentify Text: Convert tokens in text back with redaction options
  • Tokenize: Protect sensitive data and return tokens
  • API Key authentication
  • Support for multiple redaction types
  • Advanced options (Continue On Error, Download URL, Upsert)
  • Comprehensive error handling