Errors¶
This section provides detailed information on error handling in the Navixy API, including example error responses and descriptions of error codes.
Error Handling¶
If an error occurs, the API returns a special error response. You can detect an error by checking the HTTP response code. If it is not 200 OK
, you should parse and handle the response body as an error response.
Example Error Response¶
When an error occurs, the response will be in the following format:
{
"success": false,
"status": {
"code": 1,
"description": "Database error"
}
}
success
(boolean): Indicates if the request was successful.-
status
(object): Contains details about the error.code
(integer): The error code.description
(string): A description of the error.
Error Codes¶
Default HTTP code is 400
. Common error codes (should be handled for all API calls) are 1-100
, and resource or action-specific errors are 101-300
.
Common Error Codes¶
Code | Description | HTTP Code |
---|---|---|
1 | Database error | 500 |
2 | Service Auth error | 403 |
3 | Wrong hash | |
4 | User or API key not found or session ended | |
5 | Wrong request format | |
6 | Unexpected error | 500 |
7 | Invalid parameters | |
8 | Queue service error, try again later | 503 |
9 | Too large request | 412 |
11 | Access denied | 403 |
12 | Dealer not found | |
13 | Operation not permitted | 403 |
14 | Database unavailable | 503 |
15 | Too many requests (rate limit exceeded) | 429 |
101 | In demo mode this function is disabled | 403 |
102 | Wrong login or password | |
103 | User not activated | |
111 | Wrong handler | |
112 | Wrong method | |
201 | Not found in database | |
202 | Too many points in zone | |
203 | Delete entity associated with | |
204 | Entity not found | 404 |
206 | Login already in use | |
207 | Invalid captcha | |
208 | Device blocked | 403 |
209 | Failed sending email | |
210 | Geocoding failed | |
211 | Requested time span is too big | |
212 | Requested limit is too big | |
213 | Cannot perform action: the device is offline | |
214 | Requested operation or parameters are not supported by the device | |
215 | External service error | |
217 | List contains nonexistent entities | |
218 | Malformed external service parameters | |
219 | Not allowed for clones of the device | 403 |
220 | Unknown device model | |
221 | Device limit exceeded | 403 |
222 | Plugin not found | |
223 | Phone number already in use | |
224 | Device ID already in use | |
225 | Not allowed for this legal type | 403 |
226 | Wrong ICCID | |
227 | Wrong activation code | |
228 | Not supported by sensor | |
229 | Requested data is not ready yet | 404 |
230 | Not supported for this entity type | |
231 | Entity type mismatch | 409 |
232 | Input already in use | |
233 | No data file | |
234 | Invalid data format | |
235 | Missing calibration data | |
236 | Feature unavailable due to tariff restrictions | 402 |
237 | Invalid tariff | |
238 | Changing tariff is not allowed | 403 |
239 | New tariff does not exist | 404 |
240 | Not allowed to change tariff too frequently | 403 |
241 | Cannot change phone to bundled sim. Contact tech support. | |
242 | There were errors during content validation | |
243 | Device already connected. | |
244 | Duplicate entity label. | |
245 | New password must be different | |
246 | Invalid user ID | |
247 | Entity already exists | 409 |
248 | Wrong password | |
249 | Operation available for clones only | 403 |
250 | Not allowed for deleted devices | 403 |
251 | Insufficient funds | 403 |
252 | Device already corrupted | |
253 | Device has clones | |
254 | Cannot save file | 500 |
255 | Invalid task state | |
256 | Location already actual | |
257 | Registration forbidden | 403 |
258 | Bundle not found | 404 |
259 | Payments count not comply with summary | |
260 | Payments sum not comply with summary | |
261 | Entity has external links | 403 |
262 | Entries list is missing some entries or contains nonexistent entries | |
263 | No change needed, old and new values are the same | |
264 | Timeout not reached | 403 |
265 | Already done | 403 |
266 | Cannot perform action for the device in current status | 403 |
267 | Too many entities | |
268 | Over quota | 402 |
269 | Invalid file state | |
270 | Too many sensors of same type already exist | |
271 | File over max size | 413 |
272 | Trackers must have same models | |
273 | Duplicate login | |
274 | Empty data file | |
275 | User is blocked | 403 |
276 | Action is forbidden for received session type | 403 |
277 | Security group has users in it | 409 |
278 | Security group is a default one | 409 |
279 | Invalid task period | |
280 | Invalid import request state | |
281 | This resource is closed | |
284 | Not enough points for the specified zone type |
Best Practices for Error Handling¶
- Check HTTP Status Codes: Always check the HTTP status code of the response to determine if the request was successful.
- Parse the Error Response: If the status code indicates an error, parse the response body to obtain the error details.
- Handle Specific Error Codes: Implement handling for common error codes and resource-specific error codes to provide meaningful feedback to the user.
- Retry Logic: For transient errors (e.g., service unavailable, rate limits), implement retry logic with exponential backoff.
- Logging: Log error responses for debugging and monitoring purposes.
By following these guidelines, you can effectively handle errors in your application and provide a better experience for your users.