Skip to the main content
John Deere Logo

Develop with Deere


PRO Dispatch

Click here for more information on how to get started.

Overview

The resource documentation will provide details for each of the web services available with PRO Dispatch. The details will describe the URL pattern, the HTTP method, the data format, and response codes. For all of the web services, data will be encrypted with SSL and OAuth 2.0 will be used to provide security at the Organization level.

In the documentation, you will see several identifiers (IDs) referenced: sourceId, clientId, farmId, fieldId, and orderId. All of these IDs will be controlled by the BMS. They must be unique within their organization.

PRO Dispatch support four type of Integration schema, The XML Schema Definition files below will help you to check what fields are available with each resources and the type of those fields.

Schema

File

Information

Client/Farm/Field

Download the XSD File

File defines the data type and fields PRO Dispatch will expect for creating/updating Client, Farm, Field, Boundary, Entry Point.

Order

Download the XSD File

File defines the data type and fields PRO Dispatch will expect for creating/updating Work Orders, Products.

Equipment

Download the XSD File

File defines the data type and fields PRO Dispatch will expect for creating/updating Applicators and Tender Machines.

Operator

Download the XSD File

File defines the data type and fields PRO Dispatch will expect for creating/updating Operator information, like name, license information.

About PRO Dispatch

PRO Dispatch is a Work Order Scheduling and Logistics product that contains a web & mobile scheduling application, Applicator iOS & Android tablet app, and Tender truck iOS & Android phone app. The product is designed to help Agronomic Service Providers schedule and manage the delivery and application of application products. PRO Dispatch is designed to work with Agronomics Provider’s existing Business Management System (BMS). Since it works with and does not replace a BMS, PRO Dispatch needs mechanisms for importing and exporting data to a BMS. PRO Dispatch is agnostic to the types of BMS that it integrates with. Any system that provides data in the format that PRO Dispatch expects can integrate with PRO Dispatch.


Endpoints

List Clients

GET

/source/{sourceId}/client
Request Parameters
This resource does not currently take any filters/request parameters.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client

Accept: */*

FieldTypeDescription & Example
client

---

Client information.
Example: See sample response below.
id
integer
Client ID.
Example: 3
name
string
Client Name
Example: Marie Curie
<?xml version="1.0" encoding="UTF-8"?>
<clients xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
   <link>
      <rel>Clients</rel>
      <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/clients</uri>
   </link>
   <client>
      <id>3</id>
      <name>Marie Curie</name>
      <link>
         <rel>Client</rel>
         <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/3</uri>
      </link>
      <id>2</id>
      <name>Artful Dodger</name>
      <link>
         <rel>Client</rel>
         <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/2</uri>
      </link>
      <id>8</id>
      <name>Oliver Twist</name>
      <link>
         <rel>Client</rel>
         <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/8</uri>
      </link>
   </client>
</clients>


View a Client

GET

/source/{sourceId}/client/{clientId}
Request Parameters
This resource does not currently take any filters/request parameters.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client/{clientId}

Accept: */*

FieldTypeDescription & Example
acres
number
Acres of property.
Example: 3.0
street1
string
Street address line 1.
Example: 3 Main St.
street2
string
Street address line 2.
Example: Apt 100
city
string
City.
Example: Maycomb
state
string
State.
Example: AL
zip
string
Zip code.
Example: 30012
email
string
Email address.
Example: atticus.finch@finchlaw.com
phone
string
Phone number.
Example: 123.456.7890
entry-point

---

Includes the coordinates of the entry point of this client's farm.
Example: See sample request below.
boundary

---

Boundary of this client's farm.
Example: See sample request below.
farms

---

Farms belonging to this client. Includes name and ID.
Example: See sample request below.
fields

---

Fields belonging to this client. Includes name and ID.
Example: See sample request below.
<?xml version="1.0" encoding="UTF-8"?>
<client xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
   <id>103010</id>
   <name>Atticus Finch</name>
   <link>
      <rel>client</rel>
      <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000103010</uri>
   </link>
   <acres>3</acres>
   <street1>3 Main Street</street1>
   <street2/>
   <city>Maycomb</city>
   <state>AL</state>
   <zip>30022</zip>
   <email>atticus.finch@finchlaw.com</email>
   <phone>123.456.7890</phone>
   <entryPoint>
      <coordinates/>
   </entryPoint>
   <farms>
      <link>
         <rel>Farms</rel>
         <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000103010/farm</uri>
      </link>
      <farm>
         <id>1</id>
         <name>Church RD Farms</name>
         <link>
            <rel>self</rel>
            <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000103010//farm/1</uri>
         </link>
         <fields>
            <link>
               <rel>Fields</rel>
               <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000103010/farm/1/field</uri>
            </link>
            <field>
               <id>1</id>
               <name>Church RD</name>
               <link>
                  <rel>self</rel>
                  <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000103010/farm/1/field/1</uri>
               </link>
            </field>
         </fields>
      </farm>
   </farms>
   <boundary/>
</client>


Create/Update Client

POST

/source/{sourceID}/client/{clientId}
Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/client/1/

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceID}/client/{clientId}

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
name
string
Client Name.
Example: Atticus Finch
acres
number
Number of acres owned by this client.
Example: 3
street1
string
Street address line 1.
Example: 3 Main St.
city
string
City name.
Example: Maycomb
state
string
State name.
Example: AL
zip
string
Zip code.
Example: 30012
email
string
Email address.
Example: atticus.finch@finchlaw.com
phone
string
Phone number.
Example: 123.456.7890
entry-point

---

Includes the coordinates of the entry point of this client's field.
Example: See sample request below.
boundary

---

Boundary of this client's field.
Example: See sample request below.
<?xml version="1.0" encoding="UTF-8"?>
<client xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:kml="http://earth.google.com/kml/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <name>Atticus Finch</name>
   <acres>3</acres>
   <street1>3 Main Street</street1>
   <city>Maycomb</city>
   <state>AL</state>
   <zip>30022</zip>
   <email>atticus.finch@finchlaw.com</email>
   <phone>123.456.7890</phone>
   <entry-point>
      <coordinates>-84.1, 33.1</coordinates>
   </entry-point>
   <boundary/>
</client>


Delete Client

POST

/source/{sourceId}/client/{clientID}
Note: You would expect that we would use HTTP DELETE here. However, many web hosting environments, including John Deere's, do not allow HTTP DELETES. Because of this we have to "tunnel" our Delete request using the URL.

Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/client/1/

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client/{clientID}?_method=delete

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
name
string
Client Name.
Example: Atticus Finch
acres
number
Number of acres owned by this client.
Example: 3
street1
string
Street address line 1.
Example: 3 Main St.
city
string
City name.
Example: Maycomb
state
string
State name.
Example: AL
zip
string
Zip code.
Example: 30012
email
string
Email address.
Example: atticus.finch@finchlaw.com
phone
string
Phone number.
Example: 123.456.7890
entry-point

---

Includes the coordinates of the entry point of this client's field.
Example: See sample request below.
boundary

---

Boundary of this client's field.
Example: See sample request below.
<?xml version="1.0" encoding="UTF-8"?>
<client xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:kml="http://earth.google.com/kml/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <name>Atticus Finch</name>
   <acres>3</acres>
   <street1>3 Main Street</street1>
   <city>Maycomb</city>
   <state>AL</state>
   <zip>30022</zip>
   <email>atticus.finch@finchlaw.com</email>
   <phone>123.456.7890</phone>
   <entry-point>
      <coordinates>-84.1, 33.1</coordinates>
   </entry-point>
   <boundary/>
</client>


List Farms

GET

/source/{sourceId}/client/farms
Request Parameters
This resource does not currently take any filters/request parameters.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client/farms

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
farm

---

Farm information.
Example: See sample response below.
id
string
Farm ID.
Example: Dornan
name
string
Farm Name
Example: Dornan Farm
<?xml version="1.0" encoding="UTF-8"?>
<farms xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
   <link>
      <rel>self</rel>
      <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000000008/farm</uri>
   </link>
   <farm>
      <id>Dornan</id>
      <name>Dornan Farm</name>
      <link>
         <rel>farm</rel>
         <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000000008/farm/Dornan</uri>
      </link>
   </farm>
   <farm>
      <id>Hill Farm</id>
      <name>Hill Farm</name>
      <link>
         <rel>farm</rel>
         <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000000008/farm/Hill Farm</uri>
      </link>
   </farm>
</farms>


View a Farm

GET

/source/{sourceId}/client/{clientID}/farm/{farmID}
Request Parameters
This resource does not currently take any filters/request parameters.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client/{clientID}/farm/{farmID}

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
id
string
Farm ID.
Example: Michael
name
string
Farm Name
Example: Michael Farm
acres
number
Acres of property.
Example: 3.0
street1
string
Street address line 1.
Example: 3 Main St.
street2
string
Street address line 2.
Example: Apt 100
city
string
City.
Example: Maycomb
state
string
State.
Example: AL
zip
string
Zip code.
Example: 30012
email
string
Email address.
Example: atticus.finch@finchlaw.com
phone
string
Phone number.
Example: 123.456.7890
entry-point

---

Includes the coordinates of the entry point of this client's farm.
Example: See sample request below.
client

---

Clients owning this farm. Includes name and ID.
Example: See sample request below.
fields

---

Fields belonging to this farm. Includes name and ID.
Example: See sample request below.
boundary

---

Boundary of this farm.
Example: See sample request below.
<?xml version="1.0" encoding="UTF-8"?>
<farm xmlns="http://api.deere.com/v3">
   <link>
      <rel>self</rel>
      <uri>https://apicert.soa-proxy.deere.com/nulog/v1/source/x/client/1820680321/farm/Michael</uri>
   </link>
   <id>Michael</id>
   <name>Michael</name>
   <acres>2.0</acres>
   <street1>3 Main Street</street1>
   <street2/>
   <city>Maycomb</city>
   <state>AL</state>
   <zip>30022</zip>
   <email>atticus.finch@finchlaw.com</email>
   <phone>123.456.7890</phone>
   <entry-point>
      <coordinates>-88.39640544530845,41.84997836539172</coordinates>
   </entry-point>
   <client>
      <id>1820680321</id>
      <name>388053996</name>
      <link>
         <rel>client</rel>
         <uri>https://apicert.soa-proxy.deere.com/nulog/v1/client/1820680321</uri>
      </link>
   </client>
   <fields>
      <field>
         <id>ne-1-9-30</id>
         <name>ne-1-9-30</name>
         <link>
            <rel>field</rel>
            <uri>https://apicert.soa-proxy.deere.com/nulog/v1/source/x/client/1820680321/farm/Michael/field/ne-1-9-30</uri>
         </link>
      </field>
   </fields>
   <boundary>
      <Polygon>
         <outerBoundaryIs>
            <LinearRing>
               <coordinates>-89.4041702265531,43.075756410903544 -89.38983650223236,43.06911036569286 -89.395844650262,43.06729198248163 -89.3900081634456,43.07550562982983 -89.37936515758338,43.07594449603532 -89.38254089305701,43.081273334871426</coordinates>
            </LinearRing>
         </outerBoundaryIs>
      </Polygon>
   </boundary>
