LogisoftLogisoft Logo

Save booking

API Version: v1.0

Overview

The Save Booking API allows you to create or update bookings on Save and receive real-time updates from Logisoft.

PS: To use this API, please provide us with your IP address for whitelisting.

Sample Request

HTTP

 POST https://app.logisoft.io/api/booking/save

Responses

StatusMeaningDescription
200OKSuccessful operation
1OKOk with DomainErrorMessage if an exception is handled
500Internal Server ErrorSomething has gone wrong on the website's server.

Parameters

NameType
ExtBookingSaveMessageobject

ExtBookingSaveMessage

Property NameRequiredTypeDescription
BookingtrueExtBookingBooking object
TestOnlytrueboolIndicates whether this request is for testing purposes only

ExtBooking

Property NameRequiredTypeDescription
HeadertrueExtBookingHeaderThe booking header
Itemstrue<ExtBookingItem> listList of booking items

ExtBookingHeader

Property NameRequiredTypeDescription
IdtruelongThe booking id
RequestfalseExtBookingQuotationExtBookingQuotation obejct
OwnerIdfalselongThe owner Id
PolReferencefalseExtQuotationPortExtQuotationPort object
PodReferencefalseExtQuotationPortExtQuotationPort object
PaymentTermsfalseInvoicePayTermUponReceipt = 0, OnIssueDate = 1,OnSailingDate = 2
PaymentDaysfalseintNumber of payment days
ShippingTermsfalsestringShipping terms
CargoTypefalseCargoTypeGeneral = 1, Roro = 2,FCL = 3, LCL = 4, Bulk = 5
TransportModefalseTransportModeGeneral = 1, Roro = 2,FCL = 3, LCL = 4, Bulk = 5
StatusfalsestringBooking status
RequestTypefalseRequestTypeQuotation = 1, BookingRequest = 2
VoyageIdfalselongVoyage Id
EstimatedDeliveryOnfalseDateTimeEstimated date and time of unit delivery
PickupOnfalseDateTimeDate and Time of unit pickup
CreatedOnfalseDateTimeDate and time of booking creation
ItemCountfalseintbooking items count
Notefalsestringadditional Notes
PrefixfalsestringBooking prefix
NumberfalselongBooking number
IsCanceledtrueboolIndicates whether the booking is canceled
ReferenceNumberfalsestringClient reference number
DescriptionfalsestringBooking description
BookingCodefalsestringBooking code
PolfalsestringThe name of the port of loading
TerminalfalsestringThe name of the terminal
BookingVoyagefalsestringThe voyage number
PodfalsestringThe name of the port of discharge
AgentIdtruelongThe Id of the shipping agent, provided by us
LinefalsestringThe name of the shipping line
ShippertrueExtBookingPartyThe shipper object
ExportertrueExtBookingPartyThe exporter object
ConsigneetrueExtBookingPartyThe consignee object
ClienttrueExtBookingPartyThe client object
IntermediateConsigneetrueExtBookingPartyThe intermediate consignee object
NotifytrueExtBookingPartyThe object of the person to notify
NvocctrueExtBookingPartyThe NVOCC object
DestinationAgenttrueExtBookingPartyThe destination agent object
CollectortrueExtBookingPartyThe collector object
OriginAddresstrueExtBookingPartyAddress
DestinationAddresstrueExtBookingPartyAddress
CustomsTemplateIdfalselongId of customs template

ExtBookingItem

