vortexasdk.endpoints.cargo_movements
Try me out in your browser:
CargoMovements
CargoMovements(self)
Cargo Movements Endpoint, use this to search through Vortexa's cargo movements.
A detailed explanation of Cargo/Vessel Movements can be found here.
search
CargoMovements.search(self, filter_activity: str = None, filter_time_min: datetime.datetime = datetime.datetime(2024, 9, 17, 15, 2, 53, 906609), filter_time_max: datetime.datetime = datetime.datetime(2024, 9, 17, 15, 2, 53, 906610), cm_unit: str = 'b', filter_charterers: Union[str, List[str]] = None, filter_destinations: Union[str, List[str]] = None, filter_origins: Union[str, List[str]] = None, filter_owners: Union[str, List[str]] = None, filter_vessel_owners: Union[str, List[str]] = None, filter_time_charterers: Union[str, List[str]] = None, filter_effective_controllers: Union[str, List[str]] = None, filter_products: Union[str, List[str]] = None, filter_vessels: Union[str, List[str]] = None, filter_vessel_classes: Union[str, List[str]] = None, filter_storage_locations: Union[str, List[str]] = None, filter_ship_to_ship_locations: Union[str, List[str]] = None, filter_waypoints: Union[str, List[str]] = None, filter_vessel_age_min: int = None, filter_vessel_age_max: int = None, filter_vessel_scrubbers: str = 'disabled', filter_vessel_flags: Union[str, List[str]] = None, filter_vessel_ice_class: Union[str, List[str]] = None, filter_vessel_propulsion: Union[str, List[str]] = None, exclude_origins: Union[str, List[str]] = None, exclude_destinations: Union[str, List[str]] = None, exclude_products: Union[str, List[str]] = None, exclude_vessels: Union[str, List[str]] = None, exclude_vessel_classes: Union[str, List[str]] = None, exclude_charterers: Union[str, List[str]] = None, exclude_owners: Union[str, List[str]] = None, exclude_effective_controllers: Union[str, List[str]] = None, exclude_filter_vessel_owners: Union[str, List[str]] = None, exclude_filter_time_charterers: Union[str, List[str]] = None, exclude_vessel_flags: Union[str, List[str]] = None, exclude_vessel_ice_class: Union[str, List[str]] = None, exclude_vessel_propulsion: Union[str, List[str]] = None, disable_geographic_exclusion_rules: bool = None, intra_movements: str = None, quantity_at_time_of: str = 'load') -> vortexasdk.endpoints.cargo_movements_result.CargoMovementsResult
Find CargoMovements matching the given search parameters.
Arguments
-
filter_activity: Movement activity on which to base the time filter. Must be one of ['loading_state', 'loading_start', 'loading_end', 'identified_for_loading_state', 'unloading_state', 'unloading_start', 'unloading_end', 'unloaded_state', 'storing_state', 'storing_start', 'storing_end', 'transiting_state', 'any_activity', 'oil_on_water_state', 'waypoint_start
,
waypoint_end`]. -
filter_time_min: The UTC start date of the time filter.
-
filter_time_max: The UTC end date of the time filter.
-
cm_unit: Unit of measurement. Enter 'b' for barrels or 't' for tonnes.
-
filter_charterers: A charterer ID, or list of charterer IDs to filter on.
-
filter_destinations: A geography ID, or list of geography IDs to filter on.
-
filter_origins: A geography ID, or list of geography IDs to filter on.
-
filter_effective_controllers: An effective controller ID, or list of effective controller IDs to filter on.
-
filter_vessel_owners: An vessel owner ID, or list of vessel owners IDs to filter on.
-
filter_time_charterers: An time charterer ID, or list of time charterers IDs to filter on.
-
filter_products: A product ID, or list of product IDs to filter on.
-
filter_vessels: A vessel ID, or list of vessel IDs to filter on.
-
filter_vessel_classes: A vessel class, or list of vessel classes to filter on.
-
filter_storage_locations: A geography ID, or list of geography IDs to filter on.
-
filter_ship_to_ship_locations: A geography ID, or list of geography IDs to filter on.
-
filter_waypoints: A geography ID, or list of geography IDs to filter on.
-
filter_vessel_age_min: A number between 1 and 100 (representing years).
-
filter_vessel_age_max: A number between 1 and 100 (representing years).
-
filter_vessel_scrubbers: Either inactive 'disabled', or included 'inc' or excluded 'exc'.
-
filter_vessel_flags: A vessel flag, or list of vessel flags to filter on.
-
filter_vessel_ice_class: An attribute ID, or list of attribute IDs to filter on.
-
filter_vessel_propulsion: An attribute ID, or list of attribute IDs to filter on.
-
exclude_origins: A geography ID, or list of geography IDs to exclude.
-
exclude_destinations: A geography ID, or list of geography IDs to exclude.
-
exclude_products: A product ID, or list of product IDs to exclude.
-
exclude_vessels: A vessel ID, or list of vessel IDs to exclude.
-
exclude_vessel_classes: A vessel class, or list of vessel classes to exclude.
-
exclude_charterers: A charterer ID, or list of charterer IDs to exclude.
-
exclude_filter_effective_controllers: An effective controller ID, or list of effective controller IDs to exclude.
-
exclude_filter_vessel_owners: An vessel owner ID, or list of vessel owners IDs to filter on.
-
exclude_filter_time_charterers: An time charterer ID, or list of time charterers IDs to filter on.
-
exclude_vessel_flags: A geography ID, or list of geography IDs to exclude.
-
exclude_vessel_ice_class: An attribute ID, or list of attribute IDs to exclude.
-
exclude_vessel_propulsion: An attribute ID, or list of attribute IDs to exclude.
-
disable_geographic_exclusion_rules: This controls a popular industry term "intra-movements" and determines the filter behaviour for cargo leaving then entering the same geographic area.
-
intra_movements: This enum controls a popular industry term intra-movements and determines the filter behaviour for cargo leaving then entering the same geographic area. One of
all
,exclude_intra_country
orexclude_intra_geography
-
quantity_at_time_of: This parameter is designed for LNG cargo and gives the user the freedom to choose whether to create the time series based on the load volume or discharged volumes, as we consider the discharge quantities to differ from load quantities due to boil-off gas.
-
One of:
load
- represents the quantity of the selected unit at the time of the loading event.unload
- represents the quantity of the selected unit at the time of the unloading event.
Returns
CargoMovementsResult
, containing all the cargo movements matching the given search terms.
Example
- Which cargoes were loaded from Rotterdam on the morning of 1st December 2018?
>>> from vortexasdk import CargoMovements, Geographies
>>> rotterdam = [g.id for g in Geographies().search("rotterdam").to_list() if "port" in g.layer]
>>> search_result = CargoMovements().search(
... filter_origins=rotterdam,
... filter_activity='loading_state',
... filter_time_min=datetime(2018, 12, 1),
... filter_time_max=datetime(2018, 12, 1, 12))
>>> df = search_result.to_df(columns=['product.grade.label', 'product.group.label', 'vessels.0.vessel_class'])
product.group.label | product.grade.label | vessels.0.vessel_class | |
---|---|---|---|
0 | Clean products | Pygas | general_purpose |
1 | Clean products | Chemicals | tiny_tanker |
2 | Clean products | Chemicals | tiny_tanker |
3 | Dirty products | Low Sulphur VGO (LSVGO) | general_purpose |
4 | Clean products | ULSD (Ultra Low Sulphur Diesel) | general_purpose |
5 | Clean products | Chemicals | tiny_tanker |
6 | Clean products | Finished Gasoline | handymax |
- Which VLCC cargoes passed through the Suez canal en route to China?
Note here we include vessels.0..., vessels.1..., vessels.2... columns. This lets us view all vessels present in any STS operations.
>>> from vortexasdk import CargoMovements, Geographies, Vessels
>>> suez = [g.id for g in Geographies().search("suez").to_list()]
>>> china = [g.id for g in Geographies().search("china").to_list() if "country" in g.layer]
>>> vlccs = [v.id for v in Vessels().search(vessel_classes="oil_vlcc").to_list()]
>>> cargo_movement_search_result = CargoMovements().search(
... filter_destinations=china,
... filter_activity="loading_state",
... filter_waypoints=suez,
... filter_vessels=vlccs,
... filter_time_min=datetime(2018, 12, 1),
... filter_time_max=datetime(2018, 12, 1))
>>> cols = ['vessels.0.name', 'vessels.0.vessel_class', 'vessels.1.name', 'vessels.1.vessel_class', 'vessels.2.name', 'vessels.2.vessel_class', 'product.group.label', 'quantity']
>>> cargo_movements_df = cargo_movement_search_result.to_df(columns=cols)
vessels.0.name | vessels.0.vessel_class | vessels.1.name | vessels.1.vessel_class | vessels.2.name | vessels.2.vessel_class | product.group.label | quantity | |
---|---|---|---|---|---|---|---|---|
0 | MINERVA MARINA | oil_suezmax | COSGLORY LAKE | oil_vlcc | nan | nan | Crude | 700614 |
1 | BUKHA | oil_vlcc | nan | nan | nan | nan | Crude | 1896374 |
2 | ATHENIAN FREEDOM | oil_vlcc | nan | nan | nan | nan | Crude | 183537 |
3 | ATINA | oil_suezmax | DONAT | oil_suezmax | DS VISION | oil_vlcc | Crude | 896773 |
4 | MINERVA MARINA | oil_suezmax | COSGLORY LAKE | oil_vlcc | nan | nan | Crude | 405724 |
5 | MASAL | oil_suezmax | EKTA | oil_vlcc | nan | nan | Crude | 997896 |
6 | ATHENIAN FREEDOM | oil_vlcc | nan | nan | nan | nan | Crude | 120812 |
Cargo Movements Endpoint Further Documentation
record
CargoMovements.record(self, id: str, params: Dict = {}) -> Dict
Perform a cargo movement lookup.
Arguments
-
id: Cargo movement ID to lookup (long_id or short_id)
-
params: Supported search params:
- 'unit': enter 'b' for barrels, 't' for tonnes and 'cbm' for cubic meters
Returns
Cargo movement record matching the ID
Further Documentation:
vortexasdk.endpoints.cargo_movements_result
CargoMovementsResult
CargoMovementsResult(__pydantic_self__, **data: Any) -> None
Container class holdings search results returns from the cargo movements endpoint.
This class has two methods, to_list()
, and to_df()
, allowing search results to be represented as a list of CargoMovements
,
or as a pd.DataFrame
, respectively.
to_list
CargoMovementsResult.to_list(self) -> List[vortexasdk.api.cargo_movement.CargoMovement]
Represent cargo movements as a list of CargoMovementEntity
s.
to_df
CargoMovementsResult.to_df(self, columns=['events.cargo_port_load_event.0.location.port.label', 'events.cargo_port_unload_event.0.location.port.label', 'product.group.label', 'product.grade.label', 'quantity', 'discharge_quantity', 'vessels.0.name', 'events.cargo_port_load_event.0.end_timestamp', 'events.cargo_port_unload_event.0.start_timestamp']) -> pandas.core.frame.DataFrame
Represent cargo movements as a pd.DataFrame
.
Arguments
- columns: Output columns present in the
pd.DataFrame
. Entercolumns='all'
to return all available columns. Entercolumns=None
to usecargo_movements.DEFAULT_COLUMNS
.
Returns
pd.DataFrame
, one row per cargo movement.
Notes
A cargo movement is a complicated, nested structure. Between it's point of loading and discharge, a cargo movement may be carried by N or more vessels, with N-1 associated STS events. Each of these N vessels could have an associated effective controller, charterer, time charterer... etc.
In order to represent a cargo movement as a flat (not nested) record in a dataframe, the sdk flattens the cargo movement, generating many columns in the process.
The columns are logically named. Let's say that a cargo is transferred between 4 vessels en route from a load
in Rotterdam to a discharge in New York. This is represented as 1 cargo_port_unload_event
, followed by
3 cargo_sts_event
s, and finally 1 cargo_port_unload_event
.
In this example the name of the 1st vessel, is found in the vessels.0.name
column (we're using zero-based
numbering indexes). Likewise, the imo of the second vessel is found in the vessels.1.imo
column.
To find the name of the country in which the second STS event occured, we'd use the
events.cargo_sts_event.1.location.country.layer
column.
Similarly, to find out when the first vessel started
loading the cargo from Rotterdam, we'd use the events.cargo_port_load_event.0.start_timestamp
column.
By default, the columns returned are something along the lines of.
DEFAULT_COLUMNS = [
'events.cargo_port_load_event.0.location.port.label',
'events.cargo_port_unload_event.0.location.port.label',
'product.group.label',
'product.grade.label',
'quantity',
'discharge_quantity',
'vessels.0.name',
'events.cargo_port_load_event.0.end_timestamp',
'events.cargo_port_unload_event.0.start_timestamp',
]
The exact default columns used can be found at cargo_movements.DEFAULT_COLUMNS
A near complete list of columns is given below
[
'cargo_movement_id',
'events.cargo_fso_load_event.0.end_timestamp',
'events.cargo_fso_load_event.0.event_type',
'events.cargo_fso_load_event.0.fso_vessel_id',
'events.cargo_fso_load_event.0.fso_vessel_name',
'events.cargo_fso_load_event.0.location.country.id',
'events.cargo_fso_load_event.0.location.country.label',
'events.cargo_fso_load_event.0.location.country.layer',
'events.cargo_fso_load_event.0.location.country.probability',
'events.cargo_fso_load_event.0.location.country.source',
'events.cargo_fso_load_event.0.location.region.id',
'events.cargo_fso_load_event.0.location.region.label',
'events.cargo_fso_load_event.0.location.region.layer',
'events.cargo_fso_load_event.0.location.region.probability',
'events.cargo_fso_load_event.0.location.region.source',
'events.cargo_fso_load_event.0.location.shipping_region.id',
'events.cargo_fso_load_event.0.location.shipping_region.label',
'events.cargo_fso_load_event.0.location.shipping_region.layer',
'events.cargo_fso_load_event.0.location.shipping_region.probability',
'events.cargo_fso_load_event.0.location.shipping_region.source',
'events.cargo_fso_load_event.0.location.sts_zone.id',
'events.cargo_fso_load_event.0.location.sts_zone.label',
'events.cargo_fso_load_event.0.location.sts_zone.layer',
'events.cargo_fso_load_event.0.location.sts_zone.probability',
'events.cargo_fso_load_event.0.location.sts_zone.source',
'events.cargo_fso_load_event.0.location.trading_block.id',
'events.cargo_fso_load_event.0.location.trading_block.label',
'events.cargo_fso_load_event.0.location.trading_block.layer',
'events.cargo_fso_load_event.0.location.trading_block.probability',
'events.cargo_fso_load_event.0.location.trading_block.source',
'events.cargo_fso_load_event.0.location.trading_region.id',
'events.cargo_fso_load_event.0.location.trading_region.label',
'events.cargo_fso_load_event.0.location.trading_region.layer',
'events.cargo_fso_load_event.0.location.trading_region.probability',
'events.cargo_fso_load_event.0.location.trading_region.source',
'events.cargo_fso_load_event.0.location.trading_subregion.id',
'events.cargo_fso_load_event.0.location.trading_subregion.label',
'events.cargo_fso_load_event.0.location.trading_subregion.layer',
'events.cargo_fso_load_event.0.location.trading_subregion.probability',
'events.cargo_fso_load_event.0.location.trading_subregion.source',
'events.cargo_fso_load_event.0.pos.0',
'events.cargo_fso_load_event.0.pos.1',
'events.cargo_fso_load_event.0.probability',
'events.cargo_fso_load_event.0.start_timestamp',
'events.cargo_fso_load_event.0.to_vessel_id',
'events.cargo_fso_load_event.0.to_vessel_name',
'events.cargo_fso_unload_event.0.end_timestamp',
'events.cargo_fso_unload_event.0.event_type',
'events.cargo_fso_unload_event.0.from_vessel_id',
'events.cargo_fso_unload_event.0.from_vessel_name',
'events.cargo_fso_unload_event.0.fso_vessel_id',
'events.cargo_fso_unload_event.0.fso_vessel_name',
'events.cargo_fso_unload_event.0.location.country.id',
'events.cargo_fso_unload_event.0.location.country.label',
'events.cargo_fso_unload_event.0.location.country.layer',
'events.cargo_fso_unload_event.0.location.country.probability',
'events.cargo_fso_unload_event.0.location.country.source',
'events.cargo_fso_unload_event.0.location.region.id',
'events.cargo_fso_unload_event.0.location.region.label',
'events.cargo_fso_unload_event.0.location.region.layer',
'events.cargo_fso_unload_event.0.location.region.probability',
'events.cargo_fso_unload_event.0.location.region.source',
'events.cargo_fso_unload_event.0.location.shipping_region.id',
'events.cargo_fso_unload_event.0.location.shipping_region.label',
'events.cargo_fso_unload_event.0.location.shipping_region.layer',
'events.cargo_fso_unload_event.0.location.shipping_region.probability',
'events.cargo_fso_unload_event.0.location.shipping_region.source',
'events.cargo_fso_unload_event.0.location.sts_zone.id',
'events.cargo_fso_unload_event.0.location.sts_zone.label',
'events.cargo_fso_unload_event.0.location.sts_zone.layer',
'events.cargo_fso_unload_event.0.location.sts_zone.probability',
'events.cargo_fso_unload_event.0.location.sts_zone.source',
'events.cargo_fso_unload_event.0.location.trading_block.id',
'events.cargo_fso_unload_event.0.location.trading_block.label',
'events.cargo_fso_unload_event.0.location.trading_block.layer',
'events.cargo_fso_unload_event.0.location.trading_block.probability',
'events.cargo_fso_unload_event.0.location.trading_block.source',
'events.cargo_fso_unload_event.0.location.trading_region.id',
'events.cargo_fso_unload_event.0.location.trading_region.label',
'events.cargo_fso_unload_event.0.location.trading_region.layer',
'events.cargo_fso_unload_event.0.location.trading_region.probability',
'events.cargo_fso_unload_event.0.location.trading_region.source',
'events.cargo_fso_unload_event.0.location.trading_subregion.id',
'events.cargo_fso_unload_event.0.location.trading_subregion.label',
'events.cargo_fso_unload_event.0.location.trading_subregion.layer',
'events.cargo_fso_unload_event.0.location.trading_subregion.probability',
'events.cargo_fso_unload_event.0.location.trading_subregion.source',
'events.cargo_fso_unload_event.0.pos.0',
'events.cargo_fso_unload_event.0.pos.1',
'events.cargo_fso_unload_event.0.probability',
'events.cargo_fso_unload_event.0.start_timestamp',
'events.cargo_port_load_event.0.end_timestamp',
'events.cargo_port_load_event.0.event_type',
'events.cargo_port_load_event.0.location.country.id',
'events.cargo_port_load_event.0.location.country.label',
'events.cargo_port_load_event.0.location.country.layer',
'events.cargo_port_load_event.0.location.country.probability',
'events.cargo_port_load_event.0.location.country.source',
'events.cargo_port_load_event.0.location.port.id',
'events.cargo_port_load_event.0.location.port.label',
'events.cargo_port_load_event.0.location.port.layer',
'events.cargo_port_load_event.0.location.port.probability',
'events.cargo_port_load_event.0.location.port.source',
'events.cargo_port_load_event.0.location.region.id',
'events.cargo_port_load_event.0.location.region.label',
'events.cargo_port_load_event.0.location.region.layer',
'events.cargo_port_load_event.0.location.region.probability',
'events.cargo_port_load_event.0.location.region.source',
'events.cargo_port_load_event.0.location.shipping_region.id',
'events.cargo_port_load_event.0.location.shipping_region.label',
'events.cargo_port_load_event.0.location.shipping_region.layer',
'events.cargo_port_load_event.0.location.shipping_region.probability',
'events.cargo_port_load_event.0.location.shipping_region.source',
'events.cargo_port_load_event.0.location.terminal.id',
'events.cargo_port_load_event.0.location.terminal.label',
'events.cargo_port_load_event.0.location.terminal.layer',
'events.cargo_port_load_event.0.location.terminal.probability',
'events.cargo_port_load_event.0.location.terminal.source',
'events.cargo_port_load_event.0.location.trading_block.id',
'events.cargo_port_load_event.0.location.trading_block.label',
'events.cargo_port_load_event.0.location.trading_block.layer',
'events.cargo_port_load_event.0.location.trading_block.probability',
'events.cargo_port_load_event.0.location.trading_block.source',
'events.cargo_port_load_event.0.location.trading_region.id',
'events.cargo_port_load_event.0.location.trading_region.label',
'events.cargo_port_load_event.0.location.trading_region.layer',
'events.cargo_port_load_event.0.location.trading_region.probability',
'events.cargo_port_load_event.0.location.trading_region.source',
'events.cargo_port_load_event.0.location.trading_subregion.id',
'events.cargo_port_load_event.0.location.trading_subregion.label',
'events.cargo_port_load_event.0.location.trading_subregion.layer',
'events.cargo_port_load_event.0.location.trading_subregion.probability',
'events.cargo_port_load_event.0.location.trading_subregion.source',
'events.cargo_port_load_event.0.pos.0',
'events.cargo_port_load_event.0.pos.1',
'events.cargo_port_load_event.0.probability',
'events.cargo_port_load_event.0.start_timestamp',
'events.cargo_port_unload_event.0.end_timestamp',
'events.cargo_port_unload_event.0.event_type',
'events.cargo_port_unload_event.0.location.country.id',
'events.cargo_port_unload_event.0.location.country.label',
'events.cargo_port_unload_event.0.location.country.layer',
'events.cargo_port_unload_event.0.location.country.probability',
'events.cargo_port_unload_event.0.location.country.source',
'events.cargo_port_unload_event.0.location.port.id',
'events.cargo_port_unload_event.0.location.port.label',
'events.cargo_port_unload_event.0.location.port.layer',
'events.cargo_port_unload_event.0.location.port.probability',
'events.cargo_port_unload_event.0.location.port.source',
'events.cargo_port_unload_event.0.location.region.id',
'events.cargo_port_unload_event.0.location.region.label',
'events.cargo_port_unload_event.0.location.region.layer',
'events.cargo_port_unload_event.0.location.region.probability',
'events.cargo_port_unload_event.0.location.region.source',
'events.cargo_port_unload_event.0.location.shipping_region.id',
'events.cargo_port_unload_event.0.location.shipping_region.label',
'events.cargo_port_unload_event.0.location.shipping_region.layer',
'events.cargo_port_unload_event.0.location.shipping_region.probability',
'events.cargo_port_unload_event.0.location.shipping_region.source',
'events.cargo_port_unload_event.0.location.sts_zone.id',
'events.cargo_port_unload_event.0.location.sts_zone.label',
'events.cargo_port_unload_event.0.location.sts_zone.layer',
'events.cargo_port_unload_event.0.location.sts_zone.probability',
'events.cargo_port_unload_event.0.location.sts_zone.source',
'events.cargo_port_unload_event.0.location.terminal.id',
'events.cargo_port_unload_event.0.location.terminal.label',
'events.cargo_port_unload_event.0.location.terminal.layer',
'events.cargo_port_unload_event.0.location.terminal.probability',
'events.cargo_port_unload_event.0.location.terminal.source',
'events.cargo_port_unload_event.0.location.trading_block.id',
'events.cargo_port_unload_event.0.location.trading_block.label',
'events.cargo_port_unload_event.0.location.trading_block.layer',
'events.cargo_port_unload_event.0.location.trading_block.probability',
'events.cargo_port_unload_event.0.location.trading_block.source',
'events.cargo_port_unload_event.0.location.trading_region.id',
'events.cargo_port_unload_event.0.location.trading_region.label',
'events.cargo_port_unload_event.0.location.trading_region.layer',
'events.cargo_port_unload_event.0.location.trading_region.probability',
'events.cargo_port_unload_event.0.location.trading_region.source',
'events.cargo_port_unload_event.0.location.trading_subregion.id',
'events.cargo_port_unload_event.0.location.trading_subregion.label',
'events.cargo_port_unload_event.0.location.trading_subregion.layer',
'events.cargo_port_unload_event.0.location.trading_subregion.probability',
'events.cargo_port_unload_event.0.location.trading_subregion.source',
'events.cargo_port_unload_event.0.pos.0',
'events.cargo_port_unload_event.0.pos.1',
'events.cargo_port_unload_event.0.probability',
'events.cargo_port_unload_event.0.start_timestamp',
'events.cargo_storage_event.0.end_timestamp',
'events.cargo_storage_event.0.event_type',
'events.cargo_storage_event.0.location.country.id',
'events.cargo_storage_event.0.location.country.label',
'events.cargo_storage_event.0.location.country.layer',
'events.cargo_storage_event.0.location.country.probability',
'events.cargo_storage_event.0.location.country.source',
'events.cargo_storage_event.0.location.region.id',
'events.cargo_storage_event.0.location.region.label',
'events.cargo_storage_event.0.location.region.layer',
'events.cargo_storage_event.0.location.region.probability',
'events.cargo_storage_event.0.location.region.source',
'events.cargo_storage_event.0.location.shipping_region.id',
'events.cargo_storage_event.0.location.shipping_region.label',
'events.cargo_storage_event.0.location.shipping_region.layer',
'events.cargo_storage_event.0.location.shipping_region.probability',
'events.cargo_storage_event.0.location.shipping_region.source',
'events.cargo_storage_event.0.location.trading_block.id',
'events.cargo_storage_event.0.location.trading_block.label',
'events.cargo_storage_event.0.location.trading_block.layer',
'events.cargo_storage_event.0.location.trading_block.probability',
'events.cargo_storage_event.0.location.trading_block.source',
'events.cargo_storage_event.0.location.trading_region.id',
'events.cargo_storage_event.0.location.trading_region.label',
'events.cargo_storage_event.0.location.trading_region.layer',
'events.cargo_storage_event.0.location.trading_region.probability',
'events.cargo_storage_event.0.location.trading_region.source',
'events.cargo_storage_event.0.location.trading_subregion.id',
'events.cargo_storage_event.0.location.trading_subregion.label',
'events.cargo_storage_event.0.location.trading_subregion.layer',
'events.cargo_storage_event.0.location.trading_subregion.probability',
'events.cargo_storage_event.0.location.trading_subregion.source',
'events.cargo_storage_event.0.pos.0',
'events.cargo_storage_event.0.pos.1',
'events.cargo_storage_event.0.start_timestamp',
'events.cargo_storage_event.0.vessel_id',
'events.cargo_sts_event.0.end_timestamp',
'events.cargo_sts_event.0.event_type',
'events.cargo_sts_event.0.from_vessel_id',
'events.cargo_sts_event.0.from_vessel_name',
'events.cargo_sts_event.0.location.country.id',
'events.cargo_sts_event.0.location.country.label',
'events.cargo_sts_event.0.location.country.layer',
'events.cargo_sts_event.0.location.country.probability',
'events.cargo_sts_event.0.location.country.source',
'events.cargo_sts_event.0.location.port.id',
'events.cargo_sts_event.0.location.port.label',
'events.cargo_sts_event.0.location.port.layer',
'events.cargo_sts_event.0.location.port.probability',
'events.cargo_sts_event.0.location.port.source',
'events.cargo_sts_event.0.location.region.id',
'events.cargo_sts_event.0.location.region.label',
'events.cargo_sts_event.0.location.region.layer',
'events.cargo_sts_event.0.location.region.probability',
'events.cargo_sts_event.0.location.region.source',
'events.cargo_sts_event.0.location.shipping_region.id',
'events.cargo_sts_event.0.location.shipping_region.label',
'events.cargo_sts_event.0.location.shipping_region.layer',
'events.cargo_sts_event.0.location.shipping_region.probability',
'events.cargo_sts_event.0.location.shipping_region.source',
'events.cargo_sts_event.0.location.sts_zone.id',
'events.cargo_sts_event.0.location.sts_zone.label',
'events.cargo_sts_event.0.location.sts_zone.layer',
'events.cargo_sts_event.0.location.sts_zone.probability',
'events.cargo_sts_event.0.location.sts_zone.source',
'events.cargo_sts_event.0.location.trading_block.id',
'events.cargo_sts_event.0.location.trading_block.label',
'events.cargo_sts_event.0.location.trading_block.layer',
'events.cargo_sts_event.0.location.trading_block.probability',
'events.cargo_sts_event.0.location.trading_block.source',
'events.cargo_sts_event.0.location.trading_region.id',
'events.cargo_sts_event.0.location.trading_region.label',
'events.cargo_sts_event.0.location.trading_region.layer',
'events.cargo_sts_event.0.location.trading_region.probability',
'events.cargo_sts_event.0.location.trading_region.source',
'events.cargo_sts_event.0.location.trading_subregion.id',
'events.cargo_sts_event.0.location.trading_subregion.label',
'events.cargo_sts_event.0.location.trading_subregion.layer',
'events.cargo_sts_event.0.location.trading_subregion.probability',
'events.cargo_sts_event.0.location.trading_subregion.source',
'events.cargo_sts_event.0.pos.0',
'events.cargo_sts_event.0.pos.1',
'events.cargo_sts_event.0.start_timestamp',
'events.cargo_sts_event.0.to_vessel_id',
'events.cargo_sts_event.0.to_vessel_name',
'events.cargo_sts_event.1.end_timestamp',
'events.cargo_sts_event.1.event_type',
'events.cargo_sts_event.1.from_vessel_id',
'events.cargo_sts_event.1.from_vessel_name',
'events.cargo_sts_event.1.location.country.id',
'events.cargo_sts_event.1.location.country.label',
'events.cargo_sts_event.1.location.country.layer',
'events.cargo_sts_event.1.location.country.probability',
'events.cargo_sts_event.1.location.country.source',
'events.cargo_sts_event.1.location.region.id',
'events.cargo_sts_event.1.location.region.label',
'events.cargo_sts_event.1.location.region.layer',
'events.cargo_sts_event.1.location.region.probability',
'events.cargo_sts_event.1.location.region.source',
'events.cargo_sts_event.1.location.shipping_region.id',
'events.cargo_sts_event.1.location.shipping_region.label',
'events.cargo_sts_event.1.location.shipping_region.layer',
'events.cargo_sts_event.1.location.shipping_region.probability',
'events.cargo_sts_event.1.location.shipping_region.source',
'events.cargo_sts_event.1.location.sts_zone.id',
'events.cargo_sts_event.1.location.sts_zone.label',
'events.cargo_sts_event.1.location.sts_zone.layer',
'events.cargo_sts_event.1.location.sts_zone.probability',
'events.cargo_sts_event.1.location.sts_zone.source',
'events.cargo_sts_event.1.location.trading_block.id',
'events.cargo_sts_event.1.location.trading_block.label',
'events.cargo_sts_event.1.location.trading_block.layer',
'events.cargo_sts_event.1.location.trading_block.probability',
'events.cargo_sts_event.1.location.trading_block.source',
'events.cargo_sts_event.1.location.trading_region.id',
'events.cargo_sts_event.1.location.trading_region.label',
'events.cargo_sts_event.1.location.trading_region.layer',
'events.cargo_sts_event.1.location.trading_region.probability',
'events.cargo_sts_event.1.location.trading_region.source',
'events.cargo_sts_event.1.location.trading_subregion.id',
'events.cargo_sts_event.1.location.trading_subregion.label',
'events.cargo_sts_event.1.location.trading_subregion.layer',
'events.cargo_sts_event.1.location.trading_subregion.probability',
'events.cargo_sts_event.1.location.trading_subregion.source',
'events.cargo_sts_event.1.pos.0',
'events.cargo_sts_event.1.pos.1',
'events.cargo_sts_event.1.start_timestamp',
'events.cargo_sts_event.1.to_vessel_id',
'events.cargo_sts_event.1.to_vessel_name',
'product.category.id',
'product.category.label',
'product.category.layer',
'product.category.probability',
'product.category.source',
'product.grade.id',
'product.grade.label',
'product.grade.layer',
'product.grade.probability',
'product.grade.source',
'product.group.id',
'product.group.label',
'product.group.layer',
'product.group.probability',
'product.group.source',
'product.group_product.id',
'product.group_product.label',
'product.group_product.layer',
'product.group_product.probability',
'product.group_product.source',
'quantity',
'discharge_quantity',
'status',
'vessels.0.corporate_entities.charterer.id',
'vessels.0.corporate_entities.charterer.label',
'vessels.0.corporate_entities.charterer.layer',
'vessels.0.corporate_entities.charterer.probability',
'vessels.0.corporate_entities.charterer.source',
'vessels.0.corporate_entities.effective_controller.id',
'vessels.0.corporate_entities.effective_controller.label',
'vessels.0.corporate_entities.effective_controller.layer',
'vessels.0.corporate_entities.effective_controller.probability',
'vessels.0.corporate_entities.effective_controller.source',
'vessels.0.corporate_entities.time_charterer.end_timestamp',
'vessels.0.corporate_entities.time_charterer.id',
'vessels.0.corporate_entities.time_charterer.label',
'vessels.0.corporate_entities.time_charterer.layer',
'vessels.0.corporate_entities.time_charterer.probability',
'vessels.0.corporate_entities.time_charterer.source',
'vessels.0.corporate_entities.time_charterer.start_timestamp',
'vessels.0.cubic_capacity',
'vessels.0.dwt',
'vessels.0.end_timestamp',
'vessels.0.fixture_fulfilled',
'vessels.0.fixture_id',
'vessels.0.id',
'vessels.0.imo',
'vessels.0.mmsi',
'vessels.0.name',
'vessels.0.start_timestamp',
'vessels.0.status',
'vessels.0.tags.0.end_timestamp',
'vessels.0.tags.0.start_timestamp',
'vessels.0.tags.0.tag',
'vessels.0.vessel_class',
'vessels.0.voyage_id',
'vessels.1.corporate_entities.charterer.id',
'vessels.1.corporate_entities.charterer.label',
'vessels.1.corporate_entities.charterer.layer',
'vessels.1.corporate_entities.charterer.probability',
'vessels.1.corporate_entities.charterer.source',
'vessels.1.corporate_entities.effective_controller.id',
'vessels.1.corporate_entities.effective_controller.label',
'vessels.1.corporate_entities.effective_controller.layer',
'vessels.1.corporate_entities.effective_controller.probability',
'vessels.1.corporate_entities.effective_controller.source',
'vessels.1.corporate_entities.time_charterer.end_timestamp',
'vessels.1.corporate_entities.time_charterer.id',
'vessels.1.corporate_entities.time_charterer.label',
'vessels.1.corporate_entities.time_charterer.layer',
'vessels.1.corporate_entities.time_charterer.probability',
'vessels.1.corporate_entities.time_charterer.source',
'vessels.1.corporate_entities.time_charterer.start_timestamp',
'vessels.1.cubic_capacity',
'vessels.1.dwt',
'vessels.1.end_timestamp',
'vessels.1.fixture_fulfilled',
'vessels.1.id',
'vessels.1.imo',
'vessels.1.mmsi',
'vessels.1.name',
'vessels.1.start_timestamp',
'vessels.1.status',
'vessels.1.tags.0.end_timestamp',
'vessels.1.tags.0.start_timestamp',
'vessels.1.tags.0.tag',
'vessels.1.vessel_class',
'vessels.1.voyage_id',
'vessels.2.corporate_entities.charterer.id',
'vessels.2.corporate_entities.charterer.label',
'vessels.2.corporate_entities.charterer.layer',
'vessels.2.corporate_entities.charterer.probability',
'vessels.2.corporate_entities.charterer.source',
'vessels.2.corporate_entities.effective_controller.id',
'vessels.2.corporate_entities.effective_controller.label',
'vessels.2.corporate_entities.effective_controller.layer',
'vessels.2.corporate_entities.effective_controller.probability',
'vessels.2.corporate_entities.effective_controller.source',
'vessels.2.corporate_entities.time_charterer.end_timestamp',
'vessels.2.corporate_entities.time_charterer.id',
'vessels.2.corporate_entities.time_charterer.label',
'vessels.2.corporate_entities.time_charterer.layer',
'vessels.2.corporate_entities.time_charterer.probability',
'vessels.2.corporate_entities.time_charterer.source',
'vessels.2.corporate_entities.time_charterer.start_timestamp',
'vessels.2.cubic_capacity',
'vessels.2.dwt',
'vessels.2.end_timestamp',
'vessels.2.id',
'vessels.2.imo',
'vessels.2.mmsi',
'vessels.2.name',
'vessels.2.start_timestamp',
'vessels.2.status',
'vessels.2.tags.0.start_timestamp',
'vessels.2.tags.0.tag',
'vessels.2.vessel_class',
'vessels.2.voyage_id',
'vessels.3.corporate_entities.effective_controller.id',
'vessels.3.corporate_entities.effective_controller.label',
'vessels.3.corporate_entities.effective_controller.layer',
'vessels.3.corporate_entities.effective_controller.probability',
'vessels.3.corporate_entities.effective_controller.source',
'vessels.3.cubic_capacity',
'vessels.3.dwt',
'vessels.3.id',
'vessels.3.imo',
'vessels.3.mmsi',
'vessels.3.name',
'vessels.3.start_timestamp',
'vessels.3.status',
'vessels.3.vessel_class',
'vessels.3.voyage_id',
'parent_ids.0.id',
'parent_ids.0.splinter_timestamp',
'parent_ids.1.id',
'parent_ids.1.splinter_timestamp',
]