apache/superset · error · InvalidParametersError

INVALID_PARAMETERS_ERROR

INVALID_PARAMETERS_ERROR

Error message

{errors}

What it means

Raised by POST /api/v1/database/validate_parameters/ when DatabaseValidateParametersSchema().load(request.json) fails. Each invalid attribute is converted into a SupersetError joining its marshmallow messages, and the list is wrapped in InvalidParametersError (INVALID_PARAMETERS_ERROR). Typical failures: missing required driver fields or wrong types for the engine's parameters schema.

Source

Thrown at superset/databases/api.py:2069

              $ref: '#/components/responses/400'
            422:
              $ref: '#/components/responses/422'
            500:
              $ref: '#/components/responses/500'
        """
        try:
            payload = DatabaseValidateParametersSchema().load(request.json)
        except ValidationError as ex:
            errors = [
                SupersetError(
                    message="\n".join(messages),
                    error_type=SupersetErrorType.INVALID_PAYLOAD_SCHEMA_ERROR,
                    level=ErrorLevel.ERROR,
                    extra={"invalid": [attribute]},
                )
                for attribute, messages in ex.messages.items()
            ]
            raise InvalidParametersError(errors) from ex

        command = ValidateDatabaseParametersCommand(payload)
        command.run()
        return self.response(200, message="OK")

    @expose("/<int:pk>/schemas_access_for_file_upload/")
    @protect()
    @safe
    @statsd_metrics
    @event_logger.log_this_with_context(
        action=lambda self, *args, **kwargs: (
            f"{self.__class__.__name__}.schemas_access_for_file_upload"
        ),
        log_to_statsd=False,
    )
    def schemas_access_for_file_upload(self, pk: int) -> Response:
        """The list of the database schemas where to upload information.
        ---

View on GitHub (pinned to f4587218dd)

Solutions

  1. Read errors[].message and extra.invalid in the response — they name each failing attribute and why.
  2. Fetch the required parameters for the engine (GET /api/v1/database/form_extra) and build the payload to match.
  3. Ensure conditional fields required by the chosen engine (e.g. certain auth fields) are present and correctly typed.

Example fix

// before
{"engine": "postgresql", "parameters": {"host": "db", "port": 5432}}  // missing database/name

// after
{"engine": "postgresql", "parameters": {"host": "db", "port": 5432, "database": "analytics", "username": "u"}}
Defensive patterns

Strategy: validation

Validate before calling

from superset.databases.schemas import DatabaseValidateParametersSchema
errors = DatabaseValidateParametersSchema().validate(payload)
if errors:
    raise ValueError(f"parameter problems: {errors}")

Try / catch

resp = client.post("/api/v1/database/validate_parameters/", json=payload)
if resp.status_code == 422:
    for e in resp.json()["errors"]:
        print(e["extra"]["invalid"], e["message"])
    # fix each named attribute, then retry

Prevention

When it happens

Trigger: Calling validate_parameters with a payload missing required keys (e.g. no database name for engines that require it), wrong value types, or unknown parameter names not defined for the selected engine.

Common situations: Connection forms that skip conditional required fields; switching engine type without resetting the form; payloads hand-built against an outdated parameters schema for the engine spec.

Related errors


AI-assisted analysis of apache/superset@f4587218dd (2026-08-14). Data as JSON: /api/errors/3a90c799ff7be556. Report an issue: GitHub.