Widget Map Tickers
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Tickers are pointers for the map view. Using tickers, you can track and monitor the movement or location of objects or individuals on a map in real-time. They can be updated instantaneously via REST API, which will be transmitted to users who are actively viewing the map. Live update works on a subscription model where users are updated for 10 minutes counting from the time they open the map view tab. Note: Ticker updates should be stored by the developer to send the updated data in widget response.
Add/Update a ticker
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Use this API to add a new ticker/update a ticker in the map view in widgets. Note : You can get the ticker endpoint from the widget preview page (Profile -> Bots & tools -> Widgets -> Required widget)
OAuth Scope : ZohoCliq.Applications.UPDATE
Arguments
- person: Represents an individual being tracked.
- bicycle: Represents a bicycle.
- motorcycle: Represents a motorcycle.
- car: Represents a car.
- van: Represents a van.
- bus: Represents a bus.
- plane: Represents an aircraft.
- office: Represents a fixed office location.
- home: Represents a home location.
Allowed values:
- green: Marks the ticker in green. Typically used to indicate an active or on-schedule status.
- yellow: Marks the ticker in yellow. Typically used to indicate a warning or delayed status.
- red: Marks the ticker in red. Typically used to indicate an alert or critical status.
latitude/longitude) to the destination coordinates specified here, visible to all users with the map view open. How live route tracking works:
- The first time you send the ticker, include
destinationwith the final endpoint of the route (for example, a delivery address or a driver's last stop). - On every subsequent
PUTcall, updatelatitude/longitudeto the object's current position and incrementlast_modified_time. The ticker moves along the route on the map in real time. - Users who have the map view open see the route line and the ticker's position refresh automatically as each new
PUTcall comes in (subject to the 10-minute subscription window).
The serialized size of the
destination object must not exceed 210 characters.
destination. The map draws the route line through each waypoint in sequence, letting you define a precise path rather than a straight line to the destination.
Note:
waypoints is valid only when destination is also present in the same payload. A maximum of 10 waypoints can be specified.
buttons array must not exceed 5000 characters. Each button is defined as a Ticker button object. See the Ticker buttons section below for the full list of fields.
Allowed values:
- open.url: Opens a URL in a new browser tab. Use
webto specify the URL (max 256 chars). Optional platform-specific overrides:windows,iOS,android. - preview.url: Displays a URL preview within Cliq. Use
urlto specify the iFrame URL (max 500 chars). - invoke.function: Runs a function when clicked. Use
nameto specify the function name andownerfor the function owner's email. - system.api: Triggers a built-in Cliq action. Use
apiin the formatsystem_action/{zuid}. Supported actions:audiocall|videocall|startchat|invite|locationpermission. - copy: Copies text to the user's clipboard when clicked. Use
textto specify the content to be copied. - invoke.form: Opens a form when the button is clicked. See platform documentation for the field schema.
positive renders a green outline, negative renders a red outline, neutral leaves the button unstyled.
true, the button is rendered but non-interactive.Path Parameters
Query Parameters
parameters_data='{"field1":"value1","field2":"value2"}';
headers_data = Map();
headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
response = invokeUrl
[
url: "https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID"
type: PUT
headers: headers_data
content-type: application/json
parameters: parameters_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}");
Request request = new Request.Builder()
.url("https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID")
.put(body)
.addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'PUT',
headers: {
Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f',
'content-type': 'application/json'
},
body: '{"field1":"value1","field2":"value2"}'
};
fetch('https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("cliq.zoho.com")
payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}"
headers = {
'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f",
'content-type': "application/json"
}
conn.request("PUT", "/api/v2/widgets/WIDGET_ID/maps/MAP_ID", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "PUT",
"hostname": "cliq.zoho.com",
"port": null,
"path": "/api/v2/widgets/WIDGET_ID/maps/MAP_ID",
"headers": {
"Authorization": "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f",
"content-type": "application/json"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({field1: 'value1', field2: 'value2'}));
req.end();
var client = new RestClient("https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"field1\":\"value1\",\"field2\":\"value2\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID"),
Headers =
{
{ "Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" },
},
Content = new StringContent("{\"field1\":\"value1\",\"field2\":\"value2\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID"
payload := strings.NewReader("{\"field1\":\"value1\",\"field2\":\"value2\"}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = JSON.stringify({
"field1": "value1",
"field2": "value2"
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("PUT", "https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID");
xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
curl --request PUT \
--url https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID \
--header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \
--header 'content-type: application/json' \
--data '{"field1":"value1","field2":"value2"}'
{
"title": "John's Van",
"type": "van",
"color": "green",
"last_modified_time": 1770630000000,
"latitude": 12.9716,
"longitude": 77.5946,
"info": "En route",
"destination": {
"latitude": 12.9352,
"longitude": 77.6146
},
"waypoints": [
{
"latitude": 12.9524,
"longitude": 77.6046
}
],
"buttons": [
{
"label": "Call driver",
"type": "invoke.function",
"name": "call"
},
{
"label": "Track live",
"type": "open.url",
"web": "https://example.com/track/driver_001"
}
]
}
{
"driver_001": {
"title": "John's Van",
"type": "van",
"color": "green",
"last_modified_time": 1770630000000,
"latitude": 12.9716,
"longitude": 77.5946,
"info": "En route",
"destination": {
"latitude": 12.9352,
"longitude": 77.6146
},
"waypoints": [
{
"latitude": 12.9524,
"longitude": 77.6046
}
],
"buttons": [
{
"label": "Call driver",
"type": "invoke.function",
"name": "call"
},
{
"label": "Track live",
"type": "open.url",
"web": "https://example.com/track/driver_001"
}
]
}
}
{
"message": "The request cannot be performed. Usually because of malformed parameter or missing parameter."
}
{
"message": "Request was rejected because of invalid AuthToken."
}
{
"message": "The user does not have enough permission or possibly not an user of the respective organization to access the resource."
}
{
"message": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL."
}
{
"message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method."
}
{
"message": "The response has been received but the requested response type is not supported by the browser."
}
{
"message": "Too many requests within a certain time frame."
}
{
"message": "Cliq server encountered an error which prevents it from fulfilling the request."
}
Delete a ticker
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Use this API to delete an existing ticker in the map view in widgets.
OAuth Scope : ZohoCliq.Applications.DELETE
Arguments
Path Parameters
Query Parameters
parameters_data='{"field1":"value1","field2":"value2"}';
headers_data = Map();
headers_data.put("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
response = invokeUrl
[
url: "https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID"
type: DELETE
headers: headers_data
content-type: application/json
parameters: parameters_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}");
Request request = new Request.Builder()
.url("https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID")
.delete(body)
.addHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'DELETE',
headers: {
Authorization: 'Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f',
'content-type': 'application/json'
},
body: '{"field1":"value1","field2":"value2"}'
};
fetch('https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("cliq.zoho.com")
payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}"
headers = {
'Authorization': "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f",
'content-type': "application/json"
}
conn.request("DELETE", "/api/v2/widgets/WIDGET_ID/maps/MAP_ID", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "DELETE",
"hostname": "cliq.zoho.com",
"port": null,
"path": "/api/v2/widgets/WIDGET_ID/maps/MAP_ID",
"headers": {
"Authorization": "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f",
"content-type": "application/json"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({field1: 'value1', field2: 'value2'}));
req.end();
var client = new RestClient("https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"field1\":\"value1\",\"field2\":\"value2\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID"),
Headers =
{
{ "Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" },
},
Content = new StringContent("{\"field1\":\"value1\",\"field2\":\"value2\"}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID"
payload := strings.NewReader("{\"field1\":\"value1\",\"field2\":\"value2\"}")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = JSON.stringify({
"field1": "value1",
"field2": "value2"
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("DELETE", "https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID");
xhr.setRequestHeader("Authorization", "Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
curl --request DELETE \
--url https://cliq.zoho.com/api/v2/widgets/WIDGET_ID/maps/MAP_ID \
--header 'Authorization: Bearer 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \
--header 'content-type: application/json' \
--data '{"field1":"value1","field2":"value2"}'
{
"ids": [
"chennai",
"mumbai"
]
}
{
"status": "success",
"message": "Operation completed successfully."
}
{
"message": "The request cannot be performed. Usually because of malformed parameter or missing parameter."
}
{
"message": "Request was rejected because of invalid AuthToken."
}
{
"message": "The user does not have enough permission or possibly not an user of the respective organization to access the resource."
}
{
"message": "The URL you've sent is wrong. It's possible that the resource you've requested has been moved to another URL."
}
{
"message": "The requested resource does not support the HTTP method used. For example, requesting List of all customers API with PUT as the HTTP method."
}
{
"message": "The response has been received but the requested response type is not supported by the browser."
}
{
"message": "Too many requests within a certain time frame."
}
{
"message": "Cliq server encountered an error which prevents it from fulfilling the request."
}