> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nonefivem.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Exports & Events

## Client Exports

<Accordion title="is_entity_being_tracked">
  Checks if an entity is being tracked (has any trackers attached).

  **Parameters**

  * entity: number

  **Returns**

  * is\_tracked: boolean

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
  local isTracked = exports['no-gps-tracker']:is_entity_being_tracked(vehicle)
  if isTracked then
      print("This vehicle has GPS trackers attached!")
  end
  ```
</Accordion>

<Accordion title="get_entity_trackers">
  Gets all tracker IDs attached to an entity.

  **Parameters**

  * entity: number

  **Returns**

  * tracker\_ids: `string[]`

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
  local trackerIds = exports['no-gps-tracker']:get_entity_trackers(vehicle)
  for _, trackerId in ipairs(trackerIds) do
      print("Tracker found: " .. trackerId)
  end
  ```
</Accordion>

<Accordion title="is_tracker_on_entity">
  Checks if a specific tracker is attached to an entity.

  **Parameters**

  * entity: number
  * tracker\_id: string

  **Returns**

  * is\_attached: boolean

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
  local isAttached = exports['no-gps-tracker']:is_tracker_on_entity(vehicle, "tracker_123")
  if isAttached then
      print("Tracker tracker_123 is on this vehicle")
  end
  ```
</Accordion>

<Accordion title="get_entity_tracker_count">
  Gets the count of trackers attached to an entity.

  **Parameters**

  * entity: number

  **Returns**

  * count: number

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
  local count = exports['no-gps-tracker']:get_entity_tracker_count(vehicle)
  print("This vehicle has " .. count .. " trackers attached")
  ```
</Accordion>

<Accordion title="is_placing_tracker">
  Checks if the player is currently placing a tracker.

  **Returns**

  * is\_placing: boolean

  **Example**

  ```lua theme={null}
  if exports['no-gps-tracker']:is_placing_tracker() then
      print("Player is currently placing a tracker")
  end
  ```
</Accordion>

<Accordion title="find_and_place_tracker">
  Initiates tracker placement on a targeted vehicle. Finds the vehicle the player is looking at and attempts to place the tracker.

  **Parameters**

  * tracker\_id: string

  **Returns**

  * success: boolean
  * error\_message?: string

  **Example**

  ```lua theme={null}
  local success, errorMsg = exports['no-gps-tracker']:find_and_place_tracker("tracker_123")
  if success then
      print("Tracker placed successfully!")
  else
      print("Failed to place tracker: " .. (errorMsg or "unknown error"))
  end
  ```
</Accordion>

<Accordion title="place_tracker">
  Places a tracker on a specific entity.

  **Parameters**

  * tracker\_id: string
  * entity: number

  **Returns**

  * success: boolean
  * error\_message?: string

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
  local success, errorMsg = exports['no-gps-tracker']:place_tracker("tracker_123", vehicle)
  if success then
      print("Tracker placed on vehicle!")
  else
      print("Failed: " .. (errorMsg or "unknown error"))
  end
  ```
</Accordion>

<Accordion title="is_removing_tracker">
  Checks if the player is currently removing a tracker.

  **Returns**

  * is\_removing: boolean

  **Example**

  ```lua theme={null}
  if exports['no-gps-tracker']:is_removing_tracker() then
      print("Player is currently removing a tracker")
  end
  ```
</Accordion>

<Accordion title="find_and_remove_tracker">
  Initiates tracker removal from a targeted vehicle.

  **Returns**

  * success: boolean
  * error\_message?: string

  **Example**

  ```lua theme={null}
  local success, errorMsg = exports['no-gps-tracker']:find_and_remove_tracker()
  if success then
      print("Tracker removed successfully!")
  else
      print("Failed to remove tracker: " .. (errorMsg or "unknown error"))
  end
  ```
</Accordion>

<Accordion title="remove_tracker">
  Removes a tracker from a specific entity.

  **Parameters**

  * entity: number

  **Returns**

  * success: boolean
  * error\_message?: string

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
  local success, errorMsg = exports['no-gps-tracker']:remove_tracker(vehicle)
  if success then
      print("Tracker removed from vehicle!")
  end
  ```
</Accordion>

