Evaluate API¶
Varietal Parameters¶
- GET /api/varietalparameters/¶
- Query Parameters:
limit (integer) – Number of results to return per page.
offset (integer) – The initial index from which to return the results.
parameter (integer)
parameter_code (string)
parameter_code__in (array) – Multiple values may be separated by commas.
variety (integer)
variety__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/varietalparameters/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "value": 1.0, "variety": 1, "parameter": 1, "parameter_code": "string", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "note": "string", "url_ref": "https://example.com" } ] }
- POST /api/varietalparameters/¶
Example request:
POST /api/varietalparameters/ HTTP/1.1 Host: example.com Content-Type: application/json { "value": 1.0, "variety": 1, "parameter": 1, "note": "string", "url_ref": "https://example.com" }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "value": 1.0, "variety": 1, "parameter": 1, "parameter_code": "string", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "note": "string", "url_ref": "https://example.com" }
- GET /api/varietalparameters/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this value.
Example request:
GET /api/varietalparameters/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "value": 1.0, "variety": 1, "parameter": 1, "parameter_code": "string", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "note": "string", "url_ref": "https://example.com" }
- PUT /api/varietalparameters/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this value.
Example request:
PUT /api/varietalparameters/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "value": 1.0, "variety": 1, "parameter": 1, "note": "string", "url_ref": "https://example.com" }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "value": 1.0, "variety": 1, "parameter": 1, "parameter_code": "string", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "note": "string", "url_ref": "https://example.com" }
- PATCH /api/varietalparameters/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this value.
Example request:
PATCH /api/varietalparameters/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "value": 1.0, "variety": 1, "parameter": 1, "note": "string", "url_ref": "https://example.com" }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "value": 1.0, "variety": 1, "parameter": 1, "parameter_code": "string", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "note": "string", "url_ref": "https://example.com" }
- DELETE /api/varietalparameters/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this value.
- Status Codes:
204 No Content – No response body
- POST /api/varietalparameters/bulk/¶
Bulk create varietalparameters
Create multiple objects from a JSON array.Each item follows the same schema as the normal create endpoint.
Example request:
POST /api/varietalparameters/bulk/ HTTP/1.1 Host: example.com Content-Type: application/json [ { "value": 1.0, "variety": 1, "parameter": 1, "note": "string", "url_ref": "https://example.com" } ]
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json [ { "id": 1, "value": 1.0, "variety": 1, "parameter": 1, "parameter_code": "string", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "note": "string", "url_ref": "https://example.com" } ]
- GET /api/varietalparameters/export-jsonl/¶
Export the full filtered result set as newline-delimited JSON.
Example request:
GET /api/varietalparameters/export-jsonl/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK – Newline-delimited JSON stream.
- GET /api/crops/¶
- Query Parameters:
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
layout_location (integer)
layout_location__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
offset (integer) – The initial index from which to return the results.
variety (integer)
variety__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/crops/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" } ] }
- POST /api/crops/¶
Example request:
POST /api/crops/ HTTP/1.1 Host: example.com Content-Type: application/json { "variety": 1, "layout": 1, "order": 1, "notes": "string" }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- GET /api/crops/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop.
Example request:
GET /api/crops/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- PUT /api/crops/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop.
Example request:
PUT /api/crops/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "variety": 1, "layout": 1, "order": 1, "notes": "string" }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- PATCH /api/crops/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop.
Example request:
PATCH /api/crops/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "variety": 1, "layout": 1, "order": 1, "notes": "string" }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- DELETE /api/crops/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop.
- Status Codes:
204 No Content – No response body
- GET /api/crops/export-jsonl/¶
Export the full filtered result set as newline-delimited JSON.
Example request:
GET /api/crops/export-jsonl/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK – Newline-delimited JSON stream.
- POST /api/crops/spreadsheet_import/¶
Import crops from a spreadsheet file.
Supported file formats are CSV, XLS, XLSX, and ODS. The first row must contain the column names described below.
Select
Validate onlyto check the file for errors without importing any rows.Accepted columns:
variety(integer, required): the ID of the variety;layout(integer, required): the ID of the layout;order(integer): the index used to determine the position of the crop within the layout. Crops are ordered from top to bottom across the configured number of columns;notes(text): notes related to the crop;
Example request:
POST /api/crops/spreadsheet_import/ HTTP/1.1 Host: example.com Content-Type: application/json { "file": "01010101", "validate_only": true }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "imported_rows": 1 }
- GET /api/crop-layouts/¶
- Query Parameters:
limit (integer) – Number of results to return per page.
location (integer)
location__in (array) – Multiple values may be separated by commas.
offset (integer) – The initial index from which to return the results.
Example request:
GET /api/crop-layouts/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" } ] }
- POST /api/crop-layouts/¶
Example request:
POST /api/crop-layouts/ HTTP/1.1 Host: example.com Content-Type: application/json { "location": 1, "name": "string", "description": "string", "ncol": 1 }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" }
- GET /api/crop-layouts/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop layout.
Example request:
GET /api/crop-layouts/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" }
- PUT /api/crop-layouts/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop layout.
Example request:
PUT /api/crop-layouts/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "location": 1, "name": "string", "description": "string", "ncol": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" }
- PATCH /api/crop-layouts/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop layout.
Example request:
PATCH /api/crop-layouts/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "location": 1, "name": "string", "description": "string", "ncol": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" }
- DELETE /api/crop-layouts/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop layout.
- Status Codes:
204 No Content – No response body
- GET /api/fieldbooks/¶
- Query Parameters:
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
location (integer)
location__in (array) – Multiple values may be separated by commas.
name__icontains (string)
offset (integer) – The initial index from which to return the results.
Example request:
GET /api/fieldbooks/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" } ] }
- POST /api/fieldbooks/¶
Example request:
POST /api/fieldbooks/ HTTP/1.1 Host: example.com Content-Type: application/json { "name": "string", "layout": 1 }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" }
- GET /api/fieldbooks/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this field book.
Example request:
GET /api/fieldbooks/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" }
- PUT /api/fieldbooks/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this field book.
Example request:
PUT /api/fieldbooks/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "name": "string", "layout": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" }
- PATCH /api/fieldbooks/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this field book.
Example request:
PATCH /api/fieldbooks/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "name": "string", "layout": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" }
- DELETE /api/fieldbooks/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this field book.
- Status Codes:
204 No Content – No response body
- GET /api/trait-targets/¶
- Query Parameters:
crop (integer)
crop__in (array) – Multiple values may be separated by commas.
fieldbook (integer)
fieldbook__in (array) – Multiple values may be separated by commas.
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
offset (integer) – The initial index from which to return the results.
protocol (integer)
protocol__in (array) – Multiple values may be separated by commas.
trait (integer)
trait__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/trait-targets/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 } ] }
- POST /api/trait-targets/¶
Creates a target idempotently. Returns 201 when created, or 200 when an identical target already exists.
Example request:
POST /api/trait-targets/ HTTP/1.1 Host: example.com Content-Type: application/json { "crop": 1, "fieldbook": 1, "trait": 1, "required_count": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 }
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 }
- GET /api/trait-targets/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this trait target.
Example request:
GET /api/trait-targets/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 }
- DELETE /api/trait-targets/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this trait target.
- Status Codes:
204 No Content – No response body
- POST /api/trait-targets/bulk/¶
Creates targets atomically and idempotently. Returns 201 when at least one target is created, or 200 when all requested targets already exist. Results preserve request order.
Example request:
POST /api/trait-targets/bulk/ HTTP/1.1 Host: example.com Content-Type: application/json [ { "crop": 1, "fieldbook": 1, "trait": 1, "required_count": 1 } ]
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 } ]
Example response:
HTTP/1.1 201 Created Content-Type: application/json [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 } ]
- GET /api/trait-targets/export-jsonl/¶
Export the full filtered result set as newline-delimited JSON.
Example request:
GET /api/trait-targets/export-jsonl/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK – Newline-delimited JSON stream.
- GET /api/parameter-targets/¶
- Query Parameters:
crop (integer)
crop__in (array) – Multiple values may be separated by commas.
fieldbook (integer)
fieldbook__in (array) – Multiple values may be separated by commas.
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
offset (integer) – The initial index from which to return the results.
parameter (integer)
parameter__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/parameter-targets/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 } ] }
- POST /api/parameter-targets/¶
Creates a target idempotently. Returns 201 when created, or 200 when an identical target already exists.
Example request:
POST /api/parameter-targets/ HTTP/1.1 Host: example.com Content-Type: application/json { "crop": 1, "fieldbook": 1, "parameter": 1, "required_count": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 }
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 }
- GET /api/parameter-targets/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this parameter target.
Example request:
GET /api/parameter-targets/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 }
- DELETE /api/parameter-targets/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this parameter target.
- Status Codes:
204 No Content – No response body
- POST /api/parameter-targets/bulk/¶
Creates targets atomically and idempotently. Returns 201 when at least one target is created, or 200 when all requested targets already exist. Results preserve request order.
Example request:
POST /api/parameter-targets/bulk/ HTTP/1.1 Host: example.com Content-Type: application/json [ { "crop": 1, "fieldbook": 1, "parameter": 1, "required_count": 1 } ]
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 } ]
Example response:
HTTP/1.1 201 Created Content-Type: application/json [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 } ]
- GET /api/parameter-targets/export-jsonl/¶
Export the full filtered result set as newline-delimited JSON.
Example request:
GET /api/parameter-targets/export-jsonl/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK – Newline-delimited JSON stream.
- GET /api/trait-observations/¶
- Query Parameters:
crop (integer)
crop__in (array) – Multiple values may be separated by commas.
fieldbook_or_layout (string)
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
location (integer)
location__in (array) – Multiple values may be separated by commas.
offset (integer) – The initial index from which to return the results.
protocol (integer)
protocol__in (array) – Multiple values may be separated by commas.
recorded_at_end (string)
recorded_at_start (string)
species (integer)
species__in (array) – Multiple values may be separated by commas.
state (integer)
state__in (array) – Multiple values may be separated by commas.
trait (integer)
trait__in (array) – Multiple values may be separated by commas.
variety (integer)
variety__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/trait-observations/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "state": 1, "state_display": "string", "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "protocol": 1, "protocol_name": "string", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" } ] }
- POST /api/trait-observations/¶
Example request:
POST /api/trait-observations/ HTTP/1.1 Host: example.com Content-Type: application/json { "crop": 1, "state": 1, "recorded_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "state": 1, "state_display": "string", "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "protocol": 1, "protocol_name": "string", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" }
- GET /api/trait-observations/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this trait observation.
Example request:
GET /api/trait-observations/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "state": 1, "state_display": "string", "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "protocol": 1, "protocol_name": "string", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" }
- DELETE /api/trait-observations/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this trait observation.
- Status Codes:
204 No Content – No response body
- GET /api/trait-observations/export-jsonl/¶
Export the full filtered result set as newline-delimited JSON.
Example request:
GET /api/trait-observations/export-jsonl/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK – Newline-delimited JSON stream.
- GET /api/parameter-observations/¶
- Query Parameters:
crop (integer)
crop__in (array) – Multiple values may be separated by commas.
fieldbook_or_layout (string)
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
location (integer)
location__in (array) – Multiple values may be separated by commas.
offset (integer) – The initial index from which to return the results.
parameter (integer)
parameter__in (array) – Multiple values may be separated by commas.
parameter_date (string)
parameter_date_end (string)
parameter_date_start (string)
parameter_value (number)
recorded_at_end (string)
recorded_at_start (string)
species (integer)
species__in (array) – Multiple values may be separated by commas.
value (number)
value_max (number)
value_min (number)
variety (integer)
variety__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/parameter-observations/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "parameter_value": "string", "parameter_date": "2026-09-27", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" } ] }
- POST /api/parameter-observations/¶
Example request:
POST /api/parameter-observations/ HTTP/1.1 Host: example.com Content-Type: application/json { "crop": 1, "parameter": 1, "parameter_value": "string", "parameter_date": "2026-09-27", "recorded_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "parameter_value": "string", "parameter_date": "2026-09-27", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" }
- GET /api/parameter-observations/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this parameter observation.
Example request:
GET /api/parameter-observations/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "parameter_value": "string", "parameter_date": "2026-09-27", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" }
- DELETE /api/parameter-observations/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this parameter observation.
- Status Codes:
204 No Content – No response body
Crops¶
- GET /api/crops/¶
- Query Parameters:
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
layout_location (integer)
layout_location__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
offset (integer) – The initial index from which to return the results.
variety (integer)
variety__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/crops/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" } ] }
- POST /api/crops/¶
Example request:
POST /api/crops/ HTTP/1.1 Host: example.com Content-Type: application/json { "variety": 1, "layout": 1, "order": 1, "notes": "string" }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- GET /api/crops/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop.
Example request:
GET /api/crops/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- PUT /api/crops/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop.
Example request:
PUT /api/crops/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "variety": 1, "layout": 1, "order": 1, "notes": "string" }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- PATCH /api/crops/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop.
Example request:
PATCH /api/crops/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "variety": 1, "layout": 1, "order": 1, "notes": "string" }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "layout": 1, "layout_name": "string", "order": 1, "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- DELETE /api/crops/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop.
- Status Codes:
204 No Content – No response body
- GET /api/crops/export-jsonl/¶
Export the full filtered result set as newline-delimited JSON.
Example request:
GET /api/crops/export-jsonl/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK – Newline-delimited JSON stream.
- POST /api/crops/spreadsheet_import/¶
Import crops from a spreadsheet file.
Supported file formats are CSV, XLS, XLSX, and ODS. The first row must contain the column names described below.
Select
Validate onlyto check the file for errors without importing any rows.Accepted columns:
variety(integer, required): the ID of the variety;layout(integer, required): the ID of the layout;order(integer): the index used to determine the position of the crop within the layout. Crops are ordered from top to bottom across the configured number of columns;notes(text): notes related to the crop;
Example request:
POST /api/crops/spreadsheet_import/ HTTP/1.1 Host: example.com Content-Type: application/json { "file": "01010101", "validate_only": true }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "imported_rows": 1 }
Crop layouts¶
- GET /api/crop-layouts/¶
- Query Parameters:
limit (integer) – Number of results to return per page.
location (integer)
location__in (array) – Multiple values may be separated by commas.
offset (integer) – The initial index from which to return the results.
Example request:
GET /api/crop-layouts/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" } ] }
- POST /api/crop-layouts/¶
Example request:
POST /api/crop-layouts/ HTTP/1.1 Host: example.com Content-Type: application/json { "location": 1, "name": "string", "description": "string", "ncol": 1 }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" }
- GET /api/crop-layouts/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop layout.
Example request:
GET /api/crop-layouts/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" }
- PUT /api/crop-layouts/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop layout.
Example request:
PUT /api/crop-layouts/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "location": 1, "name": "string", "description": "string", "ncol": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" }
- PATCH /api/crop-layouts/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop layout.
Example request:
PATCH /api/crop-layouts/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "location": 1, "name": "string", "description": "string", "ncol": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "location": 1, "location_name": "string", "name": "string", "description": "string", "ncol": 1, "archived_at": "2026-09-27T15:45:05.388046", "created_at": "2026-09-27T15:45:05.388046", "updated_at": "2026-09-27T15:45:05.388046" }
- DELETE /api/crop-layouts/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this crop layout.
- Status Codes:
204 No Content – No response body
Fieldbooks¶
- GET /api/fieldbooks/¶
- Query Parameters:
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
location (integer)
location__in (array) – Multiple values may be separated by commas.
name__icontains (string)
offset (integer) – The initial index from which to return the results.
Example request:
GET /api/fieldbooks/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" } ] }
- POST /api/fieldbooks/¶
Example request:
POST /api/fieldbooks/ HTTP/1.1 Host: example.com Content-Type: application/json { "name": "string", "layout": 1 }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" }
- GET /api/fieldbooks/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this field book.
Example request:
GET /api/fieldbooks/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" }
- PUT /api/fieldbooks/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this field book.
Example request:
PUT /api/fieldbooks/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "name": "string", "layout": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" }
- PATCH /api/fieldbooks/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this field book.
Example request:
PATCH /api/fieldbooks/{id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "name": "string", "layout": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "name": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string" }
- DELETE /api/fieldbooks/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this field book.
- Status Codes:
204 No Content – No response body
Trait targets¶
- GET /api/trait-targets/¶
- Query Parameters:
crop (integer)
crop__in (array) – Multiple values may be separated by commas.
fieldbook (integer)
fieldbook__in (array) – Multiple values may be separated by commas.
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
offset (integer) – The initial index from which to return the results.
protocol (integer)
protocol__in (array) – Multiple values may be separated by commas.
trait (integer)
trait__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/trait-targets/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 } ] }
- POST /api/trait-targets/¶
Creates a target idempotently. Returns 201 when created, or 200 when an identical target already exists.
Example request:
POST /api/trait-targets/ HTTP/1.1 Host: example.com Content-Type: application/json { "crop": 1, "fieldbook": 1, "trait": 1, "required_count": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 }
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 }
- GET /api/trait-targets/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this trait target.
Example request:
GET /api/trait-targets/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 }
- DELETE /api/trait-targets/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this trait target.
- Status Codes:
204 No Content – No response body
- POST /api/trait-targets/bulk/¶
Creates targets atomically and idempotently. Returns 201 when at least one target is created, or 200 when all requested targets already exist. Results preserve request order.
Example request:
POST /api/trait-targets/bulk/ HTTP/1.1 Host: example.com Content-Type: application/json [ { "crop": 1, "fieldbook": 1, "trait": 1, "required_count": 1 } ]
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 } ]
Example response:
HTTP/1.1 201 Created Content-Type: application/json [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "trait_display": "string", "protocol": 1, "protocol_name": "string", "required_count": 1 } ]
Parameter targets¶
- GET /api/parameter-targets/¶
- Query Parameters:
crop (integer)
crop__in (array) – Multiple values may be separated by commas.
fieldbook (integer)
fieldbook__in (array) – Multiple values may be separated by commas.
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
offset (integer) – The initial index from which to return the results.
parameter (integer)
parameter__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/parameter-targets/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 } ] }
- POST /api/parameter-targets/¶
Creates a target idempotently. Returns 201 when created, or 200 when an identical target already exists.
Example request:
POST /api/parameter-targets/ HTTP/1.1 Host: example.com Content-Type: application/json { "crop": 1, "fieldbook": 1, "parameter": 1, "required_count": 1 }
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 }
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 }
- GET /api/parameter-targets/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this parameter target.
Example request:
GET /api/parameter-targets/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 }
- DELETE /api/parameter-targets/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this parameter target.
- Status Codes:
204 No Content – No response body
- POST /api/parameter-targets/bulk/¶
Creates targets atomically and idempotently. Returns 201 when at least one target is created, or 200 when all requested targets already exist. Results preserve request order.
Example request:
POST /api/parameter-targets/bulk/ HTTP/1.1 Host: example.com Content-Type: application/json [ { "crop": 1, "fieldbook": 1, "parameter": 1, "required_count": 1 } ]
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 } ]
Example response:
HTTP/1.1 201 Created Content-Type: application/json [ { "id": 1, "crop": 1, "fieldbook": 1, "step": 1, "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "required_count": 1 } ]
Trait observations¶
- GET /api/trait-observations/¶
- Query Parameters:
crop (integer)
crop__in (array) – Multiple values may be separated by commas.
fieldbook_or_layout (string)
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
location (integer)
location__in (array) – Multiple values may be separated by commas.
offset (integer) – The initial index from which to return the results.
protocol (integer)
protocol__in (array) – Multiple values may be separated by commas.
recorded_at_end (string)
recorded_at_start (string)
species (integer)
species__in (array) – Multiple values may be separated by commas.
state (integer)
state__in (array) – Multiple values may be separated by commas.
trait (integer)
trait__in (array) – Multiple values may be separated by commas.
variety (integer)
variety__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/trait-observations/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "state": 1, "state_display": "string", "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "protocol": 1, "protocol_name": "string", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" } ] }
- POST /api/trait-observations/¶
Example request:
POST /api/trait-observations/ HTTP/1.1 Host: example.com Content-Type: application/json { "crop": 1, "state": 1, "recorded_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "state": 1, "state_display": "string", "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "protocol": 1, "protocol_name": "string", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" }
- GET /api/trait-observations/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this trait observation.
Example request:
GET /api/trait-observations/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "state": 1, "state_display": "string", "trait": 1, "trait_numeric_id": 1, "trait_description": "string", "protocol": 1, "protocol_name": "string", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" }
- DELETE /api/trait-observations/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this trait observation.
- Status Codes:
204 No Content – No response body
Parameter observations¶
- GET /api/parameter-observations/¶
- Query Parameters:
crop (integer)
crop__in (array) – Multiple values may be separated by commas.
fieldbook_or_layout (string)
layout (integer)
layout__in (array) – Multiple values may be separated by commas.
limit (integer) – Number of results to return per page.
location (integer)
location__in (array) – Multiple values may be separated by commas.
offset (integer) – The initial index from which to return the results.
parameter (integer)
parameter__in (array) – Multiple values may be separated by commas.
parameter_date (string)
parameter_date_end (string)
parameter_date_start (string)
parameter_value (number)
recorded_at_end (string)
recorded_at_start (string)
species (integer)
species__in (array) – Multiple values may be separated by commas.
value (number)
value_max (number)
value_min (number)
variety (integer)
variety__in (array) – Multiple values may be separated by commas.
Example request:
GET /api/parameter-observations/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "next": "https://example.com", "previous": "https://example.com", "results": [ { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "parameter_value": "string", "parameter_date": "2026-09-27", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" } ] }
- POST /api/parameter-observations/¶
Example request:
POST /api/parameter-observations/ HTTP/1.1 Host: example.com Content-Type: application/json { "crop": 1, "parameter": 1, "parameter_value": "string", "parameter_date": "2026-09-27", "recorded_at": "2026-09-27T15:45:05.388046", "notes": "string" }
- Status Codes:
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "parameter_value": "string", "parameter_date": "2026-09-27", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" }
- GET /api/parameter-observations/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this parameter observation.
Example request:
GET /api/parameter-observations/{id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "crop": 1, "crop_display": "string", "layout": 1, "layout_name": "string", "location": 1, "location_name": "string", "variety": 1, "variety_name": "string", "species": 1, "species_common_name": "string", "step": 1, "step_display": "string", "parameter": 1, "parameter_code": "string", "parameter_name": "string", "parameter_display": "string", "parameter_value": "string", "parameter_date": "2026-09-27", "recorded_at": "2026-09-27T15:45:05.388046", "created_by": 1, "created_by_display": "string", "notes": "string" }
- DELETE /api/parameter-observations/{id}/¶
- Parameters:
id (integer) – A unique integer value identifying this parameter observation.
- Status Codes:
204 No Content – No response body