{
  "parameters": {
    "type": "object",
    "properties": {
      "primaryKey": {
        "type": "string",
        "description": "Join key on the primary input."
      },
      "referenceKey": {
        "type": "string",
        "description": "Join key on the reference input."
      },
      "joinType": {
        "type": "string",
        "description": "How unmatched primary rows should be handled.",
        "enum": [
          "left",
          "inner"
        ],
        "default": "left"
      },
      "onMissing": {
        "type": "string",
        "description": "How to handle a missing reference match for a primary row.",
        "enum": [
          "null",
          "drop",
          "error"
        ],
        "default": "null"
      },
      "fields": {
        "type": "array",
        "description": "Reference fields to copy onto the primary row.",
        "items": {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "description": "Reference field name to copy."
            },
            "target": {
              "type": "string",
              "description": "Optional output field name."
            }
          }
        }
      }
    }
  },
  "inputs": [
    {
      "key": "primary",
      "label": "Primary input",
      "required": true
    },
    {
      "key": "reference",
      "label": "Reference input",
      "required": true
    }
  ],
  "outputs": [
    {
      "key": "out",
      "label": "Output",
      "required": true
    }
  ],
  "lineage": {
    "mode": "explicit"
  },
  "deterministic": true,
  "runtimeSupported": true
}