</farm>


Create/Update Farm

POST

/source/{sourceID}/client/{clientID}/farm/{farmID}
Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/client/1/farm/1

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceID}/client/{clientID}/farm/{farmID}

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
name
string
Farm Name.
Example: Create/Update Farm
acres
number
Number of acres in this farm.
Example: 3
street1
string
Street address.
Example: 3 Main St.
city
string
City name.
Example: Maycomb
state
string
State name.
Example: AL
zip
string
Zip code.
Example: 30012
email
string
Email address.
Example: atticus.finch@finchlaw.com
phone
string
Phone number.
Example: 123.456.7890
entry-point

---

Includes the coordinates of the entry point of this farm.
Example: See sample request below.
boundary

---

Boundary of this farm.
Example: See sample request below.
<?xml version="1.0" encoding="UTF-8"?>
<farm xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:kml="http://earth.google.com/kml/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <name>Finch Farm</name>
   <acres>3</acres>
   <street1>3 Main Street</street1>
   <city>Maycomb</city>
   <state>AL</state>
   <zip>30022</zip>
   <email>atticus.finch@finchlaw.com</email>
   <phone>123.456.7890</phone>
   <entry-point>
      <kml:coordinates>-84.1, 33.1</kml:coordinates>
   </entry-point>
   <boundary/>
</farm>


List Fields

GET

/source/{sourceId}/client/{clientId}/farm/{farmId}/field
Request Parameters
This resource does not currently take any filters/request parameters.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client/{clientId}/farm/{farmId}/field

Accept: */*

FieldTypeDescription & Example
field

---

Field information.
Example: See sample response below.
id
string
Field ID.
Example: 1
name
string
Field Name
Example: Krueger Farm
<?xml version="1.0" encoding="UTF-8"?>
<fields xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
   <link>
      <rel>self</rel>
      <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000000008/farm/Krueger/field</uri>
   </link>
   <field>
      <id>1</id>
      <name>Krueger Farm</name>
      <link>
         <rel>field</rel>
         <uri>https://sandboxaglogicapi.deere.com/aglogic/source/x/client/0000000008/farm/Krueger/field/1</uri>
      </link>
   </field>
</fields>


View a Field

GET

/source/{sourceId}/client/{clientId}/farm/{farmId}/field/{fieldId}
Request Parameters
This resource does not currently take any filters/request parameters.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client/{clientId}/farm/{farmId}/field/{fieldId}

Accept: */*

FieldTypeDescription & Example
id
string
Field ID.
Example: ne-1-9-30
name
string
Field Name.
Example: ne-1-9-30
acres
number
Acres of property.
Example: 3.0
street1
string
Street address line 1.
Example: 3 Main St.
street2
string
Street address line 2.
Example: Apt 100
city
string
City.
Example: Maycomb
state
string
State.
Example: AL
zip
string
Zip code.
Example: 30012
email
string
Email address.
Example: atticus.finch@finchlaw.com
phone
string
Phone number.
Example: 123.456.7890
entry-point

---

Includes the coordinates of the entry point of this client's farm.
Example: See sample request below.
clients

---

Client owning this farm. Includes name and ID.
Example: See sample request below.
farms

---

Farm owning this field Includes name and ID.
Example: See sample request below.
boundary

---

Boundary of this field.
Example: See sample request below.
<?xml version="1.0" encoding="UTF-8"?>
<fields xmlns="http://api.deere.com/v3">
   <link>
      <rel>self</rel>
      <uri>https://apicert.soa-proxy.deere.com/nulog/v1/source/x/client/1820680321/farm/Michael/field/ne-1-9-30</uri>
   </link>
   <id>ne-1-9-30</id>
   <name>ne-1-9-30</name>
   <acres>2.0</acres>
   <street1>3 Main Street</street1>
   <street2/>
   <city>Maycomb</city>
   <state>AL</state>
   <zip>30022</zip>
   <email>atticus.finch@finchlaw.com</email>
   <phone>123.456.7890</phone>
   <entry-point>
      <coordinates>-88.39640544530845,41.84997836539172</coordinates>
   </entry-point>
   <client>
      <id>1820680321</id>
      <name>388053996</name>
      <link>
         <rel>client</rel>
         <uri>https://apicert.soa-proxy.deere.com/nulog/v1/client/1820680321</uri>
      </link>
   </client>
   <farm>
      <id>Michael</id>
      <name>Michael</name>
      <link>
         <rel>field</rel>
         <uri>https://apicert.soa-proxy.deere.com/nulog/v1/source/x/client/1820680321/farm/Michael</uri>
      </link>
   </farm>
   <boundary>
      <Polygon>
         <outerBoundaryIs>
            <LinearRing>
               <coordinates>-89.4041702265531,43.075756410903544 -89.38983650223236,43.06911036569286 -89.395844650262,43.06729198248163 -89.3900081634456,43.07550562982983 -89.37936515758338,43.07594449603532 -89.38254089305701,43.081273334871426s</coordinates>
            </LinearRing>
         </outerBoundaryIs>
      </Polygon>
   </boundary>
</fields>


Create/Update Field

POST

/source/{id}/client/{id}/farm/{id}/field/{id}
Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/client/1/farm/1/field/1

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{id}/client/{id}/farm/{id}/field/{id}

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
name
string
Field Name.
Example: Finch Farms
acres
integer
Number of acres in this field.
Example: 3
street1
string
Street address
Example: 3 Main St.
city
string
City name.
Example: Maycomb
state
string
State name.
Example: AL
zip
string
Zip code.
Example: 30012
email
string
Email address.
Example: atticus.finch@finchlaw.com
phone
string
Phone number.
Example: 123.456.7890
entry-point

---

Includes the coordinates of the entry point of this field.
Example: See sample request below.
boundary

---

Boundary of this client's field.
Example: See sample request below.
<?xml version="1.0" encoding="UTF-8"?>
<field xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:kml="http://earth.google.com/kml/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <name>Finch Farms</name>
   <acres>3</acres>
   <street1>3 Main Street</street1>
   <city>Maycomb</city>
   <state>AL</state>
   <zip>30022</zip>
   <email>atticus.finch@finchlaw.com</email>
   <phone>123.456.7890</phone>
   <entry-point>
      <coordinates>-84.1, 33.1</coordinates>
   </entry-point>
   <boundary/>
</field>


Delete Field

POST

