Liking cljdoc? Tell your friends :D

boundary.core.validation.context

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
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
raw docstring

add-context-to-errorclj

(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
sourceraw docstring

apply-operation-contextclj

(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
sourceraw docstring

apply-role-contextclj

(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
sourceraw docstring

apply-tenant-contextclj

(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
sourceraw docstring

common-next-stepsclj

Common next steps for error types.

Common next steps for error types.
sourceraw docstring

enhance-error-with-contextclj

(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"}}
sourceraw docstring

format-next-stepsclj

(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
sourceraw docstring

generate-example-payloadclj

(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}
sourceraw docstring

get-next-stepsclj

(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
sourceraw docstring

get-operation-templateclj

(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
sourceraw docstring

get-role-guidanceclj

(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
sourceraw docstring

operation-specific-templatesclj

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.
sourceraw docstring

operation-typesclj

Valid operation types for contextual messaging.

Valid operation types for contextual messaging.
sourceraw docstring

render-contextual-messageclj

(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..."
sourceraw docstring

role-specific-guidanceclj

Role-specific guidance appended to messages.

Role-specific guidance appended to messages.
sourceraw docstring

role-typesclj

Common role types for role-based messaging.

Common role types for role-based messaging.
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close