zebflow 0.10.10

Reactive web automation platform — pipelines, templates, and real-time collaboration in a single binary.
Documentation
{
  "apiVersion": "zebflow.com/v1",
  "kind": "NodeBundle",
  "metadata": {
    "name": "openai-embedding",
    "version": "1.0.0"
  },
  "spec": {
    "package": "openai-embedding",
    "version": "1.0.0",
    "title": "OpenAI Embedding",
    "description": "Generate text embeddings using any OpenAI-compatible API (/v1/embeddings).",
    "icon": "icon.svg",
    "credentials": [
      {
        "kind": "openai",
        "title": "OpenAI",
        "description": "OpenAI provider credential.",
        "fields": [],
        "placeholders": {
          "API_KEY": "api_key",
          "BASE_URL": "base_url",
          "MODEL": "model",
          "EMBEDDING_PATH": "embedding_path"
        },
        "config_key": "credential_id"
      },
      {
        "kind": "openrouter",
        "title": "OpenRouter",
        "description": "OpenRouter provider credential.",
        "fields": [],
        "placeholders": {
          "API_KEY": "api_key",
          "BASE_URL": "base_url",
          "MODEL": "model",
          "EMBEDDING_PATH": "embedding_path"
        },
        "config_key": "credential_id"
      }
    ],
    "hosts": [
      "api.openai.com",
      "openrouter.ai"
    ],
    "functions": {
      "embed": "functions/embed.zf.json"
    },
    "modules": {},
    "nodes": [
      {
        "kind": "n.ai.embedding",
        "title": "AI Embedding",
        "description": "Generate text embeddings via OpenAI-compatible /v1/embeddings endpoint.",
        "icon": "icons/embedding.svg",
        "ui_category": "logic.ai",
        "ui_category_label": "AI",
        "uses_credentials": [
          "openai",
          "openrouter"
        ],
        "run": {
          "function": "embed"
        },
        "definition": {
          "input_pins": [
            "in"
          ],
          "output_pins": [
            "out",
            "error"
          ],
          "config_schema": {
            "type": "object",
            "properties": {
              "credential_id": {
                "type": "string"
              },
              "model": {
                "type": "string"
              },
              "input_expr": {
                "type": "string"
              }
            }
          },
          "dsl_flags": [
            {
              "flag": "--credential",
              "config_key": "credential_id",
              "kind": "scalar",
              "required": true,
              "description": "OpenAI or OpenRouter credential."
            },
            {
              "flag": "--model",
              "config_key": "model",
              "kind": "scalar",
              "required": false,
              "description": "Embedding model override (e.g. text-embedding-3-small)."
            },
            {
              "flag": "--input-expr",
              "config_key": "input_expr",
              "kind": "scalar",
              "required": false,
              "description": "JS expression to extract text from input. Default: input.text || input.input"
            }
          ],
          "fields": [
            {
              "name": "credential_id",
              "label": "Credential",
              "type": "select",
              "data_source": "credentials_open_ai",
              "help": "Select an OpenAI or OpenRouter credential."
            },
            {
              "name": "model",
              "label": "Model",
              "type": "text",
              "help": "Embedding model id. Leave empty to use credential default."
            },
            {
              "name": "input_expr",
              "label": "Input Expression",
              "type": "textarea",
              "rows": 3,
              "help": "JS expression to extract text to embed from the upstream payload. Examples: input.text, input.description, [input.title, input.body]. Default: input.text || input.input"
            }
          ],
          "layout": [
            "credential_id",
            "model",
            "input_expr"
          ]
        }
      }
    ]
  }
}