{
  "info": {
    "name": "WeGuard Developer API",
    "description": "All requests in the [WeGuard Developer API](https://weguard.ai/docs), grouped by resource, each with an example response. The collection is generated from the API reference.\n\n**Get started**\n\n1. Create an API key in the WeGuard console under Settings → Developer API. Only account admins can create keys. See the [Quickstart](https://weguard.ai/docs/quickstart).\n2. Open this collection's **Variables** and paste the key into the **Current value** of `apiKey`. The current value stays on your machine. Never put a key in the initial value, and never share a collection that contains one.\n3. Send **Identity → Retrieve the calling key** (`GET /v1/me`). It needs no scope and confirms the key works.\n\nRequests use Bearer authentication with `{{apiKey}}`, set on the collection. `{{baseUrl}}` is the production base URL, `https://api-gw.weguard.ai/core/v1`. Optional query parameters are included but disabled. Select a parameter's checkbox to send it.\n\nThe [documentation](https://weguard.ai/docs) explains errors, pagination, rate limits and scopes.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api-gw.weguard.ai/core/v1",
      "type": "string",
      "description": "Base URL of the API, including the version."
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "string",
      "description": "Your API key (wgk_<keyId>_<secret>). Set it as the current value only, so it is never shared."
    }
  ],
  "item": [
    {
      "name": "Identity",
      "description": "Verify an API key and see which account and scopes it carries.\n\n[Identity API reference](https://weguard.ai/docs/api/me)",
      "item": [
        {
          "name": "Retrieve the calling key",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/me",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "me"
              ]
            },
            "description": "Returns the API key used for the request and the account that owns it. Any valid key can call this endpoint. No scope is required, and the endpoint takes no parameters.\n\n**Required scopes:** none. Any valid API key can call this endpoint. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/me#retrieve-me)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/me",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "me"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"me\",\n  \"account\": {\n    \"id\": \"5f1d7c0e9b1e8a3f2c4d6e8a\",\n    \"name\": \"Acme Logistics\"\n  },\n  \"apiKey\": {\n    \"id\": \"6701a2b3c4d5e6f708192a3b\",\n    \"name\": \"CMDB sync\",\n    \"prefix\": \"wgk_1a2b3c4d5e6f7a8b\",\n    \"scopes\": [\n      \"devices:read\"\n    ],\n    \"createdAt\": \"2026-10-01T10:00:00Z\",\n    \"expiresAt\": \"2026-12-30T10:00:00Z\"\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Account",
      "description": "Your WeGuard account: plan, license usage, enabled platforms and the labels of the device tag slots.\n\n[Account API reference](https://weguard.ai/docs/api/account)",
      "item": [
        {
          "name": "Retrieve the account",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/account",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "account"
              ]
            },
            "description": "Returns the account that owns the API key. This endpoint takes no parameters.\n\n**Required scope:** `account:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/account#retrieve-account)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/account",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "account"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"id\": \"5f1d7c0e9b1e8a3f2c4d6e8a\",\n  \"object\": \"account\",\n  \"name\": \"Acme Logistics\",\n  \"state\": \"live\",\n  \"plan\": \"Enterprise\",\n  \"licenses\": {\n    \"purchased\": 500,\n    \"provisionedDevices\": 312,\n    \"unprovisionedDevices\": 14\n  },\n  \"licenseValidFrom\": \"2026-01-01T00:00:00Z\",\n  \"licenseValidUntil\": \"2026-12-31T23:59:59Z\",\n  \"trialEndsAt\": null,\n  \"platforms\": [\n    \"android\",\n    \"ios\",\n    \"windows\"\n  ],\n  \"mfaRequired\": true,\n  \"tagLabels\": {\n    \"tag6\": \"Region\",\n    \"tag7\": \"Cost centre\"\n  },\n  \"createdAt\": \"2024-05-02T10:11:12Z\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Devices",
      "description": "Inventory, enrollment, policy, compliance, security state, connectivity and status of your managed Android, Apple (iOS, iPadOS, macOS, tvOS) and Windows devices.\n\n[Devices API reference](https://weguard.ai/docs/api/devices)",
      "item": [
        {
          "name": "List devices",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/devices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "devices"
              ],
              "query": [
                {
                  "key": "platform",
                  "value": "android",
                  "description": "Only return items for these platforms. Pass a comma-separated list, for example android,ios. Values are case-insensitive. ios covers iPhone, iPad and iPod touch. Default: all platforms.",
                  "disabled": true
                },
                {
                  "key": "policyId",
                  "value": "",
                  "description": "Only return devices assigned to this policy. Case-insensitive. A well-formed id that matches no policy returns an empty list.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "25",
                  "description": "Maximum number of items to return, from 1 to 100. Default: 25.",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "The nextCursor from the previous page. Send it unchanged, together with the same filters. See Pagination.",
                  "disabled": true
                },
                {
                  "key": "includeTotal",
                  "value": "true",
                  "description": "Set to true to also return totalCount. It runs an extra count, so request it only when you need it. Default: false.",
                  "disabled": true
                }
              ]
            },
            "description": "Returns the devices in your account, ordered by `id` (creation order), as a [paginated list](https://weguard.ai/docs/pagination).\n\n**Required scope:** `devices:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/devices#list-devices)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/devices?platform=android&limit=1",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "devices"
                  ],
                  "query": [
                    {
                      "key": "platform",
                      "value": "android"
                    },
                    {
                      "key": "limit",
                      "value": "1"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"6523f1c2a7b9d40012345678\",\n      \"object\": \"device\",\n      \"platform\": \"android\",\n      \"name\": \"Warehouse Scanner 12\",\n      \"model\": \"SM-T505\",\n      \"manufacturer\": \"samsung\",\n      \"osVersion\": \"13\",\n      \"serialNumber\": \"R9JN30ABCDE\",\n      \"imei\": \"356938035643809\",\n      \"phoneNumber\": null,\n      \"agentVersion\": \"6.4.2\",\n      \"policy\": {\n        \"id\": \"64ff0a1b2c3d4e5f60718293\",\n        \"name\": \"Kiosk: Scanners\"\n      },\n      \"enrollment\": {\n        \"status\": \"enrolled\",\n        \"enrolledAt\": \"2026-03-14T08:12:44Z\"\n      },\n      \"state\": {\n        \"lost\": false,\n        \"compromised\": false,\n        \"locked\": false\n      },\n      \"compliance\": {\n        \"policyCompliant\": true,\n        \"appsCompliant\": false\n      },\n      \"tags\": {\n        \"tag1\": \"Dock 4\",\n        \"tag3\": \"Night shift\"\n      },\n      \"lastSeenAt\": \"2026-10-07T09:29:51Z\",\n      \"connectivity\": {\n        \"status\": \"online\",\n        \"thresholdMinutes\": 1440\n      },\n      \"createdAt\": \"2026-03-14T08:10:02Z\",\n      \"details\": {\n        \"deviceIdType\": \"IMEI\",\n        \"suspended\": false,\n        \"wiped\": false,\n        \"enterpriseEnrolled\": true,\n        \"appliedPolicyVersion\": 42,\n        \"mobileDataUsageBytes\": 1288490188,\n        \"wifiDataUsageBytes\": 9663676416,\n        \"batteryLevel\": 87\n      }\n    }\n  ],\n  \"hasMore\": true,\n  \"nextCursor\": \"YzE6NjUyM2YxYzJhN2I5ZDQwMDEyMzQ1Njc4\"\n}"
            }
          ]
        },
        {
          "name": "Retrieve a device",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/devices/:deviceId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "devices",
                ":deviceId"
              ],
              "variable": [
                {
                  "key": "deviceId",
                  "value": "6523f1c2a7b9d40012345678",
                  "type": "string",
                  "description": "Id of the device. Case-insensitive."
                }
              ]
            },
            "description": "Returns a single device by id.\n\n**Required scope:** `devices:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/devices#retrieve-device)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/devices/:deviceId",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "devices",
                    ":deviceId"
                  ],
                  "variable": [
                    {
                      "key": "deviceId",
                      "value": "6523f1c2a7b9d40012345678",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"id\": \"6523f1c2a7b9d40012345678\",\n  \"object\": \"device\",\n  \"platform\": \"android\",\n  \"name\": \"Warehouse Scanner 12\",\n  \"model\": \"SM-T505\",\n  \"manufacturer\": \"samsung\",\n  \"osVersion\": \"13\",\n  \"serialNumber\": \"R9JN30ABCDE\",\n  \"imei\": \"356938035643809\",\n  \"phoneNumber\": null,\n  \"agentVersion\": \"6.4.2\",\n  \"policy\": {\n    \"id\": \"64ff0a1b2c3d4e5f60718293\",\n    \"name\": \"Kiosk: Scanners\"\n  },\n  \"enrollment\": {\n    \"status\": \"enrolled\",\n    \"enrolledAt\": \"2026-03-14T08:12:44Z\"\n  },\n  \"state\": {\n    \"lost\": false,\n    \"compromised\": false,\n    \"locked\": false\n  },\n  \"compliance\": {\n    \"policyCompliant\": true,\n    \"appsCompliant\": false\n  },\n  \"tags\": {\n    \"tag1\": \"Dock 4\",\n    \"tag3\": \"Night shift\"\n  },\n  \"lastSeenAt\": \"2026-10-07T09:29:51Z\",\n  \"connectivity\": {\n    \"status\": \"online\",\n    \"thresholdMinutes\": 1440\n  },\n  \"createdAt\": \"2026-03-14T08:10:02Z\",\n  \"details\": {\n    \"deviceIdType\": \"IMEI\",\n    \"suspended\": false,\n    \"wiped\": false,\n    \"enterpriseEnrolled\": true,\n    \"appliedPolicyVersion\": 42,\n    \"mobileDataUsageBytes\": 1288490188,\n    \"wifiDataUsageBytes\": 9663676416,\n    \"batteryLevel\": 87\n  }\n}"
            }
          ]
        },
        {
          "name": "Retrieve a device’s status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/devices/:deviceId/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "devices",
                ":deviceId",
                "status"
              ],
              "variable": [
                {
                  "key": "deviceId",
                  "value": "6523f1c2a7b9d4001234567a",
                  "type": "string",
                  "description": "Id of the device. Case-insensitive."
                }
              ]
            },
            "description": "Returns the operational status of a device: connectivity and battery, and for Windows devices also Windows Update compliance, the latest hardware health sample, BitLocker and TPM state, and Secure Boot. The API reads what WeGuard has stored and does not contact the device.\n\n**Required scope:** `devices:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n> The `hardware` and `encryption` sections are reported by the device and not verified by WeGuard. Use them for inventory and monitoring, not as proof of compliance.\n\n[API reference](https://weguard.ai/docs/api/devices#retrieve-device-status)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/devices/:deviceId/status",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "devices",
                    ":deviceId",
                    "status"
                  ],
                  "variable": [
                    {
                      "key": "deviceId",
                      "value": "6523f1c2a7b9d4001234567a",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"device_status\",\n  \"deviceId\": \"6523f1c2a7b9d4001234567a\",\n  \"platform\": \"windows\",\n  \"lastSeenAt\": \"2026-10-07T09:29:51Z\",\n  \"connectivity\": {\n    \"status\": \"online\",\n    \"thresholdMinutes\": 1440\n  },\n  \"battery\": {\n    \"level\": 87,\n    \"charging\": true,\n    \"reportedAt\": \"2026-10-07T09:29:51Z\"\n  },\n  \"updates\": {\n    \"complianceState\": \"non_compliant\",\n    \"missingCriticalCount\": 1,\n    \"missingImportantCount\": 0,\n    \"missingOtherCount\": 3,\n    \"failedCount\": 0,\n    \"pendingRebootCount\": 1,\n    \"pendingRebootSince\": \"2026-09-28T06:10:00Z\",\n    \"lastScanAt\": \"2026-10-07T03:12:44Z\",\n    \"osBuild\": \"26200.9445\",\n    \"osDisplayVersion\": \"25H2\"\n  },\n  \"hardware\": {\n    \"sampledAt\": \"2026-10-07T09:15:00Z\",\n    \"cpuUtilizationPercent\": 7,\n    \"memory\": {\n      \"totalBytes\": 25555055411,\n      \"availableBytes\": 18253611008\n    },\n    \"drives\": [\n      {\n        \"name\": \"C:\",\n        \"type\": \"fixed\",\n        \"totalBytes\": 254476812288,\n        \"freeBytes\": 179314884608\n      },\n      {\n        \"name\": \"F:\",\n        \"type\": \"removable\",\n        \"totalBytes\": 61203283968,\n        \"freeBytes\": 0\n      }\n    ]\n  },\n  \"encryption\": {\n    \"reportedAt\": \"2026-10-01T08:15:00Z\",\n    \"drives\": [\n      {\n        \"mountPoint\": \"C:\",\n        \"protectionStatus\": \"on\",\n        \"encryptionStatus\": \"fully_encrypted\",\n        \"encryptionPercentage\": 100,\n        \"lockStatus\": \"unlocked\"\n      }\n    ],\n    \"tpm\": {\n      \"present\": true,\n      \"enabled\": true,\n      \"activated\": true,\n      \"specVersion\": \"2.0\"\n    }\n  },\n  \"secureBoot\": null\n}"
            }
          ]
        },
        {
          "name": "Retrieve a device’s location",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/devices/:deviceId/location",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "devices",
                ":deviceId",
                "location"
              ],
              "variable": [
                {
                  "key": "deviceId",
                  "value": "6523f1c2a7b9d40012345679",
                  "type": "string",
                  "description": "Id of the device. Case-insensitive."
                }
              ]
            },
            "description": "Returns the last location the device reported. The API reads the stored location and does not ask the device for a new fix. Only `locations:read` is required. For earlier positions, use [location history](https://weguard.ai/docs/api/location-history).\n\n**Required scope:** `locations:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n> Locations are personal data about the people who use your devices. Grant `locations:read` only to integrations that need it, and handle the data according to your privacy obligations.\n\n[API reference](https://weguard.ai/docs/api/devices#retrieve-device-location)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/devices/:deviceId/location",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "devices",
                    ":deviceId",
                    "location"
                  ],
                  "variable": [
                    {
                      "key": "deviceId",
                      "value": "6523f1c2a7b9d40012345679",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"device_location\",\n  \"deviceId\": \"6523f1c2a7b9d40012345679\",\n  \"latitude\": 17.4474,\n  \"longitude\": 78.3762,\n  \"accuracyMeters\": 12.5,\n  \"recordedAt\": \"2026-10-07T09:20:00Z\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Installed apps",
      "description": "The apps installed on a device, as the device last reported them.\n\n[Installed apps API reference](https://weguard.ai/docs/api/installed-apps)",
      "item": [
        {
          "name": "List a device’s installed apps",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/devices/:deviceId/apps",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "devices",
                ":deviceId",
                "apps"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "store,private",
                  "description": "Only return apps of these types. Pass a comma-separated list, for example store,private. Values are case-insensitive. Sending this filter leaves out apps whose type is null. system also needs includeSystem=true. Without it, system matches nothing. Default: all types.",
                  "disabled": true
                },
                {
                  "key": "includeSystem",
                  "value": "true",
                  "description": "Set to true to also return apps bundled with the OS (type system): Android pre-installed apps and Windows system packages. Default: false.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "deviceId",
                  "value": "6523f1c2a7b9d40012345678",
                  "type": "string",
                  "description": "Id of the device. Case-insensitive."
                }
              ]
            },
            "description": "Returns the apps installed on the device, plus apps its policy requires that failed to install (`installed: false`). This list is not paginated. The whole inventory comes back in one list object, with `hasMore` always `false` and `nextCursor` always `null`. Items are sorted by `name`, then `identifier`, case-insensitively, with missing names last.\n\n**Required scope:** `apps:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/installed-apps#list-installed-apps)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/devices/:deviceId/apps?type=store,private",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "devices",
                    ":deviceId",
                    "apps"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "store,private"
                    }
                  ],
                  "variable": [
                    {
                      "key": "deviceId",
                      "value": "6523f1c2a7b9d40012345678",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"object\": \"installed_app\",\n      \"identifier\": \"com.acme.scanner\",\n      \"name\": null,\n      \"type\": \"private\",\n      \"version\": \"3.2.0\",\n      \"versionCode\": \"320\",\n      \"installed\": false,\n      \"publisher\": null,\n      \"sizeBytes\": null,\n      \"installedAt\": null,\n      \"status\": null,\n      \"error\": {\n        \"code\": \"NOT_COMPATIBLE_WITH_DEVICE\",\n        \"message\": \"The app is not compatible with this device.\"\n      }\n    },\n    {\n      \"object\": \"installed_app\",\n      \"identifier\": \"com.android.chrome\",\n      \"name\": null,\n      \"type\": \"store\",\n      \"version\": \"126.0.6478.71\",\n      \"versionCode\": \"647807131\",\n      \"installed\": true,\n      \"publisher\": null,\n      \"sizeBytes\": null,\n      \"installedAt\": null,\n      \"status\": null,\n      \"error\": null\n    }\n  ],\n  \"hasMore\": false,\n  \"nextCursor\": null\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Location history",
      "description": "The locations a device reported over time, newest first.\n\n[Location history API reference](https://weguard.ai/docs/api/location-history)",
      "item": [
        {
          "name": "List a device’s location history",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/devices/:deviceId/locations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "devices",
                ":deviceId",
                "locations"
              ],
              "query": [
                {
                  "key": "since",
                  "value": "2026-10-07T00:00:00Z",
                  "description": "Start of the time range (inclusive), as an ISO-8601 timestamp with a UTC offset, for example 2026-10-01T00:00:00Z. Must be earlier than until. The range can span at most 31 days. See Time ranges. Default: 24 hours before until.",
                  "disabled": true
                },
                {
                  "key": "until",
                  "value": "2026-10-08T00:00:00Z",
                  "description": "End of the time range (exclusive), as an ISO-8601 timestamp with a UTC offset. If you omit it, the first page fixes “now” and every nextCursor carries that value, so all pages cover the same window. In that case the maximum span of 31 days allows 5 minutes of clock tolerance. Default: now.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "100",
                  "description": "Maximum number of items to return, from 1 to 1000. Default: 100.",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "The nextCursor from the previous page. Send it unchanged, together with the same filters. See Pagination.",
                  "disabled": true
                },
                {
                  "key": "includeTotal",
                  "value": "true",
                  "description": "Set to true to also return totalCount. It runs an extra count, so request it only when you need it. Default: false.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "deviceId",
                  "value": "6523f1c2a7b9d40012345678",
                  "type": "string",
                  "description": "Id of the device. Case-insensitive."
                }
              ]
            },
            "description": "Returns the locations the device reported between `since` and `until`, newest first, as a [paginated list](https://weguard.ai/docs/pagination). If you omit both `since` and `until`, you get the last 24 hours. See [Time ranges](https://weguard.ai/docs/time-ranges).\n\n**Required scope:** `locations:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n> Location history is personal data about the people who use your devices. Grant `locations:read` only to integrations that need it, request only the window you need, and handle the data according to your privacy obligations.\n\n[API reference](https://weguard.ai/docs/api/location-history#list-location-history)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/devices/:deviceId/locations?since=2026-10-07T00:00:00Z&until=2026-10-08T00:00:00Z&limit=2",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "devices",
                    ":deviceId",
                    "locations"
                  ],
                  "query": [
                    {
                      "key": "since",
                      "value": "2026-10-07T00:00:00Z"
                    },
                    {
                      "key": "until",
                      "value": "2026-10-08T00:00:00Z"
                    },
                    {
                      "key": "limit",
                      "value": "2"
                    }
                  ],
                  "variable": [
                    {
                      "key": "deviceId",
                      "value": "6523f1c2a7b9d40012345678",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"6701c2e5f1a2b3c4d5e6f789\",\n      \"object\": \"location_point\",\n      \"latitude\": 17.4474,\n      \"longitude\": 78.3762,\n      \"accuracyMeters\": 12.4,\n      \"altitudeMeters\": 512.3,\n      \"speedMetersPerSecond\": 0.3,\n      \"headingDegrees\": null,\n      \"recordedAt\": \"2026-10-07T09:20:00Z\"\n    },\n    {\n      \"id\": \"6701c2b1f1a2b3c4d5e6f701\",\n      \"object\": \"location_point\",\n      \"latitude\": 17.4452,\n      \"longitude\": 78.3791,\n      \"accuracyMeters\": 18.5,\n      \"altitudeMeters\": 498.7,\n      \"speedMetersPerSecond\": 1.4,\n      \"headingDegrees\": null,\n      \"recordedAt\": \"2026-10-07T09:05:00Z\"\n    }\n  ],\n  \"hasMore\": true,\n  \"nextCursor\": \"dDE6MTc5MTQxNDAwMDAwMDo2NzAxYzJlNWYxYTJiM2M0ZDVlNmY3ODk\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Screen time and app usage",
      "description": "Daily screen time, up time and per-app foreground time of Windows devices, per UTC day.\n\n[Screen time and app usage API reference](https://weguard.ai/docs/api/usage)",
      "item": [
        {
          "name": "List a device’s daily screen time",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/devices/:deviceId/screen-time",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "devices",
                ":deviceId",
                "screen-time"
              ],
              "query": [
                {
                  "key": "since",
                  "value": "2026-10-05",
                  "description": "First day of the range (inclusive), as a UTC calendar date in the form YYYY-MM-DD, for example 2026-10-01. Must not be after until. The range can cover at most 31 days, both ends included. See Date ranges. Default: 6 days before until.",
                  "disabled": true
                },
                {
                  "key": "until",
                  "value": "2026-10-07",
                  "description": "Last day of the range (inclusive), as a UTC calendar date in the form YYYY-MM-DD. Must not be later than today in UTC. Default: today (UTC).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "deviceId",
                  "value": "6523f1c2a7b9d4001234567a",
                  "type": "string",
                  "description": "Id of the device. Case-insensitive."
                }
              ]
            },
            "description": "Returns the screen time and up time of a Windows device, one entry per UTC day that has data, newest first. Days without data are left out. If you omit `since` and `until`, you get the last 7 days, today included. This list is not paginated: a range covers at most 31 days, so every entry comes back in one list object, with `hasMore` always `false` and `nextCursor` always `null`. See [Date ranges](https://weguard.ai/docs/time-ranges#date-ranges).\n\n**Required scope:** `usage:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n> Screen time and app usage are personal data about the people who use your devices. WeGuard never returns the Windows user name, and each day covers every user of the device. Grant `usage:read` only to integrations that need it, and check local consent and works council requirements before you collect or export this data.\n\n[API reference](https://weguard.ai/docs/api/usage#list-screen-time)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/devices/:deviceId/screen-time?since=2026-10-05&until=2026-10-07",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "devices",
                    ":deviceId",
                    "screen-time"
                  ],
                  "query": [
                    {
                      "key": "since",
                      "value": "2026-10-05"
                    },
                    {
                      "key": "until",
                      "value": "2026-10-07"
                    }
                  ],
                  "variable": [
                    {
                      "key": "deviceId",
                      "value": "6523f1c2a7b9d4001234567a",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"object\": \"screen_time_day\",\n      \"date\": \"2026-10-07\",\n      \"dayStart\": \"2026-10-07T00:00:00Z\",\n      \"dayEnd\": \"2026-10-08T00:00:00Z\",\n      \"screenTimeSeconds\": 5640,\n      \"upTimeSeconds\": 5820,\n      \"complete\": false\n    },\n    {\n      \"object\": \"screen_time_day\",\n      \"date\": \"2026-10-06\",\n      \"dayStart\": \"2026-10-06T00:00:00Z\",\n      \"dayEnd\": \"2026-10-07T00:00:00Z\",\n      \"screenTimeSeconds\": 27315,\n      \"upTimeSeconds\": 33960,\n      \"complete\": true\n    },\n    {\n      \"object\": \"screen_time_day\",\n      \"date\": \"2026-10-05\",\n      \"dayStart\": \"2026-10-05T00:00:00Z\",\n      \"dayEnd\": \"2026-10-06T00:00:00Z\",\n      \"screenTimeSeconds\": 25480,\n      \"upTimeSeconds\": 31205,\n      \"complete\": true\n    }\n  ],\n  \"hasMore\": false,\n  \"nextCursor\": null,\n  \"collection\": {\n    \"enabled\": true\n  }\n}"
            }
          ]
        },
        {
          "name": "List a device’s daily app usage",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/devices/:deviceId/app-usage",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "devices",
                ":deviceId",
                "app-usage"
              ],
              "query": [
                {
                  "key": "since",
                  "value": "2026-09-30",
                  "description": "First day of the range (inclusive), as a UTC calendar date in the form YYYY-MM-DD, for example 2026-10-01. Must not be after until. The range can cover at most 31 days, both ends included. See Date ranges. Default: 6 days before until.",
                  "disabled": true
                },
                {
                  "key": "until",
                  "value": "2026-10-06",
                  "description": "Last day of the range (inclusive), as a UTC calendar date in the form YYYY-MM-DD. Must not be later than today in UTC. If you omit it, the first page fixes today’s date and every nextCursor carries it, so all pages cover the same days, even after midnight UTC. Default: today (UTC).",
                  "disabled": true
                },
                {
                  "key": "apps",
                  "value": "",
                  "description": "Only return these apps. Pass a comma-separated list of identifiers, for example chrome,WINWORD. Matching ignores the case of ASCII letters. At most 50 apps, each 1 to 256 characters long. Default: all apps.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "100",
                  "description": "Maximum number of items to return, from 1 to 1000. Default: 100.",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "The nextCursor from the previous page. Send it unchanged, together with the same filters. See Pagination.",
                  "disabled": true
                },
                {
                  "key": "includeTotal",
                  "value": "true",
                  "description": "Set to true to also return totalCount. It runs an extra count, so request it only when you need it. Default: false.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "deviceId",
                  "value": "6523f1c2a7b9d4001234567a",
                  "type": "string",
                  "description": "Id of the device. Case-insensitive."
                }
              ]
            },
            "description": "Returns the foreground time of each app on a Windows device, one entry per app and UTC day, as a [paginated list](https://weguard.ai/docs/pagination). Entries are ordered by `date`, newest first, then by `app.identifier`, ignoring case. Days and apps without data are left out. If you omit `since` and `until`, you get the last 7 days, today included. See [Date ranges](https://weguard.ai/docs/time-ranges#date-ranges).\n\n**Required scope:** `usage:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n> Screen time and app usage are personal data about the people who use your devices. WeGuard never returns the Windows user name, and each day covers every user of the device. Grant `usage:read` only to integrations that need it, and check local consent and works council requirements before you collect or export this data.\n\n[API reference](https://weguard.ai/docs/api/usage#list-app-usage)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/devices/:deviceId/app-usage?since=2026-09-30&until=2026-10-06&limit=4",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "devices",
                    ":deviceId",
                    "app-usage"
                  ],
                  "query": [
                    {
                      "key": "since",
                      "value": "2026-09-30"
                    },
                    {
                      "key": "until",
                      "value": "2026-10-06"
                    },
                    {
                      "key": "limit",
                      "value": "4"
                    }
                  ],
                  "variable": [
                    {
                      "key": "deviceId",
                      "value": "6523f1c2a7b9d4001234567a",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"object\": \"app_usage_day\",\n      \"date\": \"2026-10-06\",\n      \"app\": {\n        \"identifier\": \"chrome\"\n      },\n      \"foregroundSeconds\": 9842,\n      \"sessionCount\": 57,\n      \"lastUsedAt\": \"2026-10-06T15:21:09Z\",\n      \"complete\": true\n    },\n    {\n      \"object\": \"app_usage_day\",\n      \"date\": \"2026-10-06\",\n      \"app\": {\n        \"identifier\": \"explorer\"\n      },\n      \"foregroundSeconds\": 1263,\n      \"sessionCount\": 41,\n      \"lastUsedAt\": \"2026-10-06T15:18:52Z\",\n      \"complete\": true\n    },\n    {\n      \"object\": \"app_usage_day\",\n      \"date\": \"2026-10-06\",\n      \"app\": {\n        \"identifier\": \"ms-teams\"\n      },\n      \"foregroundSeconds\": 6127,\n      \"sessionCount\": 33,\n      \"lastUsedAt\": \"2026-10-06T14:02:15Z\",\n      \"complete\": true\n    },\n    {\n      \"object\": \"app_usage_day\",\n      \"date\": \"2026-10-06\",\n      \"app\": {\n        \"identifier\": \"OUTLOOK\"\n      },\n      \"foregroundSeconds\": 4410,\n      \"sessionCount\": 29,\n      \"lastUsedAt\": \"2026-10-06T15:25:30Z\",\n      \"complete\": true\n    }\n  ],\n  \"hasMore\": true,\n  \"nextCursor\": \"ZDE6MjAyNi0xMC0wNjpvdXRsb29r\",\n  \"collection\": {\n    \"enabled\": true\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Policies",
      "description": "Device policies across platforms, how many devices each one manages, and which devices are assigned to it.\n\n[Policies API reference](https://weguard.ai/docs/api/policies)",
      "item": [
        {
          "name": "List policies",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/policies",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "policies"
              ],
              "query": [
                {
                  "key": "platform",
                  "value": "android",
                  "description": "Only return items for these platforms. Pass a comma-separated list, for example android,ios. Values are case-insensitive. ios covers iPhone, iPad and iPod touch. Default: all platforms.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "25",
                  "description": "Maximum number of items to return, from 1 to 100. Default: 25.",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "The nextCursor from the previous page. Send it unchanged, together with the same filters. See Pagination.",
                  "disabled": true
                },
                {
                  "key": "includeTotal",
                  "value": "true",
                  "description": "Set to true to also return totalCount. It runs an extra count, so request it only when you need it. Default: false.",
                  "disabled": true
                }
              ]
            },
            "description": "Returns the policies in your account, ordered by `id` (creation order), as a [paginated list](https://weguard.ai/docs/pagination).\n\n**Required scope:** `policies:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/policies#list-policies)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/policies?platform=android&limit=1",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "policies"
                  ],
                  "query": [
                    {
                      "key": "platform",
                      "value": "android"
                    },
                    {
                      "key": "limit",
                      "value": "1"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"64ff0a1b2c3d4e5f60718293\",\n      \"object\": \"policy\",\n      \"platform\": \"android\",\n      \"name\": \"Kiosk: Scanners\",\n      \"description\": \"Locked-down scanner devices\",\n      \"type\": \"ANDROID_KIOSK\",\n      \"deviceCount\": 128,\n      \"createdAt\": \"2026-01-09T11:00:00Z\",\n      \"updatedAt\": \"2026-09-30T16:42:10Z\"\n    }\n  ],\n  \"hasMore\": true,\n  \"nextCursor\": \"YzE6NjUyM2YxYzJhN2I5ZDQwMDEyMzQ1Njc4\"\n}"
            }
          ]
        },
        {
          "name": "Retrieve a policy",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/policies/:policyId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "policies",
                ":policyId"
              ],
              "variable": [
                {
                  "key": "policyId",
                  "value": "64ff0a1b2c3d4e5f60718293",
                  "type": "string",
                  "description": "Id of the policy. Case-insensitive."
                }
              ]
            },
            "description": "Returns a single policy by id.\n\n**Required scope:** `policies:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/policies#retrieve-policy)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/policies/:policyId",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "policies",
                    ":policyId"
                  ],
                  "variable": [
                    {
                      "key": "policyId",
                      "value": "64ff0a1b2c3d4e5f60718293",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"id\": \"64ff0a1b2c3d4e5f60718293\",\n  \"object\": \"policy\",\n  \"platform\": \"android\",\n  \"name\": \"Kiosk: Scanners\",\n  \"description\": \"Locked-down scanner devices\",\n  \"type\": \"ANDROID_KIOSK\",\n  \"deviceCount\": 128,\n  \"createdAt\": \"2026-01-09T11:00:00Z\",\n  \"updatedAt\": \"2026-09-30T16:42:10Z\"\n}"
            }
          ]
        },
        {
          "name": "List a policy’s devices",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/policies/:policyId/devices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "policies",
                ":policyId",
                "devices"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "25",
                  "description": "Maximum number of items to return, from 1 to 100. Default: 25.",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "The nextCursor from the previous page. Send it unchanged, together with the same filters. See Pagination.",
                  "disabled": true
                },
                {
                  "key": "includeTotal",
                  "value": "true",
                  "description": "Set to true to also return totalCount. It runs an extra count, so request it only when you need it. Default: false.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "policyId",
                  "value": "64ff0a1b2c3d4e5f60718293",
                  "type": "string",
                  "description": "Id of the policy. Case-insensitive."
                }
              ]
            },
            "description": "Returns the devices assigned to a policy, ordered by `id`, as a [paginated list](https://weguard.ai/docs/pagination). Requires both `policies:read` and `devices:read`.\n\n**Required scopes:** all of `policies:read`, `devices:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/policies#list-policy-devices)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/policies/:policyId/devices?limit=1",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "policies",
                    ":policyId",
                    "devices"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "1"
                    }
                  ],
                  "variable": [
                    {
                      "key": "policyId",
                      "value": "64ff0a1b2c3d4e5f60718293",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"6523f1c2a7b9d40012345678\",\n      \"object\": \"device\",\n      \"platform\": \"android\",\n      \"name\": \"Warehouse Scanner 12\",\n      \"model\": \"SM-T505\",\n      \"manufacturer\": \"samsung\",\n      \"osVersion\": \"13\",\n      \"serialNumber\": \"R9JN30ABCDE\",\n      \"imei\": \"356938035643809\",\n      \"phoneNumber\": null,\n      \"agentVersion\": \"6.4.2\",\n      \"policy\": {\n        \"id\": \"64ff0a1b2c3d4e5f60718293\",\n        \"name\": \"Kiosk: Scanners\"\n      },\n      \"enrollment\": {\n        \"status\": \"enrolled\",\n        \"enrolledAt\": \"2026-03-14T08:12:44Z\"\n      },\n      \"state\": {\n        \"lost\": false,\n        \"compromised\": false,\n        \"locked\": false\n      },\n      \"compliance\": {\n        \"policyCompliant\": true,\n        \"appsCompliant\": false\n      },\n      \"tags\": {\n        \"tag1\": \"Dock 4\",\n        \"tag3\": \"Night shift\"\n      },\n      \"lastSeenAt\": \"2026-10-07T09:29:51Z\",\n      \"connectivity\": {\n        \"status\": \"online\",\n        \"thresholdMinutes\": 1440\n      },\n      \"createdAt\": \"2026-03-14T08:10:02Z\",\n      \"details\": {\n        \"deviceIdType\": \"IMEI\",\n        \"suspended\": false,\n        \"wiped\": false,\n        \"enterpriseEnrolled\": true,\n        \"appliedPolicyVersion\": 42,\n        \"mobileDataUsageBytes\": 1288490188,\n        \"wifiDataUsageBytes\": 9663676416,\n        \"batteryLevel\": 87\n      }\n    }\n  ],\n  \"hasMore\": true,\n  \"nextCursor\": \"YzE6NjUyM2YxYzJhN2I5ZDQwMDEyMzQ1Njc4\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Users",
      "description": "The admins and operators who sign in to your account’s console, with their roles and the policies they can access.\n\n[Users API reference](https://weguard.ai/docs/api/users)",
      "item": [
        {
          "name": "List users",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "users"
              ],
              "query": [
                {
                  "key": "role",
                  "value": "group_admin",
                  "description": "Only return users with this role, for example observer. Matches a lowercase role name exactly: letters and _, at most 64 characters. customer_admin also matches users without a stored role.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "25",
                  "description": "Maximum number of items to return, from 1 to 100. Default: 25.",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "The nextCursor from the previous page. Send it unchanged, together with the same filters. See Pagination.",
                  "disabled": true
                },
                {
                  "key": "includeTotal",
                  "value": "true",
                  "description": "Set to true to also return totalCount. It runs an extra count, so request it only when you need it. Default: false.",
                  "disabled": true
                }
              ]
            },
            "description": "Returns the console users of your account, ordered by `id` (creation order), as a [paginated list](https://weguard.ai/docs/pagination).\n\n**Required scope:** `users:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/users#list-users)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/users?role=group_admin&limit=1",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "users"
                  ],
                  "query": [
                    {
                      "key": "role",
                      "value": "group_admin"
                    },
                    {
                      "key": "limit",
                      "value": "1"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"5f2a9c3e1b7d4a6f8e0c2b41\",\n      \"object\": \"user\",\n      \"email\": \"jane@acme.example\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Doe\",\n      \"role\": \"group_admin\",\n      \"mfaEnabled\": true,\n      \"emailVerified\": true,\n      \"ssoLinked\": false,\n      \"lastLoginAt\": \"2026-10-06T14:02:11Z\",\n      \"createdAt\": \"2025-02-11T09:00:00Z\",\n      \"policyScope\": {\n        \"allPolicies\": false,\n        \"policyIds\": [\n          \"64ff0a1b2c3d4e5f60718293\"\n        ]\n      }\n    }\n  ],\n  \"hasMore\": true,\n  \"nextCursor\": \"YzE6NjUyM2YxYzJhN2I5ZDQwMDEyMzQ1Njc4\"\n}"
            }
          ]
        },
        {
          "name": "Retrieve a user",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/users/:userId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "users",
                ":userId"
              ],
              "variable": [
                {
                  "key": "userId",
                  "value": "5f2a9c3e1b7d4a6f8e0c2b41",
                  "type": "string",
                  "description": "Id of the user. Case-insensitive."
                }
              ]
            },
            "description": "Returns a single console user by id.\n\n**Required scope:** `users:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n[API reference](https://weguard.ai/docs/api/users#retrieve-user)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/users/:userId",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "users",
                    ":userId"
                  ],
                  "variable": [
                    {
                      "key": "userId",
                      "value": "5f2a9c3e1b7d4a6f8e0c2b41",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"id\": \"5f2a9c3e1b7d4a6f8e0c2b41\",\n  \"object\": \"user\",\n  \"email\": \"jane@acme.example\",\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"role\": \"group_admin\",\n  \"mfaEnabled\": true,\n  \"emailVerified\": true,\n  \"ssoLinked\": false,\n  \"lastLoginAt\": \"2026-10-06T14:02:11Z\",\n  \"createdAt\": \"2025-02-11T09:00:00Z\",\n  \"policyScope\": {\n    \"allPolicies\": false,\n    \"policyIds\": [\n      \"64ff0a1b2c3d4e5f60718293\"\n    ]\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Audit logs",
      "description": "The console activity log of your WeGuard account: who did what and when, newest first.\n\n[Audit logs API reference](https://weguard.ai/docs/api/audit-logs)",
      "item": [
        {
          "name": "List audit log entries",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/audit-logs",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "audit-logs"
              ],
              "query": [
                {
                  "key": "since",
                  "value": "2026-10-01T00:00:00Z",
                  "description": "Start of the time range (inclusive), as an ISO-8601 timestamp with a UTC offset, for example 2026-10-01T00:00:00Z. Must be earlier than until. The range can span at most 93 days. See Time ranges. Default: 7 days before until.",
                  "disabled": true
                },
                {
                  "key": "until",
                  "value": "2026-10-08T00:00:00Z",
                  "description": "End of the time range (exclusive), as an ISO-8601 timestamp with a UTC offset. If you omit it, the first page fixes “now” and every nextCursor carries that value, so all pages cover the same window. In that case the maximum span of 93 days allows 5 minutes of clock tolerance. Default: now.",
                  "disabled": true
                },
                {
                  "key": "actor",
                  "value": "admin@acme.example",
                  "description": "Only return entries by this console user. Pass an email address of at most 254 characters. The match is exact and case-sensitive, and a value that is not an email address is rejected.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "25",
                  "description": "Maximum number of items to return, from 1 to 100. Default: 25.",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "description": "The nextCursor from the previous page. Send it unchanged, together with the same filters. See Pagination.",
                  "disabled": true
                },
                {
                  "key": "includeTotal",
                  "value": "true",
                  "description": "Set to true to also return totalCount. It runs an extra count, so request it only when you need it. Default: false.",
                  "disabled": true
                }
              ]
            },
            "description": "Returns audit log entries between `since` and `until`, newest first, as a [paginated list](https://weguard.ai/docs/pagination). If you omit both `since` and `until`, you get the last 7 days. See [Time ranges](https://weguard.ai/docs/time-ranges).\n\n**Required scope:** `audit_logs:read`. See [Authorization & scopes](https://weguard.ai/docs/authorization#scopes).\n\n> Audit log entries contain email addresses and IP addresses of your console users. Grant `audit_logs:read` only to systems that need it.\n\n[API reference](https://weguard.ai/docs/api/audit-logs#list-audit-logs)"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/audit-logs?since=2026-10-01T00:00:00Z&until=2026-10-08T00:00:00Z&actor=admin@acme.example&limit=1",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "audit-logs"
                  ],
                  "query": [
                    {
                      "key": "since",
                      "value": "2026-10-01T00:00:00Z"
                    },
                    {
                      "key": "until",
                      "value": "2026-10-08T00:00:00Z"
                    },
                    {
                      "key": "actor",
                      "value": "admin@acme.example"
                    },
                    {
                      "key": "limit",
                      "value": "1"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "cookie": [],
              "body": "{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"6702a4b8c9d0e1f2a3b4c5d6\",\n      \"object\": \"audit_log\",\n      \"occurredAt\": \"2026-10-07T08:15:02Z\",\n      \"actor\": {\n        \"email\": \"admin@acme.example\"\n      },\n      \"event\": \"Policy\",\n      \"message\": \"Kiosk: Scanners updated\",\n      \"level\": \"info\",\n      \"sourceIp\": \"203.0.113.7\",\n      \"policyId\": \"64ff0a1b2c3d4e5f60718293\"\n    }\n  ],\n  \"hasMore\": true,\n  \"nextCursor\": \"dDE6MTc5MTQxNDAwMDAwMDo2NzAxYzJlNWYxYTJiM2M0ZDVlNmY3ODk\"\n}"
            }
          ]
        }
      ]
    }
  ]
}
