Overview

PositionReport is used to update the status of an ongoing voyage's port calls.

Overview

Position reports update a port call's sailing, arrival, in port, and departure status. Most fields in the PositionReport object will only provide information, while a few affect the port call's results.

The following fields will affect the port call's results:

  • eventLogs

    • An EventLog captures port events along with their dates and times. The port events include ARRIVAL, BERTHED, UNBERTHED, and DEPARTURE. To record the arrival date of a port call, an event log entry should include the ARRIVAL event along with the corresponding date.

    • A PositionReportBunker records the remaining bunkers on board for a specific bunker category

Fields impacting the port call's results will have Major Change Factor marked as yes, along with a description, on the details.

PositionReport can be one of these types:

  • Noon Report

    • logs the ship's status at sea, updating the estimated arrival date and ROB info

  • Arrival Report

    • logs when the ship arrives in the port, fixing the arrival date and ROB info

  • Berth Report

    • logs when the ship has berthed in the port, fixing the berthed date and ROB info

  • Unberth Report

    • logs when the ship has unberthed in the port, fixing the unberthed date and ROB info

  • In Port Report

    • logs supplementary information such as hours in service, weather, wind direction and average wind direction when the ship is docked.

  • Departure Report

    • logs when the ship leaves the port, fixing the departure date and ROB info

In order to include a Remark on the position report, a separate API request must be made after the report is created. See here for an example.

Details

Noon Report

Field Name
Json Attribute
Description
Mandatory
Major Change Factor
Data type
Notes

Report Type

vesselReportType

Determines the type of vessel report

yes

String

"NOON"

Noon Report Date

reportDateLocal

Date and time of creation of the report

yes

String

should be in this format: "YYYY-MM-DDTHH:mm:ss"

Port Call

portCall

Port to update

yes

Long

key of the port call

Latitude

latitude

Current position

yes

Double

Longitude

longitude

Current position

yes

Double

Estimated Time of Arrival

eventLogs

Date and time of estimated time of arrival

yes

yes, updates PortCall's arrival date

should be the key of the port call's arrival event log

date should be in this format: "YYYY-MM-DDTHH:mm:ss"

Remaining bunkers on board

"positionReportBunkers": [{"bunkerCategory": "FO", "rob":100}]

Remaining bunkers on board at the time of reporting for the given bunker category

yes, updates PortCall's arrival rob

one PositionReportBunker object for each bunker category

Wind Direction

windDirection

Determines current wind direction

Average Wind Force

averageWindForce

General wind conditions

Double

Sea Direction

seaDirection

Current sea direction

Average Sea State

averageSeaState

General sea conditions

Double

Weather

weather

Determines current weather

Distance Sailed

distanceSailed

Distance sailed

Double

Hours in Service

hoursInService

Number of hours in operation

Double

Main Engine RPM

rpmFromLastPort

RPM recorded from previous port

Double

Noon report example

Noon Report sailing to a port
  1. Assuming the voyage key, and port call sequence are known, get the PortCall key with this query and headers:

GET /ws/rest/PortCall?filter=voyage.key(EQ)123456&portCallSequence(EQ)2=null HTTP/1.1
Host: BASEURL
fields: {"eventLogs": {"event": {"eventCode":"*"}, "robs": {"bunkerCategory": {"bunkerCategoryCode":"*"}, "rob": "*"}}}
Authorization: Bearer ....

An example of the response could be found here

  1. Generate a Noon Report for the vessel that has sailed 3150 nm to the queried PortCall, with South/West wind direction and partly cloudy weather. Arrival LS MGO robs are also updated to 250

