Contextual message rendering and example payload generation.
This namespace extends the message templating system to support:
Design Principles:
Contextual message rendering and example payload generation. This namespace extends the message templating system to support: - Operation-aware messages (create, update, delete) - Role-based messaging - Multi-tenant context - Example payload generation using Malli Design Principles: - Opt-in: Example generation requires explicit flag - Deterministic: Uses fixed seeds for reproducible examples - Redacted: Sensitive fields are replaced with placeholders - Minimal: Examples include only required + relevant fields
(add-context-to-error error schema context)Add contextual message and example to error map.
Convenience wrapper around enhance-error-with-context.
Args: error: Error map schema: Optional Malli schema for example generation context: Context map
Returns: Error with :contextual-message and optional :example
Add contextual message and example to error map. Convenience wrapper around enhance-error-with-context. Args: error: Error map schema: Optional Malli schema for example generation context: Context map Returns: Error with :contextual-message and optional :example
(apply-operation-context params context)Apply operation context to message parameters.
Args: params: Parameter map context: Context map with :operation, :entity
Returns: Updated params with operation context
Apply operation context to message parameters. Args: params: Parameter map context: Context map with :operation, :entity Returns: Updated params with operation context
(apply-role-context message context)Add role-specific guidance to message.
Args: message: Base error message context: Context map with :role
Returns: Message with role-specific guidance appended
Add role-specific guidance to message. Args: message: Base error message context: Context map with :role Returns: Message with role-specific guidance appended
(apply-tenant-context params context)Apply multi-tenant context to parameters.
Args: params: Parameter map context: Context map with :tenant-id, :tenant-name
Returns: Updated params with tenant context
Apply multi-tenant context to parameters. Args: params: Parameter map context: Context map with :tenant-id, :tenant-name Returns: Updated params with tenant context
Common next steps for error types.
Common next steps for error types.
(enhance-error-with-context error context opts)Enhance error map with contextual message, suggestion, and optional example.
Args: error: Error map with :code, :params, :field context: Context map opts: Options with :include-example?, :schema
Returns: Enhanced error map
Example: (enhance-error-with-context {:field :email :code :required :params {}} {:operation :create :entity "user"} {:include-example? true :schema User}) => {:field :email :code :required :message "Email is required when creating a user" :suggestion "Provide an email address for the user" :example {:email "user@example.com" :name "John Doe"}}
Enhance error map with contextual message, suggestion, and optional example.
Args:
error: Error map with :code, :params, :field
context: Context map
opts: Options with :include-example?, :schema
Returns:
Enhanced error map
Example:
(enhance-error-with-context
{:field :email :code :required :params {}}
{:operation :create :entity "user"}
{:include-example? true :schema User})
=> {:field :email
:code :required
:message "Email is required when creating a user"
:suggestion "Provide an email address for the user"
:example {:email "user@example.com" :name "John Doe"}}(format-next-steps steps)Format next steps as numbered list.
Args: steps: Vector of step strings
Returns: Formatted string or empty string
Format next steps as numbered list. Args: steps: Vector of step strings Returns: Formatted string or empty string
(generate-example-payload schema error-field opts)Generate example valid payload for schema.
Args: schema: Malli schema error-field: Field that caused the error (for relevance) opts: Options map with :include-fields, :exclude-fields, :seed
Returns: Example payload map or nil
Example: (generate-example-payload User :email {:include-fields [:name :role]}) => {:email "user@example.com" :name "John Doe" :role :user}
Generate example valid payload for schema.
Args:
schema: Malli schema
error-field: Field that caused the error (for relevance)
opts: Options map with :include-fields, :exclude-fields, :seed
Returns:
Example payload map or nil
Example:
(generate-example-payload User :email {:include-fields [:name :role]})
=> {:email "user@example.com" :name "John Doe" :role :user}(get-next-steps code context)Get actionable next steps for error code.
Args: code: Error code keyword context: Context map (may contain custom steps)
Returns: Vector of step strings or nil
Get actionable next steps for error code. Args: code: Error code keyword context: Context map (may contain custom steps) Returns: Vector of step strings or nil
(get-operation-template operation code)Get operation-specific template if available.
Args: operation: Operation type keyword code: Error code (may be namespaced like :user.email/required)
Returns: Template string or nil
Get operation-specific template if available. Args: operation: Operation type keyword code: Error code (may be namespaced like :user.email/required) Returns: Template string or nil
(get-role-guidance role)Get guidance text for a specific role.
Args: role: Role keyword
Returns: Guidance string or nil
Get guidance text for a specific role. Args: role: Role keyword Returns: Guidance string or nil
Operation-specific message templates.
These override default templates when operation context is provided.
Operation-specific message templates. These override default templates when operation context is provided.
Valid operation types for contextual messaging.
Valid operation types for contextual messaging.
(render-contextual-message code params context opts)Render error message with full context.
Args: code: Error code keyword params: Parameter map context: Context map with :operation, :role, :tenant-id, :entity opts: Rendering options
Returns: Message string
Example: (render-contextual-message :required {:field :email} {:operation :create :entity "user" :role :viewer} {}) => "Email is required when creating a user. You have view-only access..."
Render error message with full context.
Args:
code: Error code keyword
params: Parameter map
context: Context map with :operation, :role, :tenant-id, :entity
opts: Rendering options
Returns:
Message string
Example:
(render-contextual-message
:required
{:field :email}
{:operation :create :entity "user" :role :viewer}
{})
=> "Email is required when creating a user. You have view-only access..."Role-specific guidance appended to messages.
Role-specific guidance appended to messages.
Common role types for role-based messaging.
Common role types for role-based messaging.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |