{"openapi":"3.1.0","info":{"title":"Wind Farm CMS Data Service (course edition)","description":"Anonymized condition-monitoring data for the course project. Auth: HTTP Basic with your team id and a 6-digit TOTP generated from your team secret (RFC6238) — exactly like the industrial original. All timestamps are UTC.","version":"1.0"},"paths":{"/turbines":{"get":{"summary":"List turbines","description":"`data` gives the first/last available timestamp per product (null = no data yet for that turbine). The dataset deepens over time — check back.","operationId":"turbines_turbines_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Turbines Turbines Get"}}}}},"security":[{"HTTPBasic":[]}]}},"/turbines/{turbine_id}/signals":{"get":{"summary":"Signal catalog for a turbine","operationId":"turbine_signals_turbines__turbine_id__signals_get","security":[{"HTTPBasic":[]}],"parameters":[{"name":"turbine_id","in":"path","required":true,"schema":{"type":"string","title":"Turbine Id"}},{"name":"product","in":"query","required":false,"schema":{"type":"string","pattern":"^(trend|trendpc)$","default":"trend","title":"Product"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Turbine Signals Turbines  Turbine Id  Signals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/turbines/{turbine_id}/trend":{"get":{"summary":"Signal values for a date range","description":"Up to 10 signals and 31 days per request. `from` is inclusive, `to` is EXCLUSIVE. Returns 204 when the range holds no data (mind your response parsing!). Timestamps are UTC without timezone suffix; values are float32. Formats: json (columnar, data nested under `columns` with a `ts` array), csv, parquet (smallest — recommended for bulk work).","operationId":"trend_turbines__turbine_id__trend_get","security":[{"HTTPBasic":[]}],"parameters":[{"name":"turbine_id","in":"path","required":true,"schema":{"type":"string","title":"Turbine Id"}},{"name":"signals","in":"query","required":true,"schema":{"type":"string","description":"comma-separated signal names","title":"Signals"},"description":"comma-separated signal names"},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date-time","title":"From"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date-time","title":"To"}},{"name":"product","in":"query","required":false,"schema":{"type":"string","pattern":"^(trend|trendpc)$","default":"trend","title":"Product"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv|parquet)$","default":"json","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/usage":{"get":{"summary":"Your team's quota state today","operationId":"me_usage_me_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me Usage Me Usage Get"}}}}},"security":[{"HTTPBasic":[]}]}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBasic":{"type":"http","description":"username = your team id; password = the CURRENT 6-digit TOTP computed from your team secret (RFC 6238; it changes every 30 s, so the Authorize dialog needs a fresh one)","scheme":"basic"}}}}