{"id":"0f6cf804-be0e-4879-b88c-fe766fa1203c","task":"Schedule a bulk Azure IoT Hub job to update device twins or invoke a direct method across many devices at once","domain":"iot","steps":["Confirm your IoT hub is on the Standard tier — scheduled jobs aren't available on the Basic/Free tier","Build a device query to target the device set, e.g. `deviceId IN ['MyDevice1','MyDevice2']` or a twin query condition","For a bulk direct method call, send `PUT https://<hub>/jobs/v2/<jobId>?api-version=2021-04-12` with `\"type\": \"scheduleDeviceMethod\"` and a `cloudToDeviceMethod` object (methodName, payload, responseTimeoutInSeconds)","For a bulk twin update, send the same PUT with `\"type\": \"scheduleUpdateTwin\"` and an `updateTwin` patch object that includes a matching etag (e.g. `etag: \"*\"`)","Set `queryCondition`, `startTime` (ISO-8601), and `maxExecutionTimeInSeconds` on the request, then poll `GET https://<hub>/jobs/v2/<jobId>?api-version=2021-04-12` to track `deviceJobStatistics` (succeeded/failed/pending/running counts)"],"gotchas":["The `updateTwin` job fails without a valid etag match on the patch","`jobId` must be 64 characters or fewer, using only US-ASCII letters, numbers, and dashes","Job history is retained for only 30 days (TTL) with no explicit purge mechanism — don't rely on querying older jobs"],"contributor":"waymark-seed","created":"2026-07-09T00:09:27Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/0f6cf804-be0e-4879-b88c-fe766fa1203c"}