> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/navixy-api/user-api/resources/location_link.md).

# Geo links

Shareable sessions that show the live location of chosen trackers to someone without an account.

A geo link is a shareable session that shows the live location of chosen trackers to someone who has no account on the Navixy platform. It is how a courier's position is shown to the customer expecting the delivery, or a vehicle's to a client waiting for it.

A link is **active the moment it is created**, so treat the hash the create call returns as live from that instant. `status/change` turns a link off without deleting it, and doing so also closes any session currently open against it.

Geo links replace the older Weblocator feature, which is why the right that governs them is still called `weblocator_session_create` and the tariff feature is still `weblocator`.

## Geo link object

## The LocationLink object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"components":{"schemas":{"LocationLink":{"type":"object","description":"A geo link: a shareable session showing the live location of chosen trackers to someone without a platform account.","properties":{"id":{"type":"integer","description":"Geo link ID. Read-only, assigned on creation, and required when updating."},"hash":{"type":"string","description":"The session hash that identifies the link to whoever it was shared with. Read-only."},"create_date":{"type":"string","description":"When the link was created, in `YYYY-MM-DD HH:MM:SS` format. Read-only."},"creator_id":{"type":"integer","description":"ID of the user who created the link. Read-only."},"enabled":{"type":"boolean","description":"Whether the link is currently active. Read-only here; change it with `tracker/location/link/status/change`."},"description":{"type":"string","description":"Description of the link. At most 255 printable characters, and may be empty.","maxLength":255},"lifetime":{"oneOf":[{"$ref":"#/components/schemas/LocationLinkLifetime"},{"type":"null"}],"description":"When the link is valid, or `null` for no limit at either end."},"trackers":{"type":"array","description":"The trackers the link shows. 1 to 100 entries.","items":{"$ref":"#/components/schemas/LocationLinkTracker"}},"params":{"$ref":"#/components/schemas/LocationLinkParams"}}},"LocationLinkLifetime":{"type":"object","description":"When a geo link is valid. Both ends are optional: with neither, the link never starts pending and never expires.","properties":{"from":{"type":["string","null"],"description":"Optional. When the link becomes usable, in `YYYY-MM-DD HH:MM:SS` format. Before this the link sorts as pending."},"to":{"type":["string","null"],"description":"Optional. When the link expires, in `YYYY-MM-DD HH:MM:SS` format."}}},"LocationLinkTracker":{"type":"object","description":"One tracker on a geo link, and what the link reveals about it.","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker."},"alias":{"type":["string","null"],"description":"Optional. Name to show instead of the tracker label, so the recipient need not see internal naming. At most 100 characters.","maxLength":100},"params":{"type":"object","description":"What the link shows for this tracker.","properties":{"object_data":{"type":"array","description":"Which pieces of information to reveal. Empty means location only.","items":{"type":"string","description":"A revealable field.","enum":["speed","address","movement_status","connection_status","driver_name","driver_phone","vehicle_label","vehicle_reg_number"]}},"sensor_ids":{"type":["array","null"],"description":"Optional. IDs of the tracker's sensors whose readings the link shows.","items":{"type":"integer"}},"state_fields":{"type":["array","null"],"description":"Optional. Names of tracker state fields the link shows.","items":{"type":"string"}},"counters":{"type":["array","null"],"description":"Optional. Counter types the link shows.","items":{"type":"string"}}}}}},"LocationLinkParams":{"type":"object","description":"What a geo link shows besides the trackers themselves, and how the map is presented.","properties":{"bounding_zone_ids":{"type":"array","description":"Geofences that bound where the link reports a position. At most 100.","items":{"type":"integer"},"maxItems":100},"bounding_mode":{"type":["string","null"],"description":"How the bounding geofences apply: `inside` reports a position only within them, `outside` only beyond them. Optional when there are no bounding geofences.","enum":["inside","outside"]},"place_ids":{"type":["array","null"],"description":"Places to draw on the link's map. At most 100.","items":{"type":"integer"},"maxItems":100},"place_custom_field_ids":{"type":["array","null"],"description":"Custom fields of those places to show. Each must be a custom field of the place entity type.","items":{"type":"integer"}},"zone_ids":{"type":["array","null"],"description":"Geofences to draw on the link's map. Distinct from `bounding_zone_ids`, which restrict reporting rather than decorate the map. At most 100.","items":{"type":"integer"},"maxItems":100},"display_options":{"$ref":"#/components/schemas/LocationLinkDisplayOptions"}}},"LocationLinkDisplayOptions":{"type":"object","description":"How the shared map looks to the person opening the geo link.","properties":{"map":{"type":"string","description":"Base map to show, for example `roadmap`, `satellite`, `hybrid` or `osm`. Which values work depends on the maps available to the account, so the platform does not validate this."},"autoscale":{"type":"boolean","description":"Default `true`. Fit the map to the trackers shown."},"show_icons":{"type":"boolean","description":"Default `false`. Show tracker icons."},"show_driver_info":{"type":"boolean","description":"Default `false`. Show driver details."},"show_vehicle_info":{"type":"boolean","description":"Default `false`. Show vehicle details."},"trace_duration":{"type":"integer","description":"Default 5. How long, in seconds, the trailing trace behind each tracker remains visible. 0 shows no trace."}}}}}}
```

### Lifetime object

## The LocationLinkLifetime object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"components":{"schemas":{"LocationLinkLifetime":{"type":"object","description":"When a geo link is valid. Both ends are optional: with neither, the link never starts pending and never expires.","properties":{"from":{"type":["string","null"],"description":"Optional. When the link becomes usable, in `YYYY-MM-DD HH:MM:SS` format. Before this the link sorts as pending."},"to":{"type":["string","null"],"description":"Optional. When the link expires, in `YYYY-MM-DD HH:MM:SS` format."}}}}}}
```

