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 site(s)
  • Update site(s)
  1. Asset Management
  2. GraphQL API Overview

Sites

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

PreviousGraphQL API OverviewNextBuildings

Last updated 4 months ago

A site represents a group of buildings located within a contiguous area, such as a campus or city blocks, all within the same time zone. Organizations can manage one or multiple sites depending on their needs.

This page provides guidance on how to , , and within an organization, enabling efficient management of site-related data and ensuring seamless operations across locations.

First, obtain an access token to get started .


Get all site(s)

query allSites {
  sites {
      data {
        id
        name
        buildings {
          id
          name
          ...BuildingFragment
        }
        siteNumber
        customID
        timezone
    }
  }
}

Code Examples

curl --location 'https://api.butlr.io/api/v3/graphql' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer [insert access_token here]' \
--data '{"query":"query allSites {\n  sites {\n      data {\n        id\n        name\n        buildings {\n            id\n            name\n        }\n        siteNumber\n        customID\n        timezone\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 allSites {\\n  sites {\\n      data {\\n        id\\n        name\\n        buildings {\\n            id\\n        name\\n        }\\n        siteNumber\\n        customID\\n        timezone\\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 [insert access_token here]")

  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 allSites {\\n  sites {\\n      data {\\n        id\\n        name\\n        buildings {\\n            id\\n        name\\n        }\\n        siteNumber\\n        customID\\n        timezone\\n    }\\n  }\\n}\",\"variables\":{}}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer [insert access_token here]'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

Update site(s)

mutation updateSiteInfo($input: UpdateSiteInfoInput!) {
  updateSiteInfo(input: $input) {
    site {
      id
      name
      siteNumber

      timezone
    }
  }
}

# Variables
{
    "input" :{
        "name": "example_site_updated_name",
        "id": "site_2mA7CiVpUluJ4rz5MxhfxNAH3PT"
    }
}

Code Examples

curl --location 'https://api.butlr.io/api/v3/graphql' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer [insert access_token here]' \
--data '{"query":"mutation updateSiteInfo($input: UpdateSiteInfoInput!) {\n  updateSiteInfo(input: $input) {\n    site {\n      id\n      name\n      siteNumber\n      timezone\n    }\n  }\n}","variables":{"input":{"name":"example_site_updated_name","id":"site_2mA7CiVpUluJ4rz5MxhfxNAH3PT"}}}'
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 updateSiteInfo($input: UpdateSiteInfoInput!) {\\n  updateSiteInfo(input: $input) {\\n    site {\\n      id\\n      name\\n      siteNumber\\n      timezone\\n    }\\n  }\\n}\",\"variables\":{\"input\":{\"name\":\"example_site_updated_name\",\"id\":\"site_2mA7CiVpUluJ4rz5MxhfxNAH3PT\"}}}")

  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 [insert access_token here]")

  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 updateSiteInfo($input: UpdateSiteInfoInput!) {\\n  updateSiteInfo(input: $input) {\\n    site {\\n      id\\n      name\\n      siteNumber\\n      timezone\\n    }\\n  }\\n}\",\"variables\":{\"input\":{\"name\":\"example_site_updated_name\",\"id\":\"site_2mA7CiVpUluJ4rz5MxhfxNAH3PT\"}}}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer [insert access_token here]'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

here
retrieve
create
update site information