# WaterSample

> The water_samples optional block of a .well file: a list of WaterSample objects.

Property `water_samples` of the .well root, an array of objects, optional. [Defined in the spec](/format/spec/v2/water-quality#watersample).

| Field | Type | Required | Values / constraints | Description |
| --- | --- | --- | --- | --- |
| `id` | string | yes |  |  |
| `datetime` | string | yes | pattern `^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z\|[+-]\d{2}:\d{2})$` |  |
| `sample_type` | string | yes |  |  |
| `parent_sample_id` | string | no |  |  |
| `sequence` | integer | no |  |  |
| `campaign` | string | no |  |  |
| `sampling_method` | string | no |  |  |
| `sampling_point` | object | no |  |  |
| `sampling_point.type` | string | yes |  |  |
| `sampling_point.depth` | number | no | >= 0 |  |
| `sampling_point.depth_precision` | number | no | >= 0 |  |
| `sampling_point.from` | number | no | >= 0 |  |
| `sampling_point.to` | number | no | >= 0 |  |
| `sampling_point.device` | string | no |  |  |
| `sampling_point.pump_installation_id` | string | no |  |  |
| `purge` | object | no |  |  |
| `purge.duration` | number | no | >= 0 |  |
| `purge.volume` | number | no | >= 0 |  |
| `purge.flow_rate` | number | no | >= 0 |  |
| `purge.stabilized` | boolean | no |  |  |
| `purge.readings` | object[] | no |  |  |
| `purge.readings[].elapsed` | number | yes | >= 0 |  |
| `purge.readings[].parameter` | object | yes |  |  |
| `purge.readings[].parameter.code` | string | yes | min length 1 |  |
| `purge.readings[].parameter.vocabulary` | string | yes | pattern `^(welldot\|cas\|x-.+)$` |  |
| `purge.readings[].value` | number | yes |  |  |
| `static_level_event_id` | string | no |  |  |
| `collected_by` | string | no |  |  |
| `preservation` | string | no |  |  |
| `chain_of_custody` | string | no |  |  |
| `laboratory` | object | no |  |  |
| `laboratory.name` | string | yes |  |  |
| `laboratory.accreditation` | string | no |  |  |
| `laboratory.report_number` | string | no |  |  |
| `laboratory.batch_id` | string | no |  |  |
| `laboratory.sample_id` | string | no |  |  |
| `laboratory.received_at` | string | no | pattern `^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z\|[+-]\d{2}:\d{2})$` |  |
| `laboratory.received_at_resolution` | string | no | = `day` |  |
| `laboratory.received_temperature` | number | no |  |  |
| `corrects` | string | no |  |  |
| `notes` | string | no |  |  |
| `attachments` | [Attachment](/format/reference/objects/attachment)[] | no |  |  |
| `results` | object[] | yes | min items 1 |  |
| `results[].parameter` | object | yes |  |  |
| `results[].parameter.code` | string | yes | min length 1 |  |
| `results[].parameter.vocabulary` | string | yes | pattern `^(welldot\|cas\|x-.+)$` |  |
| `results[].value` | number | no |  |  |
| `results[].presence` | boolean | no |  |  |
| `results[].text` | string | no |  |  |
| `results[].qualifier` | string | no | `<`, `>`, `not_detected`, `estimated` |  |
| `results[].unit` | string | no | min length 1 |  |
| `results[].detection_limit` | number | no | >= 0 |  |
| `results[].quantification_limit` | number | no | >= 0 |  |
| `results[].value_precision` | number | no | >= 0 |  |
| `results[].fraction` | string | no | `total`, `dissolved`, `suspended` |  |
| `results[].filtration` | object | no |  |  |
| `results[].filtration.pore_size` | number | no | > 0 |  |
| `results[].filtration.location` | string | no | `field`, `lab` |  |
| `results[].measured_in` | string | no | `field`, `lab` |  |
| `results[].method` | string | no |  |  |
| `results[].analyzed_at` | string | no | pattern `^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z\|[+-]\d{2}:\d{2})$` |  |
| `results[].analyzed_at_resolution` | string | no | = `day` |  |
| `results[].lab_flags` | string[] | no |  |  |
| `results[].validation` | object | no |  |  |
| `results[].validation.status` | string | yes | `unvalidated`, `validated`, `qualified`, `rejected` |  |
| `results[].validation.qualifier` | string | no |  |  |
| `results[].validation.guideline` | string | no |  |  |
| `results[].validation.validated_by` | string | no |  |  |
| `results[].validation.validated_at` | string | no | pattern `^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z\|[+-]\d{2}:\d{2})$` |  |
| `results[].notes` | string | no |  |  |
