Maher ============================================================================= :Provider Information: +-----------------+-------------------------------------------------+ | **Id** | maher | +-----------------+-------------------------------------------------+ | **Type** | terminal | +-----------------+-------------------------------------------------+ | **Trace Type** | API | +-----------------+-------------------------------------------------+ | **Credentials** | SID and Authorization, and it is customer based | +-----------------+-------------------------------------------------+ | **Limits** | 1 container per request | +-----------------+-------------------------------------------------+ | **Status** | completed | +-----------------+-------------------------------------------------+ | **Doc Status** | draft | +-----------------+-------------------------------------------------+ | **Doc Version** | 1 | +-----------------+-------------------------------------------------+ :URLs: +---------+-------------------------------------------------------------------------+------------+ | Type | URL | Environment| +=========+=========================================================================+============+ | Request | https://api.maherterminals.com/apigateway/rest/inquiry/import/container | DEV/STG/PRD| +---------+-------------------------------------------------------------------------+------------+ :Sites: +------+---------+-----------------+ | Name | Site Id | Description | +======+=========+=================+ | name | ern | the description | +------+---------+-----------------+ Request ----------------------------------------------------------------------------- The mechanism to request container information. URL .. code-block:: shell GET https://api.maherterminals.com/apigateway/rest/inquiry/import/container Headers | Content-Type: application/json | SID: | Authorization: | Timestamp: Payload Raw Text .. code-block:: text Container=CSNU6392531 Responses ----------------------------------------------------------------------------- Get Container Response .. code-block:: json { "MaherApiInquiryService": { "Container": "TEMU3339170", "LineOperatorDescription": "Zim Container Services", "IsoCode": "22G1", "IsoDescription": "20' 8'6\" Dry", "LeaseDescription": "", "Category": "Import", "TransitState": "Inbound", "FreightKind": "FCL", "Available": "No", "ComplexPosition": "V-ZMMO083E", "VesselDescription": "Zim Monaco", "Voyage": "083E", "PolUnlocCode": "TRALI", "PolUnlocDescription": "Aliaga, Turkey", "GroupCode": "", "BillsOfLadings": [ { "BillOfLading": "IZM21900995", "BolHolds": [ { "HoldType": "CUSTOMS", "HoldCode": "NO CUSTOMS RELEASE", "HoldDescription": "NO CUSTOMS RELEASE" }, { "HoldType": "STEAMSHIP LINE", "HoldCode": "FREIGHT RELEASE", "HoldDescription": "Line Freight Release" } ] } ], "GrossWeight": "59128", "CargoWeight": "53828", "TareWeight": "5300", "Reefer": {}, "IsHazardous": "False", "SealNumber1": "A120188909", "SealNumber2": "", "SealNumber3": "", "SealNumber4": "", "ContainerHolds": [ { "ContainerHoldType": "STEAMSHIP LINE", "ContainerHoldCode": "FREIGHT RELEASE", "ContainerHoldDescription": "Line Freight Release" }, { "ContainerHoldType": "CUSTOMS", "ContainerHoldCode": "NO CUSTOMS RELEASE", "ContainerHoldDescription": "NO CUSTOMS RELEASE" } ], "InDate": "", "FreeTimeExpirationDate": "", "DemurrageDays": "", "DemurrageBalanceDue": "", "ExamChargesDue": "", "BondedTruckerScac": "", "BondedTruckerDescription": "", "UtcsInformation": { "AccountStatus": "", "TruckerStatus": "OK", "ExpirationDate": "", "InsuranceExpirationDate": "2022-MAR-15", "CreditExpirationDate": "" }, "OutDate": "", "OutMode": "TRUCK", "OutVisit": "", "OutTransactionNumber": "", "OutTruckingCompanyDescription": "", "OutDriverCard": "", "OutDriverName": "" } } :Data Mapping: +---------------------------+-------------------------------+---------------------------------------------------+ | Property | Source Property | Description | +===========================+===============================+===================================================+ | container_number | Container | The container number. | +---------------------------+-------------------------------+---------------------------------------------------+ | description | LineOperatorDescription | Represents the description | +---------------------------+-------------------------------+---------------------------------------------------+ | loaded | loadEmptyChassisCode | Represents if container is loaded or empty | +---------------------------+-------------------------------+---------------------------------------------------+ | steamshipBL | BillsOfLadings.BillOfLading || The first bill of lading from the | | | || bill of ladings array. | +---------------------------+-------------------------------+---------------------------------------------------+ | carrier.type | || A static value 'vessel' if VesselDescription | | | || has value. | +---------------------------+-------------------------------+---------------------------------------------------+ | carrier.steamshipLine | BondedTruckerScac | A Scac of the carrier | +---------------------------+-------------------------------+---------------------------------------------------+ | carrier.vessel | VesselDescription | The vessel description | +---------------------------+-------------------------------+---------------------------------------------------+ | carrier.voyage_id | Voyage | The voyage id | +---------------------------+-------------------------------+---------------------------------------------------+ | destination.type | | A static value 'rail' | +---------------------------+-------------------------------+---------------------------------------------------+ | destination.site_id | PolUnlocCode | A site id | +---------------------------+-------------------------------+---------------------------------------------------+ | destination.name | PolUnlocDescription | Destination station name | +---------------------------+-------------------------------+---------------------------------------------------+ | event[n].code | | One of the folowing values: | | | | | | | | * | 'grounded': when InDate has a value | | | | * | 'arrived': when Available = 'Yes' | | | | * | 'lfd': when the FreeTimeExpirationDate has | | | | | a value | | | | * | 'released': when the FreeTimeExpirationDate | | | | | has a value | | | | * | 'outgated': when OutDate has no value and | | | | | FreeTimeExpirationDate has a value | | | | * | 'eta': when | | | | * | 'hold': when ContainerHolds.ContainerHoldType | | | | | in ('customs','line','steamship','usda') | +---------------------------+-------------------------------+---------------------------------------------------+ | event[n].date | || Date and time when this event was stored and it | | | || is value is always set to the current date time. | +---------------------------+-------------------------------+---------------------------------------------------+ | event[n].location.site_id | PolUnlocCode | The location site id | +---------------------------+-------------------------------+---------------------------------------------------+ | event[n].location.name | PolUnlocDescription | Name of the location | +---------------------------+-------------------------------+---------------------------------------------------+ | event[n].data.outgated | OutDate || Outgated event date. Filled | | | || if the event_code = 'outgated' | +---------------------------+-------------------------------+---------------------------------------------------+ | event[n].data.grounded | InDate || Grounded event date. Filled | | | || if the event_code = 'grounded' | +---------------------------+-------------------------------+---------------------------------------------------+ || event[n].data.arrived || InDate || Arrival event date. Filled | || || || if the event_code = 'arrived' | +---------------------------+-------------------------------+---------------------------------------------------+ | event[n].data.lfd | InDate || Lfd event date. Filled | | | || if the event_code = 'lfd' | +---------------------------+-------------------------------+---------------------------------------------------+ | event[n].data.released | InDate || Release event date. Filled | | | || if the event_code = 'released' | +---------------------------+-------------------------------+---------------------------------------------------+ Unauthorized to View Container Response .. code-block:: json { "error":{ "status":"403", "message":"Unauthorized to View Container CONT123456" } } Missing Authorization Response .. code-block:: json { "error":{ "status":"401", "message":"Missing Authorization" } } Invalid Authorization Response .. code-block:: json { "error": { "status": "401", "message": "Invalid authorization" } } Missing SID Response .. code-block:: json { "error":{ "status":"401", "message":"Missing SID" } } Invalid SID Response .. code-block:: json { "error": { "status": "401", "message": "Invalid SID" } } Missing Timestamp Response .. code-block:: json { "error":{ "status":"401", "message":"Missing Timestamp" } } Invalid Timestamp Format Response .. code-block:: json { "error":{ "status":"401", "message":"Invalid Timestamp Format" } } Expired Timestamp Response .. code-block:: json { "error": { "status": "401", "message": "TimeStamp has expired" } } .. todo:: Describe response for: * Unsuported Media Type Response * Internal Server Error Response