### Tracker object

## The LocationLinkTracker object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"components":{"schemas":{"LocationLinkTracker":{"type":"object","description":"One tracker on a geo link, and what the link reveals about it.","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker."},"alias":{"type":["string","null"],"description":"Optional. Name to show instead of the tracker label, so the recipient need not see internal naming. At most 100 characters.","maxLength":100},"params":{"type":"object","description":"What the link shows for this tracker.","properties":{"object_data":{"type":"array","description":"Which pieces of information to reveal. Empty means location only.","items":{"type":"string","description":"A revealable field.","enum":["speed","address","movement_status","connection_status","driver_name","driver_phone","vehicle_label","vehicle_reg_number"]}},"sensor_ids":{"type":["array","null"],"description":"Optional. IDs of the tracker's sensors whose readings the link shows.","items":{"type":"integer"}},"state_fields":{"type":["array","null"],"description":"Optional. Names of tracker state fields the link shows.","items":{"type":"string"}},"counters":{"type":["array","null"],"description":"Optional. Counter types the link shows.","items":{"type":"string"}}}}}}}}}
```

### Params object

## The LocationLinkParams object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"components":{"schemas":{"LocationLinkParams":{"type":"object","description":"What a geo link shows besides the trackers themselves, and how the map is presented.","properties":{"bounding_zone_ids":{"type":"array","description":"Geofences that bound where the link reports a position. At most 100.","items":{"type":"integer"},"maxItems":100},"bounding_mode":{"type":["string","null"],"description":"How the bounding geofences apply: `inside` reports a position only within them, `outside` only beyond them. Optional when there are no bounding geofences.","enum":["inside","outside"]},"place_ids":{"type":["array","null"],"description":"Places to draw on the link's map. At most 100.","items":{"type":"integer"},"maxItems":100},"place_custom_field_ids":{"type":["array","null"],"description":"Custom fields of those places to show. Each must be a custom field of the place entity type.","items":{"type":"integer"}},"zone_ids":{"type":["array","null"],"description":"Geofences to draw on the link's map. Distinct from `bounding_zone_ids`, which restrict reporting rather than decorate the map. At most 100.","items":{"type":"integer"},"maxItems":100},"display_options":{"$ref":"#/components/schemas/LocationLinkDisplayOptions"}}},"LocationLinkDisplayOptions":{"type":"object","description":"How the shared map looks to the person opening the geo link.","properties":{"map":{"type":"string","description":"Base map to show, for example `roadmap`, `satellite`, `hybrid` or `osm`. Which values work depends on the maps available to the account, so the platform does not validate this."},"autoscale":{"type":"boolean","description":"Default `true`. Fit the map to the trackers shown."},"show_icons":{"type":"boolean","description":"Default `false`. Show tracker icons."},"show_driver_info":{"type":"boolean","description":"Default `false`. Show driver details."},"show_vehicle_info":{"type":"boolean","description":"Default `false`. Show vehicle details."},"trace_duration":{"type":"integer","description":"Default 5. How long, in seconds, the trailing trace behind each tracker remains visible. 0 shows no trace."}}}}}}
```

### Display options object

