messages_search
messages_search is implemented by handleMessagesSearch in src/api/handlers/message/messages_search.osl.
Handles the messages search protocol operation through the resource-specific helper and storage layers.
Access
Section titled “Access”| Gate | Requirement |
|---|---|
| Authentication | Required by the central API gate. |
| Central permission | None. Resource, channel, ownership, or hierarchy checks may still apply in the handler/helpers. |
| Broadcast | Not marked global directly by this adapter. A helper may emit focused or server-wide updates. |
Request
Section titled “Request”Every request includes cmd: "messages_search" and may include an opaque listener correlation value.
| Field | Validation / meaning |
|---|---|
query |
schema.string().trim().maxLen(200).defaultValue("") |
fuzzy |
schema.boolean().defaultValue(false) |
channel |
schema.string().defaultValue("") |
thread_id |
schema.string().defaultValue("") |
filters |
schema.object({ |
limit |
schema.integer().optional() |
offset |
schema.integer().min(0).defaultValue(0) |
Validator source
Section titled “Validator source”The handler and shared validation path use these OSL schema definitions before normalization:
*schema.Schema schemaSearchStrList = schema.oneOrMany(schema.string())*schema.Schema schemaSearchHasValue = schema.enum([ "attachment", "embed", "reaction", "reply", "edit", "webhook", "command", "image", "video", "audio", "poll", "link", "mention"])*schema.Schema schemaSearch = schema.object({ query: schema.string().trim().maxLen(200).defaultValue(""), fuzzy: schema.boolean().defaultValue(false), channel: schema.string().defaultValue(""), thread_id: schema.string().defaultValue(""), filters: schema.object({ from: schemaSearchStrList.optional(), mentions: schemaSearchStrList.optional(), mentions_role: schemaSearchStrList.optional(), pinged: schema.boolean().optional(), has: schema.oneOrMany(schemaSearchHasValue).optional(), pinned: schema.boolean().optional(), edited: schema.boolean().optional(), before: schema.number().min(0).optional(), after: schema.number().min(0).optional() }).strict().defaultValue({}), limit: schema.integer().optional(), offset: schema.integer().min(0).defaultValue(0)})Processing path
Section titled “Processing path”handleCmdenforces authentication.dispatchCmdroutesmessages_searchtohandleMessagesSearch.- The adapter validates and normalizes input, then calls its domain collaborators.
- Durable mutations complete before the response or event is returned.
onMessageadds the request listener to direct responses and performs any marked broadcast.
Direct collaborators visible in the handler: messageContext, values, userFromUsername, else, stripStart, roleFromName, true, userFromId, configGet, messagesSearch
Responses and events
Section titled “Responses and events”Response/event command names visible in this adapter: messages_search.
Validation and domain failures use:
{ "cmd": "error", "val": "<message>", "src": "messages_search", "listener": "<copied from request>"}