POST /ws/rest/PositionReport HTTP/1.1
Host: BASEURL
Content-Type: application/json
Authorization: Bearer ....
{
    "vesselReportType": "NOON",
    "reportDateLocal": "2024-08-01T19:00:00",
    "portCall": 123456, //key from the response of the PortCall query
    "latitude": 60.2139,
    "longitude": 4.5300,
    "eventLogs": [
        {
            "key": 123456, //arrival event log key
            "eventLogDate": "2024-08-02T02:36:00"
        }
    ],
    "positionReportBunkers": [
        {
            "bunkerCategory": 123456, //bunker category key
            "rob": 555
         
        },
        {
            "bunkerCategory": 654321, //bunker category key
            "rob": 7777
        
        }
    ],
    "windDirection": 911643,
    "weather": 950928,
    "distanceSailed": 3150.00
}

Arrival Report

Field Name
Json Attribute
Description
Mandatory
Major Change Factor
Data Type
Notes

Vessel Report Type

vesselReportType

Determines the type of vessel report

yes

String

"ARR"

Port Call

portCall

Port to update

yes

Long

key of the port call

Arrival Date

eventLogs

Date and time of arrival on port

yes

yes, updates and fixes PortCall's arrival date

should be the key of the port call's arrival event log

date should be in this format: "YYYY-MM-DDTHH:mm:ss"

Arrival Report Date

reportDateLocal

Date and time of creation of the report

String

should be in this format: "YYYY-MM-DDTHH:mm:ss"

Actual Distance Sailed Since Departure

distanceSailed

Distance in nm sailed from previous port

yes, updates the PortCall's actual distance sailed

Double

Remaining bunkers on board

"positionReportBunkers": [{"bunkerCategory": "FO", "rob":98}]

Remaining bunkers at the time of arrival for the given bunker category

yes, updates and fixes PortCall's arrival ROB

one PositionReportBunker object for each bunker category

Hours Stoppage

hoursStoppages

Number of hours in stoppage of operation

Double

Hours In Service

hoursInService

Number of hours in operation

Double

Speed Made Good

speedMadeGood

Net speed when sailing to the port

Double

Draft Aft

draftAft

Vessel's draft aft

Double

Draft Forward

draftForward

Vessel's draft forward

Double

Arrival report example

Arrival report on port call
  1. Assuming the voyage key, and port call sequence are known, get the PortCall key with this query:

GET /ws/rest/PortCall?filter=voyage.key(EQ)123456&portCallSequence(EQ)2=null HTTP/1.1
Host: BASEURL
fields: {"eventLogs": {"event": {"eventCode":"*"}, "robs": {"bunkerCategory": {"bunkerCategoryCode":"*"}, "rob": "*"}}}
Authorization: Bearer ....

Example of the response can be found here

  1. Generate a report for arrival at 2nd August 2024 03:00 with arrival FO ROB at 225.85 mt and arrival LS MGO ROB at 235 mt

POST /ws/rest/PositionReport HTTP/1.1
Host: BASEURL
Content-Type: application/json
Authorization: Bearer ....
{
    "vesselReportType": "ARR",
    "reportDateLocal": "2024-08-01T19:00:00",
    "portCall": 123456, //key from the response of the PortCall query
    "latitude": 60.2139,
    "longitude": 4.5300,
    "eventLogs": [
        {
           "key": 123456, //arrival event log key
            "eventLogDate": "2024-08-02T03:00:00"
        }
    ],
    "positionReportBunkers": [
        {
            "bunkerCategory": 123456, //bunker category key
            "rob": 235
         
        },
        {
            "bunkerCategory": 654321, //bunker category key
            "rob": 225.85
        
        }
    ]
}

Berth Report

Field Name
Json Attribute
Description
Mandatory
Major Change Factor
Data Type
Notes

Vessel Report Type

vesselReportType

Determines the type of vessel report

yes

String

"BRT"

Port Call

portCall

Port to update

yes

Long

key of the port call

Berth date

eventLogs

Date and time of berthing on port

yes

yes, updates and fixes PortCall's berthed date

should be the key of the port call's berth event log

date should be in this format: "YYYY-MM-DDTHH:mm:ss"

Berth Report Date

reportDateLocal

Date and time of creation of the report

String

should be in this format: "YYYY-MM-DDTHH:mm:ss"

