graph LR
EndpointNode["EndpointNode"]
RequestNode["RequestNode"]
TemplateRender["TemplateRender"]
SpecEvaluator["SpecEvaluator"]
CodeEvaluator["CodeEvaluator"]
StringEvaluator["StringEvaluator"]
EndpointNode -- "manages" --> RequestNode
EndpointNode -- "uses" --> SpecEvaluator
RequestNode -- "uses" --> SpecEvaluator
RequestNode -- "uses" --> CodeEvaluator
TemplateRender -- "provides input to" --> EndpointNode
TemplateRender -- "provides input to" --> RequestNode
SpecEvaluator -- "delegates to" --> CodeEvaluator
SpecEvaluator -- "delegates to" --> StringEvaluator
The API Specification Processor subsystem is responsible for parsing the raw API specification into an executable tree structure, handling templating, and dynamic expression evaluation.
Represents a node in the API specification tree, structuring nested endpoints and orchestrating the execution of associated requests. It forms the backbone of the "executable tree structure."
Related Classes/Methods:
Encapsulates a single HTTP request, managing its details (URL, method, headers, body) and execution flow, including pre-request delays, retries, and post-request test execution. It is a leaf node in the executable tree.
Related Classes/Methods:
Handles the "templating" aspect, dynamically generating parts of the API specification by resolving variables and expressions before the evaluation phase.
Related Classes/Methods:
The primary orchestrator for "dynamic expression evaluation." It recursively traverses the specification, delegating specific evaluation tasks (code, string variables) to specialized evaluators.
Related Classes/Methods:
scanapi.evaluators.spec_evaluatorscanapi.evaluators.code_evaluatorscanapi.evaluators.string_evaluator
Executes Python code snippets embedded within the specification, enabling dynamic value generation and complex assertion logic.
Related Classes/Methods:
Resolves string-based dynamic values, primarily by replacing placeholders with values from environment or custom variables.
Related Classes/Methods: