API Labours
Inputs
Introduction
Under the concept of input the platform allows to register any element that is applied/consumed/used in a labour, being its main use fertilizers, phytosanitary products, among others, but it is also possible to upload any other element desired by the user (organic fertilizers, seeds, etc).
There is a master list of inputs defined by Auravant, shared by all users. It is composed of a growing group of very popular products, which in turn have their components (nutrients, active ingredients, etc.), etc.). Each user can add their own inputs, which are exclusively for personal use.
Inputs in labours PATCH and POST
labours APIs PATCH and POST receive the associated inputs as a parameter. Whenever these APIs are queried it must be taken into account that inputs are not created, modified or removed from a labour individually, but always provide (when applicable) the complete and final list of them. In other words, the list should reflect their current status.
The complete list of inputs shall be provided to the corresponding API of labour, reflecting the current (and final) status of the inputs. current (and final) status.
When querying these APIs, the inputs are represented by an array with objects whose parameters are:
- id:- integer, ID of an existing input (own or master)
- uuid:- string, UUID of an input, existing or new
- name:- string, name of the input, which may be repeated within the user's own list.
- dose:- float, dose applied.
- unit:- string, unit of the dose. Example- kg/ha.
- observations:- string, any additional comment (optional).
This array allows to add or modify inputs:
- High: when no pre-existing ID or UUID is provided, such input shall be created. When a UUID is provided that does not exist in the user's personal list, it shall be created with that unique identifier (note that the name may not be unique).
- Modification: If the ID or UUID is provided and the rest of the parameters differ.
APIs
GET
List of all inputs, both general and user-specific (discriminated by the boolean flag user_input). boolean flag user_input).
Content-Type: text/plain
GET /api/registro_campo/insumos
Following parameters could be sent into the query string, and apply an AND condition to filter the list:
- user_input:- boolean, if- trueget only the inputs created by the user
- code:- integer, input code
- country:- string, country identifier, as follow- AR,- US,- BR
If the
countryfilter is applied, the API returns those inputs with the selected country and those with country value equal null
Response example:
[
  {
    "user_input": false,
    "code": "25722",
    "name": "kaiso sorbie",
    "density": null,
    "country": "ES",
    "company": "nufarm españa, s.a.",
    "id": 45109,
    "state": "eg",
    "components": [
      {
        "uuid": "d971fa18-acc3-11eb-8340-e7e492ced828",
        "active_principle": true,
        "eiq_1": null,
        "concentration": 0.05,
        "id": 131,
        "name": "lambda cihalotrin"
      }
    ],
    "type": "pesticida",
    "composition": null,
    "uuid": "f165e203-acc5-11eb-8340-bfbcc0f16154"
  },
  {
    "user_input": false,
    "code": "34120",
    "name": "kalibre 25",
    "density": null,
    "country": "AR",
    "company": "grupo agros s.a.",
    "id": 50452,
    "state": "ec",
    "components": [
      {
        "uuid": "e8898fcc-acc6-11eb-8340-9358ca0ed91b",
        "active_principle": true,
        "eiq_1": null,
        "concentration": 0.25,
        "id": 430,
        "name": "cipermetrina"
      }
    ],
    "type": "pesticida",
    "composition": null,
    "uuid": "6c029912-d825-11eb-8340-138fd03ff513"
  }
]
POST
Creation of a user's personal inputs.
Content-Type: application/json
POST /registro_campo/insumo
In the body of the query, include an array of objects representing each input to be created. Each object must include:
- uuid:- string, UUID of the input.
- name:- string, name of the input.
name is mandatory in each. uuid will be autogenerated if not present.
Response Example:
{
  "status": "successful inputs creation",
  "res": "OK",
  "denied": [],
  "created": [
    {
      "nombre": "input_test_10",
      "id": 1027,
      "uuid": "9b6ab856-79da-11ea-bd20-b7046fc84ed8"
    },
    {
      "nombre": "input_test_11",
      "id": 1028,
      "uuid": "9b6ab857-79da-11ea-bd20-03791c820c43"
    },
    {
      "nombre": "input_test_12",
      "id": 1029,
      "uuid": "9b6ab858-79da-11ea-bd20-effc08625f5f"
    }
  ]
}
PATCH
Modification of inputs (only those registered by the user).
Content-Type: application/json
PATCH /registro_campo/insumo
In the body of the query, include an array of objects representing each input to be modified. Each object must include:
- uuid:- string, UUID of input to be modified.
- id:- integer, ID of input to be modified
- name:- string, new name of the input.
Response example:
{
  "status": "successful inputs modification",
  "res": "OK",
  "modificated": [
    {
      "id": 1027,
      "name": "modified_input_test_10",
      "uuid": "9b6ab856-79da-11ea-bd20-b7046fc84ed8"
    },
    {
      "id": 1028,
      "name": "modified_input_test_11",
      "uuid": "9b6ab857-79da-11ea-bd20-03791c820c43"
    },
    {
      "id": 1029,
      "name": "modified_input_test_12",
      "uuid": "9b6ab858-79da-11ea-bd20-effc08625f5f"
    }
  ],
  "denied": []
}
DELETE
Deletion of inputs (only those registered by the user).
Content-Type: application/json
DELETE /registro_campo/insumo
In the body of the query, include an array of objects representing each input to be deleted. Each object must include:
- uuid:- string, UUID of the input.
- id:- integer, ID of input.
Response example:
{
  "status": "successful inputs deletion",
  "res": "OK",
  "deleted": [
    {
      "id": 1027,
      "name": "modified_input_test_10",
      "uuid": "9b6ab856-79da-11ea-bd20-b7046fc84ed8"
    },
    {
      "id": 1028,
      "name": "modified_input_test_11",
      "uuid": "9b6ab857-79da-11ea-bd20-03791c820c43"
    },
    {
      "id": 1029,
      "name": "modified_input_test_12",
      "uuid": "9b6ab858-79da-11ea-bd20-effc08625f5f"
    }
  ],
  "denied": []
}
Crops
We have a Crops API, which returns a list of available crops.
This list comes from two sources:
- Crops defined by Auravant.
- Crops manually registered by users.
GET /getcultivos
Labours
In Auravant, any activity carried out in a field is called labour and can be registered through the "Season Register" module.
Types of labours
| ID | Type | 
|---|---|
| 1 | Applications | 
| 2 | Harvests | 
| 3 | Sowings | 
| 4 | Other labours | 
Much of the potential of the feature lies in the fact that all types of labour have information in common. However, each has specific data to be collected, specific to the activity.
Association to a Season In order to reflect as faithfully as possible the form of fieldwork, every labor is associated to a season, the latter acting as a grouping that allows not only to identify those activities carried out in the same production cycle but also to order them in time. For this purpose, the yeargroup parameter is used, which defines the year or years in which the season takes place. In this way a yeargroup = 2019 can identify a production cycle that takes place entirely in the year 2019 or one that started in 2019 and ended in the following year (this discrimination being made with the biennial parameter).
Each season is univocally associated to one, and only one field, thus allowing to have only one season per yeargroup.
In most of the POST of the different types of labour, a season can be identified with its respective ID but also with the ID of the field it belongs to and its yeargroup.
Status
In the different labour APIs, you will find the status of the labour.
| ID | Status | 
|---|---|
| 1 | Planned | 
| 2 | Executed | 
| 3 | Cancelled | 
APIs
GET
To get the labours of the user making the query.
The View season feature is required in order to use it.
GET /activities/labour
It is possible to filter and paginate the results by adding the following parameters to the url:
- yeargroup:- (required)labours pertaining to the yeargroup's campaigns will be filtered out.
- farm_id: corresponds to the id of the farm. If not included, the labour of all farms is searched.
- fields_id: comma separated list of field ids.
- field_uuid: field uuid.
- farm_uuid: farm uuid.
- status: status id of labor to be filtered. See status
- date_from: date from which labors are going to be fetched. Format: '%Y/%m/%d'.
- date_to: date from which labors are going to be fetched. Format: '%Y/%m/%d'.
- crop_id: id of the labour crop.
- crops_ids: comma separated list of crops ids of the labors to be filtered.
- page_size: corresponds to the page size (number of labours to be searched).
- page: corresponds to the page number.
- labour_type_id: id of the labour type. See labour types
Response:
This endpoint response an array data wich contains all the labours that match with the request made. As previously mentioned, some returned data is common for all the labours types, but there is some especific info for each type of laboru. We will show one example for each type:
Aplication response
{
  "data": [
    {
      "farm_uuid": "479ca78e-5b03-42e8-a60d-79c9fb7743a3",
      "end_cycle": false,
      "rotation": {
        "crop_name": "Cebada",       
        "crop_id": 6,
        "uuid": "2285f70e-384f-4640-adaf-6f5a553c70a9"      
      },
      "labour_type_id": 1,
      "attachments": [],
      "stock": [],
      "date": "2024-11-28",     
      "field_id": 668079,       
      "resources": [],
      "map_id": null,
      "costs": {             
        "labour": {
          "unit": "US$/ha",
          "value": 120.0
        },
        "inputs": {
          "f18dc925-dd73-48a8-a11a-c8d1e334264f": {
            "unit": "US$/l",
            "value": 122.0
          }
        }
      },
      "observations": "",
      "field_uuid": "a46fe546-6da9-468c-9640-05ff44012955",
      "application_type_id": 4,
      "inputs": [         
        {
          "unit": "l/ha",
          "justify_id": null,
          "warehouse_uuid": null,
          "input_name": "Atma C",
          "pest_uuid": "253d94c0-3263-4cac-ac8f-27fa22613698",
          "dose": 12.0,
          "crop_id": null,
          "unit_total": "l",
          "input_uuid": "f18dc925-dd73-48a8-a11a-c8d1e334264f",
          "labour_input_uuid": "1ed788ee-d2f5-1830-a861-ad3b9df8172f",
          "stock": null
        }
      ],
      "yeargroup": 2024,
      "staff": ["37222090-b4c1-4389-bbc5-84daeb63e1bb"],    
      "surface": 0.38581732,        
      "uuid": "54d10e1d-170d-45e4-809e-886d44bfd7be",       
      "status": 1,              
      "farm_id": 142544,        
      "surface_unit": null
    }
  ],
  "pagination": {     
    "total_page": 2,
    "page": 0
  }
}
- end_cycle: boolean that indicates if this activity closes the crop or not
- rotation-- crop_name: name of the crop that was used in the labour
- rotation-- crop_id: id of the crop present in the labour
- rotation-- uuid: uuid of the rotation where the crop was added
- date: date the labour was performed
- field_idid of the field where the labour was added
- costs: costs uploaded to the labour and for each input used
- inputs: array wich contains all the labour inputs with their specific data
- staff: person added to the labour
- surface: applied area
- status: uuid of the labour
- status: status of the labour, in this case is 'planned'
- farm_id: id of the farm where the labour was added
- stock: array with the data of the warehouses used in the labour
- resources: array with de data of the machinery used in the labour
Harvest response
{
  "data": [
    {
      "farm_uuid": "479ca78e-5b03-42e8-a60d-79c9fb7743a3",
      "end_cycle": false,
      "layer": null,
      "expected_unit": "Tn/ha",
      "rotation": {
        "crop_name": "Algodón",
        "crop_id": 1,
        "uuid": "ccc818bf-d548-4c9a-a2f0-da7ca0314994"
      },
      "labour_type_id": 2,
      "attachments": [],
      "harvested_unit": "Tn/ha",
      "stock": [],
      "yield_zones": [],
      "date": "2024-11-28",
      "field_id": 668079,
      "resources": [],
      "expected_yield": 890.0,
      "costs": {
        "labour": {
          "unit": "US$/ha",
          "value": 55.0
        }
      },
      "observations": "",
      "field_uuid": "a46fe546-6da9-468c-9640-05ff44012955",
      "quality": "2222",
      "yeargroup": 2024,
      "staff": ["37222090-b4c1-4389-bbc5-84daeb63e1bb"],
      "humidity": 111.0,
      "harvested_yield": 333.0,
      "surface": 0.38581732,
      "uuid": "a02b6cc8-25be-4810-ba48-d6aa9dd2b5e3",
      "status": 2,
      "farm_id": 142544,
      "surface_unit": null
    }
  ],
  "pagination": {
    "total_page": 2,
    "page": 0
  }
}
- quality: percentage of quality achieved
- humidity: humidity added to the labour
- surface: harvested area
Sowing response
{
  "data": [
    {
      "farm_uuid": "479ca78e-5b03-42e8-a60d-79c9fb7743a3",
      "rotation": {
        "crop_name": "Algodón",
        "crop_id": 1,
        "uuid": "ccc818bf-d548-4c9a-a2f0-da7ca0314994"
      },
      "labour_type_id": 3,
      "attachments": ["639eb17c-1a63-1f35-b56c-7ff859c8eba7"],   
      "stock": [],
      "date": "2024-11-26",
      "seed_total": {
        "unit": "Kg/ha",
        "value": 45.0
      },
      "field_id": 668079,
      "resources": [],
      "seeding_type_id": 2,
      "costs": {
        "labour": {
          "unit": "US$/ha",
          "value": 12.0
        },
        "seed": {
          "unit": "US$/plantas",
          "value": 15.0
        },
        "inputs": {
          "a1b73d00-d825-11eb-8340-fbcf36da16d5": {
            "unit": "US$/Kg",
            "value": 45.5
          }
        }
      },
      "observations": "This is a note",
      "field_uuid": "a46fe546-6da9-468c-9640-05ff44012955",
      "seed_rate": {
        "unit": "Kg/ha",
        "value": 120.0
      },
      "row_width": {
        "unit": "cm",
        "value": 40.0
      },
      "actual_seed_rate": {
        "unit": "Kg/ha",
        "value": 50.0
      },
      "inputs": [
        {
          "unit": "Kg/ha",
          "justify_id": null,
          "warehouse_uuid": null,
          "input_name": "2,4-d 100 ec jebagro",
          "pest_uuid": "2e4c30cd-3183-4a66-9d66-7ea1b03eff3b",
          "dose": 45.0,
          "crop_id": null,
          "unit_total": "Kg",
          "input_uuid": "a1b73d00-d825-11eb-8340-fbcf36da16d5",
          "labour_input_uuid": "b5c99405-0223-10ba-960f-c7f5989977d7",
          "stock": null
        }
      ],
      "yeargroup": 2024,
      "staff": [],
      "surface": 119.0,
      "variety_id": 63268, 
      "uuid": "95f044b0-2786-4d8f-9330-80b42fe6d0fe",
      "variety_name": "GUARANI INTA BGRR",
      "status": 2,
      "farm_id": 142544,
      "surface_unit": null
    }
  ],
  "pagination": {
    "total_page": 2,
    "page": 0
  }
}
- seed_total: total seeds
- seed_rate: sowing density
- row_width: distance between grooves
- actual_seed_rate: achieved density
- variety_id: variety id of the crop added to the labour
- surface: sown area
- seeding_type_id: id of the seeding type selected in the labour
- attachments: array wich contains uuids of the labour attachments
Other labour response
{
  "data": [
    {
      "farm_uuid": "479ca78e-5b03-42e8-a60d-79c9fb7743a3",
      "rotation": {
        "crop_name": "Cebada",
        "crop_id": 6,
        "uuid": "2285f70e-384f-4640-adaf-6f5a553c70a9"
      },
      "labour_type_id": 4,
      "attachments": [],
      "stock": [],
      "date": "2024-11-27",
      "field_id": 668079,
      "resources": [],
      "costs": {
        "labour": {
          "unit": "US$/ha",
          "value": 123.0
        },
        "materiales": {
          "unit": "US$/ha",
          "value": 213.0
        },
        "inputs": {
          "6b93b555-9da0-11ee-ad89-3322f17be082": {
            "unit": "US$/l",
            "value": 21.0
          }
        }
      },
      "observations": "",
      "field_uuid": "a46fe546-6da9-468c-9640-05ff44012955",
      "type_other_labour_id": 6,
      "inputs": [
        {
          "unit": "l/ha",
          "justify_id": null,
          "warehouse_uuid": null,
          "input_name": "Agua de riego",
          "pest_uuid": "f135391e-16af-48dd-85b1-511cce2506a5",
          "dose": 133.0,
          "crop_id": null,
          "unit_total": "l",
          "input_uuid": "6b93b555-9da0-11ee-ad89-3322f17be082",
          "labour_input_uuid": "4c991aab-0bfd-16a0-bf26-dd4cd616b255",
          "stock": null
        }
      ],
      "yeargroup": 2024,
      "staff": [],
      "surface": 0.38581732,
      "uuid": "647beb6a-bd19-4911-acea-0ad52daca0b7",
      "status": 1,
      "farm_id": 142544,
      "surface_unit": null
    }
  ],
  "pagination": {
    "total_page": 2,
    "page": 0
  }
}
- surface: area used for the labour
GET /registro_campo/labores/v2 - Deprecated -
It is possible to filter and paginate the results by adding the following parameters to the url:
- estancia: integer, corresponds to the id of the farm. If not included, the labour of all farms is searched.
- page_size: integer, corresponds to the page size (number of labours to be searched).
- page: integer, corresponds to the page number.
- campanaor- yeargroup: (optional) integer, corresponds to the yeargroup. The seasons of this yeargroup will be searched. By default, the current year is taken. If both parameters are set, just the- yeargroupparameter will be considered.
- fields: (optional) string, comma separated list of field ids.
- labors: (optional) string, comma separated list of labors ids to filter.
- date_from: (optional) string, date from which labors are going to be fetched. Format: 'yyyy/mm/dd'
- date_to: (optional) string, date until which labors are going to be fetched. Format: 'yyyy/mm/dd'
- status: (optional) integer, status id of labor to be filtered. See estados
- crops_id: (optional) string, comma separated list of crops ids of the labors to be filtered.
Response example:
{
  "pagination": {
    "total_pages": 1,
    "page": null
  },
  "data": [
    {
      "inputs": null,
      "uuid": "b05e28f4-c978-11ea-9329-9ba9b625615a",
      "campaign": 28996,
      "status_id": 1,
      "farm": 28191,
      "type_id": 2,
      "type_name": "cosecha",
      "field": 106350,
      "completion_date": null,
      "labour": 3210,
      "status_name": "planificado",
      "observations": null,
      "yeargroup": 2020,
      "date": "2020-07-24T00:00:00Z",
      "specific_data": {
        "quality": null,
        "yield": null,
        "unit": null,
        "humidity": null
      }
    },
    {
      "inputs": [
        {
          "user_input": true,
          "uuid": "7feb455a-c9e9-11ea-9329-cbd4ddaf2136",
          "density": null,
          "company": null,
          "dose": 23,
          "state": null,
          "observations": null,
          "components": [],
          "composition": null,
          "type": null,
          "id": 25354,
          "unit": "lt/ha",
          "name": "2,4 D"
        },
        {
          "user_input": true,
          "uuid": "b967c668-ca3a-11ea-9329-8fb5d7f404f2",
          "density": null,
          "company": null,
          "dose": 123,
          "state": null,
          "observations": null,
          "components": [],
          "composition": null,
          "type": null,
          "id": 25369,
          "unit": "lt/ha",
          "name": "Advance"
        }
      ],
      "uuid": "ac0c02d0-c83d-11ea-94c0-17a497d78233",
      "campaign": 28996,
      "status_id": 1,
      "farm": 28191,
      "type_id": 3,
      "type_name": "siembra",
      "field": 106350,
      "completion_date": null,
      "labour": 20071,
      "status_name": "planificado",
      "observations": "",
      "yeargroup": 2020,
      "date": "2020-07-17T00:00:00Z",
      "specific_data": {
        "sowed_area": null,
        "crop_variety_id": 34166,
        "actual_seed_rate_unit": null,
        "is_cover_crop": false,
        "target_yield_value": null,
        "crop_variety_name": "Prueba",
        "seed_rate_value": null,
        "crop_name": "Algodón",
        "row_width_value": null,
        "actual_seed_rate_value": null,
        "row_width_unit": null,
        "target_yield_unit": null,
        "crop_id": 1,
        "seed_rate_unit": null
      }
    }
  ]
}
Attach files
Sometimes, it might be useful to attach files to a specific labor. This can be done by uploading files to the web and then attaching them to labors.
Attachments
POST
Upload an image or file to the platform.
Content-Type: application/x-www-form-urlencoded
POST /attachments
On the form include:
- source:- Object- { feature: "SIEMBRA", id: labour_id }.- Feature: labor type,- id: labor id.
- file:- Filefile to upload.
- uuid:- Stringuuid asociated to the file. If not included, uuid will be generated automatically.
Sowings
Crops
The crops and their varieties are registered in the platform independently for each user, allowing each user to define the list according to his or her needs.There are also pre-loaded crops, these are the same for any user, and therefore cannot be altered.
In the PATCH and POST requests of a sowing, the crop and its variety are defined in a specific way.
First of all, it should be noted that it is not necessary to define the variety when loading a crop, but it is mandatory to indicate the crop if a variety is defined.
As can be seen in the list below, existing crops can be used or new ones can be created directly in the same form. same form. The same applies when specifying a variety for the crop.
Crops:
- crop:- integer, corresponds to the crop ID, when you want to use an existing crop.
or alternatively,
- crop:- json, corresponds to the crop data, when you want to register a new crop *- name:- string, name of the crop to be created.
Varieties:
- variety:- integer, corresponds to the ID of an existing variety
or alternatively,
- variety:- json, corresponds to the variety data, when you want to register a new variety. _- name:- string, name of the variety to create _- weight_x_thousand_seeds:- float, weight of thousand seeds
APIs
POST
Creation of a new sowing_labour.
The Create Labour feature is required to be able to use it.
Content-Type: application/json
POST /registro_campo/siembra
The same labour can be loaded in more than one season, thus facilitating the registration of activities that apply to more than one field, with the same parameters. Internally this generates the creation of as many labours as seasons are specified, using the same data for each one. Thus, this is an abstraction at the API level, but not an aspect of the internal data model (where a labour is associated with one and only one season).
In the body of the query, include the parameters:
- uuids:- string array, vector with UUIDs V1 (string) to identify the created labour(s)
- fields:- integer array, vector with IDs of fields in which the labour will be recorded
- campaigns:- integer array, vector with season IDs (if no fields are specified)
- yeargroup:- integer, year of the season (YYYYY)
- biennial:- boolean, allows to define season name as Year/Year+1 (e.g. 2019/20) or YYYYY (2019)
- status:- integer, labour status (see status)
- date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- completion_date:- string, in case it is a completed labour (YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ)
- observations:- string, free text field to record what you want to record
- inputs:- array with jsons, the list of inputs used (see detail)
- crop:- integer or json, crop sown (see section crops)
- variety:- integer or json, crop variety (see section crops)
- is_cover_crop:- boolean, determines if it is a cover crop
- target_yield:- json, expected yield- value:- float, expected yield amount
- unit:- string, expected yield unit of measure
 
