TTI ============================================================================= :Provider Information: +-----------------+-------------------------------------------------+ | **Id** | tti | +-----------------+-------------------------------------------------+ | **Type** | terminal | +-----------------+-------------------------------------------------+ | **Trace Type** | API | +-----------------+-------------------------------------------------+ | **Credentials** | customer | +-----------------+-------------------------------------------------+ | **Limits** | 50 containers | +-----------------+-------------------------------------------------+ | **Status** | development | +-----------------+-------------------------------------------------+ | **Doc Status** | draft | +-----------------+-------------------------------------------------+ | **Doc Version** | 1 | +-----------------+-------------------------------------------------+ :URLs: +---------+---------------------------------------+-------------+ | Type | URL | Environment | +=========+=======================================+=============+ | Request | https://api.ttitns.com/api/containers | DEV/STG/PRD | +---------+---------------------------------------+-------------+ | Request | https://api.ttitns.com/api/gateio | DEV/STG/PRD | +---------+---------------------------------------+-------------+ :Sites: +------+---------+-----------------+ | Name | Site Id | Description | +======+=========+=================+ | name | ern | the description | +------+---------+-----------------+ Access Token ----------------------------------------------------------------------------- Querying containers requires an access token which is added to the requests' headers. .. note:: - TTI issues an access token for each customer. We are using the token for Tradelink. Requests ----------------------------------------------------------------------------- Query Containers Request ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Query containers using the following request by adding the access token to the headers and the container numbers to the URL **containerno** parameter. .. code-block:: shell GET https://api.ttitns.com/api/containers?containerno=MRKU5873840,MRSU4255942 .. note:: The container numbers are added to the URL **containerno** parameter separated by a comma like the example above. **headers** should be as following. .. code-block:: Authorization: Bearer Gate Transaction Request ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Find gate transactions by container numbers. Out gates and In gates are pulled from this API. .. code-block:: shell GET https://api.ttitns.com/api/gateio?containerno=GESU5091311,CAIU3465976 .. note:: The container numbers are added to the URL **containerno** parameter separated by a comma like the example above. **headers** should be as following. .. code-block:: Authorization: Bearer Responses ----------------------------------------------------------------------------- Query Containers Response ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If **token** is invalid, it returns the following response. Returned status code: 401 Unauthorized .. code-block:: 401 Unauthorized If a given container number was invalid or valid but not found it returns an empty response. Returned status code: 200 OK .. code-block:: [ ] If given containers contained valid and found containers and other invalid and/or not found containers, it returns the results for the found and ignores the invalid or not found. Returned status code: 200 OK .. code-block:: json [ { "containerNo": "MSMU8776189", "containerType": "G", "containerLength": "4", "containerHeight": "H", "fullEmpty": "F", "cargoType": "GN", "shippingCompanyScac": "MSCU", "vgm": 24691.0, "vgmUnit": "LB", "bookingNo": "", "overallOnHold": false, "holdStatus": { "holdReason": "", "customsHold": "Released", "freightHold": "Released", "usdaHold": "Released", "carrierHold": "Released", "terminalHold": "Released" }, "lastFreeDay": "2021-11-12", "tmfStatus": "Released", "paidThroughDate": "", "appointmentAvailable": false, "appointmentStartDateTime": "", "appointmentEndDateTime": "", "demurrageDue": "", "demurrageAmount": 0.0, "locationType": "D", "stackedDateTime": "2021-11-07T18:49:34-08:00", "updateDateTime": "2021-11-11T03:20:08-08:00" } ] Gate Transaction Response ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If **token** is invalid, it returns the following response. Returned status code: 401 Unauthorized .. code-block:: 401 Unauthorized If a given container number was invalid or valid but not found or found but does not have outgate or ingate events, it returns an empty response. Returned status code: 200 OK .. code-block:: [ ] If given containers contained valid and found containers and other invalid and/or not found containers and/or found containers with no outgate or ingate events, it returns the results for the found with events and ignores the invalid or not found. Returned status code: 200 OK .. code-block:: json [ { "containerNo": "FDCU0095006", "containerVisits": 1, "ioType": "OUT", "containerType": "G", "containerLength": "4", "containerHeight": "H", "fullEmpty": "F", "cargoType": "GN", "chassisNo": "PTCH494868", "shippingCompanyScac": "MSCU", "truckingCompanyScac": "PFCH", "truckingCompany": "PACIFICA TRUCKS", "truckArrivalDateTime": "2021-11-09T09:49:42-08:00", "pickupDeliveryDateTime": "2021-11-09T09:58:00-08:00", "truckDepartureDateTime": "", "transactionDate": "2021-11-09" } ] :Data Mapping: +------------------------+-----------------------+---------------------------------------------------------------------+ | Property | Source Property | Description | +========================+=======================+=====================================================================+ | container_number | containerNo | The container number | +------------------------+-----------------------+---------------------------------------------------------------------+ | carrier.steamshipLine | shippingCompanyScac | The shipping company scac | +------------------------+-----------------------+---------------------------------------------------------------------+ || event[n].code || stackedDateTime || Grounded event is created if stackedDateTime is not empty | || || locationType || and locationType is not 'V' | +------------------------+-----------------------+---------------------------------------------------------------------+ || event[n].code || appointmentAvailable || Released event is created if appointmentAvailable is true | || || overallOnHold || and overallOnHold is false | +------------------------+-----------------------+---------------------------------------------------------------------+ | event[n].code | ioType | Outgated event is created if ioType is 'OUT' | +------------------------+-----------------------+---------------------------------------------------------------------+ || event[n].code || holdStatus || * OBL hold event if holdStatus.freightHold is 'Hold' or 'No Entry' | || || || and locationType is not 'V' or 'D' | || || || * Customs Hold if holdStatus.customsHold is 'Hold' | || || || and locationType is not 'V' | || || || * EXAM Hold if holdStatus.usdaHold is 'Hold' | || || || and locationType is not 'V' | || || || * TMF Hold if holdStatus.terminalHold is 'Hold' | || || || and locationType is not 'V' | || || || * Demurrage Hold if demurrageDue is not empty | +------------------------+-----------------------+---------------------------------------------------------------------+ | event[n].location.name | Default | tti | +------------------------+-----------------------+---------------------------------------------------------------------+ | event[n].location.type | Default | Terminal as TTI is a terminal | +------------------------+-----------------------+---------------------------------------------------------------------+ | event[n].date | Default | Today date is a default date | +------------------------+-----------------------+---------------------------------------------------------------------+ :Grounded Event: +------------------------+------------------+------------------------------------------------------------+ | Property | Source Property | Description | +========================+==================+============================================================+ || event[n].code || stackedDateTime || Grounded event is created if stackedDateTime is not empty | || || locationType || and locationType is not 'V' | +------------------------+------------------+------------------------------------------------------------+ | event[n].location.name | Default | tti | +------------------------+------------------+------------------------------------------------------------+ | event[n].location.type | Default | Terminal as TTI is a terminal | +------------------------+------------------+------------------------------------------------------------+ | event[n].date | Default | Today date is a default date | +------------------------+------------------+------------------------------------------------------------+ | event[n].data.grounded | stackedDateTime | The date the container got grounded | +------------------------+------------------+------------------------------------------------------------+ :Lfd Event: +------------------------+--------------------------+-------------------------------------------------+ | Property | Source Property | Description | +========================+==========================+=================================================+ | event[n].code | lastFreeDay | Lfd event is created if lastFreeDay has a value | +------------------------+--------------------------+-------------------------------------------------+ | event[n].location.name | Default | tti | +------------------------+--------------------------+-------------------------------------------------+ | event[n].location.type | Default | Terminal as TTI is a terminal | +------------------------+--------------------------+-------------------------------------------------+ | event[n].date | Default | Today date is a default date | +------------------------+--------------------------+-------------------------------------------------+ | event[n].data.lfd | lastFreeDay | The last free date for container | +------------------------+--------------------------+-------------------------------------------------+ :Released Event: +------------------------+--------------------------+------------------------------------------------------------+ | Property | Source Property | Description | +========================+==========================+============================================================+ || event[n].code || appointmentAvailable || Released event is created if appointmentAvailable is true | || || overallOnHold || and overallOnHold is false | +------------------------+--------------------------+------------------------------------------------------------+ | event[n].location.name | Default | tti | +------------------------+--------------------------+------------------------------------------------------------+ | event[n].location.type | Default | Terminal as TTI is a terminal | +------------------------+--------------------------+------------------------------------------------------------+ | event[n].date | Default | Today date is a default date | +------------------------+--------------------------+------------------------------------------------------------+ | event[n].data.released | appointmentStartDateTime | The date the container is released | +------------------------+--------------------------+------------------------------------------------------------+ :Outgated Event: +---------------------------------+------------------------+----------------------------------------------+ | Property | Source Property | Description | +=================================+========================+==============================================+ | event[n].code | ioType | Outgated event is created if ioType is 'OUT' | +---------------------------------+------------------------+----------------------------------------------+ | event[n].location.name | Default | tti | +---------------------------------+------------------------+----------------------------------------------+ | event[n].location.type | Default | Terminal as TTI is a terminal | +---------------------------------+------------------------+----------------------------------------------+ | event[n].date | Default | Today date is a default date | +---------------------------------+------------------------+----------------------------------------------+ | event[n].data.outgated | pickupDeliveryDateTime | The date the container is outgated | +---------------------------------+------------------------+----------------------------------------------+ | event[n].data.outgate_scac | truckingCompanyScac | The trucking company scac | +---------------------------------+------------------------+----------------------------------------------+ | event[n].data.outgate_confirmed | Default | True | +---------------------------------+------------------------+----------------------------------------------+ :Hold Events: +-------------------------+-----------------+---------------------------------------------------------------------+ | Property | Source Property | Description | +=========================+=================+=====================================================================+ | event[n].code | Hold | Hold is the default value for the event | +-------------------------+-----------------+---------------------------------------------------------------------+ | event[n].date | Default | Today date is the default date value | +-------------------------+-----------------+---------------------------------------------------------------------+ || event[n].location.name || locationType || * "D": deck spot in yard | || || || * "W": wheel spot in yard | || || || * "V": on vessel | || || || * "G": at gate | || || || * "R": on rail car | || || || * "N": not in terminal | +-------------------------+-----------------+---------------------------------------------------------------------+ | event[n].location.type | Default | Terminal as TTI is a terminal | +-------------------------+-----------------+---------------------------------------------------------------------+ || event[n].code || holdStatus || * OBL hold event if holdStatus.freightHold is 'Hold' or 'No Entry' | || || || and locationType is not 'V' or 'D' | || || || * Customs Hold if holdStatus.customsHold is 'Hold' | || || || and locationType is not 'V' | || || || * EXAM Hold if holdStatus.usdaHold is 'Hold' | || || || and locationType is not 'V' | || || || * TMF Hold if holdStatus.terminalHold is 'Hold' | || || || and locationType is not 'V' | || || || * Demurrage Hold if demurrageDue is not empty | +-------------------------+-----------------+---------------------------------------------------------------------+ | event[n].data.code | holdStatus | Provider dependent code | +-------------------------+-----------------+---------------------------------------------------------------------+