/source/{id}/client/{ID}/farm/{id}/field/{id}
Request URI
POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client/{clientId}/farm/{id}/field/{id}?_method=delete
or, if fields are directly associated with clients,
POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/client/{clientId}/field/{id}?_method=delete
Accept: */*

HTTP Method
POST
Note:You would expect that we would use HTTP DELETE here. However, many web hosting environments, including John Deere's, do not allow HTTP DELETES. Because of this we have to "tunnel" our Delete request using the URL.

Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/client/1/farm/1/field/1

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{id}/client/{ID}/farm/{id}/field/{id}?_method=delete

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
name
string
Field Name.
Example: Finch Farms
acres
integer
Number of acres in this field.
Example: 3
street1
string
Street address
Example: 3 Main St.
city
string
City name.
Example: Maycomb
state
string
State name.
Example: AL
zip
string
Zip code.
Example: 30012
email
string
Email address.
Example: atticus.finch@finchlaw.com
phone
string
Phone number.
Example: 123.456.7890
entry-point

---

Includes the coordinates of the entry point of this field.
Example: See sample request below.
boundary

---

Boundary of this client's field.
Example: See sample request below.
<?xml version="1.0" encoding="UTF-8"?>
<field xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:kml="http://earth.google.com/kml/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <name>Finch Farms</name>
   <acres>3</acres>
   <street1>3 Main Street</street1>
   <city>Maycomb</city>
   <state>AL</state>
   <zip>30022</zip>
   <email>atticus.finch@finchlaw.com</email>
   <phone>123.456.7890</phone>
   <entry-point>
      <coordinates>-84.1, 33.1</coordinates>
   </entry-point>
   <boundary/>
</field>


Get Work Order Details

GET

/source/{sourceId}/order/{orderId}
Request Parameters
This resource does not currently take any filters/request parameters.
Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/apitest/order/ordertotestapi

  • The response contains different fields depending upon the status of the Work Order. For Example - If Work Order is COMPLETE the response will have start-time and end-time with exact timestamp details
  • Only COMPLETE Work Order has observations entered by Operator and Weather details from Weather Source
  • Adjusted material information by operator comes as material-actual with details of adjustment
  • Multi day Work Order or Multi Applicator Work Order has multiple Work Records for each Work instance or for each Machine

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/order/{orderId}

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
field-id
string
Field ID
Example: 1
farm-id
string
Farm ID
Example: 1
client-id
string
Client ID
Example: 1
fields

---

Includes multiple fields associated with an order. Fields can be associated with either one or multiple farms. Include this in the request only if you are requesting multiple fields.
order-number
string
Order Number
Example: 005005
order-group
string
Order Group
Example: 2
order-subgroup
string
Order Subgroup
Example: 3
order-date
string
Order date
Example: 2015-01-01
request-date
string
Request Date
Example: 2015-07-02
applicator

---

Includes the applicator operator and equipment.
Example: See sample response below.
crop
string
Crop Type
Example: Corn
analysis
string
Order Analysis
Example: 10-10-10
total-quantity

---

Includes the unit of measurement and the value of the total quantity.
Example: See sample response below.
density

---

Includes the unit of measurement and the value of the density.
Example: See sample response below.
acres
string
Number of acres in this order.
Example: 101
priority
string
Priority number among other orders.
Example: 1
variable-rate
string
Yes/No indicator as to whether this order is variable rate
Example: 0
application-rate

---

Includes the unit of measurement and the value of the application rate.
Example: See sample response below.
application-type
string
Application Type
Example: LIQUID
deliver-method
string
Order delivery method.
Example: DELIVER
Allowed Values: DELIVER
comments
string
Comments in this order.
Example: Hello
materials

---

Includes the product ID, name, quantity, density, application rate, EPA number, manufacturer, target pest, and adjustability for each material.
Example: See sample response below.
order-id
string
order-id
Example: JohnDeereTest1.1
status
string
The status of the work order
Example: OPEN / INPROCESS / COMPLETE
Allowed Values: OPEN,INPROCESS,COMPLETE
last-update
date
The last updated date of the Work Order
Example: 2020-08-27
completion-date
date
The last completion date of the Work Order
Example: 2020-08-27
completed-acres
number
The actual Acres completed in Work Order
Example: 10.0
tag
string
Order tag
Example: This is the tag.
county
string
Order country
Example: This is the county.
work-records

---

Includes start-time, end-time, work-scheduled, completed-acres, applicator, operator, comments, signature, attachment, observations, material-actual.
Example: See sample response below.
signature
url
Link to the captured signature associated with this work. Note that the client has to do a separate web request to get the signature file, and the link to retrieve the file is provided here.
Example: See sample response below.
attachment
url
Link to an attachment file(s) associated with this work. Note that the client has to do a separate web request to get the attached file, and the link to retrieve the file is provided here.
Example: See sample response below.
observations

---

There may be observations made when the work is performed, such as wind speed, temperature, etc. These observations are captured here. An observation has a name, a value, and optionally a unit of measure. The value can be either a single value or a value range. A single value might be something like "NE" for wind direction. An example range would be "10 – 20 MPH" for wind speed.
Example: See sample response below.
actuals

---

The original work order specified the products to be applied, along with the quantity and rate. If the quantity or rate actually used was different than what was specified, the actual value can be captured here. These actual values can be specified at both the work order level (totals), or at the line item level. The line item will be identified by a product id.
Example: See sample response below.
<?xml version="1.0" encoding="UTF-8"?>
<work-order xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration">
   <field-id>DWD Field</field-id>
   <farm-id>DWD Farm</farm-id>
   <client-id>DWD Client</client-id>
   <fields/>
   <order-number>kanifapitest1_1</order-number>
   <order-group>1</order-group>
   <order-date>2020-08-27</order-date>
   <crop>Corn</crop>
   <total-quantity uom="Lbs">
      15.317</total-quantity>
   <density uom="Lbs/Gal">
      4.0</density>
   <acres uom="ACRE">
      14.9</acres>
   <priority>false</priority>
   <variable-rate>false</variable-rate>
   <application-rate uom="PT">
      2</application-rate>
   <application-type>LIQUID</application-type>
   <delivery-method>DELIVER</delivery-method>
   <comments>Watch out on south side?</comments>
   <materials>
      <material>
         <product-id>207359</product-id>
         <name>HALEX GT</name>
         <quantity uom="GL">
            6.705</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            3.6</application-rate>
         <epa-number>100-1282</epa-number>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
         <product-id>216332</product-id>
         <name>INFANTRY 4L</name>
         <quantity uom="GL">
            3.725</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            1.0</application-rate>
         <epa-number>100-497-534</epa-number>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
         <product-id>199179</product-id>
         <name>FS MAX SUPREME</name>
         <quantity uom="GL">
            4.88</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            1.31</application-rate>
         <epa-number/>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
      </material>
   </materials>
   <order-id>kanifapitest1.1</order-id>
   <status>OPEN</status>
   <last-update>2020-08-27</last-update>
   <completed-acres>0</completed-acres>
   <reviewed>false</reviewed>
   <attachments>https://aglogic.deere.com/nulog/v1/source/11/order/1594/files</attachments>
   <work-records/>
</work-order>

<?xml version="1.0" encoding="UTF-8"?>
<work-order xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration">
   <field-id>DWD Field</field-id>
   <farm-id>DWD Farm</farm-id>
   <client-id>DWD Client</client-id>
   <fields/>
   <order-number>kanifapitest1_1</order-number>
   <order-group>1</order-group>
   <order-date>2020-08-27</order-date>
   <crop>Corn</crop>
   <total-quantity uom="Lbs">
      15.317</total-quantity>
   <density uom="Lbs/Gal">
      4.0</density>
   <acres uom="ACRE">
      14.9</acres>
   <priority>false</priority>
   <variable-rate>false</variable-rate>
   <application-rate>2</application-rate>
   <application-type>LIQUID</application-type>
   <delivery-method>DELIVER</delivery-method>
   <comments>Watch out on south side?</comments>
   <materials>
      <material>
         <product-id>207359</product-id>
         <name>HALEX GT</name>
         <quantity uom="GL">
            6.705</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            3.6</application-rate>
         <epa-number>100-1282</epa-number>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
         <product-id>216332</product-id>
         <name>INFANTRY 4L</name>
         <quantity uom="GL">
            3.725</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            1.0</application-rate>
         <epa-number>100-497-534</epa-number>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
         <product-id>199179</product-id>
         <name>FS MAX SUPREME</name>
         <quantity uom="GL">
            4.88</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            1.31</application-rate>
         <epa-number/>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
      </material>
   </materials>
   <order-id>kanifapitest1.1</order-id>
   <status>INPROCESS</status>
   <last-update>2020-08-27</last-update>
   <completed-acres>0</completed-acres>
   <reviewed>false</reviewed>
   <attachments>https://aglogic.deere.com/nulog/v1/source/11/order/1594/files</attachments>
   <work-records>
      <work-record>
         <start-time>2020-08-27 13:47:45</start-time>
         <work-scheduled>2020-08-27 00:00:00</work-scheduled>
         <completed-acres>0</completed-acres>
         <applicator>
            <operator>gaikwad kanif</operator>
            <equipment>dwdequipmentpune</equipment>
         </applicator>
         <observations/>
      </work-record>
   </work-records>
</work-order>

<?xml version="1.0" encoding="UTF-8"?>
<work-order xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration">
   <field-id>DWD Field</field-id>
   <farm-id>DWD Farm</farm-id>
   <client-id>DWD Client</client-id>
   <fields/>
   <order-number>kanifapitest1_1</order-number>
   <order-group>1</order-group>
   <order-date>2020-08-27</order-date>
   <crop>Corn</crop>
   <total-quantity uom="Lbs">
      15.317</total-quantity>
   <density uom="Lbs/Gal">
      4.0</density>
   <acres uom="ACRE">
      14.9</acres>
   <priority>false</priority>
   <variable-rate>false</variable-rate>
   <application-rate uom="Lbs/Acre">
      2</application-rate>
   <application-type>LIQUID</application-type>
   <delivery-method>DELIVER</delivery-method>
   <comments>Watch out on south side?</comments>
   <materials>
      <material>
         <product-id>207359</product-id>
         <name>HALEX GT</name>
         <quantity uom="GL">
            6.705</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            3.6</application-rate>
         <epa-number>100-1282</epa-number>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
         <product-id>216332</product-id>
         <name>INFANTRY 4L</name>
         <quantity uom="GL">
            3.725</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            1.0</application-rate>
         <epa-number>100-497-534</epa-number>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
         <product-id>199179</product-id>
         <name>FS MAX SUPREME</name>
         <quantity uom="GL">
            4.88</quantity>
         <density uom="Lbs/Gal">
            1.0</density>
         <application-rate uom="PT">
            1.31</application-rate>
         <epa-number/>
         <manufacturer/>
         <target-pest/>
         <adjustable>true</adjustable>
         <name>FS MAX SUPREME BULK</name>
         <quantity>0</quantity>
         <density>0</density>
         <application-rate>0</application-rate>
         <adjustable>false</adjustable>
      </material>
   </materials>
   <order-id>kanifapitest1.1</order-id>
   <status>COMPLETE</status>
   <last-update>2020-08-27</last-update>
   <completion-date>2020-08-27</completion-date>
   <completed-acres>10</completed-acres>
   <reviewed>false</reviewed>
   <attachments>https://aglogic.deere.com/nulog/v1/source/11/order/1594/files</attachments>
   <work-records>
      <work-record>
         <start-time>2020-08-27 13:47:45</start-time>
         <end-time>2020-08-27 13:51:13</end-time>
         <work-scheduled>2020-08-27 00:00:00</work-scheduled>
         <completed-acres>10</completed-acres>
         <applicator>
            <operator>gaikwad kanif</operator>
            <equipment>dwdequipmentpune</equipment>
         </applicator>
         <comments>little bit of moisture</comments>
         <signature>https://aglogic.deere.com/nulog/v1/workrecord/311944543/signature</signature>
         <observations>
            <observation>
               <name>FIELD_CONDITIONS</name>
               <value>Dry</value>
               <name>FIELD_SURFACE_CONDITIONS</name>
               <value>Smooth</value>
               <name>CROP_STAGE</name>
               <value>67</value>
               <name>CROP_CONDITIONS</name>
               <value>Good</value>
               <name>CROP_REGISTRY_CONSULTANT</name>
               <value>Driftwatch</value>
               <name>CROP_REGISTRY_CONSULTATION_DATE</name>
               <value>08/27/20</value>
               <name>APPLICATION_TIMING</name>
               <value>Pre-plant</value>
               <name>PLANTING_DATE</name>
               <value>08/27/20</value>
               <name>TILLAGE_PRACTICE</name>
               <value>No Tillage</value>
               <name>ENDANGERED_SPECIES_IN_AREA</name>
               <value>No</value>
               <name>DISTANCE_FROM_NEIGHBORING_FIELD</name>
               <value>23</value>
               <uom>FEET</uom>
               <name>BUFFER_DISTANCE_NORTH</name>
               <value>12</value>
               <uom>FEET</uom>
               <name>BUFFER_LOCATION_NORTH</name>
               <value>Adjacent Field</value>
               <name>BUFFER_DISTANCE_SOUTH</name>
               <value>42</value>
               <uom>FEET</uom>
               <name>BUFFER_LOCATION_SOUTH</name>
               <value>Current Field</value>
               <name>BUFFER_DISTANCE_EAST</name>
               <value>86</value>
               <uom>FEET</uom>
               <name>BUFFER_LOCATION_EAST</name>
               <value>Adjacent Field</value>
               <name>BUFFER_DISTANCE_WEST</name>
               <value>41</value>
               <uom>FEET</uom>
               <name>BUFFER_LOCATION_WEST</name>
               <value>Current Field</value>
               <name>WEATHER_CAPTURE_METHOD</name>
               <value>DTN</value>
               <name>WIND_DIRECTION</name>
               <value>S</value>
               <name>STARTTIME_WIND_DIRECTION</name>
               <value>S</value>
               <name>STARTTIME_WIND_SPEED</name>
               <value>6</value>
               <uom>MILES_PER_HOUR</uom>
               <name>IS_START_WIND_SPEED_AT_BOOM_HEIGHT</name>
               <value>false</value>
               <name>WIND_SPEED</name>
               <value>6</value>
               <uom>MILES_PER_HOUR</uom>
               <name>IS_END_WIND_SPEED_AT_BOOM_HEIGHT</name>
               <value>false</value>
               <name>STARTTIME_TEMPERATURE</name>
               <value>90</value>
               <uom>DEGREES_FARENHEIT</uom>
               <name>IS_START_TEMP_AT_BOOM_HEIGHT</name>
               <value>false</value>
               <name>TEMPERATURE</name>
               <value>90</value>
               <uom>DEGREES_FARENHEIT</uom>
               <name>IS_END_TEMP_AT_BOOM_HEIGHT</name>
               <value>false</value>
               <name>START_TIME_HUMIDITY</name>
               <value>48</value>
               <name>END_TIME_HUMIDITY</name>
               <value>48</value>
               <name>WIND_SPEED_NEXT_DAY</name>
               <value>10</value>
               <uom>MILES_PER_HOUR</uom>
               <name>WIND_DIRECTION_NEXT_DAY</name>
               <value>NW</value>
               <name>TEMPERATURE_NEXT_DAY</name>
               <value>92</value>
               <name>PRECIPITATION_NEXT_DAY</name>
               <value>20</value>
               <name>APPLICATION_METHOD</name>
               <value>Broadcast/Surface</value>
               <name>GROUND_SPEED</name>
               <value>16 - 20</value>
               <uom>MILES_PER_HOUR</uom>
               <name>BOOM_HEIGHT</name>
               <value>26 - 30</value>
               <uom>INCH</uom>
               <name>BOOM_WIDTH</name>
               <value>100</value>
               <uom>FEET</uom>
               <name>DCM_TIP_TYPE</name>
               <value>Flat Fan</value>
               <name>DCM_TIP_SIZE</name>
               <value>0.2</value>
               <name>DCM_TIP_PRESSURE</name>
               <value>31 - 40</value>
               <uom>POUNDS_PER_INCH_SQUARE</uom>
               <name>DCM_TIP_SPACING</name>
               <value>15</value>
               <uom>INCH</uom>
               <name>PRE_APPLICATION_CLEANOUT_METHOD</name>
               <value>Double Rinse</value>
               <name>PRE_APPLICATION_CLEANOUT_DATE</name>
               <value>08/27/20</value>
               <name>POST_APPLICATION_CLEANOUT_METHOD</name>
               <value>Single Rinse</value>
               <name>POST_APPLICATION_CLEANOUT_DATE</name>
               <value>08/27/20</value>
               <name>DISPOSAL_METHOD</name>
               <value>Loadout pad</value>
               <name>PEST_STAGE</name>
               <value>67</value>
               <name>PEST_PRESSURE</name>
               <value>Heavy</value>
            </observation>
         </observations>
         <actuals>
            <material-actual>
               <product-id>199179</product-id>
               <quantity>250</quantity>
               <application-rate>25</application-rate>
            </material-actual>
         </actuals>
      </work-record>
   </work-records>
</work-order>


Create/Update Work Order

POST

/source/{sourceID}/order/{orderId}
Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/order/5

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceID}/order/{orderId}

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
field-id
string
Field ID
Example: 1
farm-id
string
Farm ID
Example: 1
client-id
string
Client ID
Example: 1
fields

---

Includes multiple fields associated with an order. Fields can be associated with either one or multiple farms. Include this in the request only if you are requesting multiple fields.
Example: See multiple field sample request below.
order-number
string
Order Number
Example: 005005
order-group
string
Order Group
Example: 2
order-subgroup
string
Order Subgroup
Example: 3
order-date
string
Order date
Example: 2015-01-01
request-date
string
Request Date
Example: 2015-07-02
applicator

---

Includes the applicator operator and equipment.
Example: See sample response below.
crop
string
Crop Type
Example: Corn
analysis
string
Order Analysis
Example: 10-10-10
total-quantity

---

Includes the unit of measurement and the value of the total quantity.
Example: See sample response below.
density

---

Includes the unit of measurement and the value of the density.
Example: See sample response below.
acres
string
Number of acres in this order.
Example: 101
priority
string
Priority number among other orders.
Example: 1
variable-rate
string
Yes/No indicator as to whether this order is variable rate
Example: 0
application-rate

---

Includes the unit of measurement and the value of the application rate.
Example: See sample response below.
application-type
string
Application Type
Example: LIQUID
deliver-method
string
Order delivery method.
Example: DELIVER
Allowed Values: DELIVER
comments
string
Comments in this order.
Example: Hello
materials

---

Includes the product ID, name, quantity, density, application rate, EPA number, manufacturer, target pest, and adjustability for each material.
Example: See sample request below.
tag
string
Order tag
Example: This is the tag.
county
string
Order country
Example: This is the county.
<?xml version="1.0" encoding="UTF-8"?>
<work-order xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:kml="http://earth.google.com/kml/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <field-id>1</field-id>
   <farm-id>1</farm-id>
   <client-id>1</client-id>
   <order-number>5005</order-number>
   <order-group>2</order-group>
   <order-subgroup>3</order-subgroup>
   <order-date>2015-01-01</order-date>
   <request-date>2015-07-02</request-date>
   <applicator>
      <operator>Jem Finch</operator>
      <equipment>Tender Truck</equipment>
   </applicator>
   <crop>Corn</crop>
   <analysis>10-10-10</analysis>
   <total-quantity uom="TQLbs">
      1000</total-quantity>
   <density uom="Lbs/Cu. Yard">
      888</density>
   <acres>101</acres>
   <priority>1</priority>
   <variable-rate>0</variable-rate>
   <application-rate uom="Lbs/Acre">
      999</application-rate>
   <application-type>DRY</application-type>
   <delivery-method>DELIVER</delivery-method>
   <comments>Comments</comments>
   <materials>
      <material>
         <product-id>abc123</product-id>
         <name>Product 1</name>
         <quantity uom="PrLbs">
            33</quantity>
         <density uom="Lbs/Cu. Yard">
            44</density>
         <application-rate uom="Lbs/Acre">
            55</application-rate>
         <epa-number>XYZ123456789</epa-number>
         <manufacturer>Dow Chemical</manufacturer>
         <target-pest>Herbaceous</target-pest>
         <adjustable>true</adjustable>
         <product-id>def456</product-id>
         <name>Product 2</name>
         <quantity uom="Lbs">
            10</quantity>
         <density uom="Lbs/Cu. Yard">
            20</density>
         <application-rate uom="Lbs/Acre">
            30</application-rate>
         <adjustable>false</adjustable>
      </material>
   </materials>
   <tag>This is the Tag</tag>
   <county>This is the county</county>
</work-order>

<?xml version="1.0" encoding="UTF-8"?>
<work-order xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:kml="http://earth.google.com/kml/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <client-id>1</client-id>
   <fields>
      <field>
         <field-id>1</field-id>
         <farm-id>1</farm-id>
      </field>
      <field>
         <field-id>2</field-id>
         <farm-id>1</farm-id>
      </field>
      <field>
         <field-id>3</field-id>
         <farm-id>2</farm-id>
      </field>
   </fields>
   <order-number>5005</order-number>
   <order-group>2</order-group>
   <order-subgroup>3</order-subgroup>
   <order-date>2015-01-01</order-date>
   <request-date>2015-07-02</request-date>
   <applicator>
      <operator>Jem Finch</operator>
      <equipment>Tender Truck</equipment>
   </applicator>
   <crop>Corn</crop>
   <analysis>10-10-10</analysis>
   <total-quantity uom="TQLbs">
      1000</total-quantity>
   <density uom="Lbs/Cu. Yard">
      888</density>
   <acres>101</acres>
   <priority>1</priority>
   <variable-rate>0</variable-rate>
   <application-rate uom="Lbs/Acre">
      999</application-rate>
   <application-type>DRY</application-type>
   <delivery-method>DELIVER</delivery-method>
   <comments>Comments</comments>
   <materials>
      <material>
         <product-id>abc123</product-id>
         <name>Product 1</name>
         <quantity uom="PrLbs">
            33</quantity>
         <density uom="Lbs/Cu. Yard">
            44</density>
         <application-rate uom="Lbs/Acre">
            55</application-rate>
         <epa-number>XYZ123456789</epa-number>
         <manufacturer>Dow Chemical</manufacturer>
         <target-pest>Herbaceous</target-pest>
         <adjustable>true</adjustable>
         <product-id>def456</product-id>
         <name>Product 2</name>
         <quantity uom="Lbs">
            10</quantity>
         <density uom="Lbs/Cu. Yard">
            20</density>
         <application-rate uom="Lbs/Acre">
            30</application-rate>
         <adjustable>false</adjustable>
      </material>
   </materials>
   <tag>This is the Tag</tag>
   <county>This is the county</county>
</work-order>


Delete Work Order

POST

/source/{sourceId}/order/{orderID}
Note: You would expect that we would use HTTP DELETE here. However, many web hosting environments, including John Deere's, do not allow HTTP DELETES. Because of this we have to "tunnel" our Delete request using the URL.

Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/order/5

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/order/{orderID}?_method=delete

Accept: */*

