> For the complete documentation index, see [llms.txt](https://brightwind.gitbook.io/brighthub-user-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brightwind.gitbook.io/brighthub-user-docs/api-reference/measurement-location-api.md).

# Measurement Location API

{% hint style="info" %}
Use the table of contents on the right to quickly navigate between endpoints.
{% endhint %}

## Get all Measurement Locations

> Returns all Measurement Locations that the logged-in user has access to.<br>

```json
{"openapi":"3.0.1","info":{"title":"brighthub-measurement-location-api","version":"2025-06-19T09:34:28Z"},"servers":[{"url":"https://api.brighthub.io/{basePath}","variables":{"basePath":{"default":"measurement-locations"}}}],"security":[{"ID_Token":[]}],"components":{"securitySchemes":{"ID_Token":{"type":"http","scheme":"bearer","bearerFormat":"ID Token","description":"Enter your ID Token below.\nExample: `eyJraWQiOi...`\n"}},"schemas":{"MeasurementLocations":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"name":{"type":"string"},"plant_uuid":{"type":"string","format":"uuid","nullable":true},"latitude_ddeg":{"type":"number"},"longitude_ddeg":{"type":"number"},"measurement_station_type_id":{"type":"string"},"notes":{"type":"string","nullable":true},"update_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string","format":"uuid","nullable":true},"is_public":{"type":"boolean"},"is_created":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"created_by":{"type":"string","format":"uuid","nullable":true},"country_id":{"type":"integer","nullable":true},"organisation_uuid":{"type":"string","format":"uuid"},"has_data_retrieval":{"type":"boolean"},"country_name":{"type":"string","nullable":true}}}},"ErrorResponse":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/":{"get":{"summary":"Get all Measurement Locations","description":"Returns all Measurement Locations that the logged-in user has access to.\n","operationId":"getAllMeasurementLocations","tags":["Measurement Locations"],"responses":{"200":{"description":"Successful response with all measurement locations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeasurementLocations"}}}},"403":{"description":"Forbidden – user does not have permission to access this data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Measurement location not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get Start & End Dates

> Returns the earliest available start date and latest available end date for resource data (such as timeseries or sensor readings) for the specified Measurement Location. Requires \`Read Metadata\` or above access to the Measurement Location.<br>

```json
{"openapi":"3.0.1","info":{"title":"brighthub-measurement-location-api","version":"2025-06-19T09:34:28Z"},"servers":[{"url":"https://api.brighthub.io/{basePath}","variables":{"basePath":{"default":"measurement-locations"}}}],"security":[{"ID_Token":[]}],"components":{"securitySchemes":{"ID_Token":{"type":"http","scheme":"bearer","bearerFormat":"ID Token","description":"Enter your ID Token below.\nExample: `eyJraWQiOi...`\n"}},"schemas":{"StartEndDates":{"type":"object","properties":{"start_date":{"type":"string","format":"date-time"},"end_date":{"type":"string","format":"date-time"}}},"ErrorResponse":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/{id}/start-end-dates":{"get":{"tags":["Measurement Locations"],"summary":"Get Start & End Dates","description":"Returns the earliest available start date and latest available end date for resource data (such as timeseries or sensor readings) for the specified Measurement Location. Requires `Read Metadata` or above access to the Measurement Location.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"This is the UUID of the Measurement Location"}],"responses":{"200":{"description":"Successfully retrieved start and end dates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartEndDates"}}}},"403":{"description":"Forbidden – user does not have permission to access this data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Measurement location not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get Data Model

> Returns a JSON representation of the \[IEA Wind Task 43 WRA Data Model]\(<https://github.com/IEA-Task-43/digital\\_wra\\_data\\_standard>) for the specified Measurement Location.   Requires \`Read metadata\` or above access to the Measurement Location.<br>

```json
{"openapi":"3.0.1","info":{"title":"brighthub-measurement-location-api","version":"2025-06-19T09:34:28Z"},"servers":[{"url":"https://api.brighthub.io/{basePath}","variables":{"basePath":{"default":"measurement-locations"}}}],"security":[{"ID_Token":[]}],"components":{"securitySchemes":{"ID_Token":{"type":"http","scheme":"bearer","bearerFormat":"ID Token","description":"Enter your ID Token below.\nExample: `eyJraWQiOi...`\n"}},"schemas":{"MeasurementLocationDataModel":{"type":"object","properties":{"author":{"type":"string"},"organisation":{"type":"string"},"date":{"type":"string"},"version":{"type":"string"},"measurement_location":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string"},"name":{"type":"string"},"latitude_ddeg":{"type":"number"},"longitude_ddeg":{"type":"number"},"measurement_station_type_id":{"type":"string"},"notes":{"type":"string"},"update_at":{"type":"string"},"logger_main_config":{"type":"array","items":{"type":"object","properties":{"logger_model_name":{"type":"string"},"logger_oem_id":{"type":"string"},"logger_serial_number":{"type":"string"},"logger_id":{"type":"string"},"logger_name":{"type":"string"},"date_from":{"type":"string","format":"date-time"},"date_to":{"type":"string","format":"date-time"},"encryption_pin_or_key":{"type":"string","nullable":true},"enclosure_lock_details":{"type":"string","nullable":true},"data_transfer_details":{"type":"string","nullable":true},"offset_from_utc_hrs":{"type":"number"},"sampling_rate_sec":{"type":"number"},"averaging_period_minutes":{"type":"number"},"timestamp_is_end_of_period":{"type":"boolean"},"clock_is_auto_synced":{"type":"boolean","nullable":true},"notes":{"type":"string","nullable":true},"update_at":{"type":"string","format":"date-time"},"logger_firmware_version":{"type":"string","nullable":true},"logger_acquisition_uncertainty":{"type":"number","nullable":true},"uncertainty_k_factor":{"type":"number","nullable":true}}}},"measurement_point":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"measurement_type_id":{"type":"string"},"height_m":{"type":"number"},"height_reference_id":{"type":"string"},"notes":{"type":"string","nullable":true},"update_at":{"type":"string"},"sensor":{"type":"array","items":{"type":"object","properties":{"oem":{"type":"string"},"model":{"type":"string"},"serial_number":{"type":"string","nullable":true},"sensor_type_id":{"type":"string"},"instrument_poi_height_mm":{"type":"number","nullable":true},"is_heated":{"type":"boolean","nullable":true},"notes":{"type":"string","nullable":true},"update_at":{"type":"string"},"sensor_body_size_mm":{"type":"number","nullable":true},"classification":{"type":"string","nullable":true},"date_from":{"type":"string"},"date_to":{"type":"string","nullable":true}}}},"logger_measurement_config":{"type":"array","items":{"type":"object","properties":{"slope":{"type":"number","nullable":true},"offset":{"type":"number","nullable":true},"sensitivity":{"type":"number","nullable":true},"measurement_units_id":{"type":"string"},"height_m":{"type":"number","nullable":true},"serial_number":{"type":"string","nullable":true},"connection_channel":{"type":"string","nullable":true},"date_from":{"type":"string"},"date_to":{"type":"string","nullable":true},"notes":{"type":"string","nullable":true},"update_at":{"type":"string"},"logger_stated_boom_orientation_deg":{"type":"number","nullable":true},"column_name":{"type":"array","items":{"type":"object","properties":{"column_name":{"type":"string"},"statistic_type_id":{"type":"string"},"is_ignored":{"type":"boolean"},"notes":{"type":"string","nullable":true},"update_at":{"type":"string"}}}}}}}}}}}}}}},"ErrorResponse":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/{id}/data-model":{"get":{"summary":"Get Data Model","description":"Returns a JSON representation of the [IEA Wind Task 43 WRA Data Model](https://github.com/IEA-Task-43/digital_wra_data_standard) for the specified Measurement Location.   Requires `Read metadata` or above access to the Measurement Location.\n","tags":["Measurement Locations"],"parameters":[{"name":"id","in":"path","required":true,"description":"This is the UUID of the Measurement Location","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response with the data model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeasurementLocationDataModel"}}}},"403":{"description":"Forbidden – user does not have permission to access this data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Measurement location not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get Assembled Timeseries Data

> Returns a presigned URL to download the assembled timeseries data file for the specified Measurement Location.\
> &#x20;Applies optional filters and processing if requested.\
> &#x20;Requires \`Read metadata\` or above access to the Measurement Location<br>

```json
{"openapi":"3.0.1","info":{"title":"brighthub-measurement-location-api","version":"2025-06-19T09:34:28Z"},"servers":[{"url":"https://api.brighthub.io/{basePath}","variables":{"basePath":{"default":"measurement-locations"}}}],"security":[{"ID_Token":[]}],"components":{"securitySchemes":{"ID_Token":{"type":"http","scheme":"bearer","bearerFormat":"ID Token","description":"Enter your ID Token below.\nExample: `eyJraWQiOi...`\n"}},"schemas":{"MeasurementLocationTimeseriesDownload":{"type":"object","properties":{"file_name":{"type":"string"},"file_size":{"type":"number"},"file_type":{"type":"string"},"url":{"type":"string","format":"uri"},"url_duration_seconds":{"type":"integer"},"url_expires_at_utc":{"type":"string","format":"date-time"}}},"ErrorResponse":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/{id}/timeseries-data":{"get":{"summary":"Get Assembled Timeseries Data","description":"Returns a presigned URL to download the assembled timeseries data file for the specified Measurement Location.\n Applies optional filters and processing if requested.\n Requires `Read metadata` or above access to the Measurement Location\n","operationId":"getMeasurementLocationTimeseriesData","tags":["Measurement Locations"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"This is the UUID of the Measurement Location"},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"column_names","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated list of column names"},{"name":"measurement_point_uuids","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated list of measurement point UUIDs"},{"name":"apply_cleaning_log","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"apply_cleaning_rules","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"apply_calibration_slope_and_offset","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"apply_wind_vane_deadband_offset","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"apply_device_orientation_offset","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Successfully retrieved presigned URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeasurementLocationTimeseriesDownload"}}}},"403":{"description":"Forbidden – user does not have permission to access this data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Measurement location not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Timeseries assembly in progress","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get Cleaning Log

> Returns a presigned URL to download the Cleaning Log for the specified Measurement Location. Requires \`Read metadata\` or above access to the Measurement Location.<br>

```json
{"openapi":"3.0.1","info":{"title":"brighthub-measurement-location-api","version":"2025-06-19T09:34:28Z"},"servers":[{"url":"https://api.brighthub.io/{basePath}","variables":{"basePath":{"default":"measurement-locations"}}}],"security":[{"ID_Token":[]}],"components":{"securitySchemes":{"ID_Token":{"type":"http","scheme":"bearer","bearerFormat":"ID Token","description":"Enter your ID Token below.\nExample: `eyJraWQiOi...`\n"}},"schemas":{"ErrorResponse":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/{id}/cleaning-log":{"get":{"tags":["Measurement Locations"],"summary":"Get Cleaning Log","description":"Returns a presigned URL to download the Cleaning Log for the specified Measurement Location. Requires `Read metadata` or above access to the Measurement Location.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"This is the UUID of the Measurement Location"},{"name":"windographer_formatted_file","in":"query","required":false,"schema":{"type":"boolean"},"description":"Set to `true` to receive a Windographer-compatible XML file instead of a CSV"}],"responses":{"200":{"description":"Successfully retrieved presigned URL","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Presigned S3 URL to download the cleaning log file"}}}}}},"403":{"description":"Forbidden – user does not have permission to access this data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Measurement location not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get Cleaning Rules

> Returns the Cleaning Rules for the specified Measurement Location. Requires \`Read all\` or above access to the Measurement Location.<br>

```json
{"openapi":"3.0.1","info":{"title":"brighthub-measurement-location-api","version":"2025-06-19T09:34:28Z"},"servers":[{"url":"https://api.brighthub.io/{basePath}","variables":{"basePath":{"default":"measurement-locations"}}}],"security":[{"ID_Token":[]}],"components":{"securitySchemes":{"ID_Token":{"type":"http","scheme":"bearer","bearerFormat":"ID Token","description":"Enter your ID Token below.\nExample: `eyJraWQiOi...`\n"}},"schemas":{"CleaningRule":{"type":"object","properties":{"uuid":{"type":"string","format":"uuid"},"measurement_location_uuid":{"type":"string","format":"uuid"},"rule":{"type":"object","properties":{"clean_out":{"type":"array","items":{"type":"object","properties":{"assembled_column_name":{"type":"string"},"measurement_point_uuid":{"type":"string","format":"uuid"},"statistic_type_id":{"type":"string"}}}},"conditions":{"type":"object","properties":{"assembled_column_name":{"type":"string"},"comparator_value":{"type":"number"},"comparison_operator_id":{"type":"integer"},"measurement_point_uuid":{"type":"string","format":"uuid"},"statistic_type_id":{"type":"string"},"comparison_operator_name":{"type":"string"}}}}},"notes":{"type":"string","nullable":true},"update_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string","format":"uuid"}},"required":["uuid","measurement_location_uuid","rule","update_at","updated_by"]},"ErrorResponse":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/{id}/cleaning-rules":{"get":{"summary":"Get Cleaning Rules","description":"Returns the Cleaning Rules for the specified Measurement Location. Requires `Read all` or above access to the Measurement Location.\n","operationId":"getCleaningRules","tags":["Measurement Locations"],"parameters":[{"name":"id","in":"path","required":true,"description":"This is the UUID of the Measurement Location","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successfully retrieved cleaning rules","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CleaningRule"}}}}},"400":{"description":"Invalid UUID provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden. User lacks required permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Measurement location not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://brightwind.gitbook.io/brighthub-user-docs/api-reference/measurement-location-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
