FlexQuery.NET.OpenApi 4.0.0-beta1.0

This is a prerelease version of FlexQuery.NET.OpenApi.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package FlexQuery.NET.OpenApi --version 4.0.0-beta1.0
                    
NuGet\Install-Package FlexQuery.NET.OpenApi -Version 4.0.0-beta1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FlexQuery.NET.OpenApi" Version="4.0.0-beta1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FlexQuery.NET.OpenApi" Version="4.0.0-beta1.0" />
                    
Directory.Packages.props
<PackageReference Include="FlexQuery.NET.OpenApi" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FlexQuery.NET.OpenApi --version 4.0.0-beta1.0
                    
#r "nuget: FlexQuery.NET.OpenApi, 4.0.0-beta1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FlexQuery.NET.OpenApi@4.0.0-beta1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FlexQuery.NET.OpenApi&version=4.0.0-beta1.0&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=FlexQuery.NET.OpenApi&version=4.0.0-beta1.0&prerelease
                    
Install as a Cake Tool

FlexQuery.NET.OpenApi

NuGet Version

OpenAPI/Swagger documentation and examples for FlexQuery.NET endpoints.

When to Use This Package

Install this package when you expose FlexQuery-enabled endpoints and want automatic OpenAPI schema descriptions, parameter documentation, and canonical request/response examples in your Swagger UI or OpenAPI document.

Installation

dotnet add package FlexQuery.NET.OpenApi

Registration

builder.Services.AddFlexQueryOpenApi();

This registers schema and operation transformers that enrich your OpenAPI document with:

  • Descriptions for all FlexQuery model types (FlexQueryRequest, FlexQueryParameters, QueryResult<T>, etc.)
  • Descriptions for query parameters (filter, select, sort, page, pageSize, includeCount)
  • Canonical, production-quality examples for FlexQueryRequest, FlexQueryParameters, and QueryResult<T>

Quick Start

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddFlexQueryOpenApi();

builder.Services.AddOpenApi(options =>
{
    options.AddFlexQuery();
});

var app = builder.Build();

app.MapOpenApi();
app.Run();

Features

  • Schema Descriptions — Human-readable descriptions for all FlexQuery model types (FlexQueryRequest, FlexQueryParameters, QueryResult<T>, FilterGroup, FilterCondition, SortNode, PagingOptions, AggregateModel, HavingCondition, IncludeNode, ProjectionMode, LogicOperator, AggregateFunction)
  • Parameter Documentation — Descriptions for query parameters (filter, select, sort, page, pageSize, includeCount)
  • Canonical Examples — Production-quality, strongly typed examples for FlexQueryRequest, FlexQueryParameters, and QueryResult<T> that immediately demonstrate FlexQuery capabilities
  • Zero Configuration — Single registration call, no options, no builders
  • Minimal Public API — Two extension methods, everything else internal

Documentation

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.0.0-rc.1 41 9/10/2026
4.0.0-preview.3 65 7/18/2026
4.0.0-preview.2 66 7/14/2026
4.0.0-preview.1 68 7/12/2026
4.0.0-beta1.0 43 9/8/2026

