June 5, 2013
VIA EMAIL
To:Pierce Coffee, Transurban
From:Andrew LaVanway and Erin Leahy,O’Keeffe & Company, Inc.
Re:95 Express Lanes Flexible API
The following document outlinesthe flexible API approach and provides examples of API calls as they are currently structured and as they would be structured under the new approach.
Flexible API
The proposed API utilizes JSON RPC to exchange data describing SQL queries to run on the BOS.
Data sent to the BOS will include:
Columns and WHERE clauses for SELECT statements
Columns and values for INSERT statements
Columns, values, and WHERE clauses for UPDATE statements
Data sent from the BOS will include:
Rows of data with only requested columns
Inserted row IDs
Rows affected from UPDATEs
Errors for bad queries
Example API Calls
Insert.Req.json
POST/insertHTTP/1.1Host:localhost:8080
Content-Type:application/json
Cache-Control:no-cache
{
"id":1370359072,
"method":"Accounts",
"params":[
{
"columns":[
"AccountStatus",
"AccountType",
"Email"
],
"values":[
"ACTIVE",
"HOTLANE",
""
],
}
]
}
Insert.Resp.json
HTTP/1.1200OKContent-Type:application/json;charset=utf-8
Date:Mon,03Jun201321:24:26GMT
{
"result":{
"id":2002012
},
"id":1370359072,
"error":null
}
SOAP.Request.xml
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelopexmlns:SOAP-ENV="
<SOAP-ENV:Body
<ns1:GetAccountReqMsg>
<ns1:MsgHeader>
<ns1:MsgID>1370364783361</ns1:MsgID>
<ns1:MsgDate>1370364783361</ns1:MsgDate>
</ns1:MsgHeader>
<ns1:GetAccountReq>
<ns1:AccountID>8</ns1:AccountID>
</ns1:GetAccountReq>
</ns1:GetAccountReqMsg>
</SOAP-ENV:Body
</SOAP-ENV:Envelope
SOAP.Response.xml
soap:Envelopexmlns:soap="soap:Body
GetAccountRespMsgxmlns="
RspHeader
MsgID1370364783361</MsgID
RspDt1370364783361</RspDt
</RspHeader
AccountID8</AccountID
AccountTypePREPAID</AccountType
AccountStatusACTIVE</AccountStatus
<Email</Email>
<Username</Username>
<Password</Password>
BillingDemo
DemographicID8</DemographicID
LastNameTAG DISTRIBUTION ACCT</LastName
<Address1>P.O. Box 39</Address1>
<City>Dartmouth</City>
<State>NS</State>
ZipCodeB2Y 3Y2</ZipCode
DemoTypeBILLING</DemoType
</BillingDemo
VehicleList/>
PhoneList/>
</GetAccountRespMsg
</soap:Body
</soap:Envelope
Select.Req.json
POST/selectHTTP/1.1Host:localhost:8080
Content-Type:application/json
Cache-Control:no-cache
{
"id":1370359072,
"method":"Accounts",
"params":[
{
"columns":[
"AccountID",
"AccountStatus"
],
"where":{
"Email":""
},
"start":0
}
]
}
Select.Resp.json
HTTP/1.1200OKContent-Type:application/json;charset=utf-8
Date:Mon,03Jun201321:24:26GMT
{
"result":{
"total":1,
"rows":[
{
"AccountID":2001023,
"AccountStatus":"ACTIVE"
}
]
},
"id":1370359072,
"error":null
}
Thank you for taking the time to review this memorandum. Please do not hesitate to contact us at (703) 883-9000 ext. 106 or 139if you have any questions.
1