John Deere Integration
Overview
Access agricultural data from John Deere Operations Center through the Colmeia middleware. Your John Deere account is connected to your tenant by MT2Data — you only need your tenant bearer secret to make requests.
Base URL: https://colmeia.mt2data.cloud/api/jd
Authentication
All data routes require your tenant bearer secret:
Authorization: Bearer <tenant-secret>
Pagination
John Deere uses HATEOAS pagination. Responses include a links array where a nextPage entry signals additional pages. The middleware rewrites all uri values in links to point through itself, so you can follow pagination links without a JD token:
{
"total": 153,
"links": [
{ "rel": "self", "uri": "https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/flag-categories" },
{ "rel": "nextPage", "uri": "https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/flag-categories?pageOffset=10&itemLimit=10" }
],
"values": [...]
}
Follow the nextPage URI directly — no additional auth headers required.
Organizations & Farms
Get Organizations
Endpoint: GET /jd/data/:tenantId/organizations
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Get Single Organization
Endpoint: GET /jd/data/:tenantId/organizations/:orgId
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Get Organization Settings
Endpoint: GET /jd/data/:tenantId/organizations/:orgId/settings
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/settings \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Get Farms for Organization
Endpoint: GET /jd/data/:tenantId/organizations/:orgId/farms
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/farms \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Fields & Boundaries
Get Fields for Organization
Endpoint: GET /jd/data/:tenantId/organizations/:orgId/fields
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/fields \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
List Boundaries for Organization
Endpoint: GET /jd/data/:tenantId/organizations/:orgId/boundaries
List Boundaries for Field
Endpoint: GET /jd/data/:tenantId/organizations/:orgId/fields/:fieldId/boundaries
Get Boundary by ID
Endpoint: GET /jd/data/:tenantId/organizations/:orgId/fields/:fieldId/boundaries/:boundaryId
Get Field Operation Boundary
Endpoint: GET /jd/data/:tenantId/field-operations/:operationId/boundary
Equipment
Note: The deprecated
/machinesand/implementsendpoints were removed by John Deere on March 15, 2025. Use the Equipment API routes below. Scopeeq1is required.
Get Equipment for Organization
Endpoint: GET /jd/data/:tenantId/organizations/:orgId/equipment
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/equipment \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Response:
{
"total": 1,
"values": [
{
"@type": "Machine",
"id": "equipment-id-123",
"name": "Tractor Model 2022",
"modelYear": 2022,
"links": [...]
}
]
}
Get Equipment by ID
Endpoint: GET /jd/data/:tenantId/equipment/:equipmentId
Get Field Operations for Organization
Endpoint: GET /jd/data/:tenantId/organizations/:orgId/field-operations
Machine Telemetry
These endpoints require the machine to be a connected JD telematics device (active modem). Machines without an active modem return
404or410— this is expected JD behavior, not a middleware error. Check thetelematicsCapablefield on equipment records as an indicator.
Device State Reports
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/machines/MACHINE_ID/device-state-reports \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Machine Alerts
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/machines/MACHINE_ID/alerts \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Location History
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/machines/MACHINE_ID/location-history \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Breadcrumbs
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/machines/MACHINE_ID/breadcrumbs \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Hours of Operation
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/machines/MACHINE_ID/hours-of-operation \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Engine Hours
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/machines/MACHINE_ID/engine-hours \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Assets
List Assets for Organization
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/assets \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Get Asset by ID
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/assets/ASSET_ID \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Get Asset Locations
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/assets/ASSET_ID/locations \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Asset Catalog
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/asset-catalog \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Flags & Preferences
List Flags for Organization
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/flags \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
List Flag Categories
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/flag-categories \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
List Flags for Field
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/fields/FIELD_ID/flags \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Products & Agronomic Catalog
Chemicals
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/chemicals \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Fertilizers
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/fertilizers \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Varieties
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/varieties \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Active Ingredients
Served by the JD Equipment API (scope
eq1required).
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/active-ingredients \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Crop Types
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/crop-types \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Files & Map Layers
Files
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/files \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Map Layer Summaries
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/fields/FIELD_ID/map-layer-summaries \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Map Layers
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/map-layers/LAYER_ID \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Guidance Lines
curl https://colmeia.mt2data.cloud/api/jd/data/YOUR_TENANT_ID/organizations/YOUR_ORG_ID/fields/FIELD_ID/guidance-lines \
-H "Authorization: Bearer YOUR_TENANT_SECRET"
Code Example
const TENANT_ID = 'YOUR_TENANT_ID';
const BASE = 'https://colmeia.mt2data.cloud/api';
const headers = { Authorization: 'Bearer YOUR_TENANT_SECRET' };
// List organizations
const orgs = await fetch(`${BASE}/jd/data/${TENANT_ID}/organizations`, { headers })
.then(r => r.json());
// Get fields for an org
const orgId = orgs.values[0].id;
const fields = await fetch(`${BASE}/jd/data/${TENANT_ID}/organizations/${orgId}/fields`, { headers })
.then(r => r.json());
console.log(`Found ${fields.values?.length} fields`);
Scope Reference
| Scope | Description |
|---|---|
| org1 | View staff, operators, and partners |
| eq1 | View equipment data, machine locations |
| ag1 | View locations, farms, fields |
| ag2 | View + analyze production data, field operations |
| offline_access | Long-term token access |
Error Codes
| Code | Meaning |
|---|---|
no_token_found | Your John Deere account is not connected — contact MT2Data |
org_disabled | This organization has been disabled for your tenant |