# Campbell Scientific Data Logger Web Server API > The HTTP/HTTPS API served by Campbell Scientific data loggers (CR1000X(e), CR6, Granite 6/9/10, CR300/CR310, CR350): read data tables, set variables, read and set the clock, and manage files. ## Specs and docs - [OpenAPI specification (HTTP web server API)](https://help.campbellsci.com/datalogger-api/openapi.yaml) - [HTTP web server API reference](https://help.campbellsci.com/datalogger-api/) - [WebSocket API](https://help.campbellsci.com/datalogger-api/websocket.html) - [MQTT API](https://help.campbellsci.com/datalogger-api/mqtt/index.html) ## Summary - URL scheme: every command is `GET /?command=&` on the root path `/`, with `command=` first. Paths such as `/DataQuery` in the spec are labels, not real URLs; each operation's `x-request-url` gives the real one. - Files are the exception: upload, download, and delete use `PUT`, `GET`, and `DELETE` on `/{drive}/{path}` (for example, `/CPU/prog.cr1x`). - Authentication: HTTP Basic with a data logger user account. Levels: 1 = All, 2 = Read/Write, 3 = Read-Only, 4 = Read-Only (no accounts exist). None gets `401`. Upload, delete, and `FileControl` need All. - Outcome polarity: failed commands still return HTTP `200`. `outcome=1` is success for `SetValueEx`, `ClockCheck`, and `ClockSet`; `outcome=0` is success for `FileControl`. - Times: send ISO 8601 with `T`, local data logger time, no timezone (`2026-07-30T16:15:31`). JSON and XML responses use `T`; HTML and TOA5 use a space.