FieldTypeDescription & Example
field-id
string
Field ID
Example: 1
farm-id
string
Farm ID
Example: 1
client-id
string
Client ID
Example: 1
order-number
string
Order Number
Example: 005005
order-group
string
Order Group
Example: 2
order-subgroup
string
Order Subgroup
Example: 3
order-date
string
Order date
Example: 2015-01-01
request-date
string
Request Date
Example: 2015-07-02
applicator

---

Includes the applicator operator and equipment.
Example: See sample response below.
crop
string
Crop Type
Example: Corn
analysis
string
Order Analysis
Example: 10-10-10
total-quantity

---

Includes the unit of measurement and the value of the total quantity.
Example: See sample response below.
density

---

Includes the unit of measurement and the value of the density.
Example: See sample response below.
acres
string
Number of acres in this order.
Example: 101
priority
string
Priority number among other orders.
Example: 1
variable-rate
string
Yes/No indicator as to whether this order is variable rate
Example: 0
application-rate

---

Includes the unit of measurement and the value of the application rate.
Example: See sample response below.
application-type
string
Application Type
Example: LIQUID
deliver-method
string
Order delivery method.
Example: DELIVER
Allowed Values: DELIVER
comments
string
Comments in this order.
Example: Hello
materials

---

Includes the product ID, name, quantity, density, application rate, EPA number, manufacturer, target pest, and adjustability for each material.
Example: See sample request below.
tag
string
Order tag
Example: This is the tag.
county
string
Order country
Example: This is the county.
<?xml version="1.0" encoding="UTF-8"?>
<work-order xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:kml="http://earth.google.com/kml/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <field-id>1</field-id>
   <farm-id>1</farm-id>
   <client-id>1</client-id>
   <order-number>5005</order-number>
   <order-group>2</order-group>
   <order-subgroup>3</order-subgroup>
   <order-date>2015-01-01</order-date>
   <request-date>2015-07-02</request-date>
   <applicator>
      <operator>Jem Finch</operator>
      <equipment>Tender Truck</equipment>
   </applicator>
   <crop>Corn</crop>
   <analysis>10-10-10</analysis>
   <total-quantity uom="TQLbs">
      1000</total-quantity>
   <density uom="Lbs/Cu. Yard">
      888</density>
   <acres>101</acres>
   <priority>1</priority>
   <variable-rate>0</variable-rate>
   <application-rate uom="Lbs/Acre">
      999</application-rate>
   <application-type>DRY</application-type>
   <delivery-method>DELIVER</delivery-method>
   <comments>Comments</comments>
   <materials>
      <material>
         <product-id>abc123</product-id>
         <name>Product 1</name>
         <quantity uom="Lbs">
            33</quantity>
         <density uom="Lbs/Cu. Yard">
            44</density>
         <application-rate uom="Lbs/Acre">
            55</application-rate>
         <epa-number>XYZ123456789</epa-number>
         <manufacturer>Dow Chemical</manufacturer>
         <target-pest>Herbaceous</target-pest>
         <adjustable>true</adjustable>
         <product-id>def456</product-id>
         <name>Product 2</name>
         <quantity uom="Lbs">
            10</quantity>
         <density uom="Lbs/Cu. Yard">
            20</density>
         <application-rate uom="Lbs/Acre">
            30</application-rate>
         <adjustable>false</adjustable>
      </material>
   </materials>
   <tag>This is the Tag</tag>
   <county>This is the county</county>
