Skip to content

IDLFilter: A Custom Filter for Detecting and Explaining Inter-Parameter Dependencies in Web APIs #3642

Open
@saman-barakat

Description

@saman-barakat

Is your feature request related to a problem? Please describe.
Web APIs often include inter-parameter dependencies [1] that constrain how input parameters can be combined to form valid service calls.

Violating inter-parameter dependencies leads to:

  • Unnecessary message exchanges, resulting in wasted time and excessive quota usage.
  • Ambiguous error messages or failures due to insufficient validation of input requests, making debugging and resolution challenging.

Describe the solution you'd like
We propose the integration of IDLFilter [2], a custom filter for Spring Cloud Gateway, designed to:

  • Detect and explain inter-parameter dependency violations in Web APIs.
  • Leverage the Inter-parameter Dependency Language (IDL) to specify parameter constraints [3, 4].
  • Utilize IDLReasoner, a constraint-based analysis engine, to enforce these constraints effectively [3, 4].

IDLFilter

Key Benefits

  • Enhanced error messaging: Informative and actionable error responses for invalid API calls.
  • Robust input validation: Reduces the likelihood of failures caused by dependency violations.
  • Improved performance:
    • A 59% reduction in response time for invalid requests.
    • Only a minimal 7% overhead for valid requests.

Evaluation Results

  • Tested with 12 industrial API operations and ~30K API calls (manual and automated).
  • Results show that IDLFilter effectively blocks invalid API calls and provides detailed explanations for violations.

References
1- Martin-Lopez, A., Segura, S., Ruiz-Cortés, A. (2019). A Catalogue of Inter-parameter Dependencies in RESTful Web APIs. Springer Link
2- IDLFilter: GitHub Repository
3- Barakat, S., Martin-Lopez, A., Müller, C., Segura, S., & Ruiz-Cortés, A. (2025). The IDL Tool Suite: Specifying and Analyzing Inter-Parameter Dependencies in Web APIs. ScienceDirect
4- IDLWebsite: http://idl.us.es

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions