Changelog#

All notable changes to the Outeract API are documented here.


Unreleased#

Breaking Changes#

events Query: relatedTo Parameter#

The relatedTo parameter has been changed from a simple UUID to a structured RelationFilter input type, enabling filtering with nested AND/OR conditions.

Before:

events(relatedTo: "uuid-here", relatedToDirection: "outgoing")

After:

events(relatedTo: {eventIds: ["uuid-here"], direction: "outgoing"})

Migration:

  1. Replace relatedTo: "uuid" with relatedTo: {eventIds: ["uuid"]}
  2. Move relatedToDirection into the filter object as direction
  3. The relatedToDirection parameter has been removed
  4. The filter now only matches event-to-event relationships (use userId for user filtering)

New Features#

Edge-Target Filter on Events Query#

New relatedNodeId, relatedNodeType, and relatedEdgeType parameters on the events query filter events by an edge (event as source) pointing at an arbitrary node, not only other events. For example, “events with any edge targeting user X”:

events(userId: "user-uuid", relatedNodeId: "other-user-uuid", relatedEdgeType: "sent_to", last: 50)

relatedNodeType (e.g. "user") and relatedEdgeType (e.g. "sent_to", "participant") optionally narrow the match; both are ignored unless relatedNodeId is given. The filter ANDs with all other filters and is applied at the database level, so first/last cursor pagination returns exactly N matching events.

Config Filters on Users Query#

New configFilters parameter on the users query enables filtering users by any config_data field (e.g., system_user, name). Each filter is a { field, value } pair that performs an exact string match against the JSON-extracted text.

# Only system users
users(configFilters: [{ field: "system_user", value: "true" }])

# Combine multiple filters (AND)
users(configFilters: [
  { field: "system_user", value: "false" },
  { field: "name", value: "John Doe" }
])

Works with all user query modes: default pagination, search, and orderBy: "last_active_at".

See Users documentation and GraphQL API reference for details.

Conversation Filtering#

New conversationId parameter on the events query provides a convenient way to filter events by conversation:

events(conversationId: "conv_abc123")

Advanced Relation Filtering#

The new RelationFilter input type filters events by their relationships to other events (e.g., conversations):

  • Multiple event IDs: {eventIds: ["conv-1", "conv-2"]}
  • OR conditions: {or_: [{eventIds: ["conv-1"]}, {eventIds: ["conv-2"]}]}
  • AND conditions: {and_: [{eventIds: ["conv-1"]}, {eventIds: ["conv-2"]}]}
  • Nested conditions: Complex expressions like (A AND B) OR C

Note: RelationFilter only matches event-to-event relationships. For user filtering, use the userId parameter instead.

See Events documentation for full details.


See Also#