Remaining bunkers on board

"positionReportBunkers": [{"bunkerCategory": "FO", "rob":95}]

Remaining bunkers at the time of berthing for the given bunker category

yes, updates and fixes PortCall's berthing ROB

one PositionReportBunker object for each bunker category

Berth report example

Berth report on a port call
  1. Assuming the voyage key, and port call sequence are known, get the PortCall key with this query:

GET /ws/rest/PortCall?filter=voyage.key(EQ)123456&portCallSequence(EQ)2=null HTTP/1.1
Host: BASEURL
fields: {"eventLogs": {"event": {"eventCode":"*"}, "robs": {"bunkerCategory": {"bunkerCategoryCode":"*"}, "rob": "*"}}}
Authorization: Bearer ....
  1. Generate a report that has berthed 3rd August 2024 08:00 with berth FO rob at 225 mt and DL rob at 220 mt

POST /ws/rest/PositionReport HTTP/1.1
Host: BASEURL
Content-Type: application/json
Authorization: Bearer ....
{
    "vesselReportType": "BRT",
    "reportDateLocal": "2024-08-03T10:36:00",
    "portCall": 123456, //key from the response of the PortCall query
    "eventLogs": [
        {
            "key": 123456, //berth event log key
            "eventLogDate": "2024-08-03T10:36:00"
        }
    ],
    "positionReportBunkers": [
        {
            "bunkerCategory": 123456, //bunker category key
            "rob": 220
         
        },
        {
            "bunkerCategory": 654321, //bunker category key
            "rob": 225
        
        }
    ]
}

Unberth Report

Field Name
Json Attribute
Description
Mandatory
Major Change Factor
Data Type
Notes

Vessel Report Type

vesselReportType

Determines the type of vessel report

yes

String

"UBRT"

Port Call

portCall

Port to update

yes

Long

key of the port call

Unberth date

eventLogs

Date and time of berthing on port

yes

yes, updates and fixes PortCall's berthed date

should be the key of the port call's unberth event log

date should be in this format: "YYYY-MM-DDTHH:mm:ss"

Unberth Report Date

reportDateLocal

Date and time of creation of the report

String

should be in this format: "YYYY-MM-DDTHH:mm:ss"

Remaining bunkers on board

"positionReportBunkers": [{"bunkerCategory": "FO", "rob":95}]

Remaining bunkers at the time of unberthing for the given bunker category

yes, updates and fixes PortCall's unberthing ROB

one PositionReportBunker object for each bunker category

Unberth report example

Unberth report on a port call
  1. Assuming the voyage key, and port call sequence are known, get the PortCall key with this query:

GET /ws/rest/PortCall?filter=voyage.key(EQ)123456&portCallSequence(EQ)2=null HTTP/1.1
Host: BASEURL
fields: {"eventLogs": {"event": {"eventCode":"*"}, "robs": {"bunkerCategory": {"bunkerCategoryCode":"*"}, "rob": "*"}}}
Authorization: Bearer ....

Example response can be found here

  1. Generate a report that has unberthed 5th August 2024 08:00, FO unberth ROB at 225 mt, DL unberth at 218.5 mt

POST /ws/rest/PositionReport HTTP/1.1
Host: BASEURL
Content-Type: application/json
Authorization: Bearer ....
{
    "vesselReportType": "UBRT",
    "reportDateLocal": "2024-08-05T08:00:00",
    "portCall": 123456, //key from the response of the PortCall query
    "eventLogs": [
        {
            "key": 123456, //unberth event log key
            "eventLogDate": "2024-08-05T08:00:00"
        }
    ],
    "positionReportBunkers": [
        {
            "bunkerCategory": 123456, //bunker category key
            "rob": 218.5
         
        },
        {
            "bunkerCategory": 654321, //bunker category key
            "rob": 225
        
        }
    ]
}

In Port Report

Field Name
Json Attribute
Description
Mandatory
Major Change Factor
Data Type
Notes

