Keystone Quote REST API
Overview
The Keystone REST Server exposes a REST API which is used by Keystone Quoting to communicate with the Keystone Application Server.
Keystone Quoting is accessed from Keystone Cloud applications.
See:
- Keystone_REST_Server_(KServer) for more on KServer.
- Interface Spec: File:BCQCI V3.pdf
Example URIs:
http://127.0.0.1:8211/rest/kqtapi1/connection
Connection Test API
ROOT: /rest/kqtapi1
connection
connection
- tests connection with the server
{
"kqtapi": {
"request_status": {
"status": "200",
"msg": "Keystone Quote REST Server."
}
}
}
API v1
ROOT: /rest/kqtapi1
Quote Endpoints
Quote [GET]
Quote/{Id}
- returns quote information for the specified Id (where Id is <session#>K<trans#>)
{
"Quote": [
{
"Id": "161K1",
"ProspId": "BLA100",
"JobId": "RIVERFRONT",
"BatchJobId": "RIVERFRONT",
"InvoiceDesc": "RIVERFRONT",
"SlsId": "DS",
"JobClassId": "1",
"ZoneId": "20",
"TaxAuthId": "MA",
"CustomerPO": "12345",
"QuoteDate": "2009-02-11T00:00:00.000Z",
"PurgeDate": "2009-05-11T00:00:00.000Z",
"LastRevisedDate": "2009-02-11T00:00:00.000Z",
"FollowUpDate": "2009-04-01T00:00:00.000Z",
"ExpirationDate": "2009-05-11T00:00:00.000Z",
"JobStartDate": "2009-06-01T00:00:00.000Z",
"JobEndDate": "2009-06-30T00:00:00.000Z",
"WonLostDate": "2009-02-11T00:00:00.000Z",
"BookDate": "2009-02-11T00:00:00.000Z",
"Status": "L", // (O)pen, (W)on, (L)ost, (C)losed
"Potential": "1",
"Rating": "20",
"ReasonId": "P",
"ReasonDesc": "Price",
"Competitor": "Joe Schmoe Concrete",
"Conditions": "Standard minimum load charges apply.\r\n",
"ProspType": "C", // (C)ustomer, (P)rospect
"Booked": false,
"CompetitorBid": 31000,
"GpsLat": 39.9950582,
"GpsLong": -82.8542814,
"GpsRadius": 0.048199685699016,
"QuoteSubTotal": 525.50,
"QuoteTaxTotal": 27.24,
"ShipTo1": "Ship To Address 1",
"ShipTo2": "Ship To Address 2",
"ShipTo3": "Ship To Address 3",
"ShipTo4": "Ship To Address 4",
"DelvInst1": "Delivery Instruction 1",
"DelvInst2": "Delivery Instruction 2",
"DelvInst3": "Delivery Instruction 3",
"DelvInst4": "Delivery Instruction 4",
"Products": [
{
"Id": "161K1K1",
"ProdId": "4416-21",
"Description": "4x4x16 Solid",
"ProdUM": "EA",
"QtyOrd": 60000,
"UnitPrice": 0.415
},
{
"Id": "161K1K2",
"ProdId": "34-11",
"Description": "3\/4\" Stone",
"ProdUM": "TN",
"QtyOrd": 800,
"UnitPrice": 8.75
}
],
"Contacts": [
{
"Id": 37,
"Name": "Don Tupak",
"Title": "President",
"Phone": "614-310-1234",
"PhoneMobile": "614-310-2345",
"Email": "Dtupak@anywhere.com",
"EmailOption": "Y", // (Y)es, (N)o, (C)c, (B)cc
"ContactType": "C" // (C)ustomer, (P)rospect, (Q)uote
},
{
"Id": 38,
"Name": "Bill Cummins",
"Title": "Vice President",
"Phone": "614-310-5678",
"PhoneMobile": "614-310-6789",
"Email": "Bcummins@anywhere.com",
"EmailOption": "C",
"ContactType": "Q" // (Q)uote
}
]
}
]
}
Quote [POST]
Quote
- adds a new quote and returns the GET Quote result
Request Content:
{
"Quote": [
{
"ProspId": "BLA100",
"JobId": "RIVERFRONT",
"BatchJobId": "RIVERFRONT",
"InvoiceDesc": "RIVERFRONT",
"SlsId": "DS",
"JobClassId": "1",
"ZoneId": "20",
"TaxAuthId": "MA",
"CustomerPO": "12345",
"QuoteDate": "2009-02-11T00:00:00.000Z",
"PurgeDate": "2009-05-11T00:00:00.000Z",
"LastRevisedDate": "2009-02-11T00:00:00.000Z",
"FollowUpDate": "2009-04-01T00:00:00.000Z",
"ExpirationDate": "2009-05-11T00:00:00.000Z",
"JobStartDate": "2009-06-01T00:00:00.000Z",
"JobEndDate": "2009-06-30T00:00:00.000Z",
"WonLostDate": "2009-02-11T00:00:00.000Z",
"BookDate": "2009-02-11T00:00:00.000Z",
"Status": "L", // (O)pen, (W)on, (L)ost, (C)losed
"Potential": "1",
"Rating": "20",
"ReasonId": "P",
"ReasonDesc": "Price",
"Competitor": "Joe Schmoe Concrete",
"Conditions": "Standard minimum load charges apply.\r\n",
"ProspType": "C", // (C)ustomer, (P)rospect
"Booked": false,
"CompetitorBid": 31000,
"GpsLat": 39.9950582,
"GpsLong": -82.8542814,
"GpsRadius": 0.048199685699016,
"ShipTo1": "Ship To Address 1",
"ShipTo2": "Ship To Address 2",
"ShipTo3": "Ship To Address 3",
"ShipTo4": "Ship To Address 4",
"DelvInst1": "Delivery Instruction 1",
"DelvInst2": "Delivery Instruction 2",
"DelvInst3": "Delivery Instruction 3",
"DelvInst4": "Delivery Instruction 4",
"Products": [
{
"ProdId": "4416-21",
"Description": "4x4x16 Solid",
"ProdUM": "EA",
"QtyOrd": 60000,
"UnitPrice": 0.415
},
{
"ProdId": "34-11",
"Description": "3\/4\" Stone",
"ProdUM": "TN",
"QtyOrd": 800,
"UnitPrice": 8.75
}
],
"Contacts": [
{
"Name": "Don Tupak",
"Title": "President",
"Phone": "614-310-1234",
"PhoneMobile": "614-310-2345",
"Email": "Dtupak@anywhere.com",
"EmailOption": "Y", // (Y)es, (N)o, (C)c, (B)cc
"ContactType": "C" // (C)ustomer, (P)rospect, (Q)uote
},
{
"Name": "Bill Cummins",
"Title": "Vice President",
"Phone": "614-310-5678",
"PhoneMobile": "614-310-6789",
"Email": "Bcummins@anywhere.com",
"EmailOption": "C",
"ContactType": "Q" // (Q)uote
}
]
}
]
}
Quote [PUT]
Quote/{Id}
- updates an existing quote for the specified Quote Id (where Id is <session#>K<trans#>)
Request Content:
{
"Quote": [
{
"ProspId": "BLA100",
"JobId": "RIVERFRONT",
"BatchJobId": "RIVERFRONT",
"InvoiceDesc": "RIVERFRONT",
"SlsId": "DS",
"JobClassId": "1",
"ZoneId": "20",
"TaxAuthId": "MA",
"CustomerPO": "12345",
"QuoteDate": "2009-02-11T00:00:00.000Z",
"PurgeDate": "2009-05-11T00:00:00.000Z",
"LastRevisedDate": "2009-02-11T00:00:00.000Z",
"FollowUpDate": "2009-04-01T00:00:00.000Z",
"ExpirationDate": "2009-05-11T00:00:00.000Z",
"JobStartDate": "2009-06-01T00:00:00.000Z",
"JobEndDate": "2009-06-30T00:00:00.000Z",
"WonLostDate": "2009-02-11T00:00:00.000Z",
"BookDate": "2009-02-11T00:00:00.000Z",
"Status": "L", // (O)pen, (W)on, (L)ost, (C)losed
"Potential": "1",
"Rating": "20",
"ReasonId": "P",
"ReasonDesc": "Price",
"Competitor": "Joe Schmoe Concrete",
"Conditions": "Standard minimum load charges apply.\r\n",
"ProspType": "C", // (C)ustomer, (P)rospect
"Booked": false,
"CompetitorBid": 31000,
"GpsLat": 39.9950582,
"GpsLong": -82.8542814,
"GpsRadius": 0.048199685699016,
"ShipTo1": "Ship To Address 1",
"ShipTo2": "Ship To Address 2",
"ShipTo3": "Ship To Address 3",
"ShipTo4": "Ship To Address 4",
"DelvInst1": "Delivery Instruction 1",
"DelvInst2": "Delivery Instruction 2",
"DelvInst3": "Delivery Instruction 3",
"DelvInst4": "Delivery Instruction 4",
}
]
}
Quote Product [GET]
Quote/{Id}/Products/{PId}
- returns quote product information for the specified Quote Id (where Id is <session#>K<trans#>) and PId (where PId is <session#>K<trans#>K<line#>)
{
"Products": [
{
"Id": "161K1K1",
"ProdId": "4416-21",
"Description": "4x4x16 Solid",
"ProdUM": "EA",
"QtyOrd": 60000,
"UnitPrice": 0.415
}
]
}
Quote Product [POST]
Quote/{Id}/Products
- adds a new quote product and returns the GET Quote Product result
Request Content:
{
"Products": [
{
"ProdId": "4416-21",
"Description": "4x4x16 Solid",
"ProdUM": "EA",
"QtyOrd": 60000,
"UnitPrice": 0.415
}
]
}
Quote Product [PUT]
Quote/{Id}/Products/{PId}
- updates quote product information for the specified Quote Id (where Id is <session#>K<trans#>) and PId (where PId is <session#>K<trans#>K<line#>)
Request Content:
{
"Products": [
{
"ProdId": "4416-21",
"Description": "4x4x16 Solid",
"ProdUM": "EA",
"QtyOrd": 60000,
"UnitPrice": 0.415
}
]
}
Quote Product [DELETE]
Quote/{Id}/Products/{PId}
- deletes quote product information for the specified Quote Id (where Id is <session#>K<trans#>) and PId (where PId is <session#>K<trans#>K<line#>)
Quote Contact [GET]
Quote/{Id}/Contacts/{CId}
- returns quote contact information for the specified Quote Id (where Id is <session#>K<trans#>) and CId (where CId is <reckey>)
{
"Contacts": [
{
"Id": 37,
"Name": "Don Tupak",
"Title": "President",
"Phone": "614-310-1234",
"PhoneMobile": "614-310-2345",
"Email": "Dtupak@anywhere.com",
"EmailOption": "C",
"ContactType": "Q" // (Q)uote
}
]
}
Quote Contact [POST]
Quote/{Id}/Contacts
- adds a new quote contact and returns the GET Quote Contact result
Request Content:
{
"Contacts": [
{
"Name": "Don Tupak",
"Title": "President",
"Phone": "614-310-1234",
"PhoneMobile": "614-310-2345",
"Email": "Dtupak@anywhere.com",
"EmailOption": "C"
}
]
}
Quote Contact [PUT]
Quote/{Id}/Contacts/{CId}
- updates quote contact information for the specified Quote Id (where Id is <session#>K<trans#>) and CId (where CId is <reckey>)
Request Content:
{
"Contacts": [
{
"Name": "Don Tupak",
"Title": "President",
"Phone": "614-310-1234",
"PhoneMobile": "614-310-2345",
"Email": "Dtupak@anywhere.com",
"EmailOption": "C"
}
]
}
Quote Contact [DELETE]
Quote/{Id}/Contacts/{CId}
- deletes quote contact information for the specified Quote Id (where Id is <session#>K<trans#>) and CId (where CId is <reckey>)
QuoteCount
QuoteCount/{SlsId}
?prospid=xxx
?status=x
?booked=true|false
?begfupdate=yyyy-mm-dd
?endfupdate=yyyy-mm-dd
?begexpdate=yyyy-mm-dd
?endexpdate=yyyy-mm-dd
?begbookdate=yyyy-mm-dd
?endbookdate=yyyy-mm-dd
?begwonlostdate=yyyy-mm-dd
?endwonlostdate=yyyy-mm-dd
- returns count of active, non-closed quotes
- use prospid to include quotes for the specified prospect
- use status to include quotes for the specified status ([O]pen, [C]losed, [W]on, [L]ost) (Keystone 3.2.8.3+)
- use booked to include quotes that are booked/not booked (Keystone 3.2.8.3+)
- use begfupdate to include quotes with no follow-up date or where the follow-up date >= begfupdate (Keystone 3.2.8.2+)
- use both begfupdate and endfupdate to include quotes with no follow-up date or where the follow-up date is between begfupdate and endfupdate (Keystone 3.2.8.2+)
- use begexpdate to include quotes with no expiration date or where the expiration date >= begexpdate (Keystone 3.2.8.1+)
- use both begexpdate and endexpdate to include quotes that have an expiration date between begexpdate and endexpdate (Keystone 3.2.8.1+)
- use begbookdate to include quotes with no book date or where the book date >= begbookdate (Keystone 3.2.8.4+)
- use both begbookdate and endbookdate to include quotes that have a book date between begbookdate and endbookdate (Keystone 3.2.8.4+)
- use begwonlostdate to include quotes with no won/lost date or where the won/lost date >= begwonlostdate (Keystone 3.2.8.4+)
- use both begwonlostdate and endwonlostdate to include quotes that have a won/lost date between begwonlostdate and endwonlostdate (Keystone 3.2.8.4+)
{
"QuoteCount": [
{
"Count": 24
}
]
}
QuoteCountWonLost
QuoteCountWonLost/{SlsId}
?prospid=xxx
?begwonlostdate=yyyy-mm-dd
?endwonlostdate=yyyy-mm-dd
- returns list of active quotes that have a status of Won or Lost
- use prospid to include quotes for the specified prospect
- use begwonlostdate to include quotes with no won/lost date or where the won/lost date >= begwonlostdate (Keystone 3.2.8.4+)
- use both begwonlostdate and endwonlostdate to include quotes that have a won/lost date between begwonlostdate and endwonlostdate (Keystone 3.2.8.4+)
{
"QuoteCountWonLost": [
{
"WonLost": "L",
"WonLostMo": 2,
"WonLostYr": 2009,
"QuoteCount": 1,
"QuoteTotal": 59500,
"QuoteCost": 0
},
{
"WonLost": "L",
"WonLostMo": 3,
"WonLostYr": 2009,
"QuoteCount": 1,
"QuoteTotal": 14750,
"QuoteCost": 0
},
{
"WonLost": "W",
"WonLostMo": 1,
"WonLostYr": 2009,
"QuoteCount": 2,
"QuoteTotal": 632707,
"QuoteCost": 366489
},
{
"WonLost": "W",
"WonLostMo": 2,
"WonLostYr": 2009,
"QuoteCount": 1,
"QuoteTotal": 30500,
"QuoteCost": 0
},
{
"WonLost": "W",
"WonLostMo": 3,
"WonLostYr": 2009,
"QuoteCount": 5,
"QuoteTotal": 616820,
"QuoteCost": 0
}
]
}
QuoteList
QuoteList/{SlsId}
?prospid=xxx
?status=x
?booked=true|false
?begfupdate=yyyy-mm-dd
?endfupdate=yyyy-mm-dd
?begexpdate=yyyy-mm-dd
?endexpdate=yyyy-mm-dd
?begbookdate=yyyy-mm-dd
?endbookdate=yyyy-mm-dd
?begwonlostdate=yyyy-mm-dd
?endwonlostdate=yyyy-mm-dd
?beglastreviseddate=yyyy-mm-dd
?endlastreviseddate=yyyy-mm-dd
- returns list of active, non-closed quotes
- use prospid to include quotes for the specified prospect
- use status to include quotes for the specified status ([O]pen, [C]losed, [W]on, [L]ost) (Keystone 3.2.8.3+)
- use booked to include quotes that are booked/not booked (Keystone 3.2.8.3+)
- use begfupdate to include quotes with no follow-up date or where the follow-up date >= begfupdate (Keystone 3.2.8.2+)
- use both begfupdate and endfupdate to include quotes with no follow-up date or where the follow-up date is between begfupdate and endfupdate (Keystone 3.2.8.2+)
- use begexpdate to include quotes with no expiration date or where the expiration date >= begexpdate (Keystone 3.2.8.1+)
- use both begexpdate and endexpdate to include quotes that have an expiration date between begexpdate and endexpdate (Keystone 3.2.8.1+)
- use begbookdate to include quotes with no book date or where the book date >= begbookdate (Keystone 3.2.8.4+)
- use both begbookdate and endbookdate to include quotes that have a book date between begbookdate and endbookdate (Keystone 3.2.8.4+)
- use begwonlostdate to include quotes with no won/lost date or where the won/lost date >= begwonlostdate (Keystone 3.2.8.4+)
- use both begwonlostdate and endwonlostdate to include quotes that have a won/lost date between begwonlostdate and endwonlostdate (Keystone 3.2.8.4+)
- use beglastreviseddate to include quotes with no last revised date or where the last revised date >= beglastreviseddate (Keystone 3.6.6.5+)
- use both beglastreviseddate and endlastreviseddate to include quotes that have a last revised date between beglastreviseddate and endlastreviseddate (Keystone 3.6.6.5+)
{
"QuoteList": [
{
"ProspId": "ALLEN",
"JobId": "1",
"SlsId": "BA",
"JobClassId": "SJ",
"ZoneId": "10",
"QuoteDate": "2010-02-11T00:00:00.000Z",
"FollowUpDate": "2010-04-30T00:00:00.000Z",
"ExpirationDate": "2011-03-18T00:00:00.000Z",
"WonLostDate": "2010-02-28T00:00:00.000Z",
"BookDate": "2010-02-28T00:00:00.000Z",
"LastRevisedDate": "2010-02-11T00:00:00.000Z",
"Status": "W", // Won
"Booked": true,
"Rating": "100",
"Potential": "A",
"ReasonId": "", // Reason Code if quote status = Lost
"ReasonDesc": "", // Reason Desc if quote status = Lost
"Id": "5748K1",
"ProspType": "C" // Customer
},
{
"ProspId": "ALLEN",
"JobId": "TEST",
"SlsId": "BA",
"QuoteDate": "2013-10-11T00:00:00.000Z",
"FollowUpDate": "2013-11-30T00:00:00.000Z",
"ExpirationDate": "2014-10-15T00:00:00.000Z",
"LastRevisedDate": "2013-10-11T00:00:00.000Z",
"Status": "O", // Open
"QuoteSubTotal": 79840,
"Id": "6930K1",
"ProspType": "C", // Customer
"Booked": false
},
{
"ProspId": "ALLEN",
"JobId": "TEST 2",
"SlsId": "BA",
"QuoteDate": "2018-01-11T00:00:00.000Z",
"FollowUpDate": "2018-02-28T00:00:00.000Z",
"ExpirationDate": "2019-01-10T00:00:00.000Z",
"LastRevisedDate": "2018-01-11T00:00:00.000Z",
"Status": "O", // Open
"QuoteSubTotal": 13107.6,
"Id": "6998K1",
"ProspType": "C", // Customer
"Booked": false
}
]
}
ApprovedQuoteList
ApprovedQuoteList/{UserId}
- returns list of active, approved quotes for a user
{
"ApprovedQuoteList": [
{
"ProspId": "ALLEN",
"JobId": "1",
"SlsId": "BA",
"JobClassId": "SJ",
"ZoneId": "10",
"QuoteDate": "2010-02-11T00:00:00.000Z",
"FollowUpDate": "2010-04-30T00:00:00.000Z",
"ExpirationDate": "2011-03-18T00:00:00.000Z",
"WonLostDate": "2010-02-28T00:00:00.000Z",
"BookDate": "2010-02-28T00:00:00.000Z",
"Status": "W", // Won
"Booked": true,
"Rating": "100",
"Potential": "A",
"ReasonId": "", // Reason Code if quote status = Lost
"ReasonDesc": "", // Reason Desc if quote status = Lost
"Id": "5748K1",
"ProspType": "C" // Customer
},
{
"ProspId": "ALLEN",
"JobId": "TEST",
"SlsId": "BA",
"QuoteDate": "2013-10-11T00:00:00.000Z",
"FollowUpDate": "2013-11-30T00:00:00.000Z",
"ExpirationDate": "2014-10-15T00:00:00.000Z",
"Status": "O", // Open
"QuoteSubTotal": 79840,
"Id": "6930K1",
"ProspType": "C", // Customer
"Booked": false
},
{
"ProspId": "ALLEN",
"JobId": "TEST 2",
"SlsId": "BA",
"QuoteDate": "2018-01-11T00:00:00.000Z",
"FollowUpDate": "2018-02-28T00:00:00.000Z",
"ExpirationDate": "2019-01-10T00:00:00.000Z",
"Status": "O", // Open
"QuoteSubTotal": 13107.6,
"Id": "6998K1",
"ProspType": "C", // Customer
"Booked": false
}
]
}
ReviseQuote [PUT]
ReviseQuote/{Id}
- sets LastRevisedDate for the specified Quote Id to the current date (where Id is <session#>K<trans#>)
Prospect Endpoints
Prospect
Prospect/{Id}
- returns all essential data for one customer/prospect
{
"Prospect": [
{
"ProspId": "ALLEN",
"Name": "Allen Construction",
"Address1": "3454 Riverside Drive",
"Address2": "PO Box 676",
"City": "Springfield",
"State": "MA",
"Zip": "01108-0676",
"Phone": "(413) 486-5555",
"Fax": "(413) 486-5556",
"Contact": "William Smith",
"SlsId": "BA",
"CustomerClassId": "CC",
"StartDate": "2009-02-08T00:00:00.000Z",
"ChargeCode": "Y",
"TaxAuthId": "MA",
"TaxCode": "Y",
"Cod": "N",
"CreditLimit": 0,
"ArBalance": 203410.79,
"CreditTermsId": "1",
"PoRequired": "N",
"ProspType": "C", // Customer
"Contacts": [
{
"Id": 1,
"Name": "Jay Anders",
"Email": "Janders@anywhere.com",
"EmailQuote": false
},
{
"Id": 2,
"Name": "Bob Anders",
"Email": "Banders@anywhere.com",
"EmailQuote": false
}
]
}
]
}
ProspectList
ProspectList
- returns combined list of active customers and prospects
{
"ProspectList": [
{
"ProspId": "ALLEN",
"Name": "Allen Construction",
"Address1": "3454 Riverside Drive",
"Address2": "PO Box 676",
"City": "Springfield",
"State": "MA",
"Zip": "01108-0676",
"Phone": "(413) 486-5555",
"SlsId": "BA",
"CustomerClassId": "CC",
"ProspType": "C" // Customer
},
{
"ProspId": "BER100",
"Name": "Berkshire Power",
"Address1": "1295 Stockbridge Ave.",
"City": "Pittsfield",
"State": "MA",
"Zip": "01201",
"Phone": "(413) 499-2100",
"SlsId": "JE",
"CustomerClassId": "P",
"ProspType": "C" // Customer
},
{
"ProspId": "PIO100",
"Name": "Pioneer Valley Homes",
"Address1": "147 School St.",
"City": "Hatfield",
"State": "MA",
"Zip": "01047",
"Phone": "(413) 252-3492",
"SlsId": "BA",
"CustomerClassId": "GC",
"ProspType": "P" // Prospect
}
]
}
Lookup List Endpoints
CreditTermsList
CreditTermsList
- returns list of active credit terms (defines due date and discount date)
{
"CreditTermsList": [
{
"CreditTermsId": "1D",
"Description": "DISC. EXPIRES 10 DAYS"
},
{
"CreditTermsId": "1T",
"Description": "DISC. EXPIRES ON 10TH"
},
{
"CreditTermsId": "15",
"Description": "DISC. EXPIRES 15 DAYS",
"Notes": "Here are some notes for Disc Expires 15 Days"
},
{
"CreditTermsId": "20",
"Description": "DISC. EXPIRES 20 DAYS"
},
{
"CreditTermsId": "1",
"Description": "NET 30 DAYS",
"Notes": "Here are some notes for Net 30"
},
{
"CreditTermsId": "C",
"Description": "Cash Only"
}
]
}
SalespersonList
SalespersonList
- returns list of active salespeople
{
"SalespersonList": [
{
"SlsId": "JE",
"Name": "Jim Evans"
},
{
"SlsId": "BA",
"Name": "Bob Archer",
"Notes": "Top salesperson of the year 2016."
},
{
"SlsId": "DS",
"Name": "Doug Sheehan"
},
{
"SlsId": "TC",
"Name": "Tom Cross"
},
{
"SlsId": "H",
"Name": "House Account"
}
]
}
ReasonList
ReasonList
- returns list of active reasons a quote is won or lost
{
"ReasonList": [
{
"ReasonId": "C",
"Description": "Capacity (pouring)"
},
{
"ReasonId": "D",
"Description": "Delivery Radius"
},
{
"ReasonId": "P",
"Description": "Price",
"Notes": "We beat the competition (or they beat us!)"
}
]
}
CustomerClassList
CustomerClassList
- returns list of active customer classes (indicates type of customer/prospect - e.g. contractor, government, etc.)
{
"CustomerClassList": [
{
"CustomerClassId": "GC",
"Description": "General Contractor"
},
{
"CustomerClassId": "CC",
"Description": "Commercial Contractor"
},
{
"CustomerClassId": "G",
"Description": "Government Agency",
"Notes": "Must obtain a federal ID #."
},
{
"CustomerClassId": "NP",
"Description": "Non-Profit"
},
{
"CustomerClassId": "XX",
"Description": "Delinquent Accounts"
},
{
"CustomerClassId": "L",
"Description": "Landscaper"
},
{
"CustomerClassId": "P",
"Description": "Private Company\/Individual"
},
{
"CustomerClassId": "C",
"Description": "COD Customer"
}
]
}
TaxAuthorityList
TaxAuthorityList
- returns list of active tax authorities
{
"TaxAuthorityList": [
{
"TaxAuthId": "1901",
"Description": "Cle Elum"
},
{
"TaxAuthId": "CT",
"Description": "Connecticut Sales Tax"
},
{
"TaxAuthId": "MA",
"Description": "Massachusetts Sales Tax"
},
{
"TaxAuthId": "NH",
"Description": "New Hampshire"
},
{
"TaxAuthId": "VT",
"Description": "Vermont Sales Tax"
}
]
}
ZoneList
ZoneList
- returns list of active delivery zones
{
"ZoneList": [
{
"ZoneId": "05",
"Description": "05 Minutes"
},
{
"ZoneId": "10",
"Description": "10 Minutes"
},
{
"ZoneId": "15",
"Description": "15 Minutes"
},
{
"ZoneId": "20",
"Description": "20 Minutes"
}
]
}
PlantList
PlantList
- returns list of active plants
{
"PlantList": [
{
"PlantId": "01",
"Name": "GH Concrete Co., Inc.",
"PlantTypeId": "D" // Dispatch - Concrete
},
{
"PlantId": "02",
"Name": "GH Concrete Co., Inc.",
"PlantTypeId": "D"
},
{
"PlantId": "11",
"Name": "Springfield Sand & Gravel",
"PlantTypeId": "A" // Aggregate
},
{
"PlantId": "12",
"Name": "Hartford Sand & Gravel Co.",
"PlantTypeId": "A"
},
{
"PlantId": "20",
"Name": "ASPHALT PLANT",
"PlantTypeId": "S" // Asphalt
},
{
"PlantId": "21",
"Name": "GH Concrete Co., Inc.",
"PlantTypeId": "B" // Concrete
}
]
}
UsageList
UsageList
- returns list of active usage classes
{
"UsageList": [
{
"UsageId": "BA",
"Description": "BASEMENT"
},
{
"UsageId": "BD",
"Description": "BRIDGE DECK"
},
{
"UsageId": "C",
"Description": "CURBS"
},
{
"UsageId": "F",
"Description": "FOOTING"
},
{
"UsageId": "S",
"Description": "STEPS"
},
{
"UsageId": "W",
"Description": "WALLS"
}
]
}
ProductList
ProductList
?PlantId=xxx
?ProdType=x
?IngType=x
?Sellable=true|false
- returns list of active products
- use PlantId to include products for the specified plant
- use ProdType to include products of the specified type
- use IngType to include products of the specified ingredient type
- use Sellable to include products that are sellable/non-sellable (default = True)
{
"ProductList": [
{
"ProdId": "10416-21",
"Description1": "10x4x16 Solid",
"PlantId": "21"
},
{
"ProdId": "12416-21",
"Description1": "12x4x16 Solid",
"PlantId": "21"
},
{
"ProdId": "2510-01",
"Description1": "2500 PSI w\/ 57 Stone",
"PlantId": "01"
},
{
"ProdId": "2510-02",
"Description1": "2500 PSI w\/ 57 Stone",
"PlantId": "02"
},
{
"ProdId": "2510-03",
"Description1": "2500 PSI w\/ 57 Stone",
"PlantId": "03"
}
]
}
TaxExemptList
TaxExemptList
- returns list of active tax exempt reasons
{
"TaxExemptList": [
{
"ExemptId": "1",
"Description": "Reseller"
},
{
"ExemptId": "2",
"Description": "Transportation"
},
{
"ExemptId": "3",
"Description": "Government"
},
{
"ExemptId": "9",
"Description": "Service Charge"
}
]
}
PlantMixList
PlantMixList
- returns list of plant mix types
{
"PlantMixList": [
{
"PlantMixId": "D",
"Description": "Dry"
},
{
"PlantMixId": "W",
"Description": "Wet"
},
{
"PlantMixId": "",
"Description": "<Default>"
}
]
}
StatusList
StatusList
- returns list of quote statuses
{
"StatusList": [
{
"StatusId": "O",
"Description": "Open"
},
{
"StatusId": "W",
"Description": "Won"
},
{
"StatusId": "L",
"Description": "Lost"
},
{
"StatusId": "C",
"Description": "Closed"
}
]
}
ShowJobProdList
ShowJobProdList
- returns list of show job products codes
{
"ShowJobProdList": [
{
"ShowJobProdId": "0",
"Description": "Active Plant Products"
},
{
"ShowJobProdId": "1",
"Description": "Quoted & Active Plant Products"
},
{
"ShowJobProdId": "2",
"Description": "Quoted Products Only"
},
{
"ShowJobProdId": "3",
"Description": "Quoted Products Only Line 1"
},
{
"ShowJobProdId": "",
"Description": "<Default>"
}
]
}
ApprovalCodeList
ApprovalCodeList/{UserId}
- returns list of active approval codes for a user
{
"ApprovalCodeList": [
{
"ApprovalId": "100",
"Description": "Code 100",
"RoleId": "SLSPN"
},
{
"ApprovalId": "205",
"Description": "Code 205",
"RoleId": "BOSS"
},
{
"ApprovalId": "207",
"Description": "Code 207",
"RoleId": "BOSS"
},
{
"ApprovalId": "500",
"Description": "Code 500",
"RoleId": "BOSS"
}
]
}
JobClassList
JobClassList
- returns list of active job classes
{
"JobClassList": [
{
"JobClassId": "ST",
"Description": "State Job"
},
{
"JobClassId": "GC",
"Description": "General Contractor Job"
}
]
}
Action Endpoints
GetProductPrice
GetProductPrice/{Id}
?ProspId=xxx
?ZoneId=xxx
?TaxAuthId=xxx
?PlantId=xxx
?QtySold=xxx.xx
- returns product price for the specified Id
- ProspId specifies the prospect
- ZoneId specifies the zone
- TaxAuthId specifies the Tax Authority
- PlantId specifies the Plant
- QtySold specifies the quantity sold
{
"GetProductPrice": [
{
"Source": "C",
"UnitPrice": 89,
"UnitPctDisc": "2%",
"ProdUM": "CY",
"Description": "2500 PSI w/ Pea (FA)",
"TaxCode1": "Y",
"TaxCode2": "Y",
"TaxCode3": "Y"
}
]
}