Resolve alert
curl --request POST \
--url https://apiweb.mile.app/api/v4/alert/{id}/resolve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Delivery confirmed with customer."
}
'import requests
url = "https://apiweb.mile.app/api/v4/alert/{id}/resolve"
payload = { "notes": "Delivery confirmed with customer." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({notes: 'Delivery confirmed with customer.'})
};
fetch('https://apiweb.mile.app/api/v4/alert/{id}/resolve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apiweb.mile.app/api/v4/alert/{id}/resolve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'notes' => 'Delivery confirmed with customer.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apiweb.mile.app/api/v4/alert/{id}/resolve"
payload := strings.NewReader("{\n \"notes\": \"Delivery confirmed with customer.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://apiweb.mile.app/api/v4/alert/{id}/resolve")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"Delivery confirmed with customer.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiweb.mile.app/api/v4/alert/{id}/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"notes\": \"Delivery confirmed with customer.\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Success",
"data": {
"_id": "66fb0c1d2e3f4a5b6c7d8e9f",
"organizationId": "64d99303be0ad015c461c932",
"assignee": "[email protected]",
"alertCode": "geofence.enter",
"alertName": "Geofence enter",
"lat": -6.2001,
"lon": 106.8166,
"eventTime": "2026-10-15T02:10:00+00:00",
"data": {
"geofenceId": "66e0a1b2c3d4e5f6a7b8c9d0",
"geofenceName": "Warehouse A",
"geofenceGroup": "66e0a0b1c2d3e4f5a6b7c8d9"
},
"isResolved": true,
"resolvedTime": "2026-10-15T03:00:00+00:00",
"resolvedBy": "[email protected]",
"resolvedByName": "Dispatcher One",
"resolvedNotes": "Delivery confirmed with customer.",
"createdTime": "2026-10-15T02:10:02+00:00",
"updatedTime": "2026-10-15T03:00:00+00:00"
}
}{
"status": false,
"message": "Bad request - invalid parameters provided."
}{
"status": false,
"message": "Data not found"
}Alert
Resolve alert
Marks an alert as resolved by the caller, with optional notes. Linked notifications are marked resolved too. Resolving an alert that is already resolved keeps the first resolver and notes.
An alert of another organization returns 404.
Requires permission resolve/alert.
POST
/
alert
/
{id}
/
resolve
Resolve alert
curl --request POST \
--url https://apiweb.mile.app/api/v4/alert/{id}/resolve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Delivery confirmed with customer."
}
'import requests
url = "https://apiweb.mile.app/api/v4/alert/{id}/resolve"
payload = { "notes": "Delivery confirmed with customer." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({notes: 'Delivery confirmed with customer.'})
};
fetch('https://apiweb.mile.app/api/v4/alert/{id}/resolve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apiweb.mile.app/api/v4/alert/{id}/resolve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'notes' => 'Delivery confirmed with customer.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apiweb.mile.app/api/v4/alert/{id}/resolve"
payload := strings.NewReader("{\n \"notes\": \"Delivery confirmed with customer.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://apiweb.mile.app/api/v4/alert/{id}/resolve")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"Delivery confirmed with customer.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apiweb.mile.app/api/v4/alert/{id}/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"notes\": \"Delivery confirmed with customer.\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Success",
"data": {
"_id": "66fb0c1d2e3f4a5b6c7d8e9f",
"organizationId": "64d99303be0ad015c461c932",
"assignee": "[email protected]",
"alertCode": "geofence.enter",
"alertName": "Geofence enter",
"lat": -6.2001,
"lon": 106.8166,
"eventTime": "2026-10-15T02:10:00+00:00",
"data": {
"geofenceId": "66e0a1b2c3d4e5f6a7b8c9d0",
"geofenceName": "Warehouse A",
"geofenceGroup": "66e0a0b1c2d3e4f5a6b7c8d9"
},
"isResolved": true,
"resolvedTime": "2026-10-15T03:00:00+00:00",
"resolvedBy": "[email protected]",
"resolvedByName": "Dispatcher One",
"resolvedNotes": "Delivery confirmed with customer.",
"createdTime": "2026-10-15T02:10:02+00:00",
"updatedTime": "2026-10-15T03:00:00+00:00"
}
}{
"status": false,
"message": "Bad request - invalid parameters provided."
}{
"status": false,
"message": "Data not found"
}Authorizations
Use a valid Bearer token to authenticate.
Path Parameters
Unique identifier of the alert, generated by the system.
Example: 66fb0c1d2e3f4a5b6c7d8e9f
Body
application/json
Optional resolution notes. Maximum 500 characters.
Example: Delivery confirmed with customer.
Maximum string length:
500