# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](Https://conventionalcommits.org) for commit guidelines.
<!-- changelog -->
## [v1.4.13](https://github.com/ash-project/ash_json_api/compare/v1.4.12...v1.4.13) (2024-11-04)
### Bug Fixes:
* mark filters as deepObject
* support `null` input for non-required attributes
### Improvements:
* 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](https://github.com/ash-project/ash_json_api/compare/v1.4.11...v1.4.12) (2024-10-21)
### Bug Fixes:
* hide private arguments in open api (#247)
## [v1.4.11](https://github.com/ash-project/ash_json_api/compare/v1.4.10...v1.4.11) (2024-10-14)
### Improvements:
* add type handler for NaiveDatetime
## [v1.4.10](https://github.com/ash-project/ash_json_api/compare/v1.4.9...v1.4.10) (2024-10-10)
### Improvements:
* set status only if it hasn't already been set
* better examples for `fields` parameter
## [v1.4.9](https://github.com/ash-project/ash_json_api/compare/v1.4.8...v1.4.9) (2024-09-27)
### Bug Fixes:
* 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
### Improvements:
* support providing the open api schema as a file
## [v1.4.8](https://github.com/ash-project/ash_json_api/compare/v1.4.7...v1.4.8) (2024-09-16)
### Bug Fixes:
* don't access `message` key of `InvalidKeyset` errors
### Improvements:
* upgrade to latest igniter functions and version
## [v1.4.7](https://github.com/ash-project/ash_json_api/compare/v1.4.6...v1.4.7) (2024-09-04)
### Bug Fixes:
* decode path parameters automatically
## [v1.4.6](https://github.com/ash-project/ash_json_api/compare/v1.4.5...v1.4.6) (2024-08-26)
### Bug Fixes:
* don't intercept typed structs
* properly check for domain inclusion in json api router when installing
### Improvements:
* support new struct types w/ constraints
## [v1.4.5](https://github.com/ash-project/ash_json_api/compare/v1.4.4...v1.4.5) (2024-08-20)
### Bug Fixes:
* properly discover all necessary filter schemas
### Improvements:
* optimize post-operation field loading logic
* don't show tags for resources w/o routes in schema
## [v1.4.4](https://github.com/ash-project/ash_json_api/compare/v1.4.3...v1.4.4) (2024-08-16)
### Improvements:
* support nested `base_route`s
## [v1.4.3](https://github.com/ash-project/ash_json_api/compare/v1.4.2...v1.4.3) (2024-08-08)
### Improvements:
* new `AshJsonApi.Type` behaviour, and support returning regular maps
## [v1.4.2](https://github.com/ash-project/ash_json_api/compare/v1.4.1...v1.4.2) (2024-08-08)
### Bug Fixes:
* use a list when calling `Module.concat`
## [v1.4.1](https://github.com/ash-project/ash_json_api/compare/v1.4.0...v1.4.1) (2024-07-30)
### Improvements:
* properly install domain with `Module.concat` in AshJsonApi router
* include multipart parser in installer
## [v1.4.0](https://github.com/ash-project/ash_json_api/compare/v1.3.8...v1.4.0) (2024-07-30)
### Features:
- [`Ash.Type.File`] Ash.Type.File support (#214)
See `AshJsonApi.Plug.Parser` for usage information.
### Bug Fixes:
- [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](https://github.com/ash-project/ash_json_api/compare/v1.3.7...v1.3.8) (2024-07-22)
### Bug Fixes:
- [`AshJsonApi.Router`] don't double escape `modify_open_api`
### Improvements:
- [`AshJsonApi.Router`] automatically infer the `prefix` instead of relying on configuration
- [`mix ash.patch.extend`] add `AshJsonApi` extender
- [`mix ash_json_api.install`] add installer for AshJsonApi
## [v1.3.7](https://github.com/ash-project/ash_json_api/compare/v1.3.6...v1.3.7) (2024-07-15)
### Bug Fixes:
- [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](https://github.com/ash-project/ash_json_api/compare/v1.3.5...v1.3.6) (2024-07-08)
### Bug Fixes:
- [open api] properly match enum types on input/output
- [errors] Avoid raising the condition converting the regex to string. (#204)
### Improvements:
- [content type negotation] honor `allow_all_media_type_params?` in `content-type` as well
## [v1.3.5](https://github.com/ash-project/ash_json_api/compare/v1.3.4...v1.3.5) (2024-07-06)
### Bug Fixes:
- [bugfix] use `conn.private`, not `conn[:private]`
## [v1.3.4](https://github.com/ash-project/ash_json_api/compare/v1.3.3...v1.3.4) (2024-07-05)
### Bug Fixes:
- [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](https://github.com/ash-project/ash_json_api/compare/v1.3.2...v1.3.3) (2024-07-04)
### Bug Fixes:
- [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](https://github.com/ash-project/ash_json_api/compare/v1.3.1...v1.3.2) (2024-07-02)
### Bug Fixes:
- [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
### Improvements:
- [open api] use empty example for filter
- [routes] support for query parameters using `query_params` route option
## [v1.3.1](https://github.com/ash-project/ash_json_api/compare/v1.3.0...v1.3.1) (2024-07-01)
### Bug Fixes:
- [open api] use strings for enum values
- [open api] use `strings` for includes/sort properly, add regex for sort
## [v1.3.0](https://github.com/ash-project/ash_json_api/compare/v1.2.2...v1.3.0) (2024-06-28)
### Features:
- [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
### Improvements:
- [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](https://github.com/ash-project/ash_json_api/compare/v1.2.1...v1.2.2) (2024-06-19)
### Bug Fixes:
- [include] properly still perform includes on record fetched from path
### Improvements:
- [OpenApi] newtype/enum support for json_schema as well
- [OpenApi] render enums as enums in open api
## [v1.2.1](https://github.com/ash-project/ash_json_api/compare/v1.2.0...v1.2.1) (2024-06-18)
### Bug Fixes:
- [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?` is `false`
- [errors] add missing fields from `InvalidField`
- [OpenApi] don't expose `action.name` over api docs
- [AshJsonApi.Domain] resource comes from the route on domains
### Improvements:
- [routes] support `name` on `routes`, use in description and operationId
- [AshJsonApi.Resource] verify includes list at compile time
- [AshJsonApi.Domain] allow setting a `resource` second option on domain's `base_route` entity
## [v1.2.0](https://github.com/ash-project/ash_json_api/compare/v1.1.2...v1.2.0) (2024-06-11)
### Features:
- [AshJsonApi.Domain] add `base_route` constructor to domain router
### Bug Fixes:
- [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
### Improvements:
- [attributes] non-public attributes can be accepted in 3.0
## [v1.1.2](https://github.com/ash-project/ash_json_api/compare/v1.1.1...v1.1.2) (2024-06-05)
### Bug Fixes:
- [includes] ensure we don't drop includes (as a result of deduplicating them)
## [v1.1.1](https://github.com/ash-project/ash_json_api/compare/v1.1.0...v1.1.1) (2024-06-05)
### Bug Fixes:
- [includes] deduplicate includes list while building it
### Improvements:
- [metadata] add ability to supply custom route metadata (#152)
## [v1.1.0](https://github.com/ash-project/ash_json_api/compare/v1.0.0...v1.1.0) (2024-05-24)
### Features:
- [AshJsonApi.Domain] support routes defined on the domain
## [v1.0.0](https://github.com/ash-project/ash_json_api/compare/v1.0.0...v0.34.2)
This changelog has been restarted. See `/documentation/0.x-CHANGELOG.md` for previous changelogs.
### Breaking Changes:
- [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.
### Improvements:
- [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