Property NameRequiredTypeDescription
IdfalsestringId of the booking item
RelativeIdtrueintIndicates the order of the item in the sent object
IsCanceledtrueboolIndicates whether the booking item is canceled
ReferencefalsestringReference number of booking item
DescriptionfalsestringVehicle's model
BolDescriptionfalsestringVehicle's model to show on the bill of lading
SerialTypefalsestringSerial or VIN
SerialNumberfalsestringSerial number or the VIN number of the unit
YearfalseintThe booking item's registration year
TypefalsestringC = car, V = Van, B = Big Van, T = Truck, U = Unit, M = Motorcycle, E = Equipment, K = Container
QuantityfalseintBooking items count
LengthfalseintThe booking item's length
WidthfalseintThe booking item's width
HeightfalseintThe booking item's height
WeightfalseintThe booking item's weight
HasCustomCbmtrueboolIndicates whether the booking item's cubic meter has been measured by customs
BolCbmfalsedecimalThe booking item's cubic meter to show on the bill of lading
PriorityfalsestringUsed, VIP, new, priority
BlocktrueboolIndicates whether the booking item is blocked
BlockReasonfalsestringThe reason for blocking the booking item in case it is blocked
MobilityfalsestringRegular, NonRunner, ForkLifted, Other
InsuredtrueboolIndicates whether the booking item is insured
VehicleValuefalsedecimalIn case the vehicle is insured, specify the value
CurrencyfalsestringThe currency of the vehicle's value
CountryOfOriginfalsestringThe booking item's country of origin
StateOfOriginfalsestringThe booking item's state of origin
TitleNumberfalsestringThe booking item's title number
TitlestatefalsestringThe booking item's title state
NotesfalsestringAdditional notes
CTNfalsestringCargo Tracking Note
ClearanceDocfalsestringThe booking item's clearance document
SealNumberfalsestringThe identification number of the booking item's container seal
PaymentModefalseintCollect or prepaid
ClienttrueExtBookingPartyThe client object
IsClientManualfalseboolIndicates whether the booking confirmation is manual
TransittrueExtBookingTransitThe transit object
PricefalsedecimalBooking item price
UrfIdfalseintBooking Item URF Id
CommodityCategoryfalsestringCommodity category
CommoditySubCategoryIdfalselongCommodity subcategory Id
CommoditySubCategoryfalsestringCommodity subcategory, e.g. Crane, Chassis, etc.
UpdatePaperForCustomstrueboolIndicates whether to update customs paper
PaperForCustomstrueExtFileCustoms paper object
PhotostrueIEnumerable<ExtFile>
InvoicePapertrueExtFileInvoice paper file
SubUnitstrue<ExtBookingSubUnit> listList of sub units
SubItemstrue<ExtBookingSubItems> listList of sub items

ExtFile

Property NameRequiredTypeDescription
Idtruelong
Namefalsestring
Urlfalsestring

ExtBookingSubUnit

Property NameRequiredTypeDescription
IdfalsestringThe Id of the sub unit
RelationTypefalsestringAttached or STC (Said To Contain)
RelativeIdtrueintIndicates the order of the sub item in the sent object
IsCanceledtrueboolIndicates whether the sub unit is canceled
DescriptionfalsestringVehicle's model
BolDescriptionfalsestringvehicle's model to show on the bill of lading
SerialTypefalsestringSerial or VIN
WeightfalseintThe weight of the sub unit
yearfalseintThe registration year of the sub unit
VehicleValuefalsedecimalThe sub unit's price
CurrencyfalsestringThe sub unit's price's currency
NotesfalsestringAdditional notes
TransittrueExtBookingTransitThe transit object
UpdatePaperForCustomstrueboolIndicates whether to update customs paper
PaperForCustomstrueExtFileCustoms paper object

ExtBookingSubItem

Property NameRequiredTypeDescription
IdfalsestringId of the sub item
RelativeIdtrueintIndicates the order of the sub item in the sent object
IsCanceledtrueboolIndicates whether the sub item is canceled
DescriptionfalsestringCargo description
NotesfalsestringAdditional notes
UpdatePaperForCustomstrueboolIndicates whether to update customs paper
PaperForCustomstrueExtFileCustoms paper object

ExtBookingParty

Property NameRequiredTypeDescription
IdfalsestringId of the booking party
CodefalsestringThe code of the booking party
NamefalsestringThe name of the booking party
FirstNamefalsestringThe first name of the booking party
LastNamefalsestringThe last name of the booking party
TypefalsestringThe type of the booking party
IdentifierTypefalsestringThe identifier type of the booking party
IdentifierCodefalsestringThe identifier code of the booking party
MobilefalsestringThe mobile number of the booking party
PhonefalsestringThe phone number of the booking party
EmailfalsestringThe email address of the booking party
AddresstrueExtBookingPartyAddressThe booking party's address's object
IsReferenceOnlytrueboolIndicates whether the booking party is reference only

ExtBookingPartyAddress

Property NameRequiredTypeDescription
Address1falsestringStreet details
Address2falsestringAppartment details
CountryfalsestringThe name of the country
RegionfalsestringThe name of the region
CityfalsestringThe name of the city
StreetfalsestringThe name of the street
PostalCodefalsestringThe postal code
DescriptionfalsestringThe postal code
LongitudefalsedecimalLongitude of booking party address
LatitudefalsedecimalLatitude of booking party address
IsBolManualtrueboolIndicates whether the bill of lading is manual
BolfalsestringThe bill of lading number

ExtBookingTransit