<Accordion title="is_nui_open">
  Checks if the GPS tracker NUI is currently open.

  **Returns**

  * is\_open: boolean

  **Example**

  ```lua theme={null}
  if exports['no-gps-tracker']:is_nui_open() then
      print("GPS Tracker UI is open")
  end
  ```
</Accordion>

<Accordion title="open_nui">
  Opens the GPS tracker NUI.

  **Example**

  ```lua theme={null}
  exports['no-gps-tracker']:open_nui()
  ```
</Accordion>

<Accordion title="close_nui">
  Closes the GPS tracker NUI.

  **Example**

  ```lua theme={null}
  exports['no-gps-tracker']:close_nui()
  ```
</Accordion>

<Accordion title="toggle_nui">
  Toggles the GPS tracker NUI.

  **Example**

  ```lua theme={null}
  exports['no-gps-tracker']:toggle_nui()
  ```
</Accordion>

<Accordion title="get_nearby_tracked_vehicles">
  Gets all nearby vehicles that have trackers attached.

  **Parameters**

  * radius?: number (default: 50.0)

  **Returns**

  * vehicles: `{entity: number, tracker_ids: string[]}[]`

  **Example**

  ```lua theme={null}
  local trackedVehicles = exports['no-gps-tracker']:get_nearby_tracked_vehicles(100.0)
  for _, data in ipairs(trackedVehicles) do
      print("Vehicle " .. data.entity .. " has " .. #data.tracker_ids .. " trackers")
  end
  ```
</Accordion>

<Accordion title="get_current_vehicle_trackers">
  Gets the vehicle the player is currently in, if it has trackers.

  **Returns**

  * entity?: number
  * tracker\_ids?: `string[]`

  **Example**

  ```lua theme={null}
  local vehicle, trackerIds = exports['no-gps-tracker']:get_current_vehicle_trackers()
  if vehicle and trackerIds then
      print("Your vehicle has " .. #trackerIds .. " trackers!")
  end
  ```
</Accordion>

<Accordion title="is_current_vehicle_tracked">
  Checks if the player's current vehicle is being tracked.

  **Returns**

  * is\_tracked: boolean

  **Example**

  ```lua theme={null}
  if exports['no-gps-tracker']:is_current_vehicle_tracked() then
      print("Warning: Your vehicle is being tracked!")
  end
  ```
</Accordion>

## Server Exports

<Accordion title="get_active_trackers">
  Gets all active trackers in the system.

  **Returns**

  * trackers: `{tracker_id: string, attached_entity: number}[]`

  **Example**

  ```lua theme={null}
  local trackers = exports['no-gps-tracker']:get_active_trackers()

  for _, tracker in ipairs(trackers) do
      print("Active tracker: " .. tracker.tracker_id)
  end
  ```
</Accordion>

<Accordion title="get_tracker">
  Gets a specific tracker by ID if it exists.

  **Parameters**

  * tracker\_id: string

  **Returns**

  * tracker?: `{tracker_id: string, attached_entity: number}`

  **Example**

  ```lua theme={null}
  local tracker = exports['no-gps-tracker']:get_tracker("tracker_123")

  if tracker then
      print("Tracker is attached to entity: " .. tracker.attached_entity)
  end
  ```
</Accordion>

<Accordion title="get_tracker_full">
  Gets full tracker info from database including routes and points.

  **Parameters**

  * tracker\_id: string

  **Returns**

  * tracker?: table

  **Example**

  ```lua theme={null}
  local trackerData = exports['no-gps-tracker']:get_tracker_full("tracker_123")

  if trackerData then
      print("Tracker has " .. #trackerData.routes .. " routes")
  end
  ```
</Accordion>

<Accordion title="get_tracker_info">
  Gets tracker info from database.

  **Parameters**

  * tracker\_id: string

  **Returns**

  * tracker?: `{id: string, is_placed: boolean, placed_at: string, placed_by: string, placed_entity_identifier: string}`

  **Example**

  ```lua theme={null}
  local info = exports['no-gps-tracker']:get_tracker_info("tracker_123")

  if info and info.is_placed then
      print("Tracker placed on: " .. info.placed_entity_identifier)
  end
  ```
</Accordion>

