Skip to content

USQL: Ultra Simple Query Language

USQL is the search language used across FiniAC. It works in log search, event log search, and event drain filters.

Syntax

Free-Text

Type any word or phrase to search across all searchable fields. Multiple terms are combined with AND by default.

explosion
Disconnected timeout
"connection timed out"

Negation

Prefix a term with ! or - to exclude results containing it:

!Disconnected
-kicked

Boolean Operators

Combine terms with AND / && and OR / || (case-insensitive):

Rejected AND discord
Connected OR Disconnected

Grouping

Use parentheses to control evaluation order. Without them, AND binds tighter than OR.

(Connected OR Disconnected) AND ExampleUsername

Quoted Phrases

Use double quotes for values with spaces or special characters:

"No Discord account linked"
"connection timed out"

Field Expressions

Target a specific field using field:value syntax. Available in event log search and event drain filters.

license:194c5ebc4d2a6bdc0e06524bc46bc31bf6450a0c
discord:19635812560016313
sender_name:ExamplePlayer

Comparison Operators

OperatorDescriptionExample
:Field default (exact or contains)event_type:player_damage
=Exact matchevent_type=player_damage
!=Not equalevent_type!=player_heal
~Contains (case-insensitive)payload~PISTOL
>Greater than (numeric)data.damage>50
<Less than (numeric)data.damage<100
>= / <=Greater/less than or equaldata.damage>=50

Examples

Free-text (searches all fields including payload):

weapon

Search payload specifically:

payload:WEAPON_PISTOL
payload~ammo
!payload:debug

Combine fields and free-text:

event_type:player_damage AND ExamplePlayer
(event_type:player_damage OR event_type:player_kill) AND payload~PISTOL

Event Drain Filters Enterprise

Event drains support USQL field expressions for filtering on structured event data. Events contain nested data structures flattened to dot-notation paths.

Available Fields

Event fields:

FieldDescription
typeEvent type name
event_typeAlias for type
event_timeEvent timestamp
player_namePlayer name
player_idPlayer server ID

Sender identifiers — access with sender. prefix:

FieldDescription
sender.nameSender player name
sender.licenseRockstar license
sender.license2Secondary license
sender.discordDiscord ID
sender.fivemFiveM ID
sender.xblXbox Live ID
sender.liveMicrosoft Live ID
sender.ipIP address

Target identifiers — access with target. prefix:

FieldDescription
target.nameTarget player name
target.licenseRockstar license
target.license2Secondary license
target.discordDiscord ID
target.fivemFiveM ID
target.xblXbox Live ID
target.liveMicrosoft Live ID
target.ipIP address

Position:

FieldDescription
position.xX coordinate
position.yY coordinate
position.zZ coordinate
pos_xAlias for position.x
pos_yAlias for position.y
pos_zAlias for position.z

Event data — access with data. or payload. prefix:

Both data.* and payload.* point to the same event data. The available sub-fields depend on the event type. Common examples:

FieldDescription
data.weaponWeapon hash or name
data.damageDamage amount
data.distanceDistance value
data.modelEntity model hash
data.entityTypeEntity type
data.plateVehicle plate
data.amountGeneric amount
data.reasonEvent reason

TIP

Since event data varies by event type, any nested key from the event payload can be used as a filter field with dot notation: data.your.nested.field.

Examples

Match damage events from a specific player using a pistol:

type:player_damage && sender.discord:123456789 && data.weapon~PISTOL

Match high-damage events excluding heals:

data.damage>50 && !type:player_heal

Filter by position (e.g. events near a specific area):

position.x>100 && position.x<200 && position.y>300 && position.y<400

Match entity creation events with a specific model:

type:entity_create && data.model:prop_weed_01