Property NameRequiredTypeDescription
DescriptiontruestringThe transit description
CountrytruestringThe transit country
PodfalsestringThe name of the port of discharge

Sample object

{ "booking": { "Header": { "Id": 123456, "IsCanceled": true, "AgentId": 789, "Pol": "BEANR", "Pod": "GNCKY", "BookingVoyage": "GS23", "Terminal": "332", "Line": "Demo Line", "Shipper": { "Id": "34", "Code": "SHIP01", "Name": "Shipper Company", "FirstName": "John", "LastName": "Doe", "Type": "Type A", "IdentifierType": "Type 1", "IdentifierCode": "ID123", "Mobile": "1234567890", "Phone": "9876543210", "Email": "shipper@example.com", "Address": { "Address1": "123 Oak Street", "Address2": "Apt 4B", "Country": "United States", "Region": "New York", "City": "New York City", "Street": "Oak Street", "PostalCode": "10001", "Description": "Random Address", "Longitude": -73.9876, "Latitude": 40.7488, "IsBolManual": true, "Bol": "BOL123" }, "IsReferenceOnly": false }, "Exporter": { "Id": "4334", "Code": "EXP01", "Name": "Exporter Company", "FirstName": "Jane", "LastName": "Doe", "Type": "Type B", "IdentifierType": "Type 2", "IdentifierCode": "ID456", "Mobile": "1111111111", "Phone": "2222222222", "Email": "exporter@example.com", "Address": { "Address1": "456 Elm Avenue", "Address2": "Suite 2C", "Country": "United States", "Region": "California", "City": "Los Angeles", "Street": "Elm Avenue", "PostalCode": "90001", "Description": "Random Address", "Longitude": -118.2437, "Latitude": 34.0522, "IsBolManual": false, "Bol": "BOL456" }, "IsReferenceOnly": false }, "Consignee": { "Id": "544", "Code": "CON01", "Name": "Consignee Company", "FirstName": "Mark", "LastName": "Smith", "Type": "Type C", "IdentifierType": "Type 3", "IdentifierCode": "ID789", "Mobile": "3333333333", "Phone": "4444444444", "Email": "consignee@example.com", "Address": { "Address1": "789 Pine Street", "Address2": "Unit 10", "Country": "United States", "Region": "Texas", "City": "Houston", "Street": "Pine Street", "PostalCode": "77002", "Description": "Random Address", "Longitude": -95.3698, "Latitude": 29.7604, "IsBolManual": true, "Bol": "BOL789" }, "IsReferenceOnly": false }, "Client": { "Id": "876", "Code": "CLI01", "Name": "Client Company", "FirstName": "Sarah", "LastName": "Johnson", "Type": "Type D", "IdentifierType": "Type 4", "IdentifierCode": "ID012", "Mobile": "5555555555", "Phone": "6666666666", "Email": "client@example.com", "Address": { "Address1": "321 Maple Avenue", "Address2": "Apartment 5D", "Country": "United States", "Region": "Florida", "City": "Miami", "Street": "Maple Avenue", "PostalCode": "33101", "Description": "Random Address", "Longitude": -80.1918, "Latitude": 25.7617, "IsBolManual": false, "Bol": "BOL012" }, "IsReferenceOnly": false }, "IntermediateConsignee": { "Id": "567", "Code": "INT01", "Name": "Intermediate Consignee Company", "FirstName": "Alex", "LastName": "Wilson", "Type": "Type E", "IdentifierType": "Type 5", "IdentifierCode": "ID345", "Mobile": "7777777777", "Phone": "8888888888", "Email": "intermediate@example.com", "Address": { "Address1": "987 Cedar Street", "Address2": "Floor 3", "Country": "United States", "Region": "Illinois", "City": "Chicago", "Street": "Cedar Street", "PostalCode": "60601", "Description": "Random Address", "Longitude": -87.6298, "Latitude": 41.8781, "IsBolManual": true, "Bol": "BOL345" }, "IsReferenceOnly": false }, "Notify": { "Id": "345", "Code": "NOT01", "Name": "Notify Company", "FirstName": "Emily", "LastName": "Anderson", "Type": "Type F", "IdentifierType": "Type 6", "IdentifierCode": "ID678", "Mobile": "9999999999", "Phone": "0000000000", "Email": "notify@example.com", "Address": { "Address1": "234 Birch Avenue", "Address2": "Suite 7F", "Country": "United States", "Region": "Washington", "City": "Seattle", "Street": "Birch Avenue", "PostalCode": "98101", "Description": "Random Address", "Longitude": -122.3321, "Latitude": 47.6062, "IsBolManual": false, "Bol": "BOL678" }, "IsReferenceOnly": false }, "Nvocc": { "Id": "233", "Code": "NVOCC01", "Name": "NVOCC Company", "FirstName": "NVOCC", "LastName": "Person", "Type": "Type G", "IdentifierType": "Type 7", "IdentifierCode": "ID901", "Mobile": "1234567890", "Phone": "0987654321", "Email": "nvocc@example.com", "Address": { "Address1": "654 Cherry Lane", "Address2": "Unit 8B", "Country": "United States", "Region": "Georgia", "City": "Atlanta", "Street": "Cherry Lane", "PostalCode": "30301", "Description": "Random Address", "Longitude": -84.3880, "Latitude": 33.7490, "IsBolManual": true, "Bol": "BOL901" }, "IsReferenceOnly": false }, "DestinationAgent": { "Id": "543", "Code": "AGENT01", "Name": "Destination Agent Company", "FirstName": "Agent", "LastName": "Person", "Type": "Type H", "IdentifierType": "Type 8", "IdentifierCode": "ID234", "Mobile": "2222222222", "Phone": "3333333333", "Email": "agent@example.com", "Address": { "Address1": "567 Willow Lane", "Address2": "Suite 3A", "Country": "United States", "Region": "Massachusetts", "City": "Boston", "Street": "Willow Lane", "PostalCode": "02108", "Description": "Random Address", "Longitude": -71.0589, "Latitude": 42.3601, "IsBolManual": false, "Bol": "BOL234" }, "IsReferenceOnly": false }, "Collector": { "Id": "123", "Code": "COL01", "Name": "Collector Company", "FirstName": "Collector", "LastName": "Person", "Type": "Type I", "IdentifierType": "Type 9", "IdentifierCode": "ID567", "Mobile": "4444444444", "Phone": "5555555555", "Email": "collector@example.com", "Address": { "Address1": "890 Chestnut Street", "Address2": "Apartment 12E", "Country": "United States", "Region": "Colorado", "City": "Denver", "Street": "Chestnut Street", "PostalCode": "80202", "Description": "Random Address", "Longitude": -104.9903, "Latitude": 39.7392, "IsBolManual": true, "Bol": "BOL567" }, "IsReferenceOnly": false } }, "Items": [ { "Id": "12321", "RelativeId": 1, "IsCanceled": false, "Reference": "REF001", "Description": "Toyota Rav4", "BolDescription": "Toyota Rav4", "SerialType": "VIN", "SerialNumber": "2T3DK4DV8CW082696", "Year": 2022, "Type": "C", "Quantity": 1, "Length": 400, "Width": 200, "Height": 150, "Weight": 1000, "HasCustomCbm": true, "BolCbm": 1.5, "Priority": "Used", "Block": true, "BlockReason": "Damaged", "Mobility": "Regular", "Insured": true, "VehicleValue": 50000, "Currency": "USD", "CountryOfOrigin": "Country J", "StateOfOrigin": "State J", "TitleNumber": "TITLE001", "TitleState": "Title State", "Notes": "Additional notes for item", "CTN": "CTN001", "ClearanceDoc": "18BEE0000012274787", "SealNumber": "42297959", "PaymentMode": 1, "Client": { "Id": "876", "Code": "CLI01", "Name": "Client Company", "FirstName": "Sarah", "LastName": "Johnson", "Type": "Type D", "IdentifierType": "Type 4", "IdentifierCode": "ID012", "Mobile": "5555555555", "Phone": "6666666666", "Email": "client@example.com", "Address": { "Address1": "123 Walnut Avenue", "Address2": "Floor 2", "Country": "United States", "Region": "Arizona", "City": "Phoenix", "Street": "Walnut Avenue", "PostalCode": "85001", "Description": "Random Address", "Longitude": -112.0740, "Latitude": 33.4484, "IsBolManual": false, "Bol": "BOL012" }, "IsReferenceOnly": false }, "IsClientManual": false, "Transit": { "Description": "COTONOU IN TRANSIT", "Country": "Benin", "Pod": "COTONOU" }, "Price": 1000, "UrfId": 456, "CommodityCategory": "Category", "CommoditySubCategoryId": 2, "UpdatePaperForCustoms": true, "PaperForCustoms": { "Id": 123, "Name": "Customs Paper", "Url": "https://example.com/customs_paper" }, "Photos": [ { "Id": 1, "Name": "Photo 1", "Url": "https://example.com/photo1" }, { "Id": 2, "Name": "Photo 2", "Url": "https://example.com/photo2" } ], "InvoicePaper": { "Id": 456, "Name": "Invoice Paper", "Url": "https://example.com/invoice_paper" }, "SubUnits": [ { "Id": "subunit1", "RelationType": "Attached", "RelativeId": 1, "IsCanceled": false, "Description": "Toyota Scion", "BolDescription": "Toyota Scion", "SerialType": "VIN", "Weight": 500, "year": 2021, "VehicleValue": 30000, "Currency": "USD", "Notes": "Additional notes for sub unit", "Transit": { "Description": "Sub Unit Transit Description", "Country": "Sub Unit Transit Country", "Pod": "Sub Unit Port of Discharge" }, "UpdatePaperForCustoms": true, "PaperForCustoms": { "Id": 789, "Name": "Sub Unit Customs Paper", "Url": "https://example.com/sub_unit_customs_paper" } } ], "SubItems": [ { "Id": "876", "RelativeId": 1, "IsCanceled": true, "Description": "Cargo Description", "Notes": "Additional notes for sub item", "UpdatePaperForCustoms": true, "PaperForCustoms": { "Id": 987, "Name": "Sub Item Customs Paper", "Url": "https://example.com/sub_item_customs_paper" } } ] } ], "TestOnly": false } }