</work-order>


Get/Download Work Order Attachment

GET

/source/{sourceId}/order/{orderId}/files/{fileId}
Request Parameters
This resource does not currently take any filters/request parameters.

Response Details
Response will be an octet stream and the file will be downloaded when the request is completed.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/order/{orderId}/files/{fileId}

Accept: */*


List Work Order Attachments

GET

/source/{sourceId}/order/{orderId}/files
Request Parameters
This resource does not currently take any filters/request parameters.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/order/{orderId}/files

Accept: */*

FieldTypeDescription & Example
order-number
string
Order Number.
Example: 1594
files

---

Contains the file name and url details.
Example: See sample response below.
file
url
Link to download the file.
Example: See sample response below.
<?xml version="1.0" encoding="UTF-8"?>
<work-order-attachment xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration">
   <order-number>1594</order-number>
   <files>
      <file>
         <name>Mike_farms1.zip</name>
         <uri>https://aglogic.deere.com/nulog/v1/source/11/order/1594/files/8c43d0ca-6e47-4e4d-8399-a29199ac4ace</uri>
         <name>Mike_farms2.zip</name>
         <uri>https://aglogic.deere.com/nulog/v1/source/11/order/1595/files/02152ab5-d72f-4d0e-ad66-8604d92bdc2b</uri>
      </file>
   </files>
</work-order-attachment>


Create/Update Work Order Attachments

POST