- seed_rate:- json, expected sowing density- value:- float, sowing density value
- unit:- string, unit of measurement of the sowing rate
 
- sowed_area:- float, sowed area
- actual_seed_rate:- float, sowing density obtained- value:- float, sowing density value
- unit:- string, unit of measurement of the sowing density
 
- row_width:- json, sowing width- value:- float, value of the sowing width
- unit:- string, unit of measurement of the seed width
 
- attachments:- string array, vector with uuids of attachments
It is mandatory to specify at least one field or at least one season in which to assign the sowing, the remaining parameters can be left out, the default values being:
- uuids: are generated automatically.
- yeargroup: current year
- biennial: True
- status: 2
- date: current date
- The rest are set to NULL.
Response example:
{
  "res": "Siembra creada exitosamente",
  "harvests": [2569, 2570, 2571],
  "campaigns": [27899, 27900, 27901],
  "denied_fields": [],
  "supplies": null,
  "created_labours": [
    {
      "field_id": 1000,
      "labour_uuid": "100aa6ec-4e99-11eb-a4c9-b788d7fc2392",
      "campaign_id": 27899
    },
    {
      "field_id": 1001,
      "labour_uuid": "100aa6ed-4e99-11eb-a4c9-0f9cea993a10",
      "campaign_id": 27900
    },
    {
      "field_id": 1002,
      "labour_uuid": "100aa6ed-4e99-11eb-a4c9-0f9cea114f50",
      "campaign_id": 27901
    }
  ]
}
Extra parameters will also be observed in the responses. These are kept for backward compatibility but are contained in the above-mentioned and can therefore be ignored.
Specific errors
| Código | Descripción | 
|---|---|
| 1 | Without authorization | 
| 2 | Wrong crop | 
| 93,94,95,96,97 | Internal errors in the creation of inputs | 
PATCH
Modification of a sowing.
The Modify Labour feature is required to be able to use it.
Content-Type: application/json
PATCH /registro_campo/siembra
Unlike the POST request, in this case it is not possible to operate on more than one labour at the same time.
Include in the body of the query the parameters:
- uuid:- string, UUID of the labour to be modified
- campaign:- integerID of the new season
- status:- integer, 1: planned, 2: executed, 3: cancelled
- date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- completion_date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- observations:- string, free text field
- inputs:- array with jsons, which was discussed above and whose details can be found here
- attachments:- array with strings, UUIDs array that contains the labour attachments.
- crop:- integer or json, sown crop (see section crops)
- variety:- integer or json, crop variety (see section crops)
- is_cover_crop:- boolean, determines if it is a cover crop
- target_yield:- json, expected yield- value:- float, expected yield amount
- unit:- string, expected yield unit of measure
 