Logical Validation

A sequence of business logic lays on top of the code to determine if a booking can be processed into the database or not. Some of these business rules are:

  1. All the values must be defined in the system. If not found, a NOT FOUND exception shall be generated. (I.e. Bookings can only be edited by owner or owner's shipping line.)
  • Terminal not found
  • Pod not found
  • Unit Reference not found (make and model)
  • Unknown booking parties (shipper, exporter, consignee, notify...)
  1. To update an existing booking, booking item or sub item, they must be found in the database based on the ID that is already matched and sent to the client. In case the id is not found, error NOT FOUND is to be sent to caller.
  2. To update an existing booking, booking item or sub item, when found, the target must not be canceled. If canceled, error NOT ALLOWED is sent to caller.
  3. To change the terminal, POL of a unit, the unit must still be in Approved status. (Statuses are described below in details). Other than that, error NOT ALLOWED is sent to caller.
  4. Required fields for a booking are:
  • Pol
  • Terminal
  • Shipper entities (shipper, exporter, consignee and notify) are required. Intermediate
  • consignee is not required.
  • Booking must at least contain 1 item in it
  • Pol <> Pod
  • A booking can contain a max of 250 items
  1. Required fields for an item are: a. Make and model (description) b. Serial number: i. Cannot contain spaces
  • Length between 5 and 21 inclusive (if type = Vin)
  • Length between 3 and 25 inclusive (if type = Serial)
  • No special characters allowed, only alpha-numeric are allowed (in case of Vin only)
  • Cannot contain I(i), O(o) or Q(q) (in case of Vin only)
  • Registration year (in case specified) must be valid (> 1900, and < (this year + 2))
  • d. Priority code (Used, New, VIP, Priority)
  1. Full chassis for same make and model must be unique as per ISO specifications (cannot be repeated over a cycled of 35 years) for the same Pol
  2. Last 6 characters of the same make and model must be unique, in case of duplicates, a full chassis will be required to identify the difference between the units.
  3. Chassis must be unique within the same POL. In case of exceptions, contact the line to solve the issue.
  4. When a unit is delivered, update is not allowed on priority. To make the change, it must go through the line.
  5. You cannot cancel or delete a unit that have already a status other than approved, or still in draft mode.

Sync-shipper API

Once your booking is saved, we are committed to providing you with regular updates on significant events such as DeliveryDate, DischargingDate, and more. To ensure you receive these updates seamlessly, we kindly request you to establish an API integration with our system. This integration will enable you to receive structured updates in a timely manner, empowering you to make informed decisions based on the information provided. You will receive the updates in a structured file as shown in the following instance:

[{ "ItemId": "12321", "Serial": "2T3DK4DV8CW082696", "DeliveryDate": "2023-07-10", "LoadingDate": null, "DischargingDate": null, "CustomsClearedOn": null, "Location": "", "Length": "400", "Width": "200", "Height": "150", "Weight": "1000", "Voyage": "GS23", "Vessel": "Grande Sicilia", "CustomsDocs": "18BEE0000012274787" }]

© 2024 INTRA Logisoft Labs Ltd. All rights reserved.

Products

Get Help