vessel-api-python 1.3.1__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vessel_api_python/__init__.py +9 -75
- vessel_api_python/_client.py +0 -4
- vessel_api_python/_constants.py +1 -1
- vessel_api_python/_errors.py +49 -1
- vessel_api_python/_models.py +50 -396
- vessel_api_python/_services.py +2145 -351
- vessel_api_python/_transport.py +5 -2
- {vessel_api_python-1.3.1.dist-info → vessel_api_python-2.0.0.dist-info}/METADATA +80 -29
- vessel_api_python-2.0.0.dist-info/RECORD +13 -0
- vessel_api_python-1.3.1.dist-info/RECORD +0 -13
- {vessel_api_python-1.3.1.dist-info → vessel_api_python-2.0.0.dist-info}/WHEEL +0 -0
- {vessel_api_python-1.3.1.dist-info → vessel_api_python-2.0.0.dist-info}/licenses/LICENSE +0 -0
vessel_api_python/_models.py
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
"""Pydantic v2 models for the Vessel Tracking API.
|
|
2
2
|
|
|
3
|
-
Models are
|
|
3
|
+
Models follow Python conventions. They are maintained by hand — there is no code
|
|
4
|
+
generator — but they now cover every property of every response definition in
|
|
5
|
+
openapi/swagger.json. Error payloads are the one deliberate exception: they are
|
|
6
|
+
surfaced as exceptions in ``_errors`` rather than as models here.
|
|
7
|
+
|
|
8
|
+
Because pydantic silently drops unmodelled keys, a property added to the spec
|
|
9
|
+
must be added here too or callers lose the data with no error. When the spec
|
|
10
|
+
changes, diff it against these classes.
|
|
11
|
+
|
|
4
12
|
All optional fields use ``type | None = None`` and JSON field mapping uses
|
|
5
|
-
``Field(alias="camelCase")`` where the API returns camelCase keys.
|
|
13
|
+
``Field(alias="camelCase")`` where the API returns camelCase keys. Note that
|
|
14
|
+
``Vessel`` is snake_case on the wire and so needs no aliases.
|
|
6
15
|
"""
|
|
7
16
|
|
|
8
17
|
from __future__ import annotations
|
|
@@ -60,180 +69,13 @@ class VesselFormerName(_Base):
|
|
|
60
69
|
year_until: str | None = None
|
|
61
70
|
|
|
62
71
|
|
|
63
|
-
class BroadcastStation(_Base):
|
|
64
|
-
"""NAVTEX radio broadcast station details."""
|
|
65
|
-
|
|
66
|
-
country: str | None = None
|
|
67
|
-
coverage: str | None = None
|
|
68
|
-
latitude: float | None = None
|
|
69
|
-
longitude: float | None = None
|
|
70
|
-
name: str | None = None
|
|
71
|
-
station_id: str | None = None
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
# ---------------------------------------------------------------------------
|
|
75
|
-
# Classification sub-models
|
|
76
|
-
# ---------------------------------------------------------------------------
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
class ClassificationPurpose(_Base):
|
|
80
|
-
"""Purpose entry within classification identification."""
|
|
81
|
-
|
|
82
|
-
description: str | None = None
|
|
83
|
-
is_main_purpose: bool | None = Field(default=None, alias="isMainPurpose")
|
|
84
|
-
purpose: str | None = None
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
class ClassificationCertificate(_Base):
|
|
88
|
-
"""Certificate entry within vessel classification."""
|
|
89
|
-
|
|
90
|
-
certificate: str | None = None
|
|
91
|
-
code: str | None = None
|
|
92
|
-
expires: str | None = None
|
|
93
|
-
ext_until: str | None = Field(default=None, alias="extUntil")
|
|
94
|
-
issued: str | None = None
|
|
95
|
-
term: str | None = None
|
|
96
|
-
type: str | None = None
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
class ClassificationCondition(_Base):
|
|
100
|
-
"""Condition entry within vessel classification."""
|
|
101
|
-
|
|
102
|
-
condition: str | None = None
|
|
103
|
-
due_date: str | None = Field(default=None, alias="dueDate")
|
|
104
|
-
imposed_date: str | None = Field(default=None, alias="imposedDate")
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
class ClassificationDimensions(_Base):
|
|
108
|
-
"""Vessel dimensions from classification data."""
|
|
109
|
-
|
|
110
|
-
bm: float | None = None
|
|
111
|
-
dm: float | None = None
|
|
112
|
-
draught: float | None = None
|
|
113
|
-
dwt: float | None = None
|
|
114
|
-
gross_ton_69: float | None = Field(default=None, alias="grossTon69")
|
|
115
|
-
lbp: float | None = None
|
|
116
|
-
length_overall: float | None = Field(default=None, alias="lengthOverall")
|
|
117
|
-
net_ton_69: float | None = Field(default=None, alias="netTon69")
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
class ClassificationHull(_Base):
|
|
121
|
-
"""Hull details from classification data."""
|
|
122
|
-
|
|
123
|
-
decks_number: str | None = Field(default=None, alias="decksNumber")
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
class ClassificationIdentification(_Base):
|
|
127
|
-
"""Identification details from classification data."""
|
|
128
|
-
|
|
129
|
-
class_status_string: str | None = Field(default=None, alias="classStatusString")
|
|
130
|
-
flag_code: str | None = Field(default=None, alias="flagCode")
|
|
131
|
-
flag_name: str | None = Field(default=None, alias="flagName")
|
|
132
|
-
home_port: str | None = Field(default=None, alias="homePort")
|
|
133
|
-
imo_number: str | None = Field(default=None, alias="imoNumber")
|
|
134
|
-
non_class_relation_string: str | None = Field(
|
|
135
|
-
default=None, alias="nonClassRelationString"
|
|
136
|
-
)
|
|
137
|
-
official_number: str | None = Field(default=None, alias="officialNumber")
|
|
138
|
-
operational_status_string: str | None = Field(
|
|
139
|
-
default=None, alias="operationalStatusString"
|
|
140
|
-
)
|
|
141
|
-
purposes: list[ClassificationPurpose] | None = None
|
|
142
|
-
register_: str | None = Field(default=None, alias="register")
|
|
143
|
-
signal_letters: str | None = Field(default=None, alias="signalLetters")
|
|
144
|
-
type_formatted: str | None = Field(default=None, alias="typeFormatted")
|
|
145
|
-
vessel_id: str | None = Field(default=None, alias="vesselId")
|
|
146
|
-
vessel_name: str | None = Field(default=None, alias="vesselName")
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
class ClassificationInfo(_Base):
|
|
150
|
-
"""Classification notation and class status details."""
|
|
151
|
-
|
|
152
|
-
class_entry_date: str | None = Field(default=None, alias="classEntryDate")
|
|
153
|
-
class_notation_string: str | None = Field(
|
|
154
|
-
default=None, alias="classNotationString"
|
|
155
|
-
)
|
|
156
|
-
class_notation_string_design: str | None = Field(
|
|
157
|
-
default=None, alias="classNotationStringDesign"
|
|
158
|
-
)
|
|
159
|
-
class_notation_string_in_operation: str | None = Field(
|
|
160
|
-
default=None, alias="classNotationStringInOperation"
|
|
161
|
-
)
|
|
162
|
-
class_notation_string_main: str | None = Field(
|
|
163
|
-
default=None, alias="classNotationStringMain"
|
|
164
|
-
)
|
|
165
|
-
construction_symbol: str | None = Field(default=None, alias="constructionSymbol")
|
|
166
|
-
dual_class: str | None = Field(default=None, alias="dualClass")
|
|
167
|
-
equipment_number: str | None = Field(default=None, alias="equipmentNumber")
|
|
168
|
-
last_classification_society: str | None = Field(
|
|
169
|
-
default=None, alias="lastClassificationSociety"
|
|
170
|
-
)
|
|
171
|
-
main_class: str | None = Field(default=None, alias="mainClass")
|
|
172
|
-
main_class_machinery: str | None = Field(
|
|
173
|
-
default=None, alias="mainClassMachinery"
|
|
174
|
-
)
|
|
175
|
-
register_notation_string: str | None = Field(
|
|
176
|
-
default=None, alias="registerNotationString"
|
|
177
|
-
)
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
class ClassificationMachinery(_Base):
|
|
181
|
-
"""Machinery details from classification data."""
|
|
182
|
-
|
|
183
|
-
main_propulsion: str | None = Field(default=None, alias="mainPropulsion")
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
class ClassificationOwner(_Base):
|
|
187
|
-
"""Owner/manager details from classification data."""
|
|
188
|
-
|
|
189
|
-
doc_holder_dnv_id: str | None = Field(default=None, alias="docHolderDnvId")
|
|
190
|
-
doc_holder_imo_number: str | None = Field(
|
|
191
|
-
default=None, alias="docHolderImoNumber"
|
|
192
|
-
)
|
|
193
|
-
doc_holder_name: str | None = Field(default=None, alias="docHolderName")
|
|
194
|
-
manager_dnv_id: str | None = Field(default=None, alias="managerDnvId")
|
|
195
|
-
manager_imo_number: str | None = Field(default=None, alias="managerImoNumber")
|
|
196
|
-
manager_name: str | None = Field(default=None, alias="managerName")
|
|
197
|
-
owner_dnv_id: str | None = Field(default=None, alias="ownerDnvId")
|
|
198
|
-
owner_imo_number: str | None = Field(default=None, alias="ownerImoNumber")
|
|
199
|
-
owner_name: str | None = Field(default=None, alias="ownerName")
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
class ClassificationSurvey(_Base):
|
|
203
|
-
"""Survey entry within vessel classification."""
|
|
204
|
-
|
|
205
|
-
category: str | None = None
|
|
206
|
-
due_from: str | None = Field(default=None, alias="dueFrom")
|
|
207
|
-
due_to: str | None = Field(default=None, alias="dueTo")
|
|
208
|
-
last_date: str | None = Field(default=None, alias="lastDate")
|
|
209
|
-
location: str | None = None
|
|
210
|
-
postponed: str | None = None
|
|
211
|
-
survey: str | None = None
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
class ClassificationYard(_Base):
|
|
215
|
-
"""Shipyard/builder details from classification data."""
|
|
216
|
-
|
|
217
|
-
contracted_builder: str | None = Field(default=None, alias="contractedBuilder")
|
|
218
|
-
contracted_builder_build_no: str | None = Field(
|
|
219
|
-
default=None, alias="contractedBuilderBuildNo"
|
|
220
|
-
)
|
|
221
|
-
date_of_build: str | None = Field(default=None, alias="dateOfBuild")
|
|
222
|
-
hull_yard_build_no: str | None = Field(default=None, alias="hullYardBuildNo")
|
|
223
|
-
hull_yard_name: str | None = Field(default=None, alias="hullYardName")
|
|
224
|
-
keel_date: str | None = Field(default=None, alias="keelDate")
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
# ---------------------------------------------------------------------------
|
|
228
|
-
# Resolution metadata
|
|
229
|
-
# ---------------------------------------------------------------------------
|
|
230
|
-
|
|
231
|
-
|
|
232
72
|
class ResolutionMeta(_Base):
|
|
233
73
|
"""Metadata about ID resolution fallback. Present when the API resolved using a different ID type."""
|
|
74
|
+
|
|
234
75
|
requested_id_type: str | None = Field(default=None, alias="requestedIdType")
|
|
235
76
|
resolved_id_type: str | None = Field(default=None, alias="resolvedIdType")
|
|
236
77
|
resolved_id: int | None = Field(default=None, alias="resolvedId")
|
|
78
|
+
suggested_id_type: str | None = Field(default=None, alias="suggestedIdType")
|
|
237
79
|
|
|
238
80
|
|
|
239
81
|
# ---------------------------------------------------------------------------
|
|
@@ -246,16 +88,17 @@ class Vessel(_Base):
|
|
|
246
88
|
|
|
247
89
|
breadth: int | None = None
|
|
248
90
|
breadth_unit: str | None = None
|
|
249
|
-
builder: str | None = None
|
|
250
91
|
call_sign: str | None = None
|
|
251
|
-
class_society: str | None = None
|
|
252
92
|
country: str | None = None
|
|
253
93
|
country_code: str | None = None
|
|
254
94
|
deadweight_tonnage: int | None = None
|
|
255
95
|
draft: int | None = None
|
|
256
96
|
draft_unit: str | None = None
|
|
97
|
+
draught_calculated_avg: float | None = None
|
|
98
|
+
draught_observed_max: float | None = None
|
|
257
99
|
engine_model_name: str | None = None
|
|
258
100
|
engine_type: int | None = None
|
|
101
|
+
eni: str | None = None
|
|
259
102
|
former_names: list[VesselFormerName] | None = None
|
|
260
103
|
gross_tonnage: int | None = None
|
|
261
104
|
home_port: str | None = None
|
|
@@ -263,11 +106,15 @@ class Vessel(_Base):
|
|
|
263
106
|
kilowatt_power: int | None = None
|
|
264
107
|
length: int | None = None
|
|
265
108
|
length_unit: str | None = None
|
|
266
|
-
manager_name: str | None = None
|
|
267
109
|
mmsi: int | None = None
|
|
268
110
|
name: str | None = None
|
|
111
|
+
name_ais: str | None = None
|
|
269
112
|
operating_status: str | None = None
|
|
270
|
-
|
|
113
|
+
speed_calculated_avg: float | None = None
|
|
114
|
+
speed_observed_max: float | None = None
|
|
115
|
+
summer_draught: float | None = None
|
|
116
|
+
teu: int | None = None
|
|
117
|
+
vessel_subtype: str | None = None
|
|
271
118
|
vessel_type: str | None = None
|
|
272
119
|
year_built: int | None = None
|
|
273
120
|
|
|
@@ -300,18 +147,14 @@ class VesselPosition(_Base):
|
|
|
300
147
|
class VesselPositionResponse(_Base):
|
|
301
148
|
"""Response for a single vessel position lookup."""
|
|
302
149
|
|
|
303
|
-
vessel_position: VesselPosition | None = Field(
|
|
304
|
-
default=None, alias="vesselPosition"
|
|
305
|
-
)
|
|
150
|
+
vessel_position: VesselPosition | None = Field(default=None, alias="vesselPosition")
|
|
306
151
|
meta: ResolutionMeta | None = Field(default=None, alias="_meta")
|
|
307
152
|
|
|
308
153
|
|
|
309
154
|
class VesselPositionsResponse(_Base):
|
|
310
155
|
"""Response for multiple vessel positions."""
|
|
311
156
|
|
|
312
|
-
vessel_positions: list[VesselPosition] | None = Field(
|
|
313
|
-
default=None, alias="vesselPositions"
|
|
314
|
-
)
|
|
157
|
+
vessel_positions: list[VesselPosition] | None = Field(default=None, alias="vesselPositions")
|
|
315
158
|
next_token: str | None = Field(default=None, alias="nextToken")
|
|
316
159
|
meta: ResolutionMeta | None = Field(default=None, alias="_meta")
|
|
317
160
|
|
|
@@ -328,35 +171,21 @@ class MarineCasualty(_Base):
|
|
|
328
171
|
casualty_report_nr: str | None = Field(default=None, alias="casualtyReportNr")
|
|
329
172
|
cf_coding: list[str] | None = Field(default=None, alias="cfCoding")
|
|
330
173
|
collected_at: str | None = Field(default=None, alias="collectedAt")
|
|
331
|
-
competent_authority: list[str] | None = Field(
|
|
332
|
-
default=None, alias="competentAuthority"
|
|
333
|
-
)
|
|
174
|
+
competent_authority: list[str] | None = Field(default=None, alias="competentAuthority")
|
|
334
175
|
date_of_occurrence: str | None = Field(default=None, alias="dateOfOccurrence")
|
|
335
176
|
deviation: list[str] | None = None
|
|
336
177
|
event_type: list[str] | None = Field(default=None, alias="eventType")
|
|
337
|
-
finished_investigation: bool | None = Field(
|
|
338
|
-
default=None, alias="finishedInvestigation"
|
|
339
|
-
)
|
|
178
|
+
finished_investigation: bool | None = Field(default=None, alias="finishedInvestigation")
|
|
340
179
|
imo_nr: list[str] | None = Field(default=None, alias="imoNr")
|
|
341
180
|
interim_report: bool | None = Field(default=None, alias="interimReport")
|
|
342
|
-
investigating_state: str | None = Field(
|
|
343
|
-
default=None, alias="investigatingState"
|
|
344
|
-
)
|
|
181
|
+
investigating_state: str | None = Field(default=None, alias="investigatingState")
|
|
345
182
|
lives_lost_total: str | None = Field(default=None, alias="livesLostTotal")
|
|
346
183
|
name_of_ship: list[str] | None = Field(default=None, alias="nameOfShip")
|
|
347
|
-
occurrence_severity: str | None = Field(
|
|
348
|
-
default=None, alias="occurrenceSeverity"
|
|
349
|
-
)
|
|
184
|
+
occurrence_severity: str | None = Field(default=None, alias="occurrenceSeverity")
|
|
350
185
|
occurrence_uuid: str | None = Field(default=None, alias="occurrenceUuid")
|
|
351
|
-
occurrence_with_persons: list[str] | None = Field(
|
|
352
|
-
|
|
353
|
-
)
|
|
354
|
-
occurrence_with_ships: list[str] | None = Field(
|
|
355
|
-
default=None, alias="occurrenceWithShips"
|
|
356
|
-
)
|
|
357
|
-
people_injured_total: str | None = Field(
|
|
358
|
-
default=None, alias="peopleInjuredTotal"
|
|
359
|
-
)
|
|
186
|
+
occurrence_with_persons: list[str] | None = Field(default=None, alias="occurrenceWithPersons")
|
|
187
|
+
occurrence_with_ships: list[str] | None = Field(default=None, alias="occurrenceWithShips")
|
|
188
|
+
people_injured_total: str | None = Field(default=None, alias="peopleInjuredTotal")
|
|
360
189
|
pollution: bool | None = None
|
|
361
190
|
ship_craft_type: list[str] | None = Field(default=None, alias="shipCraftType")
|
|
362
191
|
sr_coding: list[str] | None = Field(default=None, alias="srCoding")
|
|
@@ -370,34 +199,6 @@ class MarineCasualtiesResponse(_Base):
|
|
|
370
199
|
meta: ResolutionMeta | None = Field(default=None, alias="_meta")
|
|
371
200
|
|
|
372
201
|
|
|
373
|
-
class ClassificationVessel(_Base):
|
|
374
|
-
"""Full vessel classification data with nested sub-objects."""
|
|
375
|
-
|
|
376
|
-
certificates: list[ClassificationCertificate] | None = None
|
|
377
|
-
classification: ClassificationInfo | None = None
|
|
378
|
-
collected_at: str | None = Field(default=None, alias="collectedAt")
|
|
379
|
-
conditions: list[ClassificationCondition] | None = None
|
|
380
|
-
dimensions: ClassificationDimensions | None = None
|
|
381
|
-
hull: ClassificationHull | None = None
|
|
382
|
-
identification: ClassificationIdentification | None = None
|
|
383
|
-
imo: int | None = None
|
|
384
|
-
machinery: ClassificationMachinery | None = None
|
|
385
|
-
owner: ClassificationOwner | None = None
|
|
386
|
-
surveys: list[ClassificationSurvey] | None = None
|
|
387
|
-
yard: ClassificationYard | None = None
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
# Keep the ``Classification`` alias so existing code continues to work.
|
|
391
|
-
Classification = ClassificationVessel
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
class ClassificationResponse(_Base):
|
|
395
|
-
"""Response for vessel classification."""
|
|
396
|
-
|
|
397
|
-
classification: ClassificationVessel | None = None
|
|
398
|
-
meta: ResolutionMeta | None = Field(default=None, alias="_meta")
|
|
399
|
-
|
|
400
|
-
|
|
401
202
|
class VesselEmission(_Base):
|
|
402
203
|
"""A vessel emission record (EU MRV data)."""
|
|
403
204
|
|
|
@@ -474,136 +275,12 @@ class VesselETAResponse(_Base):
|
|
|
474
275
|
|
|
475
276
|
class PortInboundResponse(_Base):
|
|
476
277
|
"""Response containing vessels heading to a port."""
|
|
278
|
+
|
|
477
279
|
vessel_etas: list[VesselETA] | None = Field(default=None, alias="vesselETAs")
|
|
478
280
|
next_token: str | None = Field(default=None, alias="nextToken")
|
|
479
281
|
|
|
480
282
|
|
|
481
283
|
# ---------------------------------------------------------------------------
|
|
482
|
-
# Inspection models
|
|
483
|
-
# ---------------------------------------------------------------------------
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
class InspectionRecord(_Base):
|
|
487
|
-
"""A port-state control inspection record (from types.Inspection)."""
|
|
488
|
-
|
|
489
|
-
authority: str | None = None
|
|
490
|
-
deficiencies: int | None = None
|
|
491
|
-
detail_id: str | None = None
|
|
492
|
-
detained: bool | None = None
|
|
493
|
-
imo: int | None = None
|
|
494
|
-
inspection_date: str | None = None
|
|
495
|
-
inspection_type: str | None = None
|
|
496
|
-
mou_region: str | None = None
|
|
497
|
-
port: str | None = None
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
# Keep ``Inspection`` as an alias so existing imports keep working.
|
|
501
|
-
Inspection = InspectionRecord
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
class InspectionDeficiency(_Base):
|
|
505
|
-
"""A deficiency entry from an inspection detail."""
|
|
506
|
-
|
|
507
|
-
category: str | None = None
|
|
508
|
-
count: int | None = None
|
|
509
|
-
deficiency: str | None = None
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
class InspectionDetailRecord(_Base):
|
|
513
|
-
"""Detailed inspection record with deficiency breakdown."""
|
|
514
|
-
|
|
515
|
-
authority: str | None = None
|
|
516
|
-
deficiencies: list[InspectionDeficiency] | None = None
|
|
517
|
-
deficiency_count: int | None = None
|
|
518
|
-
detail_id: str | None = None
|
|
519
|
-
detained: bool | None = None
|
|
520
|
-
detention_grounds: list[InspectionDeficiency] | None = None
|
|
521
|
-
imo: int | None = None
|
|
522
|
-
inspection_date: str | None = None
|
|
523
|
-
inspection_type: str | None = None
|
|
524
|
-
mou_region: str | None = None
|
|
525
|
-
port: str | None = None
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
# Keep ``InspectionDetail`` as an alias so existing imports keep working.
|
|
529
|
-
InspectionDetail = InspectionDetailRecord
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
class InspectionsResponseData(_Base):
|
|
533
|
-
"""Inner data of the inspections response (types.InspectionsResponse)."""
|
|
534
|
-
|
|
535
|
-
cached_at: str | None = None
|
|
536
|
-
imo: int | None = None
|
|
537
|
-
inspection_count: int | None = None
|
|
538
|
-
inspections: list[InspectionRecord] | None = None
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
class TypesInspectionsResponse(_Base):
|
|
542
|
-
"""Response for vessel inspections (wraps InspectionsResponseData)."""
|
|
543
|
-
|
|
544
|
-
cached_at: str | None = None
|
|
545
|
-
imo: int | None = None
|
|
546
|
-
inspection_count: int | None = None
|
|
547
|
-
inspections: list[InspectionRecord] | None = None
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
class InspectionDetailResponseData(_Base):
|
|
551
|
-
"""Inner data of the inspection detail response."""
|
|
552
|
-
|
|
553
|
-
cached_at: str | None = None
|
|
554
|
-
detail_id: str | None = None
|
|
555
|
-
imo: int | None = None
|
|
556
|
-
inspection_detail: InspectionDetailRecord | None = None
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
class TypesInspectionDetailResponse(_Base):
|
|
560
|
-
"""Response for a detailed inspection."""
|
|
561
|
-
|
|
562
|
-
cached_at: str | None = None
|
|
563
|
-
detail_id: str | None = None
|
|
564
|
-
imo: int | None = None
|
|
565
|
-
inspection_detail: InspectionDetailRecord | None = None
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
# ---------------------------------------------------------------------------
|
|
569
|
-
# Ownership models
|
|
570
|
-
# ---------------------------------------------------------------------------
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
class VesselOwnership(_Base):
|
|
574
|
-
"""Vessel ownership and management details."""
|
|
575
|
-
|
|
576
|
-
doc_company: str | None = None
|
|
577
|
-
doc_company_address: str | None = None
|
|
578
|
-
imo: int | None = None
|
|
579
|
-
registered_owner: str | None = None
|
|
580
|
-
registered_owner_address: str | None = None
|
|
581
|
-
ship_manager: str | None = None
|
|
582
|
-
ship_manager_address: str | None = None
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
# Keep ``Ownership`` as an alias so existing imports keep working.
|
|
586
|
-
Ownership = VesselOwnership
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
class OwnershipResponseData(_Base):
|
|
590
|
-
"""Inner data of the ownership response (types.OwnershipResponse)."""
|
|
591
|
-
|
|
592
|
-
cached_at: str | None = None
|
|
593
|
-
imo: int | None = None
|
|
594
|
-
ownership: VesselOwnership | None = None
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
class TypesOwnershipResponse(_Base):
|
|
598
|
-
"""Response for vessel ownership."""
|
|
599
|
-
|
|
600
|
-
cached_at: str | None = None
|
|
601
|
-
imo: int | None = None
|
|
602
|
-
ownership: VesselOwnership | None = None
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
# ---------------------------------------------------------------------------
|
|
606
|
-
# Port models
|
|
607
284
|
# ---------------------------------------------------------------------------
|
|
608
285
|
|
|
609
286
|
|
|
@@ -674,9 +351,7 @@ class PortEvent(_Base):
|
|
|
674
351
|
class PortEventsResponse(_Base):
|
|
675
352
|
"""Response for port events list."""
|
|
676
353
|
|
|
677
|
-
port_events: list[PortEvent] | None = Field(
|
|
678
|
-
default=None, alias="portEvents"
|
|
679
|
-
)
|
|
354
|
+
port_events: list[PortEvent] | None = Field(default=None, alias="portEvents")
|
|
680
355
|
next_token: str | None = Field(default=None, alias="nextToken")
|
|
681
356
|
meta: ResolutionMeta | None = Field(default=None, alias="_meta")
|
|
682
357
|
|
|
@@ -693,11 +368,24 @@ class PortEventResponse(_Base):
|
|
|
693
368
|
# ---------------------------------------------------------------------------
|
|
694
369
|
|
|
695
370
|
|
|
371
|
+
class VesselSearchMeta(_Base):
|
|
372
|
+
"""Metadata about which fields matched a vessel search query.
|
|
373
|
+
|
|
374
|
+
``matched_on`` maps the index of a vessel in the ``vessels`` array to the
|
|
375
|
+
fields that matched it, e.g. ``{"0": ["eni"], "1": ["imo"]}``. Values are
|
|
376
|
+
arrays because one vessel can match on several fields at once.
|
|
377
|
+
"""
|
|
378
|
+
|
|
379
|
+
matched_on: dict[str, list[str]] | None = Field(default=None, alias="matchedOn")
|
|
380
|
+
query: str | None = None
|
|
381
|
+
|
|
382
|
+
|
|
696
383
|
class FindVesselsResponse(_Base):
|
|
697
384
|
"""Response for vessel search."""
|
|
698
385
|
|
|
699
386
|
vessels: list[Vessel] | None = None
|
|
700
387
|
next_token: str | None = Field(default=None, alias="nextToken")
|
|
388
|
+
meta: VesselSearchMeta | None = Field(default=None, alias="_meta")
|
|
701
389
|
|
|
702
390
|
|
|
703
391
|
class FindPortsResponse(_Base):
|
|
@@ -735,9 +423,7 @@ class DGPSStation(_Base):
|
|
|
735
423
|
class FindDGPSStationsResponse(_Base):
|
|
736
424
|
"""Response for DGPS station search."""
|
|
737
425
|
|
|
738
|
-
dgps_stations: list[DGPSStation] | None = Field(
|
|
739
|
-
default=None, alias="dgpsStations"
|
|
740
|
-
)
|
|
426
|
+
dgps_stations: list[DGPSStation] | None = Field(default=None, alias="dgpsStations")
|
|
741
427
|
next_token: str | None = Field(default=None, alias="nextToken")
|
|
742
428
|
|
|
743
429
|
|
|
@@ -828,9 +514,7 @@ class RadioBeacon(_Base):
|
|
|
828
514
|
class FindRadioBeaconsResponse(_Base):
|
|
829
515
|
"""Response for radio beacon search."""
|
|
830
516
|
|
|
831
|
-
radio_beacons: list[RadioBeacon] | None = Field(
|
|
832
|
-
default=None, alias="radioBeacons"
|
|
833
|
-
)
|
|
517
|
+
radio_beacons: list[RadioBeacon] | None = Field(default=None, alias="radioBeacons")
|
|
834
518
|
next_token: str | None = Field(default=None, alias="nextToken")
|
|
835
519
|
|
|
836
520
|
|
|
@@ -856,9 +540,7 @@ class PortsWithinLocationResponse(_Base):
|
|
|
856
540
|
class DGPSStationsWithinLocationResponse(_Base):
|
|
857
541
|
"""Response for DGPS station location queries."""
|
|
858
542
|
|
|
859
|
-
dgps_stations: list[DGPSStation] | None = Field(
|
|
860
|
-
default=None, alias="dgpsStations"
|
|
861
|
-
)
|
|
543
|
+
dgps_stations: list[DGPSStation] | None = Field(default=None, alias="dgpsStations")
|
|
862
544
|
next_token: str | None = Field(default=None, alias="nextToken")
|
|
863
545
|
|
|
864
546
|
|
|
@@ -879,37 +561,9 @@ class MODUsWithinLocationResponse(_Base):
|
|
|
879
561
|
class RadioBeaconsWithinLocationResponse(_Base):
|
|
880
562
|
"""Response for radio beacon location queries."""
|
|
881
563
|
|
|
882
|
-
radio_beacons: list[RadioBeacon] | None = Field(
|
|
883
|
-
default=None, alias="radioBeacons"
|
|
884
|
-
)
|
|
564
|
+
radio_beacons: list[RadioBeacon] | None = Field(default=None, alias="radioBeacons")
|
|
885
565
|
next_token: str | None = Field(default=None, alias="nextToken")
|
|
886
566
|
|
|
887
567
|
|
|
888
568
|
# ---------------------------------------------------------------------------
|
|
889
|
-
# Navtex models
|
|
890
569
|
# ---------------------------------------------------------------------------
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
class Navtex(_Base):
|
|
894
|
-
"""A NAVTEX maritime safety message."""
|
|
895
|
-
|
|
896
|
-
issuing_office: str | None = None
|
|
897
|
-
label: str | None = None
|
|
898
|
-
lines: list[str] | None = None
|
|
899
|
-
metarea_coordinator: str | None = None
|
|
900
|
-
metarea_id: str | None = None
|
|
901
|
-
metarea_name: str | None = None
|
|
902
|
-
metarea_region: str | None = None
|
|
903
|
-
metarea_stations: list[BroadcastStation] | None = None
|
|
904
|
-
raw_content: str | None = None
|
|
905
|
-
timestamp: str | None = None
|
|
906
|
-
wmo_header: str | None = None
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
class NavtexMessagesResponse(_Base):
|
|
910
|
-
"""Response for NAVTEX messages list."""
|
|
911
|
-
|
|
912
|
-
navtex_messages: list[Navtex] | None = Field(
|
|
913
|
-
default=None, alias="navtexMessages"
|
|
914
|
-
)
|
|
915
|
-
next_token: str | None = Field(default=None, alias="nextToken")
|