> 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/tracking/zone/zone_point.md).

# Geofence point

The points that give a polygon or sausage geofence its shape, read and replaced separately from the geofence.

The points of a geofence define its shape. A polygon is bounded by its points, and a sausage runs along them. A circle has none and rejects any that are sent.

Points are handled separately from the geofence itself because one geofence can carry hundreds of them, which is why [`zone/list`](/docs/navixy-api/user-api/resources/tracking/zone.md#post-zone-list) and [`zone/read`](/docs/navixy-api/user-api/resources/tracking/zone.md#post-zone-read) leave them out unless `with_points` is set. The two operations here read and replace them directly.

## Point object structure

## The ZonePoint object

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"components":{"schemas":{"ZonePoint":{"type":"object","description":"One point of a polygon or sausage geofence. A circle geofence has no points.","properties":{"lat":{"type":"number","description":"Point latitude."},"lng":{"type":"number","description":"Point longitude."},"node":{"type":"boolean","description":"`true` when this point is a route node."}}}}}}
```

## API actions

API base path: `/zone/point`.

***

## List geofence points

> Return the points of a geofence.\
> \
> Points are handled separately from the geofence itself because they arrive as large arrays. \`zone/read\` with \`with\_points\` returns the same data alongside the geofence.\
> \
> 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":"Geofences","description":"Geofences of all three shapes, their points, and spreadsheet and KML import and export. All resources under the /zone/ 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":{"ZonePoint":{"type":"object","description":"One point of a polygon or sausage geofence. A circle geofence has no points.","properties":{"lat":{"type":"number","description":"Point latitude."},"lng":{"type":"number","description":"Point longitude."},"node":{"type":"boolean","description":"`true` when this point is a route node."}}}},"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":{"/zone/point/list":{"post":{"tags":["Geofences"],"summary":"List geofence points","description":"Return the points of a geofence.\n\nPoints are handled separately from the geofence itself because they arrive as large arrays. `zone/read` with `with_points` returns the same data alongside the geofence.\n\nAlso accepts GET with the same parameters as query-string values.","operationId":"zonePointList","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"zone_id":{"type":"integer","description":"ID of the geofence.","minimum":1},"count":{"type":"integer","description":"Optional. Simplify the returned list down to about this many points."}},"required":["zone_id"]}}}},"responses":{"200":{"description":"The geofence points","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/ZonePoint"}}}}}}},"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"},"409":{"description":"Error 230: this geofence type cannot have points, for example a circle.","$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 geofence has the given ID or it belongs to another user.
* 230 - Not supported for this entity type, when the geofence cannot hold points at all, such as a circle.

***

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

## Update geofence points

> Replace the points of a geofence.\
> \
> \*\*This is a replacement, not a merge\*\*: the array given becomes the geofence's points.\
> \
> A polygon needs at least 3 points and allows at most 500. A sausage needs at least 2 and allows at most 1024. A circle takes no points at all.\
> \
> Requires the \`zone\_update\` right.

```json
{"openapi":"3.1.0","info":{"title":"Navixy Platform API","version":"1.0.0"},"tags":[{"name":"Geofences","description":"Geofences of all three shapes, their points, and spreadsheet and KML import and export. All resources under the /zone/ 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":{"ZonePoint":{"type":"object","description":"One point of a polygon or sausage geofence. A circle geofence has no points.","properties":{"lat":{"type":"number","description":"Point latitude."},"lng":{"type":"number","description":"Point longitude."},"node":{"type":"boolean","description":"`true` when this point is a route node."}}}},"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":{"/zone/point/update":{"post":{"tags":["Geofences"],"summary":"Update geofence points","description":"Replace the points of a geofence.\n\n**This is a replacement, not a merge**: the array given becomes the geofence's points.\n\nA polygon needs at least 3 points and allows at most 500. A sausage needs at least 2 and allows at most 1024. A circle takes no points at all.\n\nRequires the `zone_update` right.","operationId":"zonePointUpdate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"zone_id":{"type":"integer","description":"ID of the geofence.","minimum":1},"points":{"type":"array","description":"The geofence's new points. A polygon needs at least 3 points and allows at most 500. A sausage needs at least 2 and allows at most 1024. A circle takes no points at all.","items":{"$ref":"#/components/schemas/ZonePoint"}}},"required":["zone_id","points"]}}}},"responses":{"200":{"description":"Points 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"},"403":{"description":"Error 202: too many points for this geofence type. Error 284: not enough points, below 3 for a polygon or 2 for a sausage.","$ref":"#/components/responses/ResponseError"},"409":{"description":"Error 230: this geofence type cannot have points, for example a circle.","$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 geofence has the given ID or it belongs to another user.
* 202 - Too many points in a geofence, when the `points` array exceeds the limit for the geofence's type. A polygon allows at most 500 points and a sausage at most 1024.
* 230 - Not supported for this entity type, when the geofence cannot hold points at all, such as a circle.
* 284 - Not enough points for the geofence. A polygon needs at least 3 points and a sausage at least 2.


---

# 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/tracking/zone/zone_point.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.
