Module onetracker_api.models

Models for OneTracker.

Expand source code
"""Models for OneTracker."""

from dataclasses import dataclass
import datetime
from typing import List
import datetime

from .exceptions import OneTrackerError

@dataclass(frozen=True)
class SessionObject:
    """
    Object holding session information from the OneTracker API.

    Attributes:

    user_id: User ID of the authenticated user.

    token: Authentication Token of the authenticated user.

    expiration: Expiration time and date of the authentication token.
    """

    user_id: int
    token: str
    expiration: datetime.datetime

    @staticmethod
    def from_dict(data: dict):
        return SessionObject(
            user_id=data.get("user_id"),
            token=data.get("token"),
            expiration=datetime.datetime.fromisoformat(data.get("expiration").split(".")[0])
        )

@dataclass(frozen=True)
class AuthenticationTokenResponse:
    """
    Object holding authentication token response from the OneTracker API.

    Attributes:

    message: Response message.

    session: SessionObject.
    """

    message: str
    session: SessionObject

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return AuthenticationTokenResponse(
                message=data.get("message"),
                session=SessionObject.from_dict(data.get("session"))
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

@dataclass(frozen=True)
class TrackingEvent:
    """
    Object holding a tracking event

    Attributes:

    id: Tracking event ID.

    parcel_id: Parcel ID.

    carrier_id: Carrier ID.

    carrier_name: Carrier name.

    status: Status.

    text: Text.

    locatiom: Location.

    latitude: Latitude.

    longitude: Longitude.

    time: Time.

    time_added: Time added.
    """

    id: int
    parcel_id: int
    carrier_id: int
    carrier_name: str
    status: str
    text: str
    location: str
    latitude: float
    longitude: float
    time: datetime.datetime
    time_added: datetime.datetime

    @staticmethod
    def from_dict(data: dict):
        return TrackingEvent(
            id=data.get("id"),
            parcel_id=data.get("parcel_id"),
            carrier_id=data.get("carrier_id"),
            carrier_name=data.get("carrier_name"),
            status=data.get("status"),
            text=data.get("text"),
            location=data.get("location"),
            latitude=data.get("latitude"),
            longitude=data.get("longitude"),
            time=datetime.datetime.fromisoformat(data.get("time").split("Z")[0]),
            time_added=datetime.datetime.fromisoformat(data.get("time_added").split("Z")[0])
        )


@dataclass(frozen=True)
class Parcel:
    """
    Object holding parcel information from the OneTracker API.

    Attributes:

    id: Parcel ID.

    user_id: User ID of the authenticated user.

    email_id: Email ID of the email associated with the parcel.

    email_sender: Email sender of the email associated with the parcel.

    retailer_name: Name of the retailer.

    description: Description of the parcel.

    notification_level: Notification level of the parcel.

    is_archived: Whether the parcel is archived or not.

    carrier: Carrier of the parcel.

    carrier_name: Carrier name of the parcel.

    carrier_redirection_available: Whether carrier redirection is available or not.

    tracker_cached: Whether the tracker is cached or not.

    tracking_id: Tracking ID of the parcel.

    tracking_url: Tracking URL of the parcel.

    tracking_status: Tracking status of the parcel.

    tracking_status_description: Tracking status description of the parcel.

    tracking_status_text: Tracking status text of the parcel.

    tracking_extra_info: Tracking extra info of the parcel.

    tracking_location: Tracking location of the parcel.

    tracking_time_estimated: Tracking time estimated of the parcel.

    tracking_time_delivered: Tracking time delivered of the parcel.

    tracking_lock: Whether the tracking is locked or not.

    tracking_events: List of TrackingEvent objects.

    time_added: Time added of the parcel.

    time_updated: Time updated of the parcel.
    """

    id: int
    user_id: int
    email_id: int
    email_sender: str
    retailer_name: str
    description: str
    notification_level: int
    is_archived: bool
    carrier: str
    carrier_name: str
    carrier_redirection_available: bool
    tracker_cached: bool
    tracking_id: str
    tracking_url: str
    tracking_status: str
    tracking_status_description: str
    tracking_status_text: str
    tracking_extra_info: str
    tracking_location: str
    tracking_time_estimated: datetime.datetime
    tracking_time_delivered: datetime.datetime
    tracking_lock: bool
    tracking_events: List[TrackingEvent]
    time_added: datetime.datetime
    time_updated: datetime.datetime

    @staticmethod
    def from_dict(data: dict):
        return Parcel(
            id=data.get("id"),
            user_id=data.get("user_id"),
            email_id=data.get("email_id"),
            email_sender=data.get("email_sender"),
            retailer_name=data.get("retailer_name"),
            description=data.get("description"),
            notification_level=data.get("notification_level"),
            is_archived=data.get("is_archived"),
            carrier=data.get("carrier"),
            carrier_name=data.get("carrier_name"),
            carrier_redirection_available=data.get("carrier_redirection_available"),
            tracker_cached=data.get("tracker_cached"),
            tracking_id=data.get("tracking_id"),
            tracking_url=data.get("tracking_url"),
            tracking_status=data.get("tracking_status"),
            tracking_status_description=data.get("tracking_status_description"),
            tracking_status_text=data.get("tracking_status_text"),
            tracking_extra_info=data.get("tracking_extra_info"),
            tracking_location=data.get("tracking_location"),
            tracking_time_estimated=datetime.datetime.fromisoformat(data.get("tracking_time_estimated").split("Z")[0]),
            tracking_time_delivered=datetime.datetime.fromisoformat(data.get("tracking_time_delivered").split("Z")[0]),
            tracking_lock=data.get("tracking_lock"),
            tracking_events=[TrackingEvent.from_dict(tracking_event) for tracking_event in data.get("tracking_events") or []],
            time_added=datetime.datetime.fromisoformat(data.get("time_added").split("Z")[0]),
            time_updated=datetime.datetime.fromisoformat(data.get("time_updated").split("Z")[0])
        )

@dataclass(frozen=True)
class ListParcelsResponse:
    """
    Object representing the response of List Parcels.

    Attributes:

    message: Response message.

    parcels: List of Parcel objects.
    """

    message: str
    parcels: List[Parcel]

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return ListParcelsResponse(
                message=data.get("message"),
                parcels=[Parcel.from_dict(parcel) for parcel in data.get("parcels") or []]
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

@dataclass(frozen=True)
class GetParcelResponse:
    """
    Object representing the response of List Parcel.

    Attributes:

    message: Response message.

    parcel: Parcel object.
    """

    message: str
    parcel: Parcel

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return GetParcelResponse(
                message=data.get("message"),
                parcel=Parcel.from_dict(data.get("parcel"))
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

@dataclass(frozen=True)
class DeleteParcelResponse:
    """
    Object representing the response of Delete Parcel.

    Attributes:

    message: Response message.
    """

    message: str

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return DeleteParcelResponse(
                message=data.get("message")
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

@dataclass(frozen=True)
class Carrier:
    """
    Object representing a carrier.

    Attributes:

    id: ID of the carrier.

    name: Name of the carrier.

    frequently_used: If the carrier is frequently used or not.
    """

    id: str
    name: str
    frequently_used: bool

    @staticmethod
    def from_dict(data: dict):
        return Carrier(
            id=data.get("id"),
            name=data.get("name"),
            frequently_used=data.get("frequently_used"),
        )

@dataclass(frozen=True)
class ListCarriersResponse:
    """
    Object representing the response of List Carriers.

    Attributes:

    message: Response message.

    carriers: List of Carrier objects.
    """

    message: str
    carriers: List[Carrier]

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return ListCarriersResponse(
                message=data.get("message"),
                carriers=[Carrier.from_dict(carrier) for carrier in data.get("carriers") or []]
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

Classes

class AuthenticationTokenResponse (message: str, session: SessionObject)

Object holding authentication token response from the OneTracker API.

Attributes:

message: Response message.

session: SessionObject.

Expand source code
class AuthenticationTokenResponse:
    """
    Object holding authentication token response from the OneTracker API.

    Attributes:

    message: Response message.

    session: SessionObject.
    """

    message: str
    session: SessionObject

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return AuthenticationTokenResponse(
                message=data.get("message"),
                session=SessionObject.from_dict(data.get("session"))
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

Class variables

var message : str
var sessionSessionObject

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    if data is not {} and data is not None and data.get("message") == "ok":
        return AuthenticationTokenResponse(
            message=data.get("message"),
            session=SessionObject.from_dict(data.get("session"))
        )
    if data.get("message"):
        raise OneTrackerError(data.get("message"))
    else:
        raise OneTrackerError("Unable to convert data to GetParcelResponse.")
class Carrier (id: str, name: str, frequently_used: bool)

Object representing a carrier.

Attributes:

id: ID of the carrier.

name: Name of the carrier.

frequently_used: If the carrier is frequently used or not.

Expand source code
class Carrier:
    """
    Object representing a carrier.

    Attributes:

    id: ID of the carrier.

    name: Name of the carrier.

    frequently_used: If the carrier is frequently used or not.
    """

    id: str
    name: str
    frequently_used: bool

    @staticmethod
    def from_dict(data: dict):
        return Carrier(
            id=data.get("id"),
            name=data.get("name"),
            frequently_used=data.get("frequently_used"),
        )

Class variables

var frequently_used : bool
var id : str
var name : str

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    return Carrier(
        id=data.get("id"),
        name=data.get("name"),
        frequently_used=data.get("frequently_used"),
    )
class DeleteParcelResponse (message: str)

Object representing the response of Delete Parcel.

Attributes:

message: Response message.

Expand source code
class DeleteParcelResponse:
    """
    Object representing the response of Delete Parcel.

    Attributes:

    message: Response message.
    """

    message: str

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return DeleteParcelResponse(
                message=data.get("message")
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

Class variables

var message : str

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    if data is not {} and data is not None and data.get("message") == "ok":
        return DeleteParcelResponse(
            message=data.get("message")
        )
    if data.get("message"):
        raise OneTrackerError(data.get("message"))
    else:
        raise OneTrackerError("Unable to convert data to GetParcelResponse.")
class GetParcelResponse (message: str, parcel: Parcel)

Object representing the response of List Parcel.

Attributes:

message: Response message.

parcel: Parcel object.

Expand source code
class GetParcelResponse:
    """
    Object representing the response of List Parcel.

    Attributes:

    message: Response message.

    parcel: Parcel object.
    """

    message: str
    parcel: Parcel

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return GetParcelResponse(
                message=data.get("message"),
                parcel=Parcel.from_dict(data.get("parcel"))
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

Class variables

var message : str
var parcelParcel

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    if data is not {} and data is not None and data.get("message") == "ok":
        return GetParcelResponse(
            message=data.get("message"),
            parcel=Parcel.from_dict(data.get("parcel"))
        )
    if data.get("message"):
        raise OneTrackerError(data.get("message"))
    else:
        raise OneTrackerError("Unable to convert data to GetParcelResponse.")
class ListCarriersResponse (message: str, carriers: List[Carrier])

Object representing the response of List Carriers.

Attributes:

message: Response message.

carriers: List of Carrier objects.

Expand source code
class ListCarriersResponse:
    """
    Object representing the response of List Carriers.

    Attributes:

    message: Response message.

    carriers: List of Carrier objects.
    """

    message: str
    carriers: List[Carrier]

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return ListCarriersResponse(
                message=data.get("message"),
                carriers=[Carrier.from_dict(carrier) for carrier in data.get("carriers") or []]
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

Class variables

var carriers : List[Carrier]
var message : str

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    if data is not {} and data is not None and data.get("message") == "ok":
        return ListCarriersResponse(
            message=data.get("message"),
            carriers=[Carrier.from_dict(carrier) for carrier in data.get("carriers") or []]
        )
    if data.get("message"):
        raise OneTrackerError(data.get("message"))
    else:
        raise OneTrackerError("Unable to convert data to GetParcelResponse.")
class ListParcelsResponse (message: str, parcels: List[Parcel])

Object representing the response of List Parcels.

Attributes:

message: Response message.

parcels: List of Parcel objects.

Expand source code
class ListParcelsResponse:
    """
    Object representing the response of List Parcels.

    Attributes:

    message: Response message.

    parcels: List of Parcel objects.
    """

    message: str
    parcels: List[Parcel]

    @staticmethod
    def from_dict(data: dict):
        if data is not {} and data is not None and data.get("message") == "ok":
            return ListParcelsResponse(
                message=data.get("message"),
                parcels=[Parcel.from_dict(parcel) for parcel in data.get("parcels") or []]
            )
        if data.get("message"):
            raise OneTrackerError(data.get("message"))
        else:
            raise OneTrackerError("Unable to convert data to GetParcelResponse.")

Class variables

var message : str
var parcels : List[Parcel]

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    if data is not {} and data is not None and data.get("message") == "ok":
        return ListParcelsResponse(
            message=data.get("message"),
            parcels=[Parcel.from_dict(parcel) for parcel in data.get("parcels") or []]
        )
    if data.get("message"):
        raise OneTrackerError(data.get("message"))
    else:
        raise OneTrackerError("Unable to convert data to GetParcelResponse.")
class Parcel (id: int, user_id: int, email_id: int, email_sender: str, retailer_name: str, description: str, notification_level: int, is_archived: bool, carrier: str, carrier_name: str, carrier_redirection_available: bool, tracker_cached: bool, tracking_id: str, tracking_url: str, tracking_status: str, tracking_status_description: str, tracking_status_text: str, tracking_extra_info: str, tracking_location: str, tracking_time_estimated: datetime.datetime, tracking_time_delivered: datetime.datetime, tracking_lock: bool, tracking_events: List[TrackingEvent], time_added: datetime.datetime, time_updated: datetime.datetime)

Object holding parcel information from the OneTracker API.

Attributes:

id: Parcel ID.

user_id: User ID of the authenticated user.

email_id: Email ID of the email associated with the parcel.

email_sender: Email sender of the email associated with the parcel.

retailer_name: Name of the retailer.

description: Description of the parcel.

notification_level: Notification level of the parcel.

is_archived: Whether the parcel is archived or not.

carrier: Carrier of the parcel.

carrier_name: Carrier name of the parcel.

carrier_redirection_available: Whether carrier redirection is available or not.

tracker_cached: Whether the tracker is cached or not.

tracking_id: Tracking ID of the parcel.

tracking_url: Tracking URL of the parcel.

tracking_status: Tracking status of the parcel.

tracking_status_description: Tracking status description of the parcel.

tracking_status_text: Tracking status text of the parcel.

tracking_extra_info: Tracking extra info of the parcel.

tracking_location: Tracking location of the parcel.

tracking_time_estimated: Tracking time estimated of the parcel.

tracking_time_delivered: Tracking time delivered of the parcel.

tracking_lock: Whether the tracking is locked or not.

tracking_events: List of TrackingEvent objects.

time_added: Time added of the parcel.

time_updated: Time updated of the parcel.

Expand source code
class Parcel:
    """
    Object holding parcel information from the OneTracker API.

    Attributes:

    id: Parcel ID.

    user_id: User ID of the authenticated user.

    email_id: Email ID of the email associated with the parcel.

    email_sender: Email sender of the email associated with the parcel.

    retailer_name: Name of the retailer.

    description: Description of the parcel.

    notification_level: Notification level of the parcel.

    is_archived: Whether the parcel is archived or not.

    carrier: Carrier of the parcel.

    carrier_name: Carrier name of the parcel.

    carrier_redirection_available: Whether carrier redirection is available or not.

    tracker_cached: Whether the tracker is cached or not.

    tracking_id: Tracking ID of the parcel.

    tracking_url: Tracking URL of the parcel.

    tracking_status: Tracking status of the parcel.

    tracking_status_description: Tracking status description of the parcel.

    tracking_status_text: Tracking status text of the parcel.

    tracking_extra_info: Tracking extra info of the parcel.

    tracking_location: Tracking location of the parcel.

    tracking_time_estimated: Tracking time estimated of the parcel.

    tracking_time_delivered: Tracking time delivered of the parcel.

    tracking_lock: Whether the tracking is locked or not.

    tracking_events: List of TrackingEvent objects.

    time_added: Time added of the parcel.

    time_updated: Time updated of the parcel.
    """

    id: int
    user_id: int
    email_id: int
    email_sender: str
    retailer_name: str
    description: str
    notification_level: int
    is_archived: bool
    carrier: str
    carrier_name: str
    carrier_redirection_available: bool
    tracker_cached: bool
    tracking_id: str
    tracking_url: str
    tracking_status: str
    tracking_status_description: str
    tracking_status_text: str
    tracking_extra_info: str
    tracking_location: str
    tracking_time_estimated: datetime.datetime
    tracking_time_delivered: datetime.datetime
    tracking_lock: bool
    tracking_events: List[TrackingEvent]
    time_added: datetime.datetime
    time_updated: datetime.datetime

    @staticmethod
    def from_dict(data: dict):
        return Parcel(
            id=data.get("id"),
            user_id=data.get("user_id"),
            email_id=data.get("email_id"),
            email_sender=data.get("email_sender"),
            retailer_name=data.get("retailer_name"),
            description=data.get("description"),
            notification_level=data.get("notification_level"),
            is_archived=data.get("is_archived"),
            carrier=data.get("carrier"),
            carrier_name=data.get("carrier_name"),
            carrier_redirection_available=data.get("carrier_redirection_available"),
            tracker_cached=data.get("tracker_cached"),
            tracking_id=data.get("tracking_id"),
            tracking_url=data.get("tracking_url"),
            tracking_status=data.get("tracking_status"),
            tracking_status_description=data.get("tracking_status_description"),
            tracking_status_text=data.get("tracking_status_text"),
            tracking_extra_info=data.get("tracking_extra_info"),
            tracking_location=data.get("tracking_location"),
            tracking_time_estimated=datetime.datetime.fromisoformat(data.get("tracking_time_estimated").split("Z")[0]),
            tracking_time_delivered=datetime.datetime.fromisoformat(data.get("tracking_time_delivered").split("Z")[0]),
            tracking_lock=data.get("tracking_lock"),
            tracking_events=[TrackingEvent.from_dict(tracking_event) for tracking_event in data.get("tracking_events") or []],
            time_added=datetime.datetime.fromisoformat(data.get("time_added").split("Z")[0]),
            time_updated=datetime.datetime.fromisoformat(data.get("time_updated").split("Z")[0])
        )

Class variables

var carrier : str
var carrier_name : str
var carrier_redirection_available : bool
var description : str
var email_id : int
var email_sender : str
var id : int
var is_archived : bool
var notification_level : int
var retailer_name : str
var time_added : datetime.datetime
var time_updated : datetime.datetime
var tracker_cached : bool
var tracking_events : List[TrackingEvent]
var tracking_extra_info : str
var tracking_id : str
var tracking_location : str
var tracking_lock : bool
var tracking_status : str
var tracking_status_description : str
var tracking_status_text : str
var tracking_time_delivered : datetime.datetime
var tracking_time_estimated : datetime.datetime
var tracking_url : str
var user_id : int

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    return Parcel(
        id=data.get("id"),
        user_id=data.get("user_id"),
        email_id=data.get("email_id"),
        email_sender=data.get("email_sender"),
        retailer_name=data.get("retailer_name"),
        description=data.get("description"),
        notification_level=data.get("notification_level"),
        is_archived=data.get("is_archived"),
        carrier=data.get("carrier"),
        carrier_name=data.get("carrier_name"),
        carrier_redirection_available=data.get("carrier_redirection_available"),
        tracker_cached=data.get("tracker_cached"),
        tracking_id=data.get("tracking_id"),
        tracking_url=data.get("tracking_url"),
        tracking_status=data.get("tracking_status"),
        tracking_status_description=data.get("tracking_status_description"),
        tracking_status_text=data.get("tracking_status_text"),
        tracking_extra_info=data.get("tracking_extra_info"),
        tracking_location=data.get("tracking_location"),
        tracking_time_estimated=datetime.datetime.fromisoformat(data.get("tracking_time_estimated").split("Z")[0]),
        tracking_time_delivered=datetime.datetime.fromisoformat(data.get("tracking_time_delivered").split("Z")[0]),
        tracking_lock=data.get("tracking_lock"),
        tracking_events=[TrackingEvent.from_dict(tracking_event) for tracking_event in data.get("tracking_events") or []],
        time_added=datetime.datetime.fromisoformat(data.get("time_added").split("Z")[0]),
        time_updated=datetime.datetime.fromisoformat(data.get("time_updated").split("Z")[0])
    )
class SessionObject (user_id: int, token: str, expiration: datetime.datetime)

Object holding session information from the OneTracker API.

Attributes:

user_id: User ID of the authenticated user.

token: Authentication Token of the authenticated user.

expiration: Expiration time and date of the authentication token.

Expand source code
class SessionObject:
    """
    Object holding session information from the OneTracker API.

    Attributes:

    user_id: User ID of the authenticated user.

    token: Authentication Token of the authenticated user.

    expiration: Expiration time and date of the authentication token.
    """

    user_id: int
    token: str
    expiration: datetime.datetime

    @staticmethod
    def from_dict(data: dict):
        return SessionObject(
            user_id=data.get("user_id"),
            token=data.get("token"),
            expiration=datetime.datetime.fromisoformat(data.get("expiration").split(".")[0])
        )

Class variables

var expiration : datetime.datetime
var token : str
var user_id : int

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    return SessionObject(
        user_id=data.get("user_id"),
        token=data.get("token"),
        expiration=datetime.datetime.fromisoformat(data.get("expiration").split(".")[0])
    )
class TrackingEvent (id: int, parcel_id: int, carrier_id: int, carrier_name: str, status: str, text: str, location: str, latitude: float, longitude: float, time: datetime.datetime, time_added: datetime.datetime)

Object holding a tracking event

Attributes:

id: Tracking event ID.

parcel_id: Parcel ID.

carrier_id: Carrier ID.

carrier_name: Carrier name.

status: Status.

text: Text.

locatiom: Location.

latitude: Latitude.

longitude: Longitude.

time: Time.

time_added: Time added.

Expand source code
class TrackingEvent:
    """
    Object holding a tracking event

    Attributes:

    id: Tracking event ID.

    parcel_id: Parcel ID.

    carrier_id: Carrier ID.

    carrier_name: Carrier name.

    status: Status.

    text: Text.

    locatiom: Location.

    latitude: Latitude.

    longitude: Longitude.

    time: Time.

    time_added: Time added.
    """

    id: int
    parcel_id: int
    carrier_id: int
    carrier_name: str
    status: str
    text: str
    location: str
    latitude: float
    longitude: float
    time: datetime.datetime
    time_added: datetime.datetime

    @staticmethod
    def from_dict(data: dict):
        return TrackingEvent(
            id=data.get("id"),
            parcel_id=data.get("parcel_id"),
            carrier_id=data.get("carrier_id"),
            carrier_name=data.get("carrier_name"),
            status=data.get("status"),
            text=data.get("text"),
            location=data.get("location"),
            latitude=data.get("latitude"),
            longitude=data.get("longitude"),
            time=datetime.datetime.fromisoformat(data.get("time").split("Z")[0]),
            time_added=datetime.datetime.fromisoformat(data.get("time_added").split("Z")[0])
        )

Class variables

var carrier_id : int
var carrier_name : str
var id : int
var latitude : float
var location : str
var longitude : float
var parcel_id : int
var status : str
var text : str
var time : datetime.datetime
var time_added : datetime.datetime

Static methods

def from_dict(data: dict)
Expand source code
@staticmethod
def from_dict(data: dict):
    return TrackingEvent(
        id=data.get("id"),
        parcel_id=data.get("parcel_id"),
        carrier_id=data.get("carrier_id"),
        carrier_name=data.get("carrier_name"),
        status=data.get("status"),
        text=data.get("text"),
        location=data.get("location"),
        latitude=data.get("latitude"),
        longitude=data.get("longitude"),
        time=datetime.datetime.fromisoformat(data.get("time").split("Z")[0]),
        time_added=datetime.datetime.fromisoformat(data.get("time_added").split("Z")[0])
    )