/
canal_transit.py
66 lines (51 loc) · 2 KB
/
canal_transit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from pydantic import BaseModel
from typing import List, Optional
from vortexasdk.api.geography import GeographyEntity
from vortexasdk.api.shared_types import (
EntityWithSingleLayer,
ISODate,
VesselClassEntry,
)
from vortexasdk.api.id import ID
class CargoEntity(BaseModel):
cargo_movement_id: ID
quantity_barrels: Optional[int]
quantity_tonnes: Optional[int]
quantity_cubic_metres: Optional[int]
product: Optional[List[EntityWithSingleLayer]]
class GeographyRecord(BaseModel):
id: ID
layer: Optional[List[str]] = None
label: Optional[str] = None
aliases: Optional[List[str]] = None
class CorporateRecord(BaseModel):
id: ID
label: str
class CanalTransitRecord(BaseModel):
"""
The canal transits dataset contains information about ships waiting to cross major global canals.
An entry in this dataset records information about a vessels transit through a canal, including the the actual queue arrival time, the planned canal entry time, the actual canal entry time, and the actual canal exit time.
[Canal Transit Further Documentation](https://docs.vortexa.com/reference/intro-canal-transit)
"""
id: ID
voyage_id: Optional[ID] = None
vessel_id: Optional[ID] = None
vessel_name: Optional[str] = None
vessel_imo: Optional[int] = None
vessel_mmsi: Optional[int] = None
vessel_class: Optional[List[VesselClassEntry]] = None
vessel_cubic_capacity: Optional[int] = None
vessel_dead_weight: Optional[int] = None
canal: str
direction: str
lock: str
queue_arrival_time: Optional[ISODate] = None
canal_entry_time: Optional[ISODate] = None
canal_exit_time: Optional[ISODate] = None
booked_time: Optional[ISODate] = None
voyage_status: Optional[str] = None
cargoes: Optional[List[CargoEntity]]
origin: Optional[List[GeographyEntity]]
destination: Optional[List[GeographyEntity]]
charterer: Optional[CorporateRecord] = None
effective_controller: Optional[CorporateRecord] = None