Butlr Developer Docs
  • Welcome
  • What is Butlr
  • Spatial Metrics
  • Getting Started
    • Authentication
    • Making your first query
    • Mint Client Credentials
  • Changelog
  • Asset Management
    • GraphQL API Overview
      • Sites
      • Buildings
      • Floors
      • Rooms
      • Zones
      • Hives
      • Sensors
      • Asset Tags
    • GraphQL API Introsepction
  • Historical Occupancy
    • Reporting API Overview
      • Floor Occupancy
      • Room Occupancy
      • Zone Occupancy
      • Query Occupancy by Tag
      • Traffic
      • Presence Time
      • Statistic Overview
    • FAQs
  • Real-time occupancy
    • Webhooks Overview
      • Area Detections
      • Entryway Traffic
      • Floor Occupancy
      • Room Occupancy
      • Zone Occupancy
      • Motion Detection
      • No Motion Detection
    • Manage Webhooks
      • Create Webhooks
      • Update Webhooks
      • Delete Webhooks
      • List Webhooks
  • LINKS
    • Butlr Postman Collection
    • Butlr Website
    • Status
    • Support
    • Log In
Powered by GitBook
On this page
  • Get all zones
  • Update zone(s)
  1. Asset Management
  2. GraphQL API Overview

Zones

You can use Butlr's GraphQL API to create, update, and retrieve information about zones.

PreviousRoomsNextHives

Last updated 4 months ago

A zone is a designated subsection within a or , 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 , , and within a floor, enabling precise management of zone-specific data.

First, obtain an access token to get started .


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)

room
floor
here
retrieve
create
update zone information