<Accordion title="create_tracker">
  Creates a tracker in the database.

  **Parameters**

  * tracker\_id: string

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:create_tracker("tracker_456")

  if success then
      print("Tracker created in database")
  end
  ```
</Accordion>

<Accordion title="is_tracker_active">
  Checks if a tracker is currently active.

  **Parameters**

  * tracker\_id: string

  **Returns**

  * is\_active: boolean

  **Example**

  ```lua theme={null}
  if exports['no-gps-tracker']:is_tracker_active("tracker_123") then
      print("Tracker is currently active and tracking")
  end
  ```
</Accordion>

<Accordion title="get_active_tracker_count">
  Gets the count of active trackers.

  **Returns**

  * count: number

  **Example**

  ```lua theme={null}
  local count = exports['no-gps-tracker']:get_active_tracker_count()
  print("Total active trackers: " .. count)
  ```
</Accordion>

<Accordion title="create_and_attach_tracker_to_entity">
  Creates a tracker and attaches it to an entity.

  **Parameters**

  * tracker\_id: string
  * entity: number
  * placer\_identifier?: string

  **Returns**

  * success: boolean
  * error\_message?: string

  **Example**

  ```lua theme={null}
  local identifier = BASE:GetIdentifier(source)
  local vehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)

  local success, err = exports['no-gps-tracker']:create_and_attach_tracker_to_entity("tracker_123", vehicle, identifier)

  if success then
      print("Tracker created and attached!")
  end
  ```
</Accordion>

<Accordion title="attach_tracker_to_entity">
  Attaches an existing tracker to an entity (without database upsert).

  **Parameters**

  * tracker\_id: string
  * entity: number

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)
  local success = exports['no-gps-tracker']:attach_tracker_to_entity("tracker_123", vehicle)
  ```
</Accordion>

<Accordion title="is_entity_being_tracked">
  Checks if an entity is being tracked.

  **Parameters**

  * entity: number

  **Returns**

  * is\_tracked: boolean

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)

  if exports['no-gps-tracker']:is_entity_being_tracked(vehicle) then
      print("This vehicle is being tracked")
  end
  ```
</Accordion>

<Accordion title="get_entity_trackers">
  Gets all tracker IDs attached to an entity.

  **Parameters**

  * entity: number

  **Returns**

  * tracker\_ids: `string[]`

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)
  local trackerIds = exports['no-gps-tracker']:get_entity_trackers(vehicle)

  print("Found " .. #trackerIds .. " trackers on vehicle")
  ```
</Accordion>

<Accordion title="is_entity_identifier_tracked">
  Checks if an entity identifier is tracked.

  **Parameters**

  * entity\_identifier: string

  **Returns**

  * is\_tracked: boolean

  **Example**

  ```lua theme={null}
  local plate = "ABC123"

  if exports['no-gps-tracker']:is_entity_identifier_tracked(plate) then
      print("Vehicle with plate " .. plate .. " is being tracked")
  end
  ```
</Accordion>

<Accordion title="get_trackers_by_entity_identifier">
  Gets all trackers for an entity identifier from database.

  **Parameters**

  * entity\_identifier: string

  **Returns**

  * trackers: table

  **Example**

  ```lua theme={null}
  local trackers = exports['no-gps-tracker']:get_trackers_by_entity_identifier("ABC123")

  for _, tracker in ipairs(trackers) do
      print("Tracker: " .. tracker.id)
  end
  ```
</Accordion>

<Accordion title="get_trackers_by_placer">
  Gets all trackers placed by a specific identifier.

  **Parameters**

  * identifier: string

  **Returns**

  * trackers: table

  **Example**

  ```lua theme={null}
  local identifier = BASE:GetIdentifier(source)
  local trackers = exports['no-gps-tracker']:get_trackers_by_placer(identifier)

  print("Player has placed " .. #trackers .. " trackers")
  ```
</Accordion>

<Accordion title="get_entity_identifier">
  Gets the entity identifier for a given entity.

  **Parameters**

  * entity: number

  **Returns**

  * identifier?: string

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)
  local identifier = exports['no-gps-tracker']:get_entity_identifier(vehicle)

  print("Vehicle identifier: " .. (identifier or "none"))
  ```
</Accordion>

<Accordion title="is_entity_persistent">
  Checks if an entity is persistent.

  **Parameters**

  * entity: number

  **Returns**

  * is\_persistent: boolean

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)

  if exports['no-gps-tracker']:is_entity_persistent(vehicle) then
      print("This is a persistent vehicle (player-owned)")
  end
  ```