- seed_rate:- json, expected sowing density- value:- float, seeding density value
- unit:- string, unit of measurement of the sowing rate
 
- sowed_area:- float, sowed area
- actual_seed_rate:- float, sowing density obtained- value:- float, sowing density value
- unit:- string, unit of measurement of the sowing density
 
- row_width:- json, sowing width- value:- float, value of the sowing width
- unit:- string, unit of measurement of the sowing width
 
- attachments:- string array, vector with uuids of attachments
It is mandatory to include the entire object, with modified values.
Response example:
{
  "status": "harvest updated successfully",
  "uuid": null,
  "result": "OK",
  "id": 2569
}
Specific errors
| Code | Description | 
|---|---|
| 1 | Without authorization | 
| 93,94,95,96,97 | Internal errors in the creation of inputs | 
GET
There are two ways to obtain sowing information. First of all, we can obtain a list of sowings with their respective information through /sowings endpoint. On the other hand, with /field_record/seeding we can get a complete object for a specific seeding.
Sowings list
GET /siembras
Different parameters can be sent in the query string to filter and order:
- id_lote: To filter the sowings according to the field.
- id_campo: To filter the sowings according to the farm.
- yeargroup: To filter the sowings according to the year.
- id_cultivo: To filter the sowings according to the crop.
- order: To order the sowings in an ascending or descending way according to the date. Receives- ascor- desc, with- descbeing the default value.
- limit: Receives a number that limits the number of seedings brought.
Example:
fetch("https://api.auravant.com/api/siembras?id_lote=1000&limit=2",{
  method: "GET"
})
  .then(response => response.json())
  .then(result => console.log(result))
