# Changelog
## [0.3.0] - 08 June 2026
### Features
- Add constraint options to the `@param` and `@property` DSL: `enum`, `nullable`, `format`,
`min_length`/`max_length`, `minimum`/`maximum`, `pattern`, and `min_items`/`max_items`.
Scalar constraints apply to array items; `min_items`/`max_items` apply to the array. Nullable
rendering follows the configured `openapi_version` (`nullable: true` for 3.0, a `"null"` type
union for 3.1) ([#1](https://github.com/DylanBlakemore/swagdox/issues/1)).
### Fixes
- De-duplicate `operationId`s so the spec stays OpenAPI-valid when one action serves
multiple routes (e.g. `resources` PUT/PATCH update twins or dual-mounted controllers).
Colliding ids are disambiguated by verb, then by path; already-unique ids are unchanged
([#2](https://github.com/DylanBlakemore/swagdox/issues/2)).
## [0.2.1] - 13 November 2025
- Adds request body parameters to spec
## [0.2.0] - 09 February 2025
### Tags and Schema examples
- Adds the ability to tag endpoints using the `@tag` syntax
- Adds the ability to provide an example for a schema using `@example` syntax
## [0.1.3] - 26 June 2024
### Paramater fix
- Fix parameter array types
## [0.1.2] - 21 June 2024
### Documentation fix
- Fix reference to readme html
## [0.1.1] - 21 June 2024
### Documentation improvements
- Add ReadMe, Changelog, and License to docs
- Redirect docs to Readme
## [0.1.0] - 26 May 2024
### First release
- Generate OpenAPI specification using `swagdox.generate` task
- Add authentication in Router moduledoc
- Describe models in moduledocs of schemas
- Models are automatically detected by presence of `[Swagdox] Schema:` tag
- Describe endpoints using function docs
- Controllers are detected by defining the router module
- Endpoints are detected within the controller by the presence of `[Swagdox] API:` tag