</Accordion>

<Accordion title="remove_trackers_from_entity">
  Removes all trackers from a given entity.

  **Parameters**

  * entity: number

  **Returns**

  * removed\_count: number

  **Example**

  ```lua theme={null}
  local vehicle = GetVehiclePedIsIn(GetPlayerPed(source), false)
  local removed = exports['no-gps-tracker']:remove_trackers_from_entity(vehicle)

  print("Removed " .. removed .. " trackers from vehicle")
  ```
</Accordion>

<Accordion title="remove_tracker">
  Removes a specific tracker by ID.

  **Parameters**

  * tracker\_id: string

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:remove_tracker("tracker_123")

  if success then
      print("Tracker removed successfully")
  end
  ```
</Accordion>

<Accordion title="remove_trackers_from_entity_by_identifier">
  Removes all trackers from a given entity by identifier.

  **Parameters**

  * entity\_identifier: string

  **Returns**

  * removed\_count: number

  **Example**

  ```lua theme={null}
  local removed = exports['no-gps-tracker']:remove_trackers_from_entity_by_identifier("ABC123")

  print("Removed " .. removed .. " trackers from vehicle with plate ABC123")
  ```
</Accordion>

<Accordion title="delete_tracker_if_no_access">
  Deletes a tracker if it has no access entries.

  **Parameters**

  * tracker\_id: string

  **Example**

  ```lua theme={null}
  exports['no-gps-tracker']:delete_tracker_if_no_access("tracker_123")
  ```
</Accordion>

<Accordion title="list_player_trackers">
  Lists trackers accessible by a player.

  **Parameters**

  * source: number
  * page: number
  * page\_size: number
  * search?: string

  **Returns**

  * result: `{total: number, page: number, page_size: number, hasMore: boolean, trackers: table}`

  **Example**

  ```lua theme={null}
  local result = exports['no-gps-tracker']:list_player_trackers(source, 1, 10)

  print("Player has access to " .. result.total .. " trackers")
  for _, tracker in ipairs(result.trackers) do
      print("- " .. tracker.id)
  end
  ```
</Accordion>

<Accordion title="list_player_trackers_by_identifier">
  Lists trackers accessible by an identifier.

  **Parameters**

  * identifier: string
  * page: number
  * page\_size: number
  * search?: string

  **Returns**

  * result: `{total: number, page: number, page_size: number, hasMore: boolean, trackers: table}`

  **Example**

  ```lua theme={null}
  local identifier = BASE:GetIdentifier(source)
  local result = exports['no-gps-tracker']:list_player_trackers_by_identifier(identifier, 1, 10)

  print("Found " .. result.total .. " trackers")
  ```
</Accordion>

<Accordion title="list_tracker_routes">
  Lists routes for a specific tracker.

  **Parameters**

  * tracker\_id: string
  * page: number
  * page\_size: number

  **Returns**

  * result: table

  **Example**

  ```lua theme={null}
  local routes = exports['no-gps-tracker']:list_tracker_routes("tracker_123", 1, 10)

  for _, route in ipairs(routes) do
      print("Route from " .. route.started_at)
  end
  ```
</Accordion>

<Accordion title="grant_tracker_access">
  Grants access to a tracker for a player by source.

  **Parameters**

  * tracker\_id: string
  * source: number
  * access\_type: string ("view" | "full")

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:grant_tracker_access("tracker_123", targetSource, "view")

  if success then
      print("Granted view access to player")
  end
  ```
</Accordion>

<Accordion title="grant_tracker_access_by_identifier">
  Grants access to a tracker for a specific identifier.

  **Parameters**

  * tracker\_id: string
  * identifier: string
  * access\_type: string ("view" | "full")

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:grant_tracker_access_by_identifier("tracker_123", "license:abc123", "full")
  ```
</Accordion>

<Accordion title="revoke_tracker_access">
  Revokes access to a tracker for a player.

  **Parameters**

  * tracker\_id: string
  * source: number

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:revoke_tracker_access("tracker_123", targetSource)

  if success then
      print("Access revoked")
  end
  ```
