# generated by datamodel-codegen:
#   filename:  https://ships.data.shodan.io/openapi.json
#   timestamp: 2021-08-31T22:05:15+00:00

from __future__ import annotations

from typing import List, Optional

from pydantic import BaseModel, Field


class NMEAMessage(BaseModel):
    ais_id: Optional[int] = Field(None, title='Ais Id')
    aid_type: Optional[int] = Field(None, title='Aid Type')
    callsign: Optional[str] = Field(None, title='Callsign')
    channel: Optional[str] = Field(None, title='Channel')
    checksum: Optional[int] = Field(None, title='Checksum')
    course: Optional[float] = Field(None, title='Course')
    destination: Optional[str] = Field(None, title='Destination')
    dte: Optional[bool] = Field(None, title='Dte')
    epfd: Optional[int] = Field(None, title='Epfd')
    heading: Optional[int] = Field(None, title='Heading')
    imo: Optional[int] = Field(None, title='Imo')
    lat: Optional[float] = Field(None, title='Lat')
    lon: Optional[float] = Field(None, title='Lon')
    maneuver: Optional[int] = Field(None, title='Maneuver')
    mmsi: Optional[int] = Field(None, title='Mmsi')
    model: Optional[int] = Field(None, title='Model')
    mothership_mmsi: Optional[int] = Field(None, title='Mothership Mmsi')
    msg_type: Optional[str] = Field(None, title='Msg Type')
    name: Optional[str] = Field(None, title='Name')
    partno: Optional[int] = Field(None, title='Partno')
    type: Optional[int] = Field(None, title='Type')
    radio: Optional[int] = Field(None, title='Radio')
    raim: Optional[bool] = Field(None, title='Raim')
    raw: Optional[str] = Field(None, title='Raw')
    repeat: Optional[int] = Field(None, title='Repeat')
    second: Optional[int] = Field(None, title='Second')
    serial: Optional[int] = Field(None, title='Serial')
    shipname: Optional[str] = Field(None, title='Shipname')
    shiptype: Optional[int] = Field(None, title='Shiptype')
    speed: Optional[float] = Field(None, title='Speed')
    status: Optional[int] = Field(None, title='Status')
    talker: Optional[str] = Field(None, title='Talker')
    turn: Optional[int] = Field(None, title='Turn')
    vendorid: Optional[str] = Field(None, title='Vendorid')
    to_bow: Optional[int] = Field(None, title='To Bow')
    to_stern: Optional[int] = Field(None, title='To Stern')
    to_port: Optional[int] = Field(None, title='To Port')
    to_starboard: Optional[int] = Field(None, title='To Starboard')
    minute: Optional[int] = Field(None, title='Minute')
    hour: Optional[int] = Field(None, title='Hour')
    day: Optional[int] = Field(None, title='Day')
    month: Optional[int] = Field(None, title='Month')


class Receiver(BaseModel):
    ip: str = Field(..., title='Ip')
    port: int = Field(..., title='Port')


class ValidationError(BaseModel):
    loc: List[str] = Field(..., title='Location')
    msg: str = Field(..., title='Message')
    type: str = Field(..., title='Error Type')


class HTTPValidationError(BaseModel):
    detail: Optional[List[ValidationError]] = Field(None, title='Detail')
