AshOaskit. QueryParameters
(AshOasKit v0.4.1)
View Source
Generates detailed JSON:API query parameter schemas for OpenAPI specs.
This module provides comprehensive query parameter schemas for JSON:API compliant APIs, including pagination, sparse fieldsets, includes, filtering, and sorting.
JSON:API Query Parameters
The JSON:API specification defines several query parameters:
Page Parameter
Pagination can use either offset-based or keyset/cursor-based strategies:
# Offset pagination
GET /posts?page[offset]=0&page[limit]=10
# Keyset pagination
GET /posts?page[after]=cursor&page[limit]=10
# With count
GET /posts?page[count]=trueFields Parameter (Sparse Fieldsets)
Request specific fields per resource type:
GET /posts?fields[post]=title,body&fields[author]=nameInclude Parameter
Include related resources:
GET /posts?include=author,comments.authorFilter Parameter
Filter resources using various operators:
GET /posts?filter[status]=published&filter[title][contains]=helloSort Parameter
Sort resources by fields:
GET /posts?sort=-created_at,titleUsage
# Build page parameter for a resource
page_param = QueryParameters.build_page_parameter(opts)
# Build fields parameter with resource types
fields_param = QueryParameters.build_fields_parameter(["post", "author"])
# Build include parameter with relationship paths
include_param = QueryParameters.build_include_parameter([:author, :comments])
# Get all standard JSON:API parameters
params = QueryParameters.all_parameters(resource, opts)
Summary
Functions
Builds all standard JSON:API query parameters for a resource.
Builds a read-only parameters list (no filter/sort).
Builds the fields query parameter schema for sparse fieldsets.
Builds the include query parameter schema.
Builds the page query parameter schema.
Builds query parameters from the actual read action and route configuration.
Builds parameters for index/list operations.
Builds pagination only for the strategies and limits supported by an action.
Builds parameters for get/show operations.
Functions
Builds all standard JSON:API query parameters for a resource.
Combines filter, sort, page, include, and fields parameters.
Parameters
resource- The Ash resource moduleopts- Options keyword list:version- OpenAPI version ("3.0" or "3.1"):pagination_strategy- Pagination type:include_paths- Available include paths
Returns
List of OpenAPI parameter objects.
Examples
QueryParameters.all_parameters(MyApp.Post, version: "3.1")
#=> [
#=> %{name: "filter", ...},
#=> %{name: "sort", ...},
#=> %{name: "page", ...},
#=> %{name: "include", ...},
#=> %{name: "fields", ...}
#=> ]
Builds a read-only parameters list (no filter/sort).
Useful for simple GET operations that don't support filtering.
Parameters
resource- The Ash resource moduleopts- Options keyword list
Returns
List of OpenAPI parameter objects (page, include, fields only).
Builds the fields query parameter schema for sparse fieldsets.
Parameters
resource_types- List of JSON:API type namesopts- Options keyword list
Returns
An OpenAPI parameter object for sparse fieldsets.
Examples
iex> QueryParameters.build_fields_parameter(["post", "author"])
%{
name: "fields",
in: :query,
style: :deepObject,
schema: %{
type: :object,
properties: %{
"post" => %{type: :string},
"author" => %{type: :string}
}
}
}
Builds the include query parameter schema.
Parameters
available_includes- List of includable relationship pathsopts- Options keyword list
Returns
An OpenAPI parameter object for relationship includes.
Examples
iex> QueryParameters.build_include_parameter([:author, :comments])
%{
name: "include",
in: :query,
schema: %{
type: :string,
description: "..."
}
}
Builds the page query parameter schema.
Supports both offset and keyset pagination strategies.
Parameters
opts- Options keyword list:pagination_strategy-:offset,:keyset, or:both(default)
Returns
An OpenAPI parameter object for pagination.
Examples
iex> QueryParameters.build_page_parameter([])
%{
name: "page",
in: :query,
style: :deepObject,
schema: %{
type: :object,
properties: %{
"offset" => %{...},
"limit" => %{...},
...
}
}
}
Builds query parameters from the actual read action and route configuration.
Builds parameters for index/list operations.
Includes all standard parameters plus optional count parameter.
Parameters
resource- The Ash resource moduleopts- Options keyword list
Returns
List of OpenAPI parameter objects.
Builds pagination only for the strategies and limits supported by an action.
Builds parameters for get/show operations.
Typically only needs include and fields parameters.
Parameters
resource- The Ash resource moduleopts- Options keyword list
Returns
List of OpenAPI parameter objects.