- feat(dapper): emit copy-paste-ready DECLARE scripts in SQL execution logs
- refactor(diagnostics): move SqlFormatter to the shared FlexQuery.NET.SqlFormatting namespace
- fix(dapper): rewrite expand-block filter/sort fields through nested TypeMaps
- feat(dapper): log final SQL and parameters before every Dapper command
- test: cover Dapper include boundary and ForMember nested select projection
- test: add ExpectedDeliveryDate and Address navigation to shared fixtures
- feat(dapper): rewrite nested select children through TypeMaps and merge include hydration
- test(integration): cover parent-preserving collection include semantics
- test(integration): cover DTO include graph boundary semantics
- feat(mapping): materialize only the requested navigation graph in typed DTO queries
- feat(core): add DynamicGroupedResult model for grouped query execution
- test: cover serialization, validation, DI, parser, and builder updates
- test(dapper): cover Dapper DTO queries and HTTP integration surfaces
- test(integration): cover typed DTO, deep expansion, and navigation governance end to end
- test(mapping): cover AutoMapper-style mapping across EF Core and Dapper
- test: extend shared fixtures and models for typed DTO test coverage
- feat(samples): demo typed DTO queries in the sample WebApi
- feat(parsers): support 'as' select aliases and space-form sort directions
- feat(core): enforce public surface across sort, projection, keyset, and group builders
- feat(validation): enforce DTO public surface and expand-path governance
- feat(dapper): add typed DTO FlexQueryAsync overloads with surface-aware SQL generation
- feat(efcore): add typed DTO FlexQueryAsync overloads with grouped-query executor
- feat(serialization): shape QueryResult output to the selected DTO surface
- feat(core): add DTO projection builder and result-shape models for typed queries
- feat(mapping): add AutoMapper-style global mapping registry with TypeMap builder
- feat(core): add QuerySurface abstraction and unify field resolution through FieldResolver
- feat: remove CaseInsensitive option and all case-normalization wrappers
- feat(dapper): optimize Include materialization with direct projection path
- feat(dapper): strongly-type projected entities via DynamicTypeBuilder and resolve mapped property names in SQL output
- feat(dapper): apply JSON naming transformer to projected property names
- feat(validation): add rule requiring Include/Expand for navigation projections
- test: cover expand sort/take, paging defaults, cache keys, and projections
- test: cover split-query hydration, simple include streaming, and SQL builders
- feat(efcore): support sort/take in filtered include selectors
- feat(core): extend projection tree and metadata with Sort/Take
- feat(core): add Sort/Take to SelectionNode and propagate to cache keys
- feat(dapper): support expand sort/take in FlexQuery Dapper parameter parsing
- feat(dapper): implement split-query include hydration and simple include streaming
- test(expand): add integration and validation tests for expand/include pipeline
- fix(validation): reject expand when include list is empty or missing
- fix(efcore): merge expand configuration into include tree
- fix(dapper): exclude include-only joins from totalCount query
- test: update tests for renamed APIs and add principal key resolution tests
- fix: resolve principal key from entity mapping instead of hard-coded Id
- refactor: clean up FlexQuery.Dapper mapping API surface
- fix(expand): validate all expand nodes and handle empty includes
- fix(expand): enforce strict syntax in FQL expand parser
- fix(expand): normalize DSL expand parser to flat Path lists
- test(expand): add comprehensive test coverage for expand feature
- feat(expand): extend IncludeAccessValidationRule for expand paths
- feat(expand): add expand validation rules
- feat(expand): add DSL expand parser with nested block support
- feat(expand): add FQL expand parser with semicolon-separated options
- feat(expand): add ExpandAst model, normalizer, and core integration
- test(governance): switch GovernanceReviewChangesTests to shared models and add nested wildcard locking tests
- feat(aspnetcore): expose AllowedIncludes on FieldAccessAttribute and wire it in FieldAccessFilter
- feat(validation): enforce aggregate-select-without-groupby rule
- test(integration): update grouped query tests for strict sort validation
- test(validation): add unit tests for new GROUP BY validation rules
- refactor(validation): enforce grouped sort validation via ValidateOrThrow
- feat(validation): add GROUP BY projection, sort, and HAVING validation rules
- refactor(validation): improve governance configuration validation error messages
- fix(parsers): improve error position reporting for HAVING and FQL safety validator
- fix(parsers): report position of '*' token in HAVING aggregate field error
- feat(dsl): improve error message for reserved keywords used as unquoted values
- test(parsers): update exception message assertions for new standardized format
- feat(dsl): migrate DSL parsers to structured exception positions
- feat(fql): migrate FQL parsers to structured exception positions
- feat(parsers): add structured Position/Expected/Found to internal parser exceptions
- refactor(validation): improve validation error formatting and HAVING aggregate messaging
- feat(config): support per-request QuerySyntax and DisablePaging overrides
- feat(dsl): support AND/OR logical keywords in filter expressions
- fix(parser): correct OR logical operator in FqlHavingAstParser
- Merge branch 'main' of https://github.com/peterjohncasasola/FlexQuery.NET
- merge feature branch having-nested-condition to main branch (#12)
- Merge branch 'main' into feature/having-nested-condition
- docs(tests): clarify AllowedIncludes as validation-only and add regression tests
- fix(projection): preserve nested select aliases and allow mixed flat/nested syntax