Documentation Options

January 28, 2026 ยท View on GitHub

The documentation hash in entity exposures supports the following options:

Type Options

OptionDescriptionExample
typeOpenAPI data typeString, Integer, Boolean, Float, Date, DateTime
is_arrayMarks field as array typetrue / false

Description Options

OptionDescriptionExample
descProperty description'User email address'
exampleExample value for documentation'user@example.com'
defaultDefault value'pending'

Validation Options

OptionDescriptionExample
requiredWhether field is requiredtrue / false
valuesEnum values (array or proc)%w[pending active] or -> { Status.all }
minimumMinimum value for numeric types0
maximumMaximum value for numeric types100
min_lengthMinimum length for strings1
max_lengthMaximum length for strings255
min_itemsMinimum items for arrays1
max_itemsMaximum items for arrays10
unique_itemsArray items must be uniquetrue

Display Options

OptionDescriptionExample
read_onlyMarks field as read-onlytrue
hiddenHide field from documentationtrue

Examples

Basic types

expose :id, documentation: { type: Integer, desc: 'Unique identifier' }
expose :name, documentation: { type: String, desc: 'Full name', required: true }
expose :active, documentation: { type: Boolean, default: true }

Enums

expose :status, documentation: {
  type: String,
  desc: 'Current status',
  values: %w[pending active suspended]
}

Numeric constraints

expose :age, documentation: {
  type: Integer,
  minimum: 0,
  maximum: 150
}

String constraints

expose :username, documentation: {
  type: String,
  min_length: 3,
  max_length: 20
}

Arrays

expose :tags, documentation: {
  type: String,
  is_array: true,
  desc: 'Associated tags'
}