## The LocationLinkDisplayOptions object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"components":{"schemas":{"LocationLinkDisplayOptions":{"type":"object","description":"How the shared map looks to the person opening the geo link.","properties":{"map":{"type":"string","description":"Base map to show, for example `roadmap`, `satellite`, `hybrid` or `osm`. Which values work depends on the maps available to the account, so the platform does not validate this."},"autoscale":{"type":"boolean","description":"Default `true`. Fit the map to the trackers shown."},"show_icons":{"type":"boolean","description":"Default `false`. Show tracker icons."},"show_driver_info":{"type":"boolean","description":"Default `false`. Show driver details."},"show_vehicle_info":{"type":"boolean","description":"Default `false`. Show vehicle details."},"trace_duration":{"type":"integer","description":"Default 5. How long, in seconds, the trailing trace behind each tracker remains visible. 0 shows no trace."}}}}}}
```

## API actions

API base path: `/tracker/location/link`.

Operations that list no errors of their own return only the [general error codes](/docs/navixy-api/general/errors.md#error-codes).

***

*Required sub-user rights:* `weblocator_session_create`.

## Create geo link

> Create a geo link, a shareable session that shows the live location of chosen trackers to someone without an account. Returns the new link's ID.\
> \
> A new link is \*\*active as soon as it is created\*\*: its \`enabled\` flag comes back \`true\` and the URL works immediately, so treat the returned hash as live from that moment. Deactivate it with \`tracker/location/link/status/change\`.\
> \
> An account can hold up to 10,000 geo links.\
> \
> The geo link object is \*\*flattened into the request body\*\*: its fields are sent at the top level rather than nested under an object. \`hash\`, \`create\_date\`, \`creator\_id\`, \`user\_id\` and \`enabled\` are read-only. Sending them is accepted and ignored rather than refused, so it changes nothing. Do not send \`hash\`: it collides with the legacy \`hash\` authentication parameter and the request fails with error 3.\
> \
> Requires the \`weblocator\_session\_create\` right, which additionally needs the \`weblocator\` tariff feature on at least one tracker.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"schemas":{"LocationLinkTracker":{"type":"object","description":"One tracker on a geo link, and what the link reveals about it.","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker."},"alias":{"type":["string","null"],"description":"Optional. Name to show instead of the tracker label, so the recipient need not see internal naming. At most 100 characters.","maxLength":100},"params":{"type":"object","description":"What the link shows for this tracker.","properties":{"object_data":{"type":"array","description":"Which pieces of information to reveal. Empty means location only.","items":{"type":"string","description":"A revealable field.","enum":["speed","address","movement_status","connection_status","driver_name","driver_phone","vehicle_label","vehicle_reg_number"]}},"sensor_ids":{"type":["array","null"],"description":"Optional. IDs of the tracker's sensors whose readings the link shows.","items":{"type":"integer"}},"state_fields":{"type":["array","null"],"description":"Optional. Names of tracker state fields the link shows.","items":{"type":"string"}},"counters":{"type":["array","null"],"description":"Optional. Counter types the link shows.","items":{"type":"string"}}}}}},"LocationLinkParams":{"type":"object","description":"What a geo link shows besides the trackers themselves, and how the map is presented.","properties":{"bounding_zone_ids":{"type":"array","description":"Geofences that bound where the link reports a position. At most 100.","items":{"type":"integer"},"maxItems":100},"bounding_mode":{"type":["string","null"],"description":"How the bounding geofences apply: `inside` reports a position only within them, `outside` only beyond them. Optional when there are no bounding geofences.","enum":["inside","outside"]},"place_ids":{"type":["array","null"],"description":"Places to draw on the link's map. At most 100.","items":{"type":"integer"},"maxItems":100},"place_custom_field_ids":{"type":["array","null"],"description":"Custom fields of those places to show. Each must be a custom field of the place entity type.","items":{"type":"integer"}},"zone_ids":{"type":["array","null"],"description":"Geofences to draw on the link's map. Distinct from `bounding_zone_ids`, which restrict reporting rather than decorate the map. At most 100.","items":{"type":"integer"},"maxItems":100},"display_options":{"$ref":"#/components/schemas/LocationLinkDisplayOptions"}}},"LocationLinkDisplayOptions":{"type":"object","description":"How the shared map looks to the person opening the geo link.","properties":{"map":{"type":"string","description":"Base map to show, for example `roadmap`, `satellite`, `hybrid` or `osm`. Which values work depends on the maps available to the account, so the platform does not validate this."},"autoscale":{"type":"boolean","description":"Default `true`. Fit the map to the trackers shown."},"show_icons":{"type":"boolean","description":"Default `false`. Show tracker icons."},"show_driver_info":{"type":"boolean","description":"Default `false`. Show driver details."},"show_vehicle_info":{"type":"boolean","description":"Default `false`. Show vehicle details."},"trace_duration":{"type":"integer","description":"Default 5. How long, in seconds, the trailing trace behind each tracker remains visible. 0 shows no trace."}}},"LocationLinkLifetime":{"type":"object","description":"When a geo link is valid. Both ends are optional: with neither, the link never starts pending and never expires.","properties":{"from":{"type":["string","null"],"description":"Optional. When the link becomes usable, in `YYYY-MM-DD HH:MM:SS` format. Before this the link sorts as pending."},"to":{"type":["string","null"],"description":"Optional. When the link expires, in `YYYY-MM-DD HH:MM:SS` format."}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/location/link/create":{"post":{"tags":["Trackers"],"summary":"Create geo link","description":"Create a geo link, a shareable session that shows the live location of chosen trackers to someone without an account. Returns the new link's ID.\n\nA new link is **active as soon as it is created**: its `enabled` flag comes back `true` and the URL works immediately, so treat the returned hash as live from that moment. Deactivate it with `tracker/location/link/status/change`.\n\nAn account can hold up to 10,000 geo links.\n\nThe geo link object is **flattened into the request body**: its fields are sent at the top level rather than nested under an object. `hash`, `create_date`, `creator_id`, `user_id` and `enabled` are read-only. Sending them is accepted and ignored rather than refused, so it changes nothing. Do not send `hash`: it collides with the legacy `hash` authentication parameter and the request fails with error 3.\n\nRequires the `weblocator_session_create` right, which additionally needs the `weblocator` tariff feature on at least one tracker.","operationId":"trackerLocationLinkCreate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","description":"Description of the link. At most 255 printable characters; may be empty but must be present.","maxLength":255},"trackers":{"type":"array","description":"The trackers the link shows, and what it shows of each. 1 to 100 entries.","items":{"$ref":"#/components/schemas/LocationLinkTracker"},"minItems":1,"maxItems":100},"params":{"$ref":"#/components/schemas/LocationLinkParams"},"lifetime":{"$ref":"#/components/schemas/LocationLinkLifetime"}},"required":["description","trackers","params"]}}}},"responses":{"200":{"description":"The created geo link","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"value":{"type":"integer","description":"ID of the new geo link."}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"402":{"description":"Error 236: at least one of the trackers lacks the `weblocator` tariff feature. Error 268: the account's quota for geo links is exhausted.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 13: the caller lacks the required right. Error 217: one or more of the tracker IDs does not exist or belongs to another user.","$ref":"#/components/responses/ResponseError"},"404":{"description":"Error 204: one or more of the geofences, places or place custom fields was not found.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 13 - Operation not permitted, when the user has insufficient rights.
* 204 - Entity not found, when a geofence or place in the request is not found.
* 217 - List contains nonexistent entities, when a tracker ID belongs to no tracker or to another user's.
* 236 - Feature unavailable due to tariff restrictions, when a tracker in the request has no `weblocator` tariff feature.
* 268 - Link cannot be created due to quota violation.

***

*Required sub-user rights:* `weblocator_session_create`.

## Update geo link

> Replace a geo link's description, lifetime, trackers and parameters. \*\*\`id\` is required\*\*, and everything else is replaced by what is sent rather than merged.\
> \
> The trackers, geofences, places and custom fields are re-checked only where the list actually changed, so an update that leaves them alone will not fail on an entity that has since become inaccessible.\
> \
> The geo link object is \*\*flattened into the request body\*\*: its fields are sent at the top level rather than nested under an object. \`hash\`, \`create\_date\`, \`creator\_id\`, \`user\_id\` and \`enabled\` are read-only. Sending them is accepted and ignored rather than refused, so it changes nothing. Do not send \`hash\`: it collides with the legacy \`hash\` authentication parameter and the request fails with error 3.\
> \
> Requires the \`weblocator\_session\_create\` right, which additionally needs the \`weblocator\` tariff feature on at least one tracker.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"schemas":{"LocationLinkTracker":{"type":"object","description":"One tracker on a geo link, and what the link reveals about it.","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker."},"alias":{"type":["string","null"],"description":"Optional. Name to show instead of the tracker label, so the recipient need not see internal naming. At most 100 characters.","maxLength":100},"params":{"type":"object","description":"What the link shows for this tracker.","properties":{"object_data":{"type":"array","description":"Which pieces of information to reveal. Empty means location only.","items":{"type":"string","description":"A revealable field.","enum":["speed","address","movement_status","connection_status","driver_name","driver_phone","vehicle_label","vehicle_reg_number"]}},"sensor_ids":{"type":["array","null"],"description":"Optional. IDs of the tracker's sensors whose readings the link shows.","items":{"type":"integer"}},"state_fields":{"type":["array","null"],"description":"Optional. Names of tracker state fields the link shows.","items":{"type":"string"}},"counters":{"type":["array","null"],"description":"Optional. Counter types the link shows.","items":{"type":"string"}}}}}},"LocationLinkParams":{"type":"object","description":"What a geo link shows besides the trackers themselves, and how the map is presented.","properties":{"bounding_zone_ids":{"type":"array","description":"Geofences that bound where the link reports a position. At most 100.","items":{"type":"integer"},"maxItems":100},"bounding_mode":{"type":["string","null"],"description":"How the bounding geofences apply: `inside` reports a position only within them, `outside` only beyond them. Optional when there are no bounding geofences.","enum":["inside","outside"]},"place_ids":{"type":["array","null"],"description":"Places to draw on the link's map. At most 100.","items":{"type":"integer"},"maxItems":100},"place_custom_field_ids":{"type":["array","null"],"description":"Custom fields of those places to show. Each must be a custom field of the place entity type.","items":{"type":"integer"}},"zone_ids":{"type":["array","null"],"description":"Geofences to draw on the link's map. Distinct from `bounding_zone_ids`, which restrict reporting rather than decorate the map. At most 100.","items":{"type":"integer"},"maxItems":100},"display_options":{"$ref":"#/components/schemas/LocationLinkDisplayOptions"}}},"LocationLinkDisplayOptions":{"type":"object","description":"How the shared map looks to the person opening the geo link.","properties":{"map":{"type":"string","description":"Base map to show, for example `roadmap`, `satellite`, `hybrid` or `osm`. Which values work depends on the maps available to the account, so the platform does not validate this."},"autoscale":{"type":"boolean","description":"Default `true`. Fit the map to the trackers shown."},"show_icons":{"type":"boolean","description":"Default `false`. Show tracker icons."},"show_driver_info":{"type":"boolean","description":"Default `false`. Show driver details."},"show_vehicle_info":{"type":"boolean","description":"Default `false`. Show vehicle details."},"trace_duration":{"type":"integer","description":"Default 5. How long, in seconds, the trailing trace behind each tracker remains visible. 0 shows no trace."}}},"LocationLinkLifetime":{"type":"object","description":"When a geo link is valid. Both ends are optional: with neither, the link never starts pending and never expires.","properties":{"from":{"type":["string","null"],"description":"Optional. When the link becomes usable, in `YYYY-MM-DD HH:MM:SS` format. Before this the link sorts as pending."},"to":{"type":["string","null"],"description":"Optional. When the link expires, in `YYYY-MM-DD HH:MM:SS` format."}}}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/location/link/update":{"post":{"tags":["Trackers"],"summary":"Update geo link","description":"Replace a geo link's description, lifetime, trackers and parameters. **`id` is required**, and everything else is replaced by what is sent rather than merged.\n\nThe trackers, geofences, places and custom fields are re-checked only where the list actually changed, so an update that leaves them alone will not fail on an entity that has since become inaccessible.\n\nThe geo link object is **flattened into the request body**: its fields are sent at the top level rather than nested under an object. `hash`, `create_date`, `creator_id`, `user_id` and `enabled` are read-only. Sending them is accepted and ignored rather than refused, so it changes nothing. Do not send `hash`: it collides with the legacy `hash` authentication parameter and the request fails with error 3.\n\nRequires the `weblocator_session_create` right, which additionally needs the `weblocator` tariff feature on at least one tracker.","operationId":"trackerLocationLinkUpdate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the geo link to update.","minimum":1},"description":{"type":"string","description":"Description of the link. At most 255 printable characters; may be empty but must be present.","maxLength":255},"trackers":{"type":"array","description":"The trackers the link shows, and what it shows of each. 1 to 100 entries.","items":{"$ref":"#/components/schemas/LocationLinkTracker"},"minItems":1,"maxItems":100},"params":{"$ref":"#/components/schemas/LocationLinkParams"},"lifetime":{"$ref":"#/components/schemas/LocationLinkLifetime"}},"required":["id","description","trackers","params"]}}}},"responses":{"200":{"description":"Geo link updated","$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"402":{"description":"Error 236: at least one of the trackers lacks the `weblocator` tariff feature.","$ref":"#/components/responses/ResponseError"},"403":{"description":"Error 13: the caller lacks the required right. Error 217: one or more of the tracker IDs does not exist or belongs to another user.","$ref":"#/components/responses/ResponseError"},"404":{"description":"Error 204: one or more of the geofences, places or place custom fields was not found.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 13 - Operation not permitted, when the user has insufficient rights.
* 201 - Not found in the database, when no link has the given ID or it belongs to another user.
* 204 - Entity not found, when a geofence or place in the request is not found.
* 217 - List contains nonexistent entities, when a tracker ID belongs to no tracker or to another user's.
* 236 - Feature unavailable due to tariff restrictions, when a tracker in the request has no `weblocator` tariff feature.

***

*Required sub-user rights:* `weblocator_session_create`.

## Activate or deactivate geo link

> Turn a geo link on or off without deleting it. Deactivating one also closes any sessions currently open against it.\
> \
> \*\*\`is\_active\` defaults to \`false\`\*\*, so a call that passes only \`id\` deactivates the link. Send it explicitly.\
> \
> The change is recorded in the audit log. Setting the status it already has succeeds and does nothing.\
> \
> Requires the \`weblocator\_session\_create\` right, which additionally needs the \`weblocator\` tariff feature on at least one tracker.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/location/link/status/change":{"post":{"tags":["Trackers"],"summary":"Activate or deactivate geo link","description":"Turn a geo link on or off without deleting it. Deactivating one also closes any sessions currently open against it.\n\n**`is_active` defaults to `false`**, so a call that passes only `id` deactivates the link. Send it explicitly.\n\nThe change is recorded in the audit log. Setting the status it already has succeeds and does nothing.\n\nRequires the `weblocator_session_create` right, which additionally needs the `weblocator` tariff feature on at least one tracker.","operationId":"trackerLocationLinkStatusChange","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the geo link.","minimum":1},"is_active":{"type":"boolean","description":"Default `false`. `true` activates the link, `false` deactivates it."}},"required":["id","is_active"]}}}},"responses":{"200":{"description":"Status changed","$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - Not found in the database, when no link has the given ID or it belongs to another user.

***

## Read geo link

> Return one geo link by ID, including its \`hash\`, which is what identifies the link to the person it was shared with.\
> \
> Also accepts GET with the same parameters as query-string values.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"schemas":{"LocationLink":{"type":"object","description":"A geo link: a shareable session showing the live location of chosen trackers to someone without a platform account.","properties":{"id":{"type":"integer","description":"Geo link ID. Read-only, assigned on creation, and required when updating."},"hash":{"type":"string","description":"The session hash that identifies the link to whoever it was shared with. Read-only."},"create_date":{"type":"string","description":"When the link was created, in `YYYY-MM-DD HH:MM:SS` format. Read-only."},"creator_id":{"type":"integer","description":"ID of the user who created the link. Read-only."},"enabled":{"type":"boolean","description":"Whether the link is currently active. Read-only here; change it with `tracker/location/link/status/change`."},"description":{"type":"string","description":"Description of the link. At most 255 printable characters, and may be empty.","maxLength":255},"lifetime":{"oneOf":[{"$ref":"#/components/schemas/LocationLinkLifetime"},{"type":"null"}],"description":"When the link is valid, or `null` for no limit at either end."},"trackers":{"type":"array","description":"The trackers the link shows. 1 to 100 entries.","items":{"$ref":"#/components/schemas/LocationLinkTracker"}},"params":{"$ref":"#/components/schemas/LocationLinkParams"}}},"LocationLinkLifetime":{"type":"object","description":"When a geo link is valid. Both ends are optional: with neither, the link never starts pending and never expires.","properties":{"from":{"type":["string","null"],"description":"Optional. When the link becomes usable, in `YYYY-MM-DD HH:MM:SS` format. Before this the link sorts as pending."},"to":{"type":["string","null"],"description":"Optional. When the link expires, in `YYYY-MM-DD HH:MM:SS` format."}}},"LocationLinkTracker":{"type":"object","description":"One tracker on a geo link, and what the link reveals about it.","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker."},"alias":{"type":["string","null"],"description":"Optional. Name to show instead of the tracker label, so the recipient need not see internal naming. At most 100 characters.","maxLength":100},"params":{"type":"object","description":"What the link shows for this tracker.","properties":{"object_data":{"type":"array","description":"Which pieces of information to reveal. Empty means location only.","items":{"type":"string","description":"A revealable field.","enum":["speed","address","movement_status","connection_status","driver_name","driver_phone","vehicle_label","vehicle_reg_number"]}},"sensor_ids":{"type":["array","null"],"description":"Optional. IDs of the tracker's sensors whose readings the link shows.","items":{"type":"integer"}},"state_fields":{"type":["array","null"],"description":"Optional. Names of tracker state fields the link shows.","items":{"type":"string"}},"counters":{"type":["array","null"],"description":"Optional. Counter types the link shows.","items":{"type":"string"}}}}}},"LocationLinkParams":{"type":"object","description":"What a geo link shows besides the trackers themselves, and how the map is presented.","properties":{"bounding_zone_ids":{"type":"array","description":"Geofences that bound where the link reports a position. At most 100.","items":{"type":"integer"},"maxItems":100},"bounding_mode":{"type":["string","null"],"description":"How the bounding geofences apply: `inside` reports a position only within them, `outside` only beyond them. Optional when there are no bounding geofences.","enum":["inside","outside"]},"place_ids":{"type":["array","null"],"description":"Places to draw on the link's map. At most 100.","items":{"type":"integer"},"maxItems":100},"place_custom_field_ids":{"type":["array","null"],"description":"Custom fields of those places to show. Each must be a custom field of the place entity type.","items":{"type":"integer"}},"zone_ids":{"type":["array","null"],"description":"Geofences to draw on the link's map. Distinct from `bounding_zone_ids`, which restrict reporting rather than decorate the map. At most 100.","items":{"type":"integer"},"maxItems":100},"display_options":{"$ref":"#/components/schemas/LocationLinkDisplayOptions"}}},"LocationLinkDisplayOptions":{"type":"object","description":"How the shared map looks to the person opening the geo link.","properties":{"map":{"type":"string","description":"Base map to show, for example `roadmap`, `satellite`, `hybrid` or `osm`. Which values work depends on the maps available to the account, so the platform does not validate this."},"autoscale":{"type":"boolean","description":"Default `true`. Fit the map to the trackers shown."},"show_icons":{"type":"boolean","description":"Default `false`. Show tracker icons."},"show_driver_info":{"type":"boolean","description":"Default `false`. Show driver details."},"show_vehicle_info":{"type":"boolean","description":"Default `false`. Show vehicle details."},"trace_duration":{"type":"integer","description":"Default 5. How long, in seconds, the trailing trace behind each tracker remains visible. 0 shows no trace."}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/location/link/read":{"post":{"tags":["Trackers"],"summary":"Read geo link","description":"Return one geo link by ID, including its `hash`, which is what identifies the link to the person it was shared with.\n\nAlso accepts GET with the same parameters as query-string values.","operationId":"trackerLocationLinkRead","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the geo link.","minimum":1}},"required":["id"]}}}},"responses":{"200":{"description":"The geo link","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"value":{"$ref":"#/components/schemas/LocationLink"}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - Not found in the database, when no link has the given ID or it belongs to another user.

***

`filter` and `conditions` may be combined, in which case a link must match both. `conditions` takes the same [search conditions](/docs/navixy-api/user-api/resources/commons/entity/search_conditions.md) used elsewhere in the API.

## List geo links

> Return the account's geo links, with filtering, search conditions, sorting and pagination.\
> \
> \`filter\` and \`conditions\` may be combined, in which case a link must match both.\
> \
> Callable with an empty body. Also accepts GET.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"schemas":{"LocationLink":{"type":"object","description":"A geo link: a shareable session showing the live location of chosen trackers to someone without a platform account.","properties":{"id":{"type":"integer","description":"Geo link ID. Read-only, assigned on creation, and required when updating."},"hash":{"type":"string","description":"The session hash that identifies the link to whoever it was shared with. Read-only."},"create_date":{"type":"string","description":"When the link was created, in `YYYY-MM-DD HH:MM:SS` format. Read-only."},"creator_id":{"type":"integer","description":"ID of the user who created the link. Read-only."},"enabled":{"type":"boolean","description":"Whether the link is currently active. Read-only here; change it with `tracker/location/link/status/change`."},"description":{"type":"string","description":"Description of the link. At most 255 printable characters, and may be empty.","maxLength":255},"lifetime":{"oneOf":[{"$ref":"#/components/schemas/LocationLinkLifetime"},{"type":"null"}],"description":"When the link is valid, or `null` for no limit at either end."},"trackers":{"type":"array","description":"The trackers the link shows. 1 to 100 entries.","items":{"$ref":"#/components/schemas/LocationLinkTracker"}},"params":{"$ref":"#/components/schemas/LocationLinkParams"}}},"LocationLinkLifetime":{"type":"object","description":"When a geo link is valid. Both ends are optional: with neither, the link never starts pending and never expires.","properties":{"from":{"type":["string","null"],"description":"Optional. When the link becomes usable, in `YYYY-MM-DD HH:MM:SS` format. Before this the link sorts as pending."},"to":{"type":["string","null"],"description":"Optional. When the link expires, in `YYYY-MM-DD HH:MM:SS` format."}}},"LocationLinkTracker":{"type":"object","description":"One tracker on a geo link, and what the link reveals about it.","properties":{"tracker_id":{"type":"integer","description":"ID of the tracker."},"alias":{"type":["string","null"],"description":"Optional. Name to show instead of the tracker label, so the recipient need not see internal naming. At most 100 characters.","maxLength":100},"params":{"type":"object","description":"What the link shows for this tracker.","properties":{"object_data":{"type":"array","description":"Which pieces of information to reveal. Empty means location only.","items":{"type":"string","description":"A revealable field.","enum":["speed","address","movement_status","connection_status","driver_name","driver_phone","vehicle_label","vehicle_reg_number"]}},"sensor_ids":{"type":["array","null"],"description":"Optional. IDs of the tracker's sensors whose readings the link shows.","items":{"type":"integer"}},"state_fields":{"type":["array","null"],"description":"Optional. Names of tracker state fields the link shows.","items":{"type":"string"}},"counters":{"type":["array","null"],"description":"Optional. Counter types the link shows.","items":{"type":"string"}}}}}},"LocationLinkParams":{"type":"object","description":"What a geo link shows besides the trackers themselves, and how the map is presented.","properties":{"bounding_zone_ids":{"type":"array","description":"Geofences that bound where the link reports a position. At most 100.","items":{"type":"integer"},"maxItems":100},"bounding_mode":{"type":["string","null"],"description":"How the bounding geofences apply: `inside` reports a position only within them, `outside` only beyond them. Optional when there are no bounding geofences.","enum":["inside","outside"]},"place_ids":{"type":["array","null"],"description":"Places to draw on the link's map. At most 100.","items":{"type":"integer"},"maxItems":100},"place_custom_field_ids":{"type":["array","null"],"description":"Custom fields of those places to show. Each must be a custom field of the place entity type.","items":{"type":"integer"}},"zone_ids":{"type":["array","null"],"description":"Geofences to draw on the link's map. Distinct from `bounding_zone_ids`, which restrict reporting rather than decorate the map. At most 100.","items":{"type":"integer"},"maxItems":100},"display_options":{"$ref":"#/components/schemas/LocationLinkDisplayOptions"}}},"LocationLinkDisplayOptions":{"type":"object","description":"How the shared map looks to the person opening the geo link.","properties":{"map":{"type":"string","description":"Base map to show, for example `roadmap`, `satellite`, `hybrid` or `osm`. Which values work depends on the maps available to the account, so the platform does not validate this."},"autoscale":{"type":"boolean","description":"Default `true`. Fit the map to the trackers shown."},"show_icons":{"type":"boolean","description":"Default `false`. Show tracker icons."},"show_driver_info":{"type":"boolean","description":"Default `false`. Show driver details."},"show_vehicle_info":{"type":"boolean","description":"Default `false`. Show vehicle details."},"trace_duration":{"type":"integer","description":"Default 5. How long, in seconds, the trailing trace behind each tracker remains visible. 0 shows no trace."}}}},"responses":{"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/location/link/list":{"post":{"tags":["Trackers"],"summary":"List geo links","description":"Return the account's geo links, with filtering, search conditions, sorting and pagination.\n\n`filter` and `conditions` may be combined, in which case a link must match both.\n\nCallable with an empty body. Also accepts GET.","operationId":"trackerLocationLinkList","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filter":{"type":"string","description":"Optional. Free-text filter applied across the searchable fields. At most 100 printable characters.","maxLength":100},"conditions":{"type":"array","description":"Optional. Search conditions. The fields available are `trackers` (labels of all trackers on the link), `aliases`, `description`, and `creator` (the creator's full name, master user only).","items":{"type":"object","additionalProperties":true}},"offset":{"type":"integer","description":"Optional. Default 0. Offset into the results, for pagination.","minimum":0},"limit":{"type":"integer","description":"Optional. Default and maximum 10000.","minimum":1,"maximum":10000},"sort":{"type":"array","description":"Optional. Default `[\"id=asc\"]`. Each entry pairs a field with a direction, for example `\"create_date=desc\"`. At most 8 entries, no duplicates. The fields available are `id`, `create_date`, `expire_date`, `status`, `trackers`, `aliases`, `description`, and `creator` (master user only). Directions are `asc` and `desc`; an entry without a direction is rejected. Sorting by `status` orders enabled, then not yet started, then expired, then disabled.","items":{"type":"string"},"maxItems":8}}}}}},"responses":{"200":{"description":"The geo links","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true},"list":{"type":"array","items":{"$ref":"#/components/schemas/LocationLink"}}}}}}},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

***

## Delete geo link

> Delete a geo link. Anyone holding the link loses access immediately.\
> \
> Unlike creating, updating and switching a link, deleting one needs no specific right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Trackers","description":"Trackers, the devices the platform tracks, together with the geo links that share their live location with people outside the account. Resources under the /tracker/ path."}],"servers":[{"url":"https://api.eu.navixy.com/v2","description":"Navixy production server on European platform"},{"url":"https://api.us.navixy.com/v2","description":"Navixy production server on American platform"},{"url":"https://api.me.navixy.com/v2","description":"Navixy production server on Middle East platform"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"type":"apiKey","description":"Either a user session hash or an API key, with the \"NVX \" prefix, for example \"NVX 22eac1c27af4be7b9d04da2ce1af111b\". Obtain a session hash from the userAuth operation, or create an API key from the API keys operations. A small number of operations accept a session hash only and reject an API key with error code 4; each says so in its description.","name":"Authorization","in":"header"}},"responses":{"OK":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"`true` if request finished successfully.","readOnly":true}}}}}},"ResponseError":{"description":"Error response object","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Always false."},"status":{"type":"object","description":"Error status. Present only when an error occurred.","properties":{"code":{"type":"integer","description":"An error code in this API, not an HTTP code."},"description":{"type":"string","description":"An error description."}}},"errors":{"type":"array","description":"Per-parameter detail, returned with validation failures such as error code 7. A parameter name here may be an internal field name rather than the documented parameter name.","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Name of the parameter that failed validation."},"error":{"type":"string","description":"What was wrong with it."}}}}}}}}}}},"paths":{"/tracker/location/link/delete":{"post":{"tags":["Trackers"],"summary":"Delete geo link","description":"Delete a geo link. Anyone holding the link loses access immediately.\n\nUnlike creating, updating and switching a link, deleting one needs no specific right.","operationId":"trackerLocationLinkDelete","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the geo link.","minimum":1}},"required":["id"]}}}},"responses":{"200":{"description":"Geo link deleted","$ref":"#/components/responses/OK"},"400":{"description":"Bad request. The response body carries the API-level error code in `status.code`. Validation failures also include an `errors` array naming each offending parameter.","$ref":"#/components/responses/ResponseError"},"default":{"$ref":"#/components/responses/ResponseError"}}}}}}
```

#### Errors

These errors come in addition to the [general error codes](/docs/navixy-api/general/errors.md#error-codes):

* 201 - Not found in the database, when no link has the given ID or it belongs to another user.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/navixy-api/user-api/resources/location_link.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
