Port Houston
- Provider Information:
Id |
port_houston |
Type |
terminal |
Trace Type |
API |
Credentials |
Uses username and password and it is customer based and customers must request API access from Port of Houston |
Limits
|
Maximum number of containers per request is 50
Maximum number of request call is 20k per day
|
Status |
development |
Doc Status |
draft |
Doc Version |
1 |
- URLs:
Type |
URL |
Environment |
---|---|---|
Request |
https://lynxapi.porthouston.com/lynxservice.asmx/GetAvailableContainersSQL |
DEV/STG/PRD |
- Sites:
Name |
Site Id |
Description |
---|---|---|
name |
ern |
the description |
Request
POST https://lynxapi.porthouston.com/lynxservice.asmx/GetAvailableContainersSQL
Note
This request needs in body: username, password, terminal code, and container numbers.
Container numbers should be separated with commas
Terminal codes goes as follow:
Terminal Name |
Terminal Code |
---|---|
Barbours Cut |
PHABC |
Bayport |
PHA |
headers should be as following.
Content-Type: application/x-www-form-urlencoded
body should be as following.
Body type needs to be x-www-form-urlencoded
UserName: <username>
PWD: <password>
TerminalCode: PHABC
ContainerNumber: TGBU6352241,KOCU5136383
Responses
Query Containers Request Response
If credentials of username and password are expired or they are invalid then the following response is returned.
Returned status code: 200 Ok
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Table1>
<LoginError>Login Error</LoginError>
</Table1>
</NewDataSet>
If TerminalCode is invalid, It returns the following response.
Returned status code: 500 Internal Server Error
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
If UserName, PWD, TerminalCode, or ContainerNumber is missing It returns the following response.
Returned status code: 500 Internal Server Error
Missing parameter: TerminalCode.
If given containers were invalid containers like Test123456 or having valid container but not found like UMXU253714 it returns the following response.
Returned status code: 200 OK
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Table1>
<GKEY>0</GKEY>
<STATUS>Error: Container not found.</STATUS>
<STATUSDETAILS>Error: Container not found.</STATUSDETAILS>
<OOGFL>False</OOGFL>
<ERROR>Error: Container not found.</ERROR>
</Table1>
</NewDataSet>
If given containers were valid but one found (TGBU6352241) and the other is not found (UMXU253714), It returns the following response.
Returned status code: 200 OK
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Table1>
<GKEY>25215813</GKEY>
<DRAFTNUMBER />
<EQUIPMENTNBR>TGBU6352241</EQUIPMENTNBR>
<BILLOFLADING>SZPM23657900</BILLOFLADING>
<READYFORDELIVERY>NO</READYFORDELIVERY>
<FREIGHT>RELEASED</FREIGHT>
<CUSTOMS>HOLD</CUSTOMS>
<VERIFIEDGROSSWEIGHT />
<HOLDS>BILL OF LADING HOLD - LINE,CUSTOMS DEFAULT HOLD</HOLDS>
<HOLD_TYPE />
<HOLD_GKEY />
<ROADIMPEDIMENTS>BILL OF LADING HOLD - LINE,CUSTOMS DEFAULT HOLD</ROADIMPEDIMENTS>
<GOODTHRU />
<DEMURRAGE />
<LOCATION>VESSEL</LOCATION>
<LOCATIONDETAILS>V-OXM-057W</LOCATIONDETAILS>
<SHIPPINGLINE>HAS</SHIPPINGLINE>
<SHIPPINGLINEDETAILS>Hyundai America Shipping</SHIPPINGLINEDETAILS>
<VESSELVOYAGE>OXM-057W</VESSELVOYAGE>
<EQSZ>40</EQSZ>
<EQTP>GP</EQTP>
<EQHT>96</EQHT>
<DISCHARGED />
<GROSSWEIGHT>3700.0</GROSSWEIGHT>
<HAZ_CLASS />
<CATEGORY>IMPRT</CATEGORY>
<CATEGORYDETAILS>IMPRT</CATEGORYDETAILS>
<STATUS>FCL</STATUS>
<STATUSDETAILS>FCL</STATUSDETAILS>
<OOGFL>false</OOGFL>
<FROM_DATE />
<TO_DATE />
<OUT_TIME />
<PORT_PTD />
<GTD />
<VESSEL>OXM</VESSEL>
<VOYAGE>057E</VOYAGE>
<PORT_LFD />
<TRUCKER />
<DESCRIPTION />
<FEE_AMOUNT />
<QUANTITY />
<LINE_LFD />
<ISOCODE>45G1</ISOCODE>
<POSITION>V-OXM-057W</POSITION>
<POL>CNYTN</POL>
<TEMP />
<SEAL1>211084367</SEAL1>
</Table1>
</NewDataSet>
Outgated Event Request Response
To get the information about whether the container is outgated or not, A request has to be sent to the given url.
POST https://lynxapi.porthouston.com/lynxservice.asmx/GetGateTransactionsSQL
headers should be as following.
Content-Type: application/x-www-form-urlencoded
body should be as following.
UserName: <username>
PWD: <password>
TerminalCode: PHABC
TransNumber:
TransType:
TransStatus:
TransFromDate:
TransToDate:
Equipment: TGBU6352241
BookNumber:
LineID:
TruckNumber:
TruckCompany: <Scac>
Note
This request needs in body all the above fields, however you need only (UserName, PWD, Equipment, and TruckCompany) to not be empty the rest could be empty we don’t need them with values but they are required parameters.
TerminalCode goes just like the availability request above.
Equipment filed takes only one container at a time.
If credentials of username and password are expired or they are invalid then the following response is returned.
Returned status code: 200 Ok
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Table1>
<LoginError>Login Error</LoginError>
</Table1>
</NewDataSet>
If TerminalCode is invalid, It returns the following response.
Returned status code: 500 Internal Server Error
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
If any of the required parameters are missing It returns the following response.
Returned status code: 500 Internal Server Error
Missing parameter: TerminalCode.
If given container is not correct it returns the following response.
Returned status code: 200 OK
<?xml version="1.0" encoding="utf-8"?>
<RESULTS>
</RESULTS>
Response if body request has right data
Returned status code: 200 OK
<?xml version="1.0" encoding="utf-8"?>
<RESULTS>
<TABLE>
<TRANGKEY>18249032</TRANGKEY>
<TRANSNBR>4995862</TRANSNBR>
<DATETIME>2022-01-11 11:34:58.213</DATETIME>
<TRANSTYPE>DI</TRANSTYPE>
<TRANTYPEDESC>DI</TRANTYPEDESC>
<STATUS>COMPLETE</STATUS>
<TRUCKID>OXPQ</TRUCKID>
<TRUCKINGCOMPANY>OVERLAND EXPRESS CO., INC.</TRUCKINGCOMPANY>
<TRUCKLICENSENBR>1L41256</TRUCKLICENSENBR>
<SHIPPINGLINE>MSC</SHIPPINGLINE>
<CONTAINER>MSMU5099042</CONTAINER>
<BOOKING>
</BOOKING>
<SEAL1>2152837</SEAL1>
<GROSSWEIGHT>50040.0</GROSSWEIGHT>
<CONTAINERISO>4510</CONTAINERISO>
<ITEMISO>
</ITEMISO>
<EIRTIME>2022-01-11 12:25:34.303</EIRTIME>
<CHASSISNBR>OXPQ000483</CHASSISNBR>
<ISOWNER>true</ISOWNER>
<VESSEL>MMT-152E</VESSEL>
<TICKETPOS>5G74</TICKETPOS>
<IDONBR>
</IDONBR>
</TABLE>
</RESULTS>
- Data Mapping:
Property |
Source Property |
Description |
---|---|---|
container_number |
EQUIPMENTNBR |
The container reference number |
steamshipBL |
BILLOFLADING |
Bill of lading |
carrier.vessel |
VESSEL |
Carrier vessel number |
carrier.voyage |
VOYAGE |
Carrier Voyage number |
Grounded Event Response
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Table1>
<GKEY>25107899</GKEY>
<DRAFTNUMBER />
<EQUIPMENTNBR>KOCU5123869</EQUIPMENTNBR>
<BILLOFLADING>SHAZ71000100</BILLOFLADING>
<READYFORDELIVERY>YES</READYFORDELIVERY>
<FREIGHT>RELEASED</FREIGHT>
<CUSTOMS>RELEASED</CUSTOMS>
<VERIFIEDGROSSWEIGHT>7200.0 KG</VERIFIEDGROSSWEIGHT>
<HOLDS />
<HOLD_TYPE />
<HOLD_GKEY />
<ROADIMPEDIMENTS />
<GOODTHRU>2022-01-17 07:00:00</GOODTHRU>
<DEMURRAGE />
<LOCATION>YARD</LOCATION>
<LOCATIONDETAILS>Y-BCT-1I22C.1</LOCATIONDETAILS>
<SHIPPINGLINE>HAS</SHIPPINGLINE>
<SHIPPINGLINEDETAILS>Hyundai America Shipping</SHIPPINGLINEDETAILS>
<VESSELVOYAGE>OUV-058W</VESSELVOYAGE>
<EQSZ>40</EQSZ>
<EQTP>GP</EQTP>
<EQHT>96</EQHT>
<DISCHARGED>2022-01-10 14:12:23.843</DISCHARGED>
<GROSSWEIGHT>7200.0</GROSSWEIGHT>
<HAZ_CLASS />
<CATEGORY>IMPRT</CATEGORY>
<CATEGORYDETAILS>IMPRT</CATEGORYDETAILS>
<STATUS>FCL</STATUS>
<STATUSDETAILS>FCL</STATUSDETAILS>
<OOGFL>false</OOGFL>
<FROM_DATE />
<TO_DATE />
<OUT_TIME />
<PORT_PTD />
<GTD />
<VESSEL>OUV</VESSEL>
<VOYAGE>058E</VOYAGE>
<PORT_LFD>2022-01-17 07:00:00</PORT_LFD>
<TRUCKER />
<DESCRIPTION />
<FEE_AMOUNT />
<QUANTITY />
<LINE_LFD />
<ISOCODE>45G1</ISOCODE>
<POSITION>Y-BCT-1I22C.1</POSITION>
<POL>CNSHA</POL>
<TEMP />
<SEAL1>211038141</SEAL1>
</Table1>
</NewDataSet>
- Grounded Event Data Mapping:
Property |
Source Property |
Description |
---|---|---|
event[n].code |
LOCATION |
Grounded event is created if LOCATION is YARD |
event[n].location.lot |
POSITION |
Lot of the location. |
event[n].location.name |
Default |
BarboursCut or Bayport depending on the terminal code |
event[n].location.type |
Default |
Terminal |
event[n].date |
Default |
Today date is a default date |
event[n].data.grounded |
Default |
Empty string as api does not provide a date |
Lfd Event Response
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Table1>
<GKEY>25107900</GKEY>
<DRAFTNUMBER />
<EQUIPMENTNBR>SEGU5697406</EQUIPMENTNBR>
<BILLOFLADING>SHAZ71000300</BILLOFLADING>
<READYFORDELIVERY>YES</READYFORDELIVERY>
<FREIGHT>RELEASED</FREIGHT>
<CUSTOMS>RELEASED</CUSTOMS>
<VERIFIEDGROSSWEIGHT>7685.0 KG</VERIFIEDGROSSWEIGHT>
<HOLDS />
<HOLD_TYPE />
<HOLD_GKEY />
<ROADIMPEDIMENTS />
<GOODTHRU>2022-01-17 07:00:00</GOODTHRU>
<DEMURRAGE />
<LOCATION>YARD</LOCATION>
<LOCATIONDETAILS>Y-BCT-0G82F.1</LOCATIONDETAILS>
<SHIPPINGLINE>HAS</SHIPPINGLINE>
<SHIPPINGLINEDETAILS>Hyundai America Shipping</SHIPPINGLINEDETAILS>
<VESSELVOYAGE>OUV-058W</VESSELVOYAGE>
<EQSZ>40</EQSZ>
<EQTP>GP</EQTP>
<EQHT>96</EQHT>
<DISCHARGED>2022-01-10 13:50:22.297</DISCHARGED>
<GROSSWEIGHT>7685.0</GROSSWEIGHT>
<HAZ_CLASS />
<CATEGORY>IMPRT</CATEGORY>
<CATEGORYDETAILS>IMPRT</CATEGORYDETAILS>
<STATUS>FCL</STATUS>
<STATUSDETAILS>FCL</STATUSDETAILS>
<OOGFL>false</OOGFL>
<FROM_DATE />
<TO_DATE />
<OUT_TIME />
<PORT_PTD />
<GTD />
<VESSEL>OUV</VESSEL>
<VOYAGE>058E</VOYAGE>
<PORT_LFD>2022-01-17 07:00:00</PORT_LFD>
<TRUCKER />
<DESCRIPTION />
<FEE_AMOUNT />
<QUANTITY />
<LINE_LFD />
<ISOCODE>45G1</ISOCODE>
<POSITION>Y-BCT-0G82F.1</POSITION>
<POL>CNSHA</POL>
<TEMP />
<SEAL1>211332596</SEAL1>
</Table1>
</NewDataSet>
- Lfd Event Data Mapping:
Property |
Source Property |
Description |
---|---|---|
event[n].code
|
LINE_LFD
|
Lfd event is created If LINE_LFD has a value
|
event[n].location.lot |
POSITION |
Lot of the POSITION |
event[n].location.name |
Default |
BarboursCut or Bayport depending on the terminal code |
event[n].location.type |
Default |
Terminal |
event[n].date |
Default |
Today date is a default date |
event[n].data.lfd |
LINE_LFD |
Last free date for container |
Released Event Response
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Table1>
<GKEY>25107900</GKEY>
<DRAFTNUMBER />
<EQUIPMENTNBR>SEGU5697406</EQUIPMENTNBR>
<BILLOFLADING>SHAZ71000300</BILLOFLADING>
<READYFORDELIVERY>YES</READYFORDELIVERY>
<FREIGHT>RELEASED</FREIGHT>
<CUSTOMS>RELEASED</CUSTOMS>
<VERIFIEDGROSSWEIGHT>7685.0 KG</VERIFIEDGROSSWEIGHT>
<HOLDS />
<HOLD_TYPE />
<HOLD_GKEY />
<ROADIMPEDIMENTS />
<GOODTHRU>2022-01-17 07:00:00</GOODTHRU>
<DEMURRAGE />
<LOCATION>YARD</LOCATION>
<LOCATIONDETAILS>Y-BCT-0G82F.1</LOCATIONDETAILS>
<SHIPPINGLINE>HAS</SHIPPINGLINE>
<SHIPPINGLINEDETAILS>Hyundai America Shipping</SHIPPINGLINEDETAILS>
<VESSELVOYAGE>OUV-058W</VESSELVOYAGE>
<EQSZ>40</EQSZ>
<EQTP>GP</EQTP>
<EQHT>96</EQHT>
<DISCHARGED>2022-01-10 13:50:22.297</DISCHARGED>
<GROSSWEIGHT>7685.0</GROSSWEIGHT>
<HAZ_CLASS />
<CATEGORY>IMPRT</CATEGORY>
<CATEGORYDETAILS>IMPRT</CATEGORYDETAILS>
<STATUS>FCL</STATUS>
<STATUSDETAILS>FCL</STATUSDETAILS>
<OOGFL>false</OOGFL>
<FROM_DATE />
<TO_DATE />
<OUT_TIME />
<PORT_PTD />
<GTD />
<VESSEL>OUV</VESSEL>
<VOYAGE>058E</VOYAGE>
<PORT_LFD>2022-01-17 07:00:00</PORT_LFD>
<TRUCKER />
<DESCRIPTION />
<FEE_AMOUNT />
<QUANTITY />
<LINE_LFD />
<ISOCODE>45G1</ISOCODE>
<POSITION>Y-BCT-0G82F.1</POSITION>
<POL>CNSHA</POL>
<TEMP />
<SEAL1>211332596</SEAL1>
</Table1>
</NewDataSet>
- Released Event Data Mapping:
Property |
Source Property |
Description |
---|---|---|
event[n].code
|
READYFORDELIVERY
|
Released event is created If
READYFORDELIVERY = ‘Yes’
|
event[n].location.lot |
POSITION |
Lot of the POSITION |
event[n].location.name |
Default |
BarboursCut or Bayport depending on the terminal code |
event[n].location.type |
Default |
Terminal |
event[n].date |
Default |
Today date is a default date |
event[n].data.released |
Default |
Empty string as api does not provide a date |
Outgated Event Response
<?xml version="1.0" encoding="utf-8"?>
<RESULTS>
<TABLE>
<TRANGKEY>18249032</TRANGKEY>
<TRANSNBR>4995862</TRANSNBR>
<DATETIME>2022-01-11 11:34:58.213</DATETIME>
<TRANSTYPE>DI</TRANSTYPE>
<TRANTYPEDESC>DI</TRANTYPEDESC>
<STATUS>COMPLETE</STATUS>
<TRUCKID>OXPQ</TRUCKID>
<TRUCKINGCOMPANY>OVERLAND EXPRESS CO., INC.</TRUCKINGCOMPANY>
<TRUCKLICENSENBR>1L41256</TRUCKLICENSENBR>
<SHIPPINGLINE>MSC</SHIPPINGLINE>
<CONTAINER>MSMU5099042</CONTAINER>
<BOOKING>
</BOOKING>
<SEAL1>2152837</SEAL1>
<GROSSWEIGHT>50040.0</GROSSWEIGHT>
<CONTAINERISO>4510</CONTAINERISO>
<ITEMISO>
</ITEMISO>
<EIRTIME>2022-01-11 12:25:34.303</EIRTIME>
<CHASSISNBR>OXPQ000483</CHASSISNBR>
<ISOWNER>true</ISOWNER>
<VESSEL>MMT-152E</VESSEL>
<TICKETPOS>5G74</TICKETPOS>
<IDONBR>
</IDONBR>
</TABLE>
</RESULTS>
Note
If truckingCompany is sent on the event, and availability endpoint has LOCATION = TRUCK then the outgate endpoint is called to get the outgate information. Once the outgated information is received, the outgated event is created with outgated Confirmed = True and outgated datetime value. If truckingCompany is not sent on the event and the container has location with TRUCK then the outgated event is created with outgated Confirmed = False and outgated defaulted to today.
- Outgated Event Data Mapping:
Property |
Source Property |
Description |
---|---|---|
event[n].code
|
LOCATION
|
Outgated event is created if LOCATION is TRUCK
And we call the other endpoint for the outgate
|
event[n].location.name |
Default |
BarboursCut or Bayport depending on the terminal code |
event[n].location.type |
Default |
Terminal |
event[n].date |
Default |
Today date is a default date |
event[n].data.outgated |
DATETIME |
Outgate datetime and it comes for the outgate endpoint |
event[n].data.outgate_scac |
TRUCKER |
Trucking company name and it comes from the outgate endpoint |
event[n].data.outgate_confirmed |
Default |
Value is set to True as the API provides the outgate information |
Hold Events Response
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Table1>
<GKEY>25280857</GKEY>
<DRAFTNUMBER />
<EQUIPMENTNBR>BHCU3221689</EQUIPMENTNBR>
<BILLOFLADING>SHAZ80835000</BILLOFLADING>
<READYFORDELIVERY>NO</READYFORDELIVERY>
<FREIGHT>RELEASED</FREIGHT>
<CUSTOMS>HOLD</CUSTOMS>
<VERIFIEDGROSSWEIGHT />
<HOLDS>BILL OF LADING HOLD - LINE,CUSTOMS DEFAULT HOLD</HOLDS>
<HOLD_TYPE />
<HOLD_GKEY />
<ROADIMPEDIMENTS>BILL OF LADING HOLD - LINE,CUSTOMS DEFAULT HOLD</ROADIMPEDIMENTS>
<GOODTHRU />
<DEMURRAGE />
<LOCATION>VESSEL</LOCATION>
<LOCATIONDETAILS>V-OXM-057W</LOCATIONDETAILS>
<SHIPPINGLINE>HAS</SHIPPINGLINE>
<SHIPPINGLINEDETAILS>Hyundai America Shipping</SHIPPINGLINEDETAILS>
<VESSELVOYAGE>OXM-057W</VESSELVOYAGE>
<EQSZ>20</EQSZ>
<EQTP>GP</EQTP>
<EQHT>86</EQHT>
<DISCHARGED />
<GROSSWEIGHT>1900.0</GROSSWEIGHT>
<HAZ_CLASS />
<CATEGORY>IMPRT</CATEGORY>
<CATEGORYDETAILS>IMPRT</CATEGORYDETAILS>
<STATUS>FCL</STATUS>
<STATUSDETAILS>FCL</STATUSDETAILS>
<OOGFL>false</OOGFL>
<FROM_DATE />
<TO_DATE />
<OUT_TIME />
<PORT_PTD />
<GTD />
<VESSEL>OXM</VESSEL>
<VOYAGE>057E</VOYAGE>
<PORT_LFD />
<TRUCKER />
<DESCRIPTION />
<FEE_AMOUNT />
<QUANTITY />
<LINE_LFD />
<ISOCODE>22G1</ISOCODE>
<POSITION>V-OXM-057W</POSITION>
<POL>CNSHA</POL>
<TEMP />
<SEAL1>211612319</SEAL1>
</Table1>
</NewDataSet>
- Hold Events:
Property |
Source Property |
Description |
---|---|---|
event[n].code |
Default |
Hold as it is hold event |
event[n].location.name |
Default |
BarboursCut or Bayport depending on the terminal code |
event[n].location.type |
Default |
Terminal |
event[n].date |
Default |
Today date is a default date |
event[n].holdType |
hold_information.hold_id |
HoldType can be: Custom if HOLDS has Customs. Line if HOLDS has Line. Demurrage if DEMURRAGE is hold. |
event[n].data.code |
hold_information.hold_id |
hold_id determine code and it can be: Custom Hold. Demurrage Hold. Line Hold. |