/source/{sourceId}/order/{orderId}/attachment
Data Format
The attachment should be a single file and should be posted as multipart form encoded data. (See http://www.w3.org/TR/html401/interact/forms.html) The client of this POST should behave the same as a browser that is dealing with the following bit of HTML:
<form method="post" action="../v1/source/xyz/order/abc/attachment" enctype="multipart/form-data">
<input type="file" name="attachment"/>
<input type="submit"/>
</form>

When the browser is handling this HTML there will be a "Browse" button that the user can interact with and get a dialog to find and select a file. Submitting the form transfers the file to the server. The filename is also passed to the server, so the client should try to pass a meaningful name, like + "prescription.zip".

The reference to a browser and HTML is only for comparison. A client will actually interact with whatever HTTP Client code components are available in their development environment.

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/order/{orderId}/attachment

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.

Create Multiple Attachments for a Work Order

POST

/source/{sourceId}/order/{orderID}/files
Data Format
The attachment should be a single file and should be posted as multipart form encoded data. (See http://www.w3.org/TR/html401/interact/forms.html). File formats that are allowed for this request are pdf and zip only. The client of this POST should behave the same as a browser that is dealing with the following bit of HTML:
<form method="post" action="../v1/source/xyz/order/abc/attachment" enctype="multipart/form-data">
<input type="file" name="attachment"/>
<input type="submit"/>
</form>

When the browser is handling this HTML there will be a "Browse" button that the user can interact with and get a dialog to find and select a file. Submitting the form transfers the file to the server. The filename is also passed to the server, so the client should try to pass a meaningful name, like + "prescription.zip". Multiple files can be attached with this request.

The reference to a browser and HTML is only for comparison. A client will actually interact with whatever HTTP Client code components are available in their development environment.

Response will be unique id of the file stored.

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/order/{orderID}/files

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
b8cfb9fb-c55e-4841-a58d-008e96336879


Delete Work Order Attachment

DELETE

/source/{sourceId}/order/{orderId}/files/{uuid}
Request Parameters
This resource does not currently take any filters/request parameters.

Note:
UUID is the response of the POST request of file creation. (For Example : b8cfb9fb-c55e-4841-a58d-008e96336879)

Request URI

DELETE https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/order/{orderId}/files/{uuid}

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example

Retrieve Work Order Status

GET

/source/{sourceId}/order/{orderId}/status
Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/order/5/status

Note: API is deprecated. Use GET /source/{sourceID}/order/{orderId} moving forward. The new API detailed information can be found under Work Order API resource.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/order/{orderId}/status

Accept: */*

CodeMessageDescription

200

---Success.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above, and that the orderId is known to PRO Dispatch.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
order-id
string
Order ID
Example: 5
field-id
string
Field ID
Example: 1
farm-id
string
Farm ID
Example: 1
client-id
string
Client ID
Example: 1
status
string
Work Order Status
Example: COMPLETE
completion-date
string
Completion Date
Example: 2020-08-27
completed-acres
decimal
Number of completed acres.
Example: 252.0
reviewed
boolean
Indicates whether this status has been reviewed.
Example: false
work-records

---

Includes the scheduled and completed dates, completed acres, applicator details, comments, and observations from each work order.
Example: See sample response below.
<?xml version="1.0" encoding="UTF-8"?>
<work-order-status>
   <order-id>5</order-id>
   <field-id>1</field-id>
   <farm-id>1</farm-id>
   <client-id>1</client-id>
   <status>COMPLETE</status>
   <completion-date>2015-08-20</completion-date>
   <completed-acres>252.0</completed-acres>
   <reviewed>false</reviewed>
   <work-records>
      <work-record>
         <work-scheduled>2015-08-20</work-scheduled>
         <work-completed>2015-08-20</work-completed>
         <completed-acres>126.0</completed-acres>
         <applicator>
            <operator/>
            <equipment>Test Applicator Demo</equipment>
         </applicator>
         <comments/>
         <signature>https://aglogic.deere.com/nulog/v1/workrecord/1/signature</signature>
         <observations>
            <observation>
               <name>TOTAL_VOLUME</name>
               <value>0</value>
               <uom/>
               <name>VOLUME</name>
               <value>0</value>
               <uom/>
               <name>WEIGHT</name>
               <value>0</value>
               <uom/>
            </observation>
         </observations>
         <work-scheduled>2015-08-20</work-scheduled>
         <work-completed>2015-08-20</work-completed>
         <completed-acres>126.0</completed-acres>
         <applicator>
            <operator/>
            <equipment>Test Applicator Demo</equipment>
         </applicator>
         <comments/>
         <signature>https://aglogic.deere.com/nulog/v1/workrecord/1/signature</signature>
         <observations>
            <observation>
               <name>TOTAL_VOLUME</name>
               <value>0</value>
               <uom/>
               <name>VOLUME</name>
               <value>0</value>
               <uom/>
               <name>WEIGHT</name>
               <value>0</value>
               <uom/>
            </observation>
         </observations>
      </work-record>
   </work-records>
</work-order-status>


Retrieve Work Order Status Feed

GET

/source/{sourceId}/orderstatusfeed
Data Format
See the example provided and the Atom Specification (http://tools.ietf.org/html/rfc4287)

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/orderstatusfeed

Accept: */*

ParameterTypeDescription & ExampleDefaultIn
deliverMethod

string

Filter by the delivery method. This filter takes the following values: PICKUP; DELIVER; DELIVER_APPLY

Example: PICKUP

N/A

N/A

CodeMessageDescription

200

---Success.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
category

---

Includes the term and label for the category.
Example: See sample response below.
id
string
Status Feed ID
Example: 10
title
string
Status feed title
Example: Order GHE92.2.9 status changed.
link

---

Includes the href link to this status.
Example: See sample response below.
updated
string
Date and time the status was last updated.
Example: 2015-08-20T19:31:55Z
summary
string
Status summary.
Example: Summary of this status.
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
   <id>https://sandboxaglogicapi.deere.com/aglogic/source/123/orderstatusfeed</id>
   <title>Work Order Status Feed</title>
   <updated>2016-05-25T21:30:03Z</updated>
   <link/>
   <entry>
      <category/>
      <id>200</id>
      <title>Order GHE92.2.9 status changed.</title>
      <link/>
      <updated>2015-08-31T16:50:18Z</updated>
      <summary/>
      <category/>
      <id>100</id>
      <title>Order GHE92.2.9 status changed.</title>
      <link/>
      <updated>2015-08-31T16:50:18Z</updated>
      <summary/>
      <category/>
      <id>10</id>
      <title>Order GHE92.2.9 status changed.</title>
      <link/>
      <updated>2015-08-20T19:31:55Z</updated>
      <summary/>
      <category/>
      <id>5</id>
      <title>Order 005006.2.3 status changed.</title>
      <link/>
      <updated>2015-08-20T18:48:03Z</updated>
      <summary/>
      <category/>
      <id>1</id>
      <title>Order 1 status changed.</title>
      <link/>
      <updated>2015-03-11T06:35:42Z</updated>
      <summary/>
   </entry>
</feed>


Create/Update Mobile User

POST

/source/{sourceId}/mobileuser/{mobileUserId}
Request Parameters
This resource does not currently take any filters/request parameters.

Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/mobileuser/atticusf

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/mobileuser/{mobileUserId}

Accept: */*

CodeMessageDescription

200

---Success.

400

---Bad Request. Check that the passed data is in the right format and passes schema validation.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above, and that the orderId is known to PRO Dispatch.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
first-name
string
Mobile User First Name
Example: Atticus
last-name
string
Mobile User Last Name
Example: Finch
email
string
Email Address
Example: atticus.finch@finchlaw.com
license-number
string
License number
Example: XYZ 101010
state
string
State that license was issued in.
Example: IL
expiration
date
Expiration date for the license.
Example: 2021-12-31
{
  "mobile-user": {
    "first-name": "Atticus",
    "last-name": "Finch",
    "email": "atticus.finch@finchlaw.com",
    "licenses": {
      "license": {
        "license-number": "XYZ 101010",
        "state": "IL",
        "expiration": "2021-12-31"
      }
    }
  }
}


List All Equipments

GET

/source/{sourceId}/equipment
Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/apitest/equipment

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/equipment

Accept: */*

CodeMessageDescription

200

---Success.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above, and that the orderId is known to PRO Dispatch.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
name
string
Equipment name.
Example: Default Application
id
string
Equipment id unique to BMS.
Example: Application External ID
equipment-type
string
Equipment Type
Example: APPLICATOR
load-types-supported
string
Load types supported by this equipment
Example: ANHYDROUS
attributes

---

Includes the name and value of each attribute.
Example: See sample response below.
<?xml version="1.0" encoding="UTF-8"?>
<equipments xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration">
   <equipment>
      <name>Test1</name>
      <equipment-type>APPLICATOR</equipment-type>
      <load-types-supported>
         <load-type>LIQUID</load-type>
      </load-types-supported>
      <attributes>
         <attribute>
            <name>ACRES_PER_HOUR</name>
            <value>100</value>
         </attribute>
      </attributes>
      <name>Test2</name>
      <equipment-type>APPLICATOR</equipment-type>
      <load-types-supported>
         <load-type>DRY</load-type>
         <load-type>LIQUID</load-type>
         <load-type>ANHYDROUS</load-type>
      </load-types-supported>
      <attributes>
         <attribute>
            <name>ACRES_PER_HOUR</name>
            <value>0</value>
         </attribute>
      </attributes>
      <name>Test3</name>
      <equipment-type>APPLICATOR</equipment-type>
      <load-types-supported>
         <load-type>DRY</load-type>
         <load-type>LIQUID</load-type>
         <load-type>ANHYDROUS</load-type>
      </load-types-supported>
      <attributes>
         <attribute>
            <name>ACRES_PER_HOUR</name>
            <value>34</value>
         </attribute>
      </attributes>
      <id>8yu</id>
      <name>10_jantest-1</name>
      <equipment-type>APPLICATOR</equipment-type>
      <load-types-supported>
         <load-type>DRY</load-type>
         <load-type>LIQUID</load-type>
         <load-type>ANHYDROUS</load-type>
      </load-types-supported>
      <attributes>
         <attribute>
            <name>ACRES_PER_HOUR</name>
            <value>0</value>
         </attribute>
      </attributes>
      <name>10_jan_2018</name>
      <equipment-type>APPLICATOR</equipment-type>
      <load-types-supported>
         <load-type>DRY</load-type>
         <load-type>LIQUID</load-type>
         <load-type>ANHYDROUS</load-type>
      </load-types-supported>
      <attributes>
         <attribute>
            <name>ACRES_PER_HOUR</name>
            <value>12</value>
         </attribute>
      </attributes>
      <name>11111</name>
      <equipment-type>APPLICATOR</equipment-type>
      <load-types-supported>
         <load-type>DRY</load-type>
         <load-type>LIQUID</load-type>
         <load-type>ANHYDROUS</load-type>
      </load-types-supported>
      <attributes>
         <attribute>
            <name>ACRES_PER_HOUR</name>
            <value>0</value>
         </attribute>
      </attributes>
   </equipment>
</equipments>


List Equipment

GET

/source/{sourceId}/equipment/{equipmentId}
Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/apitest/equipment/equtest1

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/equipment/{equipmentId}

Accept: */*

CodeMessageDescription

200

---Success.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above, and that the orderId is known to PRO Dispatch.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
name
string
Equipment name.
Example: Default Application
id
string
Equipment id unique to BMS.
Example: Application External ID
equipment-type
string
Equipment Type
Example: APPLICATOR
load-types-supported
string
Load types supported by this equipment
Example: ANHYDROUS
attributes

---

Includes the name and value of each attribute.
Example: See sample response below.
<?xml version="1.0" encoding="UTF-8"?>
<equipment xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration">
   <name>Test1</name>
   <equipment-type>APPLICATOR</equipment-type>
   <load-types-supported>
      <load-type>DRY</load-type>
      <load-type>LIQUID</load-type>
      <load-type>ANHYDROUS</load-type>
   </load-types-supported>
   <attributes>
      <attribute>
         <name>ACRES_PER_HOUR</name>
         <value>34</value>
      </attribute>
   </attributes>
   <id>8yu</id>
</equipment>


Create/Update Equipment

POST

/source/{sourceID}/equipment/{equipmentId}
Sample Request URL
https://sandboxaglogicapi.deere.com/aglogic/source/223031/equipment/234555

Request URI

POST https://sandboxaglogicapi.deere.com/aglogic/source/{sourceID}/equipment/{equipmentId}

Accept: */*

CodeMessageDescription

200

---Success.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above, and that the orderId is known to PRO Dispatch.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
name
string
Equipment name.
Example: Default Application
equipment-type
string
Equipment Type
Example: APPLICATOR
load-types-supported
string
Load types supported by this equipment
Example: ANHYDROUS
attributes

---

Includes the name and value of each attribute.
Example: See sample response below.
<?xml version="1.0" encoding="UTF-8"?>
<equipment xmlns="http://www.deere.com/agriservices/schemas/nutrientlogistics/backofficeintegration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <name>Default Applicator</name>
   <equipment-type>APPLICATOR</equipment-type>
   <load-types-supported>
      <load-type>LIQUID</load-type>
      <load-type>ANHYDROUS</load-type>
   </load-types-supported>
   <attributes>
      <attribute>
         <name>ACRES_PER_HOUR</name>
         <value>50</value>
      </attribute>
   </attributes>
</equipment>


View Equipment Location

GET

/source/{sourceId}/equipment/{equipmentId}/location
Request Parameters
This resource does not currently take any filters/request parameters.

Request URI

GET https://sandboxaglogicapi.deere.com/aglogic/source/{sourceId}/equipment/{equipmentId}/location

Accept: */*

CodeMessageDescription

200

---Success.

401

---Unauthorized. There is a problem with the credentials provided.

404

---Problem with the URL. Check that the URL matches the pattern described above, and that the orderId is known to PRO Dispatch.

500

---Server error. An unexpected error occurred on the server processing your post.
FieldTypeDescription & Example
equipmentId
string
Database Equipment ID
Example: 12345
equipmentName
string
Equipment Name
Example: Bob`s Tractor
timeStamp
dateTime
Timestamp of this equipment location call-in
Example: 2015-02-25T22:06:23.000Z
lat
double
Last known latitude of the equipment.
Example: 41.688612
lon
double
Last known longitude of the equipment.
Example: -93.693612
current-state
string
Current state of the equipment

OAuth 2.0

PRO Dispatch is supporting OAuth 2 for API authentication. There is following detailed steps to get started with OAuth 2-

  1. Create an Application on Developer.Deere.com

    When you create an application, your application will be assigned a Client Key and Client Secret. You will sign all API requests with these credentials.

  2. Add a callback URL (Redirect URI) to your application

    On the OAuth Profile page of your application on Developer.Deere.com (found in the application Details section) you will need to define one or any number of Callback URLs (Redirect URI). Click the Add button to add more than one, and be sure to click Save at the bottom of the screen once you have completed entering all URLs.

    Note: If the callback URLs do not sync properly, your users will experience a 400 Bad Redirect error after authentication. Please contact us if you are receiving a 400 Bad Redirect for your callback URL in your testing. We will manually sync your callback with our OAuth provider if needed.

  3. Call the OAuth 2 well-known URL

    Make a GET request to https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7/.well-known/oauth-authorization-server. This URL contains the authorization and token endpoint, and the scopes required in the steps below. OAuth scopes required for each endpoint will be referenced in the applicable API technical documents.

    {
        "issuer": "https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7",
        "authorization_endpoint": "https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7/v1/authorize",
        "token_endpoint": "https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7/v1/token",
        "registration_endpoint": "https://signin.johndeere.com/oauth2/v1/clients",
        "jwks_uri": "https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7/v1/keys",
        "response_types_supported": [
            "code",
            "token",
            "id_token",
            "code id_token",
            "code token",
            "id_token token",
            "code id_token token"
        ],
        "response_modes_supported": [
            "query",
            "fragment",
            "form_post",
            "okta_post_message"
        ],
        "grant_types_supported": [
            "authorization_code",
            "implicit",
            "refresh_token",
            "password",
            "client_credentials"
        ],
        "subject_types_supported": [
            "public"
        ],
        "scopes_supported": [
            "ag1",
            "ag2",
            "ag3",
            "eq1",
            "eq2",
            "files",
            "jobs",
            "org1",
            "org2",
            "openid",
            "profile",
            "email",
            "address",
            "phone",
            "offline_access"
        ],
        "token_endpoint_auth_methods_supported": [
            "client_secret_basic",
            "client_secret_post",
            "client_secret_jwt",
            "private_key_jwt",
            "none"
        ],
        "claims_supported": [
            "ver",
            "jti",
            "iss",
            "aud",
            "iat",
            "exp",
            "cid",
            "uid",
            "scp",
            "sub"
        ],
        "code_challenge_methods_supported": [
            "S256"
        ],
        "introspection_endpoint": "https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7/v1/introspect",
        "introspection_endpoint_auth_methods_supported": [
            "client_secret_basic",
            "client_secret_post",
            "client_secret_jwt",
            "private_key_jwt",
            "none"
        ],
        "revocation_endpoint": "https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7/v1/revoke",
        "revocation_endpoint_auth_methods_supported": [
            "client_secret_basic",
            "client_secret_post",
            "client_secret_jwt",
            "private_key_jwt",
            "none"
        ],
        "end_session_endpoint": "https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7/v1/logout",
        "request_parameter_supported": true,
        "request_object_signing_alg_values_supported": [
            "HS256",
            "HS384",
            "HS512",
            "RS256",
            "RS384",
            "RS512",
            "ES256",
            "ES384",
            "ES512"
        ]
    }
  4. Only use "offline_access" as a scope for PRO Dispatch connection. PRO Dispatch APIs do not have an access level based on scopes. You will just need the "offline_access" scope to get a refresh token.

  5. Acquire an access token

    The client requests an access token from the token server by sending an authorization grant type authorization_code parameter, along with the authorization code, and a redirect URI. The authorization server authenticates the client and issues an access token and a refresh token (only if offline_access scope is requested). The access token will expire after 12 hours.

    auth_code_1

Example

Once you acquire the Access Token from OAuth2 flow, call the PRO Dispatch APIs keeping Token in the Authorization header as Bearer.

If Access Token looks like

eyJraWQiOiJfb2Rrc2ljRUJiazVqN09wMFBjck8wOVVObS1lZGRlSHN5VzJ3bm...

Then Authorization header looks like

Authorization : Bearer eyJraWQiOiJfb2Rrc2ljRUJiazVqN09wMFBjck8wOVVObS1lZGRlSHN5VzJ3bm...

And API call looks like

GET /aglogic/source/apitest/client/Client1234 HTTP/1.1
Host: sandboxaglogicapi.deere.com
Accept: */*
Authorization: Bearer eyJraWQiOiJfb2Rrc2ljRUJiazVqN09wMFBjck8wOVVObS1lZGRlSHN5VzJ3bm...

Note: The other parameters to the API will remain the exact same as those would be with Basic Authentication, just the Authorization header for API calls is changing with OAuth 2.


Using Postman to call the MyJohnDeere API (OAuth 2)

Postman is a free desktop app, which you can use to test your John Deere API calls. We prefer using the Postman client in lieu of the test client for calling APIs while in Sandbox to see and follow REST API responses. The below instructions will provide the initial setup steps to get Postman configured, and obtain an OAuth 2 token.

  1. Download and install Postman on your computer (link above).

  2. Open Postman and to turn off the auto redirects, click on Settings at the top, as shown:

  3. Postman1
    Postman2
  4. In the Authorization tab, there is a dropdown to select the type of authorization you’ll be using. Select OAuth 2 from the dropdown, as shown:

  5. Postman3
  6. Select the Get New Access Token button.

  7. Postman4
  8. Give your Token a Name.

  9. Postman6
  10. Leave the Grant Type as Authorization Code.

  11. The Callback URL for redirecting back to Postman after getting the Token is https://www.getpostman.com/oauth2/callback. Remember that if you will be using this Postman Callback URL, it will need to be synced with our OAuth client. See step 2 in this document for help in syncing this Callback URL with your application.

  12. The Auth URL and Access Token URL can be found with opening a new Postman request window and doing a GET on this URL https://signin.johndeere.com/oauth2/aus78tnlaysMraFhC1t7/.well-known/oauth-authorization-server.

  13. Enter the information in the appropriate boxes.

    auth_code_1
  14. Navigate to Developer.Deere.com, login, and access your Application Profile in the "My Applications" section.

  15. In the Details window, the first two pieces of information that OAuth requires are found in the Application Details section (illustration below). What Postman calls the Client ID is called "Application Id" in this window. What Postman calls the Client Secret is called "Secret" in this window. Copy the necessary information into the Postman token section.

    RetrieveAppIDandSecret
    Postman5
  16. The Scope box should be filled out initially (for a Base Resource call) with org1 files (space delimited).

  17. State is an opaque value to prevent cross-site forgery. Enter any unique string in this box (ex. 12345).

  18. For Client Authorization, you can either send a Basic Auth request in the header, or client credentials in the request body.

  19. Once the steps above are complete, press the Request Token button to proceed to the token verify screen.

  20. Postman8
  21. Select the Use Token button to apply the token to your API call.

  22. If you aren’t able to complete this process, or have any questions, please feel free to use the Support button in the top navigation of the page.


Client Definitions

A client is the business entity associated with the farms and fields.

idBMS unique identifier for the client. This identifier must be unique within an organization in PRO Dispatch.
nameClient's name.
acresNumber of acres covered by this client.
street1Address field one of this client.
street2Address field two of this client.
cityThe city where this client is located.
stateState where this client is located.
zipZip code of the client.
emailEmail address of this client's contact.
phonePhone number of this client's contact.
entry point(s)Lat/Lon pair(s) identifying the client entry point.
field boundaryCollection of data describing the boundaries of the client.

Farm Definitions

A farm is a collection of fields.

idBMS identifier for the Farm. The combination of client id and farm id must be unique within an organization in PRO Dispatch.
nameFarm name.
client idBMS identifier for the client that this farm is associated with.
acresNumber of acres covered by this farm.
street1Address field one of this farm.
street2Address field two of this farm.
cityThe city where this farm is located.
stateThe state where this farm is located.
zipZip code of this farm.
emailEmail address for this farm's contact.
phonePhone number of this farm's contact.
entry point(s)Lat/Lon pair(s) identifying the farm entry point.
field boundaryCollection of data describing the boundaries of the farm.

Field Definitions

A field is a subdivision of the farm/client. It is the smallest geographical entity that AgLogic deals with.

idBMS identifier for the Farm. The combination of client id, farm id, and field id must be unique within an organization in AgLogic.
nameField name.
farm idBMS identifier for the farm that this field is associated with.
client idBMS identifier for the client that this field is associated with.
acresNumber of acres covered by this field.
street1Address field one of this field.
street2Address field two of this field.
cityThe city where this field is located.
stateThe state where this field is located.
zipZip code of this field.
emailEmail address for this field's contact.
phonePhone number of this field's contact.
entry point(s)Lat/Lon pair(s) identifying the field entry point.
field boundaryCollection of data describing the boundaries of the field.

Work Order Definitions

A work order is a request for delivery of materials or application of materials to a field.

location idBMS unique identifier of the location where the work order was generated.
field idBMS identifier of the Field where the Work Order is to be applied/delivered. This attribute is considered optional since an order may be associated directly with a farm or a client. However, if the order is associated with a field or farm, then this attribute must be provided.
client idBMS identifier of the client requesting the work order to be applied/delivered.
order idBMS unique identifier of the work order.
order numberBMS document number of the work order. This is the work order's customer facing number.
order groupSome business systems allow for a single order to be divided into multiple components, and sub-components. For example, an order may be made for 5 tons of products, but it is delivered in two shipments/applications of 2.5 tons. In this case, two Work Orders would be sent to AgLogic™. Each will have the same order number, but each will have a different order group, and each must have a different order id. AgLogic will treat these orders as separate entities, but will group them together when displaying them, and allow them to be assigned as a group. This is an optional field, but if order sub-group is present, then order group must be present as well.
order sub-groupA further sub-division of an order in the BMS (see description of order group above). An order in the BMS can be divided into groups and sub-groups. These orders will be treated as separate entities in AgLogic, and each must have a different order id. They will be grouped together when displaying and will allow for assigning as a sub-group or group. This is an optional field.
order dateDate work order was entered into the BMS.
requested dateDate that the application/delivery is requested for.
applicator equipment assignedA work order may be imported with the applicator equipment already assigned.
applicator operator assignedA work order may be imported with an applicator operator already assigned.
cropName of the crop being applied to. This free text field provides information to the applicator operator.
analysisDescription of material being applied.
total quantityTotal quantity (amount and UOM) of the material being applied.
densityDensity (amount and UOM) of the material being applied.
legalThe legal property description.
countyThe county that the application occurs.
formula numberThe formula number of the blend.
land noteNotes entered about the land.
weight per areaThe weight per area of the blend.
volume per areaThe volume per area of the blend.
total volumeThe total volume of the blend.
line itemsThe material being applied may be composed of multiple materials that are blended together. The tender driver and the applicator operator may need to know what these components are. Each line item has multiple attributes described below.
product idBMS identifier for the product.
product nameName of the line item material.
product quantityQuantity (amount and UOM) of the line item material.
densityDensity (amount and UOM) of the line item material.
application rateApplication rate (amount and UOM) of the line item material.
epa number
manufacturer
target pest
priorityYes/No indicator as to whether this order is priority.
variable-rateYes/No indicator as to whether this order is variable rate.
acresNumber of acres to have material applied.
commentsFree form comments to be seen by the scheduler, applicator, and tender driver.
application rateQuantity (amount and UOM) of material to be applied per some unit of area, like 1000 pounds/acre.
application typeDry, Liquid, or Anhydrous.
delivery methodCustomer pick-up, deliver to customer, or deliver and apply.
tagCustom identifier that will used to group and organize work orders within an organization. This is roughly equivalent to a "Location Code".

Work Order Attachment Definitions

Work Order Attachments (Legacy)

POST /source/{sourceId}/order/{orderId}/attachment

Using this legacy API, a work order can have only one attachment associated with it. For any work order that has already been posted to PRO Dispatch, the client may also post an attachment. PRO Dispatch does not care about the contents or type of file with this legacy API. An example of an attachment would be a prescription that is attached as a ZIP file. After an attachment has been posted using this API, subsequent postings of an attachment for that order will over-write the previous attachment.

Work Order Attachments (NEW)

POST /source/{sourceId}/order/{orderId}/files

Using this API a work order can have multiple attachments associated with it. For any work order that has already been posted to PRO Dispatch, the client may also post multiple attachments. With this API only PDF and ZIP files can be attached to the work orders. An example of an attachment would be a prescription that is attached as a ZIP file. If client wants to modify an attachment, then that attachment has to be first deleted using '/source/{sourceId}/order/{orderId}/files/{uuid}' API and reposted using this endpoint.


Work Order Status Definitions

A work order will progress through a few states from the time it enters PRO Dispatch, until it is completed.The BMS can request the status of a work order at any time.

order idThis is the same identifier used to post the original work order.
statusUnassigned, Assigned or Complete.
last updateTimestamp of last status change.
completion dateIf the work order is complete, it will have a complete date.
complete acresNumber of acres that have been completed on this order to date.
reviewedBoolean indicator that the order has been reviewed via the PRO Dispatch web application.
work recordsFor every assignment to an applicator to do perform work on the order, there will a work record
work scheduledDate work is scheduled to be performed.
work completedDate work was actually completed. Note that this may not be the date that ALL work for the work order was completed.
completed acresNumber of acres completed.
applicatorThe applicator that either did the work, or is scheduled to do the work.
operatorThe person doing the application. Note: This is not currently captured in PRO Dispatch.
equipmentName of the equipment used in the application.
commentsTextual comments associated with this work.
signatureLink to the captured signature associated with this work. Note that the client has to do a separate web request to get the signature file, and the link to retrieve the file is provided here.
attachmentLink to an attachment file associated with this work.Note that the client has to do a separate web request to get the attached file, and the link to retrieve the file is provided here.
observationsThere may be observations made when the work is performed, such as wind speed, temperature, etc.These observations are captured here. An observation has a name, a value, and optionally a unit of measure.The value can be either a single value or a value range. A single value might be something like "NE" for wind direction.An example range would be "10 – 20 MPH" for wind speed.
actualsThe original work order specified the products to be applied, along with the quantity and rate.If the quantity or rate actually used was different than what was specified, the actual value can be captured here.These actual values can be specified at both the work order level (totals), or at the line item level.The line item will be identified by a product id.

Work Order Status Feed Definitions

A client can request the status of an order as described in the previous section. AgLogic also provides a mechanism for getting a listing of order status changes so that a client can quickly determine which orders have had status changes, and then make specific requests for those order statuses.

The Work Order Status Feed is implemented using the Atom Syndication Format (see: http://tools.ietf.org/html/rfc4287).The Atom Syndication Format is a standardized XML vocabulary for describing lists of timestamped entries. A client can make use of many existing open source clients for monitoring the feed, or can implement their own. While originally targeted at news feeds and blog posts, Atom is seeing adoption in a wide variety of other applications where lists of timestamped entries are used.

As you can see from the sample, there is a top-level node for the feed. It has a few child nodes that describe the feed, and then a collection of entries. Each entry corresponds to an order status. Once order is assigned to applicator, irrespective of whether it is unassigned, it will appear in order status feed. Below we will describe each of the important elements of the feed.

Updated

The updated node provides a timestamp of when this feed was published.

Paging Links

There are up to 5 links provided for the feed that deal with paging. Atom Syndication does not include the concept of filtering, so a client does not have the ability to limit the number of entries returned. Since Work Orders and their statuses will accumulate over time, a feed can get quite large. In order to limit the amount of data returned in a single request, the specification allows for paging. An initial response may be limited in the number of elements that are returned. If there are additional elements available, the response will contain links that allow the client to request the next page of data.There are links for first, last, next and previous pages. The next and previous links do not exist when you are at the end of the document or beginning of the document, respectively. Since the entries in the response are time ordered, with most recent being at the top of the document, and since a client will normally check the feed on a regular basis, the client will not normally need to utilize paging. All of the entries that the client has not seen will normally be on the first page.

Entries

There will be a single entry for each work order that has a status available. The subsections below will define the important elements in the entry.

  • Category: The category node is used to distinguish the current state of the work order. The possible states are: OPEN, INPROCESS, COMPLETE.
  • ID: The ID is the same ID that the client used when it posted the work order initially.
  • Title: The title element is meant to be human readable and is of little use to a client.
  • Link: The link element provides a link to fetch the order status details.
  • Updated: This is a timestamp of when the order status was last updated.

Sample Algorithm for Processing Work Order Status Feed

The following algorithm is provided for the purpose of clarity. It is divided into initial request and subsequent requests. On the initial request, the client will not have any order status data cached, so it must walk through all of the statuses(unless it has some criteria established for ignoring some of the data.) In subsequent requests, the client only needs to step through results until it gets to a timestamp that is older than its last request. Note that the client should at no time compare timestamps to its internal clock since there can be issues with latency and time accuracies. All timestamp comparisons should be relative to other timestamps in the feed.

Initial Request:

  1. Client makes request.
  2. Client parses response.
  3. Client saves the feed timestamp (updated node).
  4. Client reads in each entry. For each entry, the client will make an additional request for the work order status details.
  5. Client makes additional requests for additional result pages as necessary.

Subsequent Requests:

  1. Client makes request.
  2. Client parses response.
  3. Client saves the feed timestamp.
  4. Client iterates over the entries. When it finds an entry that has a timestamp that is older than the feed timestamp from its previous request, then it can stop iterating. At this point, all remaining entries are for statuses that the client has already processed.


Mobile User Definitions

At this time, Mobile Users are persons operating Applicators or driving Tender trucks.

first nameMobile user's first name.
last nameMobile user's last name.
emailEmail address for mobile user.
licensesEquipment operators may have special licenses, such as licenses to apply chemicals.
license numberLicense number.
stateState that license was issued in.
expirationExpiration date for the license.

Equipment Definitions

PRO Dispatch supports the importing of Equipment, such as Applicators/Sprayers.

nameA name associated with this piece of equipment.
equipment tenderType of equipment, such as Applicator or Tender.
load types supportedDesignation of types of loads this equipment can handle, such as liquid or dry. Multiple types may be designated.
attributesZero to many attributes may be specified for the equipment, such as application rate.

Testing in Sandbox

Once access to the Pro Dispatch API is requested and approved, your application will be able to call all of the endpoints listed in the Endpoints section of the documentation.

What is Sandbox?

Sandbox is an API URL (https://sandboxaglogicapi.deere.com) which your client application can use to test out API interactions with John Deere APIs using production data. Creating your application and making API calls to the Sandbox URL is self-serve, but does require API licensing for most APIs. Our API Dev Support team is ready to assist you with that licensing, and any questions you may have. You can message us using the Support button below.

Connecting to customers in Sandbox

Since your application Team Members may not have data within their own John Deere organization (or may not have one), you will need to connect your Team Members with customer organizations so that your application can properly access data in Sandbox.
To make this connection, our suggestion is to work directly with a John Deere Pro Dispatch customer interested in the type of application you are developing. Once you have identified a John Deere customer, you will have to work with the customer by authorizing a user within their Pro Dispatch organization.
See our Postman section for obtaining an OAuth user tokens.

Protecting customer data

Once you are connected to data belonging to our John Deere customers, please ensure that you protect that data in accordance with our API Development License Agreement that you accepted when first logging into Developer.Deere.com. As part of our review of your application prior to moving to production, we will be reviewing and approving your use of customer data and also require you to sign our Production API Agreement, referenced in the Go To Production section.
Please visit this link to view our John Deere Data Services & Subscriptions Statement.

Guidelines for Sandbox Usage

While your application is in the sandbox environment, you must adhere to each of the guidelines below. If your application is outside of these guidelines, your sandbox access may be removed.
  • Application must not be making more than 150,000 API calls a month.

  • Application must not be in the sandbox environment for over 18 months.

If you wish to continue to make more than 150,000 API calls a month, or if you have been in the sandbox environment for over 18 months please request your application to move into the production environment. To learn about how to move to the production environment, please click here.

If your application access has been revoked, or if you need to continue in the sandbox environment outside of these guidelines, please fill out a sandbox exception request Your request will be reviewed by the API Integrations team and either approved or denied. Please submit the form to JohnDeereIntegrations@JohnDeere.com. Once approved, the integrations team will communicate with the API support team to renew access or grant the extension.

Moving your application to Production

Once you have developed your application and tested with the Sandbox URL, you can request access to the Production URL. You will then be able to make your app available for public authentication and use.

The API Support team will work with you through the following steps when you are ready to move to production:

  • Update your Application details: In order for your application to be listed in our Connections application you will need to fill out all application detail sections. The API Support team will make your application available to all users in our connections.deere.com website only upon request. By default your application details will only be shown to connected organizations within connections.deere.com. Pro Dispatch API applications are not normally listed in our Connections application, so please work with our API integrations team on any questions regarding this topic.
  • Institute an OAuth 2 flow: In order to obtain user access tokens with our Production URL, your application will need to institute an OAuth 2 authorization code flow for John Deere customers. Please see the OAuth 2 guide here.
  • Run regression tests: Please run a final regression test with your application, and run through the API calls as would be done when in Production. See the tips below. If your regression tests will cause substantial load, please let us know in advance.
  • Test validation & approval: Please contact API Support with the exact date and time of your regression test start/end. The API Support team will review and validate the regression test logs. We may provide feedback at this time that could require further development of your application before production approval.
  • Business validation & approval: Once the regression test is complete and passed, API Support will CC the API Business team on your support ticket for further questions and validation of your application’s usage of John Deere data.
  • Sign a license agreement: An updated API Agreement will be provided to you by the API Business team. At that time, we will also ask for a company name, description, address and contact email so that we can show your application in our Connections (More Tools) page on our website (if desired).
  • Change your code: Once the agreement is signed, we will ask you to update your API calls to our Production URL.
  • Monitor your app’s usage: Please ensure that you are monitoring your applications usage, managing API errors, and contacting API support for any questions along the way.