{
  "$schema": "https://json-schema.org/draft-07/schema#",
  "$id": "https://wappler.io/schemas/server-connect/main.json",
  "title": "Wappler Server Connect - Action Workflow Schema",
  "description": "Validates Server Connect workflow files and routes each step's options to the matching {module}-{action}.json schema using standard draft-07 constructs.",
  "$comment": "lastUpdated: 2026-03-02 19:18:16",
  "anyOf": [
    {"type": "object"},
    {"type": "array"}
  ],
  "allOf": [
    {
      "if": {"type": "array"},
      "then": {
        "type": "array",
        "items": {"$ref": "#/definitions/actionStep"}
      }
    },
    {
      "if": {
        "type": "object",
        "required": ["exec"]
      },
      "then": {
        "type": "object",
        "required": ["exec"],
        "properties": {
          "meta": {
            "type": "object",
            "description": "Input parameters with validation rules",
            "properties": {
              "options": {
                "type": "object",
                "description": "Validation form linking options (required for form-driven workflows).",
                "properties": {
                  "linkedFile": {"type": "string", "description": "File containing the linked form (required for form-driven validation)."},
                  "linkedForm": {"type": "string", "description": "Form name used to map validation errors (required for form-driven validation)."}
                },
                "additionalProperties": false
              },
              "$_GET": {
                "type": "array",
                "description": "Query string parameters",
                "items": {"$ref": "#/definitions/inputParameter"}
              },
              "$_POST": {
                "type": "array",
                "description": "Form submission data parameters",
                "items": {"$ref": "#/definitions/inputParameter"}
              },
              "$_PARAM": {
                "type": "array",
                "description": "URL path variables/parameters",
                "items": {"$ref": "#/definitions/inputParameter"}
              },
              "$_SESSION": {
                "type": "array",
                "description": "Session variables",
                "items": {"$ref": "#/definitions/inputParameter"}
              },
              "$_COOKIE": {
                "type": "array",
                "description": "Cookie values",
                "items": {"$ref": "#/definitions/inputParameter"}
              },
              "$_HEADER": {
                "type": "array",
                "description": "HTTP headers",
                "items": {"$ref": "#/definitions/inputParameter"}
              },
              "$_SERVER": {
                "type": "array",
                "description": "Server environment variables",
                "items": {"$ref": "#/definitions/inputParameter"}
              },
              "$_ENV": {
                "type": "array",
                "description": "Environment variables",
                "items": {"$ref": "#/definitions/inputParameter"}
              },
              "$_FILES": {
                "type": "array",
                "description": "Uploaded files",
                "items": {"$ref": "#/definitions/inputParameter"}
              }
            },
            "additionalProperties": false
          },
          "settings": {
            "type": "object",
            "description": "Global action settings (route configuration, caching, etc.)",
            "properties": {
              "options": {
                "type": "object",
                "description": "Server-specific settings",
                "additionalProperties": false,
                "properties": {
                  "ttl": {
                    "anyOf": [
                      {"type": "integer", "minimum": 0},
                      {"type": "string"}
                    ],
                    "description": "Cache time in seconds"
                  },
                  "path": {"type": "string", "description": "Route path"},
                  "method": {
                    "type": "string",
                    "enum": [
                      "",
                      "get",
                      "post",
                      "put",
                      "patch",
                      "delete",
                      "all",
                      "ALL",
                      "GET",
                      "POST",
                      "PUT",
                      "PATCH",
                      "DELETE"
                    ],
                    "description": "HTTP method filter"
                  },
                  "nocsrf": {"type": "boolean", "description": "Disable CSRF protection"},
                  "points": {
                    "anyOf": [
                      {"type": "integer", "minimum": 0},
                      {"type": "string"}
                    ],
                    "description": "Rate limiting points consumed"
                  },
                  "scriptTimeout": {
                    "anyOf": [
                      {"type": "integer", "minimum": 0},
                      {"type": "string"}
                    ],
                    "description": "Script timeout (non-node runtimes)"
                  },
                  "rule": {"type": "string", "description": "Cron rule for schedule files"},
                  "tempFolder": {"type": "string", "description": "Temporary folder override"}
                }
              }
            },
            "additionalProperties": false
          },
          "exec": {
            "type": "object",
            "required": ["steps"],
            "properties": {
              "steps": {
                "description": "Execution workflow steps",
                "anyOf": [
                  {"type": "array"},
                  {"type": "object"},
                  {"type": "string"}
                ],
                "allOf": [
                  {
                    "if": {"type": "array"},
                    "then": {
                      "type": "array",
                      "items": {"$ref": "#/definitions/actionStep"}
                    }
                  },
                  {
                    "if": {
                      "anyOf": [
                        {"type": "object"},
                        {"type": "string"}
                      ]
                    },
                    "then": {"$ref": "#/definitions/actionStep"}
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "usedModules": {
            "type": "object",
            "description": "Module dependency map with version ranges",
            "additionalProperties": {"type": "string"}
          }
        },
        "additionalProperties": false
      }
    },
    {
      "if": {
        "type": "object",
        "not": {
          "required": ["exec"]
        }
      },
      "then": {"$ref": "#/definitions/actionStep"}
    }
  ],
  "definitions": {
    "inputParameter": {
      "type": "object",
      "required": ["type", "name"],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "text",
            "number",
            "boolean",
            "array",
            "object",
            "date",
            "time",
            "datetime",
            "file",
            "email",
            "url"
          ],
          "description": "Parameter data type"
        },
        "name": {"type": "string", "description": "Parameter name"},
        "fieldName": {"type": "string", "description": "Form field name for validation mapping"},
        "default": {
          "description": "Default value for the parameter",
          "type": [
            "string",
            "number",
            "boolean",
            "object",
            "array",
            "null"
          ]
        },
        "multiple": {"type": "boolean", "description": "Allow multiple values for this parameter"},
        "outputType": {"type": "string", "description": "Legacy output type marker"},
        "sub": {
          "type": "array",
          "description": "Nested fields for array/object parameters",
          "items": {"$ref": "#/definitions/metaField"}
        },
        "options": {
          "type": "object",
          "description": "Advanced parameter configuration (validation rules, formatters, etc.)",
          "properties": {
            "rules": {
              "type": "object",
              "description": "Validation rules with optional configuration (use {param: ...} and optional {message: ...}).",
              "additionalProperties": {
                "description": "Rule-specific configuration payload.",
                "oneOf": [
                  {"type": "boolean"},
                  {"type": "string"},
                  {"type": "number"},
                  {
                    "type": "object",
                    "properties": {
                      "param": {"description": "Rule parameter (e.g. minlength length)."},
                      "message": {"type": "string", "description": "Custom validation error message."}
                    },
                    "additionalProperties": true
                  }
                ]
              }
            }
          },
          "additionalProperties": true
        }
      },
      "additionalProperties": false
    },
    "metaField": {
      "type": "object",
      "required": ["name", "type"],
      "properties": {
        "name": {"type": "string"},
        "type": {
          "type": "string",
          "enum": [
            "text",
            "number",
            "boolean",
            "array",
            "object",
            "date",
            "time",
            "datetime",
            "file",
            "image"
          ]
        },
        "sub": {
          "type": "array",
          "items": {"$ref": "#/definitions/metaField"}
        }
      },
      "additionalProperties": true
    },
    "actionStepBase": {
      "type": "object",
      "required": ["module", "action"],
      "description": "Inline Server Connect action step",
      "properties": {
        "name": {"type": "string", "description": "Step identifier that defines the scope name for downstream bindings"},
        "_id": {"type": "string", "description": "Optional UI identifier for the step"},
        "fileName": {"type": "string", "description": "Legacy source filename metadata"},
        "actionFilePath": {"type": "string", "description": "Legacy action file path metadata"},
        "serverType": {"type": "string", "description": "Legacy editor server model metadata"},
        "type": {"type": "string", "description": "Legacy step type marker"},
        "description": {"type": "string", "description": "Optional step description metadata"},
        "module": {"type": "string", "description": "Module providing the action"},
        "action": {"type": "string", "description": "Action name within the module"},
        "options": {"type": "object", "description": "Action-specific options (validated separately)", "additionalProperties": true},
        "outputType": {
          "type": "string",
          "enum": [
            "text",
            "number",
            "boolean",
            "array",
            "object",
            "date",
            "time",
            "datetime",
            "file",
            "image"
          ],
          "description": "Output data type"
        },
        "output": {"type": "boolean", "description": "Include step result in the response"},
        "meta": {
          "type": "array",
          "description": "Output metadata for complex types (required for array/object outputs).",
          "items": {
            "type": "object",
            "required": ["name", "type"],
            "properties": {
              "name": {"type": "string"},
              "type": {
                "type": "string",
                "enum": [
                  "text",
                  "number",
                  "boolean",
                  "array",
                  "object",
                  "date",
                  "time",
                  "datetime",
                  "file",
                  "image"
                ]
              },
              "sub": {
                "type": "array",
                "items": {"$ref": "#/definitions/metaField"}
              }
            },
            "additionalProperties": true
          }
        },
        "disabled": {"type": "boolean", "description": "Disable execution of this step"},
        "collapsed": {"type": "boolean", "description": "UI state for collapsing this step"},
        "ui": {
          "description": "Editor-specific UI metadata",
          "type": [
            "object",
            "array",
            "string",
            "number",
            "boolean",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "actionStepComment": {
      "type": "object",
      "description": "Comment-only step without module/action",
      "required": ["options"],
      "properties": {
        "name": {"type": "string", "description": "Optional comment label"},
        "module": {"type": "string", "description": "Disallowed for comment-only steps"},
        "action": {"type": "string", "description": "Disallowed for comment-only steps"},
        "_id": {"type": "string", "description": "Optional UI identifier for the step"},
        "options": {
          "type": "object",
          "properties": {
            "comment": {
              "type": ["string", "null"],
              "description": "Comment text"
            }
          },
          "additionalProperties": true
        },
        "disabled": {"type": "boolean", "description": "Disable execution of this step"},
        "collapsed": {"type": "boolean", "description": "UI state for collapsing this step"}
      },
      "additionalProperties": false,
      "allOf": [
        {
          "not": {
            "anyOf": [
              {
                "required": ["module"]
              },
              {
                "required": ["action"]
              }
            ]
          }
        }
      ]
    },
    "outputMetadata": {"$ref": "#/definitions/actionStepBase/properties/meta"},
    "actionStepInclude": {"type": "string", "description": "Include reference to an external Server Connect file"},
    "actionStepObject": {
      "description": "Inline Server Connect action step",
      "allOf": [
        {"$ref": "#/definitions/actionStepBase"},
        {"$ref": "#/definitions/actionStepOptionsRouting"}
      ]
    },
    "actionStep": {
      "description": "Server Connect action step",
      "anyOf": [
        {"type": "object"},
        {"type": "string"}
      ],
      "allOf": [
        {
          "if": {"type": "string"},
          "then": {"$ref": "#/definitions/actionStepInclude"}
        },
        {
          "if": {
            "type": "object",
            "anyOf": [
              {
                "required": ["module"]
              },
              {
                "required": ["action"]
              }
            ]
          },
          "then": {
            "required": ["module", "action"]
          }
        },
        {
          "if": {
            "type": "object",
            "required": ["module", "action"]
          },
          "then": {"$ref": "#/definitions/actionStepObject"}
        },
        {
          "if": {
            "type": "object",
            "allOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": ["module"]
                    },
                    {
                      "required": ["action"]
                    }
                  ]
                }
              }
            ]
          },
          "then": {"$ref": "#/definitions/actionStepComment"}
        }
      ]
    },
    "actionStepArray": {
      "type": "array",
      "description": "Array containing one or more action steps",
      "minItems": 1,
      "items": {"$ref": "#/definitions/actionStep"}
    },
    "actionStepContainer": {
      "type": "object",
      "description": "Object wrapper that exposes a steps collection",
      "properties": {
        "steps": {
          "anyOf": [
            {"type": "array"},
            {"type": "object"},
            {"type": "string"}
          ],
          "allOf": [
            {
              "if": {"type": "array"},
              "then": {"$ref": "#/definitions/actionStepArray"}
            },
            {
              "if": {
                "anyOf": [
                  {"type": "object"},
                  {"type": "string"}
                ]
              },
              "then": {"$ref": "#/definitions/actionStep"}
            }
          ]
        }
      },
      "additionalProperties": true
    },
    "actionStepStructure": {
      "description": "Server Connect action step structure without module/action option routing",
      "anyOf": [
        {"type": "object"},
        {"type": "string"}
      ],
      "allOf": [
        {
          "if": {"type": "string"},
          "then": {"$ref": "#/definitions/actionStepInclude"}
        },
        {
          "if": {
            "type": "object",
            "anyOf": [
              {
                "required": ["module"]
              },
              {
                "required": ["action"]
              }
            ]
          },
          "then": {
            "required": ["module", "action"]
          }
        },
        {
          "if": {
            "type": "object",
            "required": ["module", "action"]
          },
          "then": {"$ref": "#/definitions/actionStepBase"}
        },
        {
          "if": {
            "type": "object",
            "allOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": ["module"]
                    },
                    {
                      "required": ["action"]
                    }
                  ]
                }
              }
            ]
          },
          "then": {"$ref": "#/definitions/actionStepComment"}
        }
      ]
    },
    "actionStepStructureArray": {
      "type": "array",
      "description": "Array containing one or more structural action steps",
      "minItems": 1,
      "items": {"$ref": "#/definitions/actionStepStructure"}
    },
    "actionStepStructureContainer": {
      "type": "object",
      "description": "Object wrapper that exposes a structural steps collection",
      "required": ["steps"],
      "properties": {
        "steps": {
          "anyOf": [
            {"type": "array"},
            {"type": "object"},
            {"type": "string"}
          ],
          "allOf": [
            {
              "if": {"type": "array"},
              "then": {"$ref": "#/definitions/actionStepStructureArray"}
            },
            {
              "if": {
                "anyOf": [
                  {"type": "object"},
                  {"type": "string"}
                ]
              },
              "then": {"$ref": "#/definitions/actionStepStructure"}
            }
          ]
        }
      },
      "additionalProperties": true
    },
    "knownModuleNames": {
      "type": "string",
      "enum": [
        "arraylist",
        "auth",
        "core",
        "crypto",
        "db",
        "dbconnector",
        "dbupdater",
        "dbUpdater",
        "export",
        "fs",
        "image",
        "import",
        "mail",
        "objectstructure",
        "otp",
        "s3",
        "structure",
        "upload",
        "zip"
      ],
      "description": "Module names with dedicated option schemas in this catalog"
    },
    "actionStepOptionsRouting": {
      "allOf": [
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "auth"},
              "action": {"const": "provider"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./auth-provider.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "redirect"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-redirect.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "repeat"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-repeat.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "db"},
              "action": {"const": "query-structure"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./db-query-structure.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbconnector"},
              "action": {"const": "connect"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbconnector-connect.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbconnector"},
              "action": {"const": "paged"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbconnector-paged.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbconnector"},
              "action": {"const": "paging"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbconnector-paging.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbconnector"},
              "action": {"const": "select"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbconnector-select.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbconnector"},
              "action": {"const": "single"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbconnector-single.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbupdater"},
              "action": {"const": "bulkinsert"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbupdater-bulkinsert.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbupdater"},
              "action": {"const": "custom"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbupdater-custom.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbupdater"},
              "action": {"const": "delete"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbupdater-delete.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbupdater"},
              "action": {"const": "insert"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbupdater-insert.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbupdater"},
              "action": {"const": "update"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbupdater-update.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "comment"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-comment.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "lib_include"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-lib_include.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "exec"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-exec.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "trycatch"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-trycatch.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "parallel"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-parallel.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "group"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-group.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "condition"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-condition.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "select"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-select.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "while"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-while.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "break"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-break.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "setvalue"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-setvalue.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "setsession"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-setsession.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "removesession"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-removesession.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "setcookie"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-setcookie.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "removecookie"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-removecookie.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "response"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-response.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "error"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-error.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "end"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-end.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"},
              "action": {"const": "wait"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./core-wait.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "crypto"},
              "action": {"const": "passwordHash"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./crypto-passwordHash.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "crypto"},
              "action": {"const": "passwordVerify"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./crypto-passwordVerify.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "crypto"},
              "action": {"const": "passwordNeedsRehash"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./crypto-passwordNeedsRehash.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "crypto"},
              "action": {"const": "uuid"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./crypto-uuid.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "crypto"},
              "action": {"const": "uuid7"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./crypto-uuid7.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "objectstructure"},
              "action": {"const": "construct"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./objectstructure-construct.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "structure"},
              "action": {"const": "set"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./structure-set.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "structure"},
              "action": {"const": "remove"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./structure-remove.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "structure"},
              "action": {"const": "merge"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./structure-merge.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "structure"},
              "action": {"const": "query"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./structure-query.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "hotpGenerate"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-hotpGenerate.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "hotpValidate"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-hotpValidate.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "totpGenerate"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-totpGenerate.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "totpValidate"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-totpValidate.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "generateSecret"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-generateSecret.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "generateToken"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-generateToken.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "verifyToken"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-verifyToken.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "generateOtpUri"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-generateOtpUri.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"},
              "action": {"const": "generateQrCodeUrl"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./otp-generateQrCodeUrl.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbupdater"},
              "action": {"const": "transaction"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbupdater-transaction.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbUpdater"},
              "action": {"const": "dbupdater_template_multiupdate"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbUpdater-dbupdater_template_multiupdate.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbUpdater"},
              "action": {"const": "dbupdater_template_multiinsert"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./dbUpdater-dbupdater_template_multiinsert.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "export"},
              "action": {"const": "csv"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./export-csv.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "export"},
              "action": {"const": "xml"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./export-xml.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "import"},
              "action": {"const": "csv"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./import-csv.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "import"},
              "action": {"const": "xml"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./import-xml.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "exists"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-exists.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "move"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-move.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "rename"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-rename.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "copy"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-copy.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "remove"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-remove.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "download"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-download.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "direxists"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-direxists.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "createdir"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-createdir.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "removedir"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-removedir.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "emptydir"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-emptydir.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "stat"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-stat.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"},
              "action": {"const": "dir"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./fs-dir.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "load"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-load.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "resize"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-resize.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "cover"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-cover.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "save"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-save.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "crop"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-crop.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "watermark"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-watermark.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "tiled"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-tiled.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "text"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-text.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "flip"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-flip.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "rotateLeft"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-rotateLeft.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "rotateRight"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-rotateRight.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "smooth"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-smooth.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "blur"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-blur.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "sharpen"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-sharpen.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "meanRemoval"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-meanRemoval.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "emboss"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-emboss.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "edgeDetect"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-edgeDetect.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "grayscale"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-grayscale.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "sepia"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-sepia.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "invert"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-invert.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"},
              "action": {"const": "getImageSize"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./image-getImageSize.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "mail"},
              "action": {"const": "setup"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./mail-setup.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "mail"},
              "action": {"const": "send"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./mail-send.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "zip"},
              "action": {"const": "zip"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./zip-zip.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "zip"},
              "action": {"const": "zipdir"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./zip-zipdir.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "zip"},
              "action": {"const": "unzip"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./zip-unzip.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "zip"},
              "action": {"const": "dir"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./zip-dir.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "zip"},
              "action": {"const": "comment"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./zip-comment.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "upload"},
              "action": {"const": "upload"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./upload-upload.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "provider"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-provider.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "createBucket"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-createBucket.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "listBuckets"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-listBuckets.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "deleteBucket"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-deleteBucket.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "createFolder"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-createFolder.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "listFiles"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-listFiles.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "putFile"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-putFile.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "getFile"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-getFile.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "downloadFile"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-downloadFile.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "copyFile"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-copyFile.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "deleteFile"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-deleteFile.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "signDownloadUrl"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-signDownloadUrl.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "signUploadUrl"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-signUploadUrl.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"},
              "action": {"const": "template_signupload"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./s3-template_signupload.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "auth"},
              "action": {"const": "identify"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./auth-identify.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "auth"},
              "action": {"const": "login"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./auth-login.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "auth"},
              "action": {"const": "logout"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./auth-logout.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "auth"},
              "action": {"const": "restrict"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./auth-restrict.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "create"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-create.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "value"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-value.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "size"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-size.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "get"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-get.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "add"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-add.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "addAll"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-addAll.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "set"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-set.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "remove"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-remove.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "removeAt"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-removeAt.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "clear"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-clear.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "sort"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-sort.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "indexOf"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-indexOf.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "contains"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-contains.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"},
              "action": {"const": "isEmpty"}
            },
            "required": ["module", "action"]
          },
          "then": {
            "type": "object",
            "properties": {
              "options": {"$ref": "./arraylist-isEmpty.json"}
            }
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "auth"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "identify",
                  "login",
                  "logout",
                  "provider",
                  "restrict"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "core"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "break",
                  "comment",
                  "condition",
                  "end",
                  "error",
                  "exec",
                  "group",
                  "lib_include",
                  "parallel",
                  "redirect",
                  "removecookie",
                  "removesession",
                  "repeat",
                  "response",
                  "select",
                  "setcookie",
                  "setsession",
                  "setvalue",
                  "trycatch",
                  "wait",
                  "while"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "db"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": ["query-structure"]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbconnector"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "connect",
                  "paged",
                  "paging",
                  "select",
                  "single"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbupdater"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "bulkinsert",
                  "custom",
                  "delete",
                  "insert",
                  "transaction",
                  "update"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "crypto"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "passwordHash",
                  "passwordNeedsRehash",
                  "passwordVerify",
                  "uuid",
                  "uuid7"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "objectstructure"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": ["construct"]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "structure"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": ["merge", "query", "remove", "set"]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "otp"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "generateOtpUri",
                  "generateQrCodeUrl",
                  "generateSecret",
                  "generateToken",
                  "hotpGenerate",
                  "hotpValidate",
                  "totpGenerate",
                  "totpValidate",
                  "verifyToken"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "dbUpdater"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": ["dbupdater_template_multiinsert", "dbupdater_template_multiupdate"]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "export"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": ["csv", "xml"]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "import"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": ["csv", "xml"]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "fs"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "copy",
                  "createdir",
                  "dir",
                  "direxists",
                  "download",
                  "emptydir",
                  "exists",
                  "move",
                  "remove",
                  "removedir",
                  "rename",
                  "stat"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "image"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "blur",
                  "cover",
                  "crop",
                  "edgeDetect",
                  "emboss",
                  "flip",
                  "getImageSize",
                  "grayscale",
                  "invert",
                  "load",
                  "meanRemoval",
                  "resize",
                  "rotateLeft",
                  "rotateRight",
                  "save",
                  "sepia",
                  "sharpen",
                  "smooth",
                  "text",
                  "tiled",
                  "watermark"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "mail"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": ["send", "setup"]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "zip"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "comment",
                  "dir",
                  "unzip",
                  "zip",
                  "zipdir"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "upload"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": ["upload"]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "s3"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "copyFile",
                  "createBucket",
                  "createFolder",
                  "deleteBucket",
                  "deleteFile",
                  "downloadFile",
                  "getFile",
                  "listBuckets",
                  "listFiles",
                  "provider",
                  "putFile",
                  "signDownloadUrl",
                  "signUploadUrl",
                  "template_signupload"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"const": "arraylist"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "add",
                  "addAll",
                  "clear",
                  "contains",
                  "create",
                  "get",
                  "indexOf",
                  "isEmpty",
                  "remove",
                  "removeAt",
                  "set",
                  "size",
                  "sort",
                  "value"
                ]
              }
            },
            "required": ["action"]
          }
        },
        {
          "if": {
            "type": "object",
            "properties": {
              "module": {"$ref": "#/definitions/knownModuleNames"}
            },
            "required": ["module"]
          },
          "then": {
            "type": "object",
            "properties": {
              "action": {"type": "string"}
            },
            "required": ["action"]
          }
        }
      ]
    }
  }
}