Vessel Report Type

vesselReportType

Determines the type of vessel report

yes

String

"PORT"

Port Call

portCall

Port to update

yes

Long

key of the port call

In Port Report Date

reportDateLocal

Date and time of creation of the report

String

should be in this format: "YYYY-MM-DDTHH:mm:ss"

Hours In Service

hoursInService

Number of hours in operation

Double

Weather

weather

Current weather

Wind Direction

windDirection

Current wind direction

Average Wind Force

averageWindForce

General wind conditions

Double

In port report example

In port report on a port call
  1. Assuming the voyage key, and port call sequence are known, get the PortCall key with this query:

GET /ws/rest/PortCall?filter=voyage.key(EQ)123456&portCallSequence(EQ)2=null HTTP/1.1
Host: BASEURL
fields: {"eventLogs": {"event": {"eventCode":"*"}, "robs": {"bunkerCategory": {"bunkerCategoryCode":"*"}, "rob": "*"}}}
Authorization: Bearer ....
  1. Generate a report to log sunny weather, East wind direction, hours in service, average wind force status in port

POST /ws/rest/PositionReport HTTP/1.1
Host: BASEURL
Content-Type: application/json
Authorization: Bearer ....
{
    "vesselReportType": "PORT",
    "reportDateLocal": "2024-08-03T18:00:00",
    "portCall": 123456, //key from the response of the PortCall request
    "hoursInService": 225.85,
    "weather": 950927,
    "windDirection": 911638,
    "averageWindForce": 1
}

Departure Report

Field Name
Json Attribute
Description
Mandatory
Major Change Factor
Data Type
Notes

Vessel Report Type

vesselReportType

Determines the type of vessel report

yes

String

"DEP"

Port Call

portCall

Port to update

yes

Long

key of the port call

Departure date

eventLogs

Date and time of departure from port

yes

yes, updates and fixes PortCall's departure date

should be the key of the port call's departure event log

date should be in this format: "YYYY-MM-DDTHH:mm:ss"

Departure Report Date

reportDateLocal

Date and time of creation of the report

String

should be in this format: "YYYY-MM-DDTHH:mm:ss"

Remaining bunkers on board

"positionReportBunkers": [{"bunkerCategory": "FO", "rob":90}]

Remaining bunkers at the time of departure for the given bunker category

yes, updates and fixes PortCall's departure ROB

one PositionReportBunker object for each bunker category

Distance to next port

distanceToNextPort

Distance in nm to next port

Double

Draft Aft

draftAft

Vessel's draft aft

Double

Draft Forward

draftForward

Vessel's draft forward

Double

Departure Report example

Departure report on a port call
  1. Assuming the voyage key, and port call sequence are known, get the PortCall key with this query:

GET /ws/rest/PortCall?filter=voyage.key(EQ)123456&portCallSequence(EQ)2=null HTTP/1.1
Host: BASEURL
fields: {"eventLogs": {"event": {"eventCode":"*"}, "robs": {"bunkerCategory": {"bunkerCategoryCode":"*"}, "rob": "*"}}}
Authorization: Bearer ....

Example of the response can be found here

  1. Generate a report that has fixes the departure date to 5th August 2024 08:30, departure FO rob at 225 mt and departure DL rob at 215 mt

POST /ws/rest/PositionReport HTTP/1.1
Host: BASEURL
Content-Type: application/json
Authorization: Bearer ....
{
    "vesselReportType": "DEP",
    "reportDateLocal": "2024-08-05T08:30:00",
    "portCall": 123456, //key from the response of the PortCall query
    "eventLogs": [
        {
            "key": 123456, //departure event log key
            "eventLogDate": "2024-08-05T08:30:00"
        }
    ],
    "positionReportBunkers": [
        {
            "bunkerCategory": 123456, //bunker category key
            "rob": 218.5
         
        },
        {
            "bunkerCategory": 654321, //bunker category key
            "rob": 225
        }
      ]
}

More examples

