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.1
Host: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.1200OK
Content-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.1
Host: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.1200OK
Content-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