Zones
You can use Butlr's GraphQL API to create, update, and retrieve information about zones.
A zone is a designated subsection within a room or floor, it is used to segment larger areas for more granular monitoring. Zones may represent specific areas like seating sections, workstations, or entry points.
This page provides guidance on how to retrieve, create, and update zone information within a floor, enabling precise management of zone-specific data.
First, obtain an access token to get started here.
Get all zones
query allZones {
zones {
data {
id
metadata {
...MetaDataFragment
}
name
area {
...AreaFragment
}
coordinates
rotation
capacity {
...CapacityFragment
}
sensors {
id
name
...SensorFragment
}
note
customID
tags {
id
name
...TagFragment
}
client_id
floor_id
room_id
zone_id
}
}
}
curl --location 'https://api.butlr.io/api/v3/graphql' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjJwTC04ZGRDNlhMaDNEblVHa2ptWiJ9.eyJodHRwOi8vYnV0bHIuaW8vY2xpZW50X2lkIjoiY2xpZW50XzJDbFlBYVY1Z0FISlJjUDdsd3JoTUU5ejR1WSIsImh0dHA6Ly9idXRsci5pby9lbWFpbCI6ImV2YWxfMjUxMzMzQGJ1dGxyLnRlY2giLCJodHRwOi8vYnV0bHIuaW8vcm9sZXMiOltdLCJpc3MiOiJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8dXNlcl8yQ2xZQVpTZjZlMzJVUFRrVVBSUUplTWhLbkciLCJhdWQiOlsiaHR0cHM6Ly91c2Vycy5idXRsci5pby8iLCJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNzI2NTI1MDAwLCJleHAiOjE3MjY1MjYwMDAsInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MiLCJndHkiOiJwYXNzd29yZCIsImF6cCI6Imw0bHh3MUsySjlQdUJ2UEZlNXlidkoyejhUNjBNc0pJIiwicGVybWlzc2lvbnMiOltdfQ.kp9BDRkay9YhoKngkokY44bXynD3Gcrh0IwPQVtVZIbX76yDTZpNCuj1kRhK7tdQ7Kfkakk60sjpOJ4bmbjxKPBPiFUSKvySUGWuAKCx3-l2zvfy49wB0KC9xHKT2x_HXfaDxgxL7v8DwO0zGF0TXsV9vf45lAkYzMsf-YXQeK4SId5gF09g1xHnS_WNZaliUzZhrGQQxzdyJL1ns5NH9NBk1SumEUzo1YpRxeEvxBL0zDCU2NslgKpNlkEPwcGNNIWfitfa5y871wLoYCNgjyesEW-Pin76L4BBLw4LK8TnulFUZM5GLbDnk3h-02qa4jElDIQ4Gl6MbWx5piIq5w' \
--data '{"query":"query allZones {\n zones {\n data {\n id\n name\n sensors {\n sensor_id\n name\n }\n floor_id\n room_id\n zone_id\n zone_type\n }\n }\n}","variables":{}}'
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.butlr.io/api/v3/graphql"
method := "POST"
payload := strings.NewReader("{\"query\":\"query allZones {\\n zones {\\n data {\\n id\\n name\\n sensors {\\n sensor_id\\n name\\n }\\n floor_id\\n room_id\\n zone_id\\n zone_type\\n }\\n }\\n}\",\"variables\":{}}")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjJwTC04ZGRDNlhMaDNEblVHa2ptWiJ9.eyJodHRwOi8vYnV0bHIuaW8vY2xpZW50X2lkIjoiY2xpZW50XzJDbFlBYVY1Z0FISlJjUDdsd3JoTUU5ejR1WSIsImh0dHA6Ly9idXRsci5pby9lbWFpbCI6ImV2YWxfMjUxMzMzQGJ1dGxyLnRlY2giLCJodHRwOi8vYnV0bHIuaW8vcm9sZXMiOltdLCJpc3MiOiJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8dXNlcl8yQ2xZQVpTZjZlMzJVUFRrVVBSUUplTWhLbkciLCJhdWQiOlsiaHR0cHM6Ly91c2Vycy5idXRsci5pby8iLCJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNzI2NTI1MDAwLCJleHAiOjE3MjY1MjYwMDAsInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MiLCJndHkiOiJwYXNzd29yZCIsImF6cCI6Imw0bHh3MUsySjlQdUJ2UEZlNXlidkoyejhUNjBNc0pJIiwicGVybWlzc2lvbnMiOltdfQ.kp9BDRkay9YhoKngkokY44bXynD3Gcrh0IwPQVtVZIbX76yDTZpNCuj1kRhK7tdQ7Kfkakk60sjpOJ4bmbjxKPBPiFUSKvySUGWuAKCx3-l2zvfy49wB0KC9xHKT2x_HXfaDxgxL7v8DwO0zGF0TXsV9vf45lAkYzMsf-YXQeK4SId5gF09g1xHnS_WNZaliUzZhrGQQxzdyJL1ns5NH9NBk1SumEUzo1YpRxeEvxBL0zDCU2NslgKpNlkEPwcGNNIWfitfa5y871wLoYCNgjyesEW-Pin76L4BBLw4LK8TnulFUZM5GLbDnk3h-02qa4jElDIQ4Gl6MbWx5piIq5w")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
import requests
import json
url = "https://api.butlr.io/api/v3/graphql"
payload = "{\"query\":\"query allZones {\\n zones {\\n data {\\n id\\n name\\n sensors {\\n sensor_id\\n name\\n }\\n floor_id\\n room_id\\n zone_id\\n zone_type\\n }\\n }\\n}\",\"variables\":{}}"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjJwTC04ZGRDNlhMaDNEblVHa2ptWiJ9.eyJodHRwOi8vYnV0bHIuaW8vY2xpZW50X2lkIjoiY2xpZW50XzJDbFlBYVY1Z0FISlJjUDdsd3JoTUU5ejR1WSIsImh0dHA6Ly9idXRsci5pby9lbWFpbCI6ImV2YWxfMjUxMzMzQGJ1dGxyLnRlY2giLCJodHRwOi8vYnV0bHIuaW8vcm9sZXMiOltdLCJpc3MiOiJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8dXNlcl8yQ2xZQVpTZjZlMzJVUFRrVVBSUUplTWhLbkciLCJhdWQiOlsiaHR0cHM6Ly91c2Vycy5idXRsci5pby8iLCJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNzI2NTI1MDAwLCJleHAiOjE3MjY1MjYwMDAsInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MiLCJndHkiOiJwYXNzd29yZCIsImF6cCI6Imw0bHh3MUsySjlQdUJ2UEZlNXlidkoyejhUNjBNc0pJIiwicGVybWlzc2lvbnMiOltdfQ.kp9BDRkay9YhoKngkokY44bXynD3Gcrh0IwPQVtVZIbX76yDTZpNCuj1kRhK7tdQ7Kfkakk60sjpOJ4bmbjxKPBPiFUSKvySUGWuAKCx3-l2zvfy49wB0KC9xHKT2x_HXfaDxgxL7v8DwO0zGF0TXsV9vf45lAkYzMsf-YXQeK4SId5gF09g1xHnS_WNZaliUzZhrGQQxzdyJL1ns5NH9NBk1SumEUzo1YpRxeEvxBL0zDCU2NslgKpNlkEPwcGNNIWfitfa5y871wLoYCNgjyesEW-Pin76L4BBLw4LK8TnulFUZM5GLbDnk3h-02qa4jElDIQ4Gl6MbWx5piIq5w'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Update zone(s)
mutation updateZones($zones: [UpdateZoneInput!]!) {
updateZones(zones: $zones) {
id
name
}
}
# Variables
{
"zones" : {
"name": "example_zone_updated_name",
"zone_id": "zone_2mAHXfuKNfloAEUJdZa4n0NBPCv"
}
}
Code Examples
curl --location 'https://api.butlr.io/api/v3/graphql' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjJwTC04ZGRDNlhMaDNEblVHa2ptWiJ9.eyJodHRwOi8vYnV0bHIuaW8vY2xpZW50X2lkIjoiY2xpZW50XzJDbFlBYVY1Z0FISlJjUDdsd3JoTUU5ejR1WSIsImh0dHA6Ly9idXRsci5pby9lbWFpbCI6ImV2YWxfMjUxMzMzQGJ1dGxyLnRlY2giLCJodHRwOi8vYnV0bHIuaW8vcm9sZXMiOltdLCJpc3MiOiJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8dXNlcl8yQ2xZQVpTZjZlMzJVUFRrVVBSUUplTWhLbkciLCJhdWQiOlsiaHR0cHM6Ly91c2Vycy5idXRsci5pby8iLCJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNzI2NTI3MjEwLCJleHAiOjE3MjY1MjgyMTAsInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MiLCJndHkiOiJwYXNzd29yZCIsImF6cCI6Imw0bHh3MUsySjlQdUJ2UEZlNXlidkoyejhUNjBNc0pJIiwicGVybWlzc2lvbnMiOltdfQ.aEoSZgZtdwURgqRUZxjDNIOzAQ4X01b0PnCcoDV-Ix31Zah5VOvAJo3HcCXKhz_SpkKB--I8n3zn8gwcgLNuGERgxK8ihCpzxTJ9pojdv-oXSZa5i3yxa1N7rXxzL4ccBuf7rak_DMMJixBgjwgjuHLuXHb5yZCCo0XSfAXZfNrZT1nhfoC95u9ni2-6aLmRCadjQlUx1rM80EfGcPEFwR847q2Fp47YXR_otuty-Kd5HXdpFk76j84vZbm1s5MOkU-gEqdKOsD1vv0dbz5dOmZWKk2n8-p8eN0CFR_d46z41YMZxT-Z1lijO0BIPyAZUnfYrcm6cd6V2CcVJ9KJLQ' \
--data '{"query":"mutation updateZones($zones: [UpdateZoneInput!]!) {\n updateZones(zones: $zones) {\n id\n name\n }\n}","variables":{"zones":{"name":"example_zone_updated_name","zone_id":"zone_2mAHXfuKNfloAEUJdZa4n0NBPCv"}}}'
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.butlr.io/api/v3/graphql"
method := "POST"
payload := strings.NewReader("{\"query\":\"mutation updateZones($zones: [UpdateZoneInput!]!) {\\n updateZones(zones: $zones) {\\n id\\n name\\n }\\n}\",\"variables\":{\"zones\":{\"name\":\"example_zone_updated_name\",\"zone_id\":\"zone_2mAHXfuKNfloAEUJdZa4n0NBPCv\"}}}")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjJwTC04ZGRDNlhMaDNEblVHa2ptWiJ9.eyJodHRwOi8vYnV0bHIuaW8vY2xpZW50X2lkIjoiY2xpZW50XzJDbFlBYVY1Z0FISlJjUDdsd3JoTUU5ejR1WSIsImh0dHA6Ly9idXRsci5pby9lbWFpbCI6ImV2YWxfMjUxMzMzQGJ1dGxyLnRlY2giLCJodHRwOi8vYnV0bHIuaW8vcm9sZXMiOltdLCJpc3MiOiJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8dXNlcl8yQ2xZQVpTZjZlMzJVUFRrVVBSUUplTWhLbkciLCJhdWQiOlsiaHR0cHM6Ly91c2Vycy5idXRsci5pby8iLCJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNzI2NTI3MjEwLCJleHAiOjE3MjY1MjgyMTAsInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MiLCJndHkiOiJwYXNzd29yZCIsImF6cCI6Imw0bHh3MUsySjlQdUJ2UEZlNXlidkoyejhUNjBNc0pJIiwicGVybWlzc2lvbnMiOltdfQ.aEoSZgZtdwURgqRUZxjDNIOzAQ4X01b0PnCcoDV-Ix31Zah5VOvAJo3HcCXKhz_SpkKB--I8n3zn8gwcgLNuGERgxK8ihCpzxTJ9pojdv-oXSZa5i3yxa1N7rXxzL4ccBuf7rak_DMMJixBgjwgjuHLuXHb5yZCCo0XSfAXZfNrZT1nhfoC95u9ni2-6aLmRCadjQlUx1rM80EfGcPEFwR847q2Fp47YXR_otuty-Kd5HXdpFk76j84vZbm1s5MOkU-gEqdKOsD1vv0dbz5dOmZWKk2n8-p8eN0CFR_d46z41YMZxT-Z1lijO0BIPyAZUnfYrcm6cd6V2CcVJ9KJLQ")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
import requests
import json
url = "https://api.butlr.io/api/v3/graphql"
payload = "{\"query\":\"mutation updateZones($zones: [UpdateZoneInput!]!) {\\n updateZones(zones: $zones) {\\n id\\n name\\n }\\n}\",\"variables\":{\"zones\":{\"name\":\"example_zone_updated_name\",\"zone_id\":\"zone_2mAHXfuKNfloAEUJdZa4n0NBPCv\"}}}"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjJwTC04ZGRDNlhMaDNEblVHa2ptWiJ9.eyJodHRwOi8vYnV0bHIuaW8vY2xpZW50X2lkIjoiY2xpZW50XzJDbFlBYVY1Z0FISlJjUDdsd3JoTUU5ejR1WSIsImh0dHA6Ly9idXRsci5pby9lbWFpbCI6ImV2YWxfMjUxMzMzQGJ1dGxyLnRlY2giLCJodHRwOi8vYnV0bHIuaW8vcm9sZXMiOltdLCJpc3MiOiJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8dXNlcl8yQ2xZQVpTZjZlMzJVUFRrVVBSUUplTWhLbkciLCJhdWQiOlsiaHR0cHM6Ly91c2Vycy5idXRsci5pby8iLCJodHRwczovL2J1dGxydGVjaC51cy5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNzI2NTI3MjEwLCJleHAiOjE3MjY1MjgyMTAsInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MiLCJndHkiOiJwYXNzd29yZCIsImF6cCI6Imw0bHh3MUsySjlQdUJ2UEZlNXlidkoyejhUNjBNc0pJIiwicGVybWlzc2lvbnMiOltdfQ.aEoSZgZtdwURgqRUZxjDNIOzAQ4X01b0PnCcoDV-Ix31Zah5VOvAJo3HcCXKhz_SpkKB--I8n3zn8gwcgLNuGERgxK8ihCpzxTJ9pojdv-oXSZa5i3yxa1N7rXxzL4ccBuf7rak_DMMJixBgjwgjuHLuXHb5yZCCo0XSfAXZfNrZT1nhfoC95u9ni2-6aLmRCadjQlUx1rM80EfGcPEFwR847q2Fp47YXR_otuty-Kd5HXdpFk76j84vZbm1s5MOkU-gEqdKOsD1vv0dbz5dOmZWKk2n8-p8eN0CFR_d46z41YMZxT-Z1lijO0BIPyAZUnfYrcm6cd6V2CcVJ9KJLQ'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Last updated