PortCall query with "eventLogs" fields response
[
    {
        "key": 6130402,
        "eventLogs": [
            {
                "key": 6130391,
                "event": {
                    "key": 1000051,
                    "eventCode": "BRT"
                },
                "robs": [
                    {
                        "key": 6130447,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916946,
                            "bunkerCategoryCode": "DO"
                        }
                    },
                    {
                        "key": 6130450,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916944,
                            "bunkerCategoryCode": "FO"
                        }
                    },
                    {
                        "key": 6130462,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916945,
                            "bunkerCategoryCode": "FL"
                        }
                    },
                    {
                        "key": 6130464,
                        "rob": 249.75,
                        "bunkerCategory": {
                            "key": 916947,
                            "bunkerCategoryCode": "DL"
                        }
                    }
                ]
            },
            {
                "key": 6130396,
                "event": {
                    "key": 6088041,
                    "eventCode": "UBRT"
                },
                "robs": [
                    {
                        "key": 6130444,
                        "rob": 249.75,
                        "bunkerCategory": {
                            "key": 916947,
                            "bunkerCategoryCode": "DL"
                        }
                    },
                    {
                        "key": 6130452,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916945,
                            "bunkerCategoryCode": "FL"
                        }
                    },
                    {
                        "key": 6130459,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916946,
                            "bunkerCategoryCode": "DO"
                        }
                    },
                    {
                        "key": 6130470,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916944,
                            "bunkerCategoryCode": "FO"
                        }
                    }
                ]
            },
            {
                "key": 6130392,
                "event": {
                    "key": 1000052,
                    "eventCode": "DEP"
                },
                "robs": [
                    {
                        "key": 6130440,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916944,
                            "bunkerCategoryCode": "FO"
                        }
                    },
                    {
                        "key": 6130448,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916945,
                            "bunkerCategoryCode": "FL"
                        }
                    },
                    {
                        "key": 6130454,
                        "rob": 249.75,
                        "bunkerCategory": {
                            "key": 916947,
                            "bunkerCategoryCode": "DL"
                        }
                    },
                    {
                        "key": 6130458,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916946,
                            "bunkerCategoryCode": "DO"
                        }
                    }
                ]
            },
            {
                "key": 6130395,
                "event": {
                    "key": 1000050,
                    "eventCode": "ARR"
                },
                "robs": [
                    {
                        "key": 6130451,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916945,
                            "bunkerCategoryCode": "FL"
                        }
                    },
                    {
                        "key": 6130460,
                        "rob": 250.0,
                        "bunkerCategory": {
                            "key": 916947,
                            "bunkerCategoryCode": "DL"
                        }
                    },
                    {
                        "key": 6130467,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916946,
                            "bunkerCategoryCode": "DO"
                        }
                    },
                    {
                        "key": 6130469,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916944,
                            "bunkerCategoryCode": "FO"
                        }
                    }
                ]
            }
        ]
    },
    {
        "key": 6130400,
        "eventLogs": [
            {
                "key": 6130394,
                "event": {
                    "key": 1000051,
                    "eventCode": "BRT"
                },
                "robs": [
                    {
                        "key": 6130441,
                        "rob": 230.53559444257462,
                        "bunkerCategory": {
                            "key": 916947,
                            "bunkerCategoryCode": "DL"
                        }
                    },
                    {
                        "key": 6130457,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916945,
                            "bunkerCategoryCode": "FL"
                        }
                    },
                    {
                        "key": 6130461,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916946,
                            "bunkerCategoryCode": "DO"
                        }
                    },
                    {
                        "key": 6130468,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916944,
                            "bunkerCategoryCode": "FO"
                        }
                    }
                ]
            },
            {
                "key": 6130398,
                "event": {
                    "key": 1000050,
                    "eventCode": "ARR"
                },
                "robs": [
                    {
                        "key": 6130445,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916945,
                            "bunkerCategoryCode": "FL"
                        }
                    },
                    {
                        "key": 6130456,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916944,
                            "bunkerCategoryCode": "FO"
                        }
                    },
                    {
                        "key": 6130463,
                        "rob": 230.78559444257462,
                        "bunkerCategory": {
                            "key": 916947,
                            "bunkerCategoryCode": "DL"
                        }
                    },
                    {
                        "key": 6130471,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916946,
                            "bunkerCategoryCode": "DO"
                        }
                    }
                ]
            },
            {
                "key": 6130393,
                "event": {
                    "key": 6088041,
                    "eventCode": "UBRT"
                },
                "robs": [
                    {
                        "key": 6130442,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916945,
                            "bunkerCategoryCode": "FL"
                        }
                    },
                    {
                        "key": 6130443,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916944,
                            "bunkerCategoryCode": "FO"
                        }
                    },
                    {
                        "key": 6130453,
                        "rob": 230.53559444257462,
                        "bunkerCategory": {
                            "key": 916947,
                            "bunkerCategoryCode": "DL"
                        }
                    },
                    {
                        "key": 6130466,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916946,
                            "bunkerCategoryCode": "DO"
                        }
                    }
                ]
            },
            {
                "key": 6130397,
                "event": {
                    "key": 1000052,
                    "eventCode": "DEP"
                },
                "robs": [
                    {
                        "key": 6130446,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916945,
                            "bunkerCategoryCode": "FL"
                        }
                    },
                    {
                        "key": 6130449,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916944,
                            "bunkerCategoryCode": "FO"
                        }
                    },
                    {
                        "key": 6130455,
                        "rob": 0.0,
                        "bunkerCategory": {
                            "key": 916946,
                            "bunkerCategoryCode": "DO"
                        }
                    },
                    {
                        "key": 6130465,
                        "rob": 230.53559444257462,
                        "bunkerCategory": {
                            "key": 916947,
                            "bunkerCategoryCode": "DL"
                        }
                    }
                ]
            }
        ]
    }
]
Arrival report with Remark
  1. Send first this request

