Skip to main content

Resumen

Progress Reports track the real-time advancement of field operations campaign by campaign. They consolidate data from planting progress, harvest control, fertilization control, and plant stand into a unified endpoint, replacing older legacy endpoints. This is particularly useful for:
  • Machinery platforms tracking daily planting or harvest progress in hectares
  • ERP systems that need yield and completion data per campaign
  • Analytics platforms consuming crop advancement timelines

Progress types

Each progress record has a progressType that identifies what kind of operation it tracks:
progressTypeOperation
11Harvest progress
13Planting progress
15Fertilization control
17Plant stand control

Endpoints

All Progress Report endpoints are available under v3:
MethodURIDescription
GET/api/v3/third_party/progress_reportList all progress records
GET/api/v3/third_party/harvest_progressHarvest progress only
GET/api/v3/third_party/planting_progressPlanting progress only
GET/api/v3/third_party/planting_controlPlanting control records
GET/api/v3/third_party/plant_stand_controlPlant stand control
GET/api/v3/third_party/fertilization_controlFertilization control
For most integrations, progress_report is the recommended single endpoint since it returns all types filterable by progressType.

Campos de respuesta principales

{
  "id": 402345,
  "date": "2025-12-16T08:18:00-03:00",
  "status": 4,
  "campaign": 506362,
  "progressType": 13,
  "hydricState": 5,
  "baselineHa": 50,
  "progressHaDaily": 5,
  "progressHaTotal": 45,
  "remainingHaTotal": 5,
  "plantedPercent": 90,
  "harvestedPercent": null,
  "progressTnDaily": null,
  "progressTnTotal": null,
  "yieldTnHaPartial": null,
  "yieldTnHaFinal": null,
  "isLast": true,
  "finished": false,
  "machineSamples": [],
  "created_by": "operator@example.com",
  "system_id": 4
}
Key fields explained:
FieldDescription
progressTypeOperation type (11=harvest, 13=planting, 15=fertilization, 17=plant stand)
baselineHaTotal planned hectares for the campaign
progressHaDailyHectares worked on this specific date
progressHaTotalCumulative hectares worked to date
remainingHaTotalHectares still pending
plantedPercentPlanting completion % (only for type 13)
harvestedPercentHarvest completion % (only for type 11)
yieldTnHaPartialPartial yield in Tn/Ha (harvest)
yieldTnHaFinalFinal yield in Tn/Ha (harvest, when finished)
isLastWhether this is the most recent record for this campaign
finishedWhether the operation is fully complete
hydricStateSoil/crop hydric condition at time of report

Filtros

Use standard audit filters for incremental sync:
GET /api/v3/third_party/progress_report?campaign_id=506362&updated_at_from=2025-01-01T00:00:00-03:00
Common filters:
ParameterDescription
campaign_idFilter by specific campaign
updated_at_fromChange detection since last sync
cycle_idFilter by master campaign cycle
page / sizePagination

Updating objective yield on campaigns

If your system tracks planned yields per campaign, you can push that data back to SIMA asynchronously:

Submit update (async)

POST /api/v2/third_party/campaigns/update_objective_yield
[
  {
    "campaign_id": 506362,
    "external_code": "YOUR-ERP-CAMP-001",
    "objective_yield_kg_ha": 4500.0
  },
  {
    "campaign_id": 506363,
    "external_code": "YOUR-ERP-CAMP-002",
    "objective_yield_kg_ha": 3800.0
  }
]
Response — job queued:
{
  "status": true,
  "data": {
    "request_id": "fec770b9-ae3b-42af-aec7-bb030c767d03",
    "status": "RECEIVED"
  }
}

Check job status

GET /api/v2/third_party/campaigns/update_objective_yield/jobs
{
  "data": [
    {
      "request_id": "fec770b9-ae3b-42af-aec7-bb030c767d03",
      "status": "DONE",
      "total_records": 6,
      "processed_records": 6,
      "error_records": 0,
      "created_at": "2026-05-07T12:43:48-03:00",
      "updated_at": "2026-05-07T12:43:53-03:00"
    }
  ]
}

Check specific job

GET /api/v2/third_party/campaigns/update_objective_yield/status/{request_id}
Job statuses: RECEIVEDPROCESSINGDONE / ERROR
The objective yield import is asynchronous. Submit the job, then poll the status endpoint every few seconds until status is DONE or ERROR. Check error_records to detect partial failures.

Frecuencia de sincronización recomendada

Progress reports change frequently during active seasons. Recommended cadence:
  • During planting/harvest season: sync every 15–30 minutes per campaign using updated_at_from
  • Off-season: daily sync or on-demand
  • Always filter by campaign_id to avoid pulling the full dataset on each run

Próximos pasos

Work Orders

Connect progress data to the operations that generated it

Sync Strategy

Apply efficient incremental sync to progress data