- resource: Add
Retryhook to action lifecycle with up to 2 automatic retries;InstancegainsRetryCreate,RetryRead,RetryUpdate,RetryDeleteandCollectiongainsRetryList(default: propagate error) - api/rest: Remove
ErrRendererchain fromResponseWriter; error rendering is now handled viaRenderErrorMiddleware - api/rest:
WriteErrorno longer accepts optional renderers - api/rest: Fix
defaultErrorRendererto usegomerr.ErrorAsinstead of type assertion, and pass pointer tojson.Unmarshal - api/rest: Add
StatusCode()andBody()accessors toResponseWriter - data/dynamodb: Refactor uniqueness constraint to use
constraint.Constraintabstraction and resolve existing records viapersistableType.resolver - data/dynamodb: Populate query results on uniqueness violations for downstream consumption
- gomerr:
Conflict()now takes(with, id, problem string)instead of(with any, problem string);ConflictError.Withchanged fromanytostringwith newIdfield - structs: Normalize error attribute keys to lowercase (
"Field"→"field","Value"→"value") - auth: Normalize
fieldAccessScopevalue to lowercase"field" - deps: Bump versions
- api/rest: Preprocess structs during route building to validate config and ensure correct applier semantics
- data/dynamodb: Support partial updates of nested properties (previously required full replacement).
- data/dynamodb: Add support for retrieving a resource by alternative identifier value such as
nameinstead ofid. - structs:
DirectiveProvidernow handles absent versus empty directives - provider (breaking):
provider.SingletonProviderrenamed toprovider.Singleton