Example: Arrival vessel report to register arrival date at 8th August 2024 02:58, with remaining 98 MT of FO on board

POST /ws/rest/PositionReport HTTP/1.1
Host: BASEURL
Content-Type: application/json
Authorization: Bearer ....
{
    "vesselReportType": "ARR",
    "reportDateLocal": "2024-08-02T02:58:00",
    "portCall": 6130402, //key from the response of the PortCall request
    "eventLogs": [
        {
            "key": 6130395, //key of the arrival event log from the response of the PortCall request
            "eventLogDate": "2024-08-02T02:58:00"
        }],
      "positionReportBunkers": [
        {
            "bunkerCategory": "FO", 
            "rob": 98
        }]
}

  1. The response of the query above returns the PositionReport key. Generate a Remark on the arrival position report that says "Arrival on the port remark":

POST /ws/rest/Remark HTTP/1.1
{
    source: 5535223, //key from the response of PositionReport request
    "remark": "Arrival on the port remark"
}
Arrival report where port call key and voyage key are not known, using voyage.referenceNo and port name
  1. Fetch the port call key

GET /ws/rest/PortCall?filter=voyage.voyageHeader.referenceNo(LKIC)TST001&port.portName(LKIC)Bergen case insensitive HTTP/1.1
Authorization: Bearer ....
  1. Generate arrival report

POST /ws/rest/PositionReport HTTP/1.1
Host: BASEURL
Content-Type: application/json
Authorization: Bearer ....
{
    "vesselReportType": "ARR",
    "reportDateLocal": "2024-08-02T02:58:00",
    "portCall": 6130402, //key from the response of the PortCall request
    "eventLogs": [
        {
            "key": 6130395, //key of the arrival event log from the response of the PortCall request
            "eventLogDate": "2024-08-02T02:58:00"
        }],
      "positionReportBunkers": [
        {
            "bunkerCategory": "FO", 
            "rob": 98
        }]
}

Last updated

Was this helpful?