</Accordion>

<Accordion title="revoke_tracker_access_by_identifier">
  Revokes access to a tracker by identifier.

  **Parameters**

  * tracker\_id: string
  * identifier: string

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:revoke_tracker_access_by_identifier("tracker_123", "license:abc123")
  ```
</Accordion>

<Accordion title="remove_tracker_access">
  Removes access and triggers cleanup event.

  **Parameters**

  * tracker\_id: string
  * source: number

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:remove_tracker_access("tracker_123", source)
  ```
</Accordion>

<Accordion title="remove_tracker_access_by_identifier">
  Removes access by identifier and triggers cleanup event.

  **Parameters**

  * tracker\_id: string
  * identifier: string

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:remove_tracker_access_by_identifier("tracker_123", "license:abc123")
  ```
</Accordion>

<Accordion title="has_tracker_access">
  Checks if a player has access to a specific tracker.

  **Parameters**

  * tracker\_id: string
  * source: number

  **Returns**

  * has\_access: boolean
  * access\_type?: string ("view" | "full")

  **Example**

  ```lua theme={null}
  local hasAccess, accessType = exports['no-gps-tracker']:has_tracker_access("tracker_123", source)

  if hasAccess then
      print("Player has " .. accessType .. " access")
  end
  ```
</Accordion>

<Accordion title="has_tracker_access_by_identifier">
  Checks if an identifier has access to a specific tracker.

  **Parameters**

  * tracker\_id: string
  * identifier: string

  **Returns**

  * has\_access: boolean
  * access\_type?: string ("view" | "full")

  **Example**

  ```lua theme={null}
  local hasAccess, accessType = exports['no-gps-tracker']:has_tracker_access_by_identifier("tracker_123", "license:abc123")
  ```
</Accordion>

<Accordion title="get_tracker_access_list">
  Gets the access list for a tracker.

  **Parameters**

  * tracker\_id: string

  **Returns**

  * access\_list: `{identifier: string, access_type: string, granted_at: string}[]`

  **Example**

  ```lua theme={null}
  local accessList = exports['no-gps-tracker']:get_tracker_access_list("tracker_123")

  for _, access in ipairs(accessList) do
      print(access.identifier .. " has " .. access.access_type .. " access")
  end
  ```
</Accordion>

<Accordion title="update_tracker_label">
  Updates the label of a tracker.

  **Parameters**

  * tracker\_id: string
  * label: string

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:update_tracker_label("tracker_123", "My Car Tracker")

  if success then
      print("Label updated")
  end
  ```
</Accordion>

<Accordion title="upsert_tracker">
  Upserts a tracker with custom fields.

  **Parameters**

  * tracker\_id: string
  * fields: `{is_placed?: number, placed_at?: string, placed_by?: string, placed_entity_identifier?: string, placed_on_persistent_entity?: number, label?: string}`

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:upsert_tracker("tracker_123", {
      label = "Updated Tracker",
      is_placed = 1,
      placed_at = os.date("%Y-%m-%d %H:%M:%S")
  })
  ```
</Accordion>

<Accordion title="add_tracker_item">
  Adds a tracker item to a player's inventory.

  **Parameters**

  * source: number
  * tracker\_id: string

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:add_tracker_item(source, "tracker_123")

  if success then
      print("Tracker item added to inventory")
  end
  ```
</Accordion>

<Accordion title="remove_tracker_item">
  Removes a tracker item from a player's inventory.

  **Parameters**

  * source: number
  * tracker\_id: string

  **Returns**

  * success: boolean

  **Example**

  ```lua theme={null}
  local success = exports['no-gps-tracker']:remove_tracker_item(source, "tracker_123")

  if success then
      print("Tracker item removed from inventory")
  end
  ```
</Accordion>

<Accordion title="is_inventory_enabled">
  Checks if inventory integration is enabled.

  **Returns**

  * is\_enabled: boolean

  **Example**

  ```lua theme={null}
  if exports['no-gps-tracker']:is_inventory_enabled() then
      print("Inventory integration is enabled")
  end
  ```
</Accordion>