It should bring the last 2 seedings from the field which id is '1000'
Response example:
{
	"data": [
		{
			"nombre_cultivo": "Trigo",
			"id_cultivo": 21,
			"densidad_lograda": null,
			"yeargroup": 2030,
			"fecha": "2022-06-20",
			"unidad_medida_densidad": null,
			"nombre_variedad": null,
			"unidad_densidad_lograda": null,
			"densidad": null,
			"id_variedad": null,
			"id_lote": 1000,
			"sup_sembrada": null,
			"id_ciclo": 32032,
			"id": 19229
		},
		{
			"nombre_cultivo": "sandía",
			"id_cultivo": 1830,
			"densidad_lograda": null,
			"yeargroup": 2030,
			"fecha": "2020-06-15",
			"unidad_medida_densidad": null,
			"nombre_variedad": null,
			"unidad_densidad_lograda": null,
			"densidad": null,
			"id_variedad": null,
			"id_lote": 1000,
			"sup_sembrada": null,
			"id_ciclo": 45153,
			"id": 33749
		}
}
Sowing
List of all the data associated with a sowing registered by the user.
In order to use this API, the View season feature is required.
Content-Type: text/plain
GET /registro_campo/siembra
URL parameters:
- uuid:- string, UUID de la siembra
Response example:
{
  "sowed_area": null,
  "crop_variety_id": null,
  "campaign": 1311,
  "type_id": 3,
  "completion_date": null,
  "labour_id": 168,
  "row_width_value": null,
  "crop_name": "Trigo",
  "crop_variety_name": null,
  "type_name": "siembra",
  "actual_seed_rate_unit": null,
  "observations": null,
  "target_yield_unit": null,
  "status": 1,
  "attachments":[],
  "inputs": {
    "15229": {
      "user_input": false,
      "name": "cruiser advanced",
      "density": null,
      "company": "syngenta agro s.a.",
      "dose": 15,
      "state": null,
      "observations": null,
      "components": [
        {
          "uuid": "e8e97bb5-e20e-11ea-a16d-23c7dae43700",
          "active_principle": true,
          "eiq_1": null,
          "concentration": 0.35,
          "id": 33,
          "name": "tiametoxam"
        },
        {
          "uuid": "e8e97bb4-e20e-11ea-a16d-ebdaedeff6a3",
          "active_principle": true,
          "eiq_1": null,
          "concentration": 0.15,
          "id": 32,
          "name": "tiabendazol"
        },
        {
          "uuid": "e8e97ba7-e20e-11ea-a16d-1705dbd14fb4",
          "active_principle": true,
          "eiq_1": null,
          "concentration": 0.025,
          "id": 19,
          "name": "fludioxonil"
        },
        {
          "uuid": "e8e97bb0-e20e-11ea-a16d-bb27915bdad7",
          "active_principle": true,
          "eiq_1": null,
          "concentration": 0.02,
          "id": 28,
          "name": "metalaxil m"
        }
      ],
      "composition": null,
      "type": null,
      "id": 15229,
      "unit": "lt/ha",
      "uuid": "aa406ac8-e248-11ea-a16d-83e4fa8cc682"
    },
    "1169": {
      "user_input": false,
      "name": "solmix",
      "density": null,
      "company": "bunge argentina s.a.",
      "dose": 15,
      "state": "líquido",
      "observations": null,
      "components": [
        {
          "uuid": "00339bb8-dc00-11ea-a16d-17092e797be4",
          "active_principle": true,
          "eiq_1": null,
          "concentration": 0.28,
          "id": 1,
          "name": "n"
        }
      ],
      "composition": "28-0-0",
      "type": "fertilizante",
      "id": 1169,
      "unit": "lt/ha",
      "uuid": "bc77d2b8-dc04-11ea-a16d-e3b7ca4f6da8"
    }
  },
  "is_cover_crop": false,
  "target_yield_value": null,
  "date": "2020-08-13T00:00:00Z",
  "crop_id": 21,
  "seed_rate_unit": null,
  "row_width_measurement_unit": null,
  "seed_rate_value": null,
  "actual_seed_rate_value": null,
  "labour_uuid": "e3bd479a-dda3-11ea-a16d-bbb02471ce59"
}
Specific errors
| Code | Description | 
|---|---|
| 0 | Without authorization | 
| 1 | General error | 
DELETE
Deletion of a particular sowing.
The Delete Labour feature is required in order to use it.
Content-Type: text/plain
DELETE /registro_campo/siembra
URL parameters:
- uuid:- string, UUID de la siembra
Response example:
{
  "res": "eliminado",
  "result": "labour deleted",
  "id": 25679
}
Specific errors
| Code | Description | 
|---|---|
| 0 | Without authorization | 
| 1 | General error | 
Harvests
APIs
POST
Creation of a new harvesting _labour.
The Create Labour feature is required to be able to use it.
Content-Type: application/json
POST /registro_campo/cosecha
The same labour can be loaded in more than one season, thus facilitating the registration of activities that apply to more than one field, with the same parameters. Internally this generates the creation of as many labours as seasons are specified, using the same data for each one. Thus, this is an abstraction at the API level, but not a feature of the internal data model (where a labour is associated with one and only one season).
In the body of the query, include the parameters:
- uuids:- string array, vector with UUIDs V1 (string) to identify the created labour(s)
- fields:- integer array, vector with IDs of fields in which the labour will be recorded
- campaigns:- integer array, vector with season IDs (if no fields are specified)
- yeargroup:- integer, year of the season (YYYYY)
- biennial:- boolean, allows to define season name as Year/Year+1 (e.g. 2019/20) or YYYYY (2019)
- status:- integer, labour status (see status)
- date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- completion_date:- string, in case it is a completed labour (YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ)
- observations:- string, free text field to record what you want to record
- inputs:- array with jsons, the list of inputs used (see detail)
- yield:- float, yield obtained in the harvest
- unit:- string, unit of measurement of yield.
- humidity:- float, humidity at harvesting
- quality:- string, free text field for recording the quality obtained
It is mandatory that at least one field or at least one season is specified in which to assign the harvest, the remaining parameters can be left out, the default values being:
- uuids: are generated automatically.
- yeargroup: current year
- biennial: True
- status: 2
- date: current date
- The rest are set to NULL.
Response Example:
{
  "res": "Cosecha creada exitosamente",
  "harvests": [2569, 2570, 2571],
  "campaigns": [27899, 27900, 27901],
  "denied_fields": [],
  "supplies": null,
  "created_labours": [
    {
      "field_id": 1000,
      "labour_uuid": "4e56951b-652a-11ea-bd20-8fc732719012",
      "campaign_id": 27899
    },
    {
      "field_id": 1001,
      "labour_uuid": "4e56951c-652a-11ea-bd20-034910106182",
      "campaign_id": 27900
    },
    {
      "field_id": 1002,
      "labour_uuid": "4e569526-652a-11ea-bd20-2b7c9ee21e33",
      "campaign_id": 27901
    }
  ]
}
Extra parameters will also be observed in the responses. These are kept for backward compatibility but are contained in the above-mentioned and can therefore be ignored.
Specific errors
| Code | Description | 
|---|---|
| 1 | Without authorization | 
| 93,94,95,96,97 | Internal errors in the creation of inputs | 
PATCH
Modification of a harvest.
The Modify Labour feature is required to be able to use it.
Content-Type: application/json
PATCH /registro_campo/cosecha
Unlike the POST request, in this case it is not possible to operate on more than one labour at the same time.
Include in the body of the query the parameters:
- uuid:- string, UUID of the labour you want to modify.
- id:- integer, ID of the labour to be modified
- campaign:- integer, ID of the new season
- attachments:- array with strings, UUIDs array that contains the labour attachments.
- status:- integer, 1: planned, 2: executed, 3: cancelled
- date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- completion_date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- observations:- string, free text field
- inputs:- array with jsons, discussed in the preceding paragraphs, details of which can be found here
- yield:- float, yield obtained in the harvest
- unit:- string, unit of measurement of yield.
- humidity:- float, humidity at harvesting
- quality:- string, free text field for recording the quality obtained
It is mandatory to include the entire object, with modified values.
Response example:
{
  "status": "harvest updated successfully",
  "uuid": null,
  "result": "OK",
  "id": 2569
}
Specific errors
| Code | Description | 
|---|---|
| 1 | Without authorization | 
| 93,94,95,96,97 | Internal errors in the creation of inputs | 
GET
List of all the data associated with a harvest registered by the user.
In order to use this API, the View Season feature is required.
Content-Type: text/plain
GET /registro_campo/cosecha
URL Parameters:
- uuid:- string, harvest UUID
Response example:
{
  "status": 1,
  "inputs": {
    "1170": {
      "user_input": false,
      "name": "cloruro de potasio cofco intl",
      "density": null,
      "company": "cofco international argentina s.a.",
      "dose": 3,
      "state": "granulado",
      "observations": null,
      "components": [
        {
          "uuid": "00339bba-dc00-11ea-a16d-bb9b85708912",
          "active_principle": true,
          "eiq_1": null,
          "percentage": "0.5",
          "id": 3,
          "name": "K"
        }
      ],
      "composition": "0-0-50",
      "type": "fertilizante",
      "id": 1170,
      "unit": "lt/ha",
      "uuid": "bc77d2b9-dc04-11ea-a16d-ab222b5d6525"
    }
  },
  "campaign": 1303,
  "type_id": 2,
  "labour_uuid": "c9d6eae4-dda2-11ea-a16d-a7301cf737fd",
  "type_name": "cosecha",
  "yield": 0.0,
  "completion_date": null,
  "observations": "qwerty short text",
  "labour_id": 507,
  "date": "2020-08-13T00:00:00Z",
  "quality": "",
  "unit": "tn/ha"
}
Specific errors
| Code | Description | 
|---|---|
| 0 | Without authorization | 
| 1 | General error | 
DELETE
Deletion of a particular harvest.
The Delete Labour feature is required in order to use it.
Content-Type: text/plain
DELETE /registro_campo/cosecha
URL parameters:
- uuid:- string, harvest UUID
Response example:
{
  "res": "eliminado",
  "result": "labour deleted",
  "id": 25679
}
Applications
Types
Any application can be associated with a particular type, this being merely optional and for information purposes.
| ID | Type | 
|---|---|
| 1 | Herbicide | 
| 2 | Fungicide | 
| 3 | Insecticide | 
| 4 | Fertilizer | 
| 5 | Amendment | 
APIs
POST
Creation of a new application_labour.
The Create Labour feature is required to be able to use it.
Content-Type: application/json
POST /registro_campo/aplicacion
The same labour can be loaded in more than one season, thus facilitating the registration of activities that apply to more than one field, with the same parameters. Internally this generates the creation of as many labours as seasons are specified, using the same data for each one. Thus, this is an abstraction at the API level, but not a attribute of the internal data model (where a labour is associated with one and only one season).
In the body of the query, include the parameters:
- uuids:- string array, vector with UUIDs V1 (string) to identify the created labour(s).
- fields:- integer array, vector with IDs of fields in which the labour will be recorded
- campaigns:- integer array, vector with seasons IDs (if no fields are specified)
- yeargroup:- integer, year of the season (YYYYY)
- biennial:- boolean, allows to define season name as Year/Year+1 (e.g. 2019/20) or YYYYY (2019)
- status:- integer, labour status (see status)
- date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- completion_date:- string, in case it is a completed labour (YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ)
- observations:- string, free text field to record what you want to record
- inputs:- array with jsons, the list of inputs used (see detail)
- category:- integer, type ID of application (see types of applications)
It is mandatory to specify at least one field or at least one season to assign the application to, the remaining parameters can be left out, the default values being:
- uuids: are generated automatically.
- yeargroup: current year
- biennial: True
- status: 2
- date: current date
- The rest are set to NULL.
Response example:
{
  "campaigns": [1355, 1356],
  "applications": [567, 566],
  "denied_fields": [],
  "inputs": [1167, 1168, 1165, 1166],
  "productos": [
    {
      "nombre": null,
      "id": 1167
    },
    {
      "nombre": null,
      "id": 1168
    },
    {
      "nombre": null,
      "id": 1165
    },
    {
      "nombre": null,
      "id": 1166
    }
  ],
  "res": "Aplicación creada exitosamente",
  "id_ciclo": 1355,
  "id": 567,
  "created_labours": [
    {
      "field_id": 2000,
      "labour_uuid": "4e569523-652a-11ea-bd20-2bbd8b3ef0fb",
      "campaign_id": 1355
    },
    {
      "field_id": 2001,
      "labour_uuid": "4f2026b4-7806-11ea-bd20-43282af2676a",
      "campaign_id": 1356
    }
  ]
}
Specific errors
| Code | Description | 
|---|---|
| 1 | Without Authorization | 
| 93,94,95,96,97 | Internal errors in the creation of inputs | 
PATCH
Modification of an application.
The Modify Labour feature is required in order to use it.
Content-Type: application/json
PATCH /registro_campo/aplicacion
Unlike the POST request, in this case it is not possible to operate on more than one labour at the same time.
Include in the query body the parameters:
- 
uuid:string, UUID of the labour you want to modify.
- 
id:integer, ID of the labour to be modified
- 
campaign:integer, ID of the new season
- 
status:integer, 1: planned, 2: executed, 3: cancelled
- 
date:string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- 
attachments:array with strings, UUIDs array that contains the labour attachments.
- 
completion_date:string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- 
observations:string, free text field
- 
inputs:array with jsons, discussed in the preceding paragraphs, details of which can be found here
- 
category:integer, type ID of application (see application types)It is mandatory to include the entire object, with modified values. 
Specific errors
| Code | Description | 
|---|---|
| 1 | Without authorization | 
| 93,94,95,96,97 | Internal errors in the creation of inputs | 
GET
Listing of an application registered by the user.
In order to use this API, the View Season feature is required.
Content-Type: text/plain
GET /registro_campo/aplicacion
URL parameters:
- uuid:- string, UUID of the application
Response example:
{
  "status": 1,
  "inputs": {
    "1078": {
      "user_input": true,
      "name": "input_front_10",
      "density": null,
      "company": null,
      "dose": 1010,
      "state": null,
      "observations": null,
      "components": [],
      "composition": null,
      "type": null,
      "id": 1078,
      "unit": "lt/ha",
      "uuid": "5b6a2767-8357-11ea-bd20-dbb8b3e04708"
    },
    "1079": {
      "user_input": true,
      "name": "input_front_11",
      "density": null,
      "company": null,
      "dose": 1111,
      "state": null,
      "observations": null,
      "components": [],
      "composition": null,
      "type": null,
      "id": 1079,
      "unit": "lt/ha",
      "uuid": "5b6a2768-8357-11ea-bd20-73c5d15c4dca"
    }
  },
  "campaign": 1317,
  "type_id": 1,
  "labour_uuid": "5b6a2762-8357-11ea-bd20-0384d11c975b",
  "type_name": "aplicacion",
  "completion_date": null,
  "observations": "rolo - front web",
  "labour_id": 516,
  "date": "2020-04-20T00:00:00Z",
  "category_id": null,
  "category_name": null
}
Specific errors
| Code | Description | 
|---|---|
| 0 | Withour authorization | 
| 1 | General error | 
DELETE
Deleting an application.
The Delete Labour feature is required in order to use it.
Content-Type: text/plain
DELETE /registro_campo/aplicacion
URL parameters:
- uuid:- string, UUID of the application
Response example:
{
  "res": "eliminado",
  "result": "labour deleted",
  "id": 25679
}
Other labours
Types
It is needed to know the other labours types, to identify another labour apart from application, sow and harvest
GET /registro_campo/tipos_labores
Response example:
[
  {
    "nombre": "Transplante",
    "id_tipo": 1
  },
  {
    "nombre": "Raleo",
    "id_tipo": 2
  },
  {
    "nombre": "Recolección",
    "id_tipo": 3
  }
]
NOTE - The response example do not have all types of other labours and those can change or be updated, so that it's necessary to get them from the endpoint.
Costs types
This endpoint returns costs types for other labours
GET /registro_campo/tipos_costos_otros_labores
Response example:
[
	{
		"nombre": "aplicacion",
		"id": 0
	},
	{
		"nombre": "mano de obra",
		"id": 1
	}
]
APIs
POST
Creation of a new labour of different type.
The Create Labour feature is required to be able to use it.
Content-Type: application/json
POST /registro_campo/otroslabores
The same labour can be loaded in more than one season, thus facilitating the registration of activities that apply to more than one field, with the same parameters. Internally this generates the creation of as many labours as seasons are specified, using the same data for each one. Thus, this is an abstraction at the API level, but not a attribute of the internal data model (where a labour is associated with one and only one season).
In the body of the query, include the parameters:
- uuids:- string array, vector with UUIDs V1 (string) to identify the created labour(s).
- fields:- integer array, vector with IDs of fields in which the labour will be recorded
- campaigns:- integer array, vector with seasons IDs (if no fields are specified)
- yeargroup:- integer, year of the season (YYYYY)
- biennial:- boolean, allows to define season name as Year/Year+1 (e.g. 2019/20) or YYYYY (2019)
- status:- integer, labour status (see status)
- date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- completion_date:- string, in case it is a completed labour (YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ)
- observations:- string, free text field to record what you want to record
- inputs:- array with jsons, the list of inputs used (see detail)
- tipo_otro_labor:- integer,- required, labour type (min: 0)(see types
- superficie_real:- number, real surface value
- unidad_medida:- text, real surface unit
- extra_cost:- object, extra labour costs- materiales:- object, materials costs- value:- integer, cost value
- unit:- string, currency unit
 
 
- labour_cost:- object, cost and cost type- labour_type:- integer, cost type (see detail)
- unit:- string, currency unit
- value:- integer, value
 
It is mandatory to specify at least one field or at least one season to assign the other labour to, the remaining parameters can be left out, the default values being:
- uuids: are generated automatically.
- yeargroup: current year
- biennial: True
- status: 2
- date: current date
- The rest are set to NULL.
Response example:
{
	"campaigns": [
		65824
	],
	"inputs": null,
	"other_labour": [
		957
	],
	"denied_fields": [],
	"productos": [],
	"res": "Labor creada exitosamente",
	"id_ciclo": 65824,
	"id": 957,
	"created_labours": [
		{
			"labour_uuid": "298ce4de-e828-11ec-835a-9fdfc0b1c03e",
			"field_id": 245584,
			"campaign_id": 65824
		}
	]
}
Specific errors
| Code | Description | 
|---|---|
| 1 | Without Authorization | 
| 93,94,95,96,97 | Internal errors in the creation of inputs | 
PATCH
Modification of other labour.
The Modify Labour feature is required in order to use it.
Content-Type: application/json
PATCH /registro_campo/otroslabores
Unlike the POST request, in this case it is not possible to operate on more than one labour at the same time.
Include in the query body the parameters:
- uuid:- string,- required, UUID of the labour you want to modify.
- id:- integer, ID of the labour to be modified
- campaign:- integer, ID of the new season
- status:- integer, 1: planned, 2: executed, 3: cancelled
- date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- attachments:- array with strings, UUIDs array that contains the labour attachments.
- completion_date:- string, YYYYY-MM-DD or YYYYY-MM-DDTHH:MM:SSZ
- observations:- string, free text field
- inputs:- array with jsons, discussed in the preceding paragraphs, details of which can be found here
- tipo_otro_labor:- integer, labour type (min: 0)(see types
- superficie_real:- number, real surface value
- unidad_medida:- text, real surface unit
- extra_cost:- object, extra labour costs- materiales:- object, materials costs- value:- integer, cost value
- unit:- string, currency unit
 
 
- labour_cost:- object, cost and cost type- labour_type:- integer, cost type (see detail)
- unit:- string, currency unit
- value:- integer, value
 
It is mandatory to include in parameter uuid. Any other parameter should be provided only if it is to be modified.
Ejemplo de respuesta:
{
    "status": "labour updated successfully",
    "inputs": {
        "deleted": [],
        "updated": [],
        "created": []
    },
    "uuid": "65be9cc8-e8bd-11ec-835a-1b84e4d36150",
    "res": "updated",
    "result": "OK",
    "id": null
}
Specific errors
| Code | Description | 
|---|---|
| 1 | Without authorization | 
| 93,94,95,96,97 | Internal errors in the creation of inputs | 
GET
Listing of an other labour registered by the user.
In order to use this API, the View Season feature is required.
Content-Type: text/plain
GET /registro_campo/otroslabores
URL parameters:
- uuid:- string,- required, UUID of the other labour
Response example:
{
	"status": 1,
	"inputs": null,
	"attachments": "{}",
	"campaign": 65824,
	"type_id": 4,
	"superficie_real": 190.0,
	"labour_uuid": "65be9cc8-e8bd-11ec-835a-1b84e4d36150",
	"type_name": "otros labores",
	"ha_reales": 0.0,
	"completion_date": null,
	"costs": {
		"inputs": {},
		"materiales": {
			"value": 0,
			"unit": "R$/ha"
		},
		"aplicacion": {},
		"mano_de_obra": {},
		"seed": {},
		"labour": {
			"labour_type": 0,
			"value": "0.00",
			"unit": "R$/ha"
		}
	},
	"observations": "",
	"labour_id": 967,
	"date": "2022-06-08T00:00:00Z",
	"id_tipo_otro_labor": 2,
	"unit": "ha",
	"resources": "{}"
}
Specific errors
| Code | Description | 
|---|---|
| 0 | Withour authorization | 
| 1 | General error | 
DELETE
Deleting any other labour.
The Delete Labour feature is required in order to use it.
Content-Type: text/plain
DELETE /registro_campo/otroslabores
URL parameters:
- uuid:- string,- required, UUID of the other labour
Response example:
{
    "result": "labour deleted",
    "id": 967,
    "uuid": "65be9cc8-e8bd-11ec-835a-1b84e4d36150"
}