All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
v1.4.16 (2024-12-23)
-
make testing helpers public and document them
-
deprecate the DSL router configuration
v1.4.15 (2024-12-20)
-
only use route's fields on top level records
-
nested boolean filters accept a list of filters, not a single filter
-
encode primary key always when encoding resources as values
- make igniter optional
v1.4.14 (2024-11-24)
- add opts to all Ash.load calls (#260)
v1.4.13 (2024-11-04)
-
mark filters as deepObject
-
support
null
input for non-required attributes
-
fix relationship representation & descriptions in open api schema
-
add
sort_included
query parameter -
add sort_included query parameter
-
accept arbitrary filters (by making it a stupid text field)
v1.4.12 (2024-10-21)
- hide private arguments in open api (#247)
v1.4.11 (2024-10-14)
- add type handler for NaiveDatetime
v1.4.10 (2024-10-10)
-
set status only if it hasn't already been set
-
better examples for
fields
parameter
v1.4.9 (2024-09-27)
-
properly strip double slashes from base_route prefixes
-
properly render post to relationship and friends in open api spec
-
support keyset & offset pagination when mixed in open api schema
- support providing the open api schema as a file
v1.4.8 (2024-09-16)
- don't access
message
key ofInvalidKeyset
errors
- upgrade to latest igniter functions and version
v1.4.7 (2024-09-04)
- decode path parameters automatically
v1.4.6 (2024-08-26)
-
don't intercept typed structs
-
properly check for domain inclusion in json api router when installing
- support new struct types w/ constraints
v1.4.5 (2024-08-20)
- properly discover all necessary filter schemas
-
optimize post-operation field loading logic
-
don't show tags for resources w/o routes in schema
v1.4.4 (2024-08-16)
- support nested
base_route
s
v1.4.3 (2024-08-08)
- new
AshJsonApi.Type
behaviour, and support returning regular maps
v1.4.2 (2024-08-08)
- use a list when calling
Module.concat
v1.4.1 (2024-07-30)
-
properly install domain with
Module.concat
in AshJsonApi router -
include multipart parser in installer
v1.4.0 (2024-07-30)
- [
Ash.Type.File
] Ash.Type.File support (#214)
See AshJsonApi.Plug.Parser
for usage information.
-
[attributes] reject allow_nil_input fields in required_write_attributes (#219)
-
[Open API] properly document query_params from generic routes in open api spec
-
[Open API] only include referenced resource types in definitions
-
[Open API] properly spec (and test the spec) for actions that return resources
v1.3.8 (2024-07-22)
- [
AshJsonApi.Router
] don't double escapemodify_open_api
-
[
AshJsonApi.Router
] automatically infer theprefix
instead of relying on configuration -
[
mix ash.patch.extend
] addAshJsonApi
extender -
[
mix ash_json_api.install
] add installer for AshJsonApi
v1.3.7 (2024-07-15)
-
[open api] escape
modify_open_api_schema
option since it can be a 3/tuple -
[errors] handle unknown errors in
log_errors/2
-
[serialization] relationship resource identifiers don't need to check the
id
type -
[serialization] properly reference related record in linkage
-
[serialization] ensure id is always coming back as a string
v1.3.6 (2024-07-08)
-
[open api] properly match enum types on input/output
-
[errors] Avoid raising the condition converting the regex to string. (#204)
- [content type negotation] honor
allow_all_media_type_params?
incontent-type
as well
v1.3.5 (2024-07-06)
- [bugfix] use
conn.private
, notconn[:private]
v1.3.4 (2024-07-05)
-
[errors] add leading slash to JSON pointer in schema errors (#199)
-
[open api] avoid failing openapi generation for non existing resource actions (#198)
v1.3.3 (2024-07-04)
-
[serialization] ensure generic action bodies, both in & out are serialized properly
-
[open api] properly fetch nested types
-
[open api] show embedded types when used with
:struct
-
[open api] ensure
action.require_attributes
is stringified in json schema -
[fields parameter] honor resource-level default_fields
v1.3.2 (2024-07-02)
-
[routes] ensure that context is threaded through for all actions
-
[open api] properly require
success
in return-less actions -
[open api] typo when checking for resource's derive_filter? flag
-
[open api] not all accepted attributes have to be public
-
[open api] fix sort regex to be a valid regex
-
[open api] don't use
anyOf
for nullability -
[open api] don't generate bodies for delete requests
-
[open api] use
Enum.uniq
when uwnrapping any_of types -
[open api] detect all cases where a filter must be generated
-
[open api] use empty example for filter
-
[routes] support for query parameters using
query_params
route option
v1.3.1 (2024-07-01)
-
[open api] use strings for enum values
-
[open api] use
strings
for includes/sort properly, add regex for sort
v1.3.0 (2024-06-28)
-
[calculations] add support for calculation inputs via field_inputs query param (#187)
-
[routes] support generic actions with no returns in routes
-
[routes] support
modify_conn/4
-
[routes] support
:read
actions in:post
request -
[routes] generic action support for all basic route types
-
[routes] new
route/3
type for arbitrary generic actions -
[AshJsonApi.Resource] support
derive_filter?
on both resource and route level -
[AshJsonApi.Resource] support
derive_sort?
on both resource and route level
-
[OpenApi] implement
Ash.Type.Map
json schema -
[OpenApi] support unions in schemas
-
[OpenApi] use "any object" type for filter in json schema
-
[OpenApi] fully specify filter in open api schema
-
[OpenApi] show all sortable fields in json schema
-
[OpenApi] Use resource descriptions in generated schema files if present (#184)
-
[OpenApi] show embeds in json schema and openapi
-
[errors] Add defimpl for NoSuchInput error (#181)
v1.2.2 (2024-06-19)
- [include] properly still perform includes on record fetched from path
-
[OpenApi] newtype/enum support for json_schema as well
-
[OpenApi] render enums as enums in open api
v1.2.1 (2024-06-18)
-
[routes] don't raise error including on get related endpoints
-
[routes] validate relationships from routes at compile time
-
[errors] don't show exceptions if
show_raised_errors?
isfalse
-
[errors] add missing fields from
InvalidField
-
[OpenApi] don't expose
action.name
over api docs -
[AshJsonApi.Domain] resource comes from the route on domains
-
[routes] support
name
onroutes
, use in description and operationId -
[AshJsonApi.Resource] verify includes list at compile time
-
[AshJsonApi.Domain] allow setting a
resource
second option on domain'sbase_route
entity
v1.2.0 (2024-06-11)
- [AshJsonApi.Domain] add
base_route
constructor to domain router
-
[AshJsonApi.Resource] properly reflect that
default: false
makes a non required attribute -
[AshJsonApi.Resource] non-public attributes can be accepted and required in 3.0
-
[AshJsonApi.Resource] support
require_attributes
in json schema -
[AshJsonApi.Resource] ensure that resource-level default_fields are honored
- [attributes] non-public attributes can be accepted in 3.0
v1.1.2 (2024-06-05)
- [includes] ensure we don't drop includes (as a result of deduplicating them)
v1.1.1 (2024-06-05)
- [includes] deduplicate includes list while building it
- [metadata] add ability to supply custom route metadata (#152)
v1.1.0 (2024-05-24)
- [AshJsonApi.Domain] support routes defined on the domain
This changelog has been restarted. See /documentation/0.x-CHANGELOG.md
for previous changelogs.
-
[AshJsonApi.Resource] relationship routes now depend on the action taking an argument with the same name as the relationship. See the upgrade for more.
-
[AshJsonApi.ToJsonApiError] Introduced
AshJsonApi.ToJsonApiError
to convert errors to JSON API errors. This brings it more in line with other Ash extensions.
- [AshJsonApi.Resource] create/update/destroy actions now use bulk operations
- [AshJsonApi.Router] router is now a dynamic hand-written router. This prevents compile time dependencies.
- [AshJsonApi.Error] honor path when building source pointers