using System;
using System.Collections.Generic;

namespace AsignadorKits_Almex_ML
{
   public class StatusHistory
   {
      public object date_cancelled { get; set; }
      public object date_delivered { get; set; }
      public object date_first_visit { get; set; }
      public object date_handling { get; set; }
      public object date_not_delivered { get; set; }
      public object date_ready_to_ship { get; set; }
      public object date_shipped { get; set; }
      public object date_returned { get; set; }
   }

   public class SubstatusHistory
   {
      public string status { get; set; }
      public string substatus { get; set; }
      public DateTime date { get; set; }
   }

   public class City
   {
      public string id { get; set; }
      public string name { get; set; }
   }

   public class State
   {
      public string id { get; set; }
      public string name { get; set; }
   }

   public class Country
   {
      public string id { get; set; }
      public string name { get; set; }
   }

   public class Neighborhood
   {
      public object id { get; set; }
      public string name { get; set; }
   }

   public class Municipality
   {
      public object id { get; set; }
      public object name { get; set; }
   }

   public class SenderAddress
   {
      public int id { get; set; }
      public string address_line { get; set; }
      public string street_name { get; set; }
      public string street_number { get; set; }
      public string comment { get; set; }
      public string zip_code { get; set; }
      public City city { get; set; }
      public State state { get; set; }
      public Country country { get; set; }
      public Neighborhood neighborhood { get; set; }
      public Municipality municipality { get; set; }
      public object agency { get; set; }
      public List<string> types { get; set; }
      public int latitude { get; set; }
      public int longitude { get; set; }
      public string geolocation_type { get; set; }
      public object geolocation_last_updated { get; set; }
      public string geolocation_source { get; set; }
   }

   public class City2
   {
      public string id { get; set; }
      public string name { get; set; }
   }

   public class State2
   {
      public string id { get; set; }
      public string name { get; set; }
   }

   public class Country2
   {
      public string id { get; set; }
      public string name { get; set; }
   }

   public class Neighborhood2
   {
      public object id { get; set; }
      public string name { get; set; }
   }

   public class Municipality2
   {
      public object id { get; set; }
      public object name { get; set; }
   }

   public class Agency
   {
      public string type { get; set; }
      public int carrier_id { get; set; }
      public string agency_id { get; set; }
      public string description { get; set; }
      public string phone { get; set; }
      public string open_hours { get; set; }
   }

   public class ReceiverAddress
   {
      public object id { get; set; }
      public string address_line { get; set; }
      public string street_name { get; set; }
      public string street_number { get; set; }
      public string comment { get; set; }
      public string zip_code { get; set; }
      public City2 city { get; set; }
      public State2 state { get; set; }
      public Country2 country { get; set; }
      public Neighborhood2 neighborhood { get; set; }
      public Municipality2 municipality { get; set; }
      public List<string> types { get; set; }
      public object latitude { get; set; }
      public object longitude { get; set; }
      public object geolocation_type { get; set; }
      public object geolocation_source { get; set; }
      public object geolocation_last_updated { get; set; }
      public Agency agency { get; set; }
      public string delivery_preference { get; set; }
      public string receiver_name { get; set; }
      public object receiver_phone { get; set; }
   }

   public class DimensionsSource
   {
      public string id { get; set; }
      public string origin { get; set; }
   }

   public class ShippingItem
   {
      public string id { get; set; }
      public string description { get; set; }
      public int quantity { get; set; }
      public string dimensions { get; set; }
      public DimensionsSource dimensions_source { get; set; }
   }

   public class EstimatedScheduleLimit
   {
      public object date { get; set; }
   }

   public class Buffering
   {
      public object date { get; set; }
   }

   public class Offset
   {
      public object date { get; set; }
      public object shipping { get; set; }
   }

   public class TimeFrame
   {
      public object from { get; set; }
      public object to { get; set; }
   }

   public class EstimatedDeliveryTime
   {
      public string type { get; set; }
      public object date { get; set; }
      public string unit { get; set; }
      public Offset offset { get; set; }
      public TimeFrame time_frame { get; set; }
      public object pay_before { get; set; }
      public int shipping { get; set; }
      public int handling { get; set; }
      public object schedule { get; set; }
   }

   public class EstimatedDeliveryLimit
   {
      public object date { get; set; }
      public object offset { get; set; }
   }

   public class EstimatedDeliveryFinal
   {
      public object date { get; set; }
      public object offset { get; set; }
   }

   public class EstimatedDeliveryExtended
   {
      public object date { get; set; }
      public object offset { get; set; }
   }

   public class EstimatedHandlingLimit
   {
      public object date { get; set; }
   }

   public class ShippingOption
   {
      public object id { get; set; }
      public int shipping_method_id { get; set; }
      public string name { get; set; }
      public string currency_id { get; set; }
      public double list_cost { get; set; }
      public double cost { get; set; }
      public string delivery_type { get; set; }
      public EstimatedScheduleLimit estimated_schedule_limit { get; set; }
      public Buffering buffering { get; set; }
      public EstimatedDeliveryTime estimated_delivery_time { get; set; }
      public EstimatedDeliveryLimit estimated_delivery_limit { get; set; }
      public EstimatedDeliveryFinal estimated_delivery_final { get; set; }
      public EstimatedDeliveryExtended estimated_delivery_extended { get; set; }
      public EstimatedHandlingLimit estimated_handling_limit { get; set; }
   }

   public class CostComponents
   {
      public int special_discount { get; set; }
      public int loyal_discount { get; set; }
      public int compensation { get; set; }
      public double gap_discount { get; set; }
      public double ratio { get; set; }
   }

   public class clsShipmentMercadoLibre
   {
      public long id { get; set; }
      public string mode { get; set; }
      public string created_by { get; set; }
      public long order_id { get; set; }
      public object order_cost { get; set; }
      public object base_cost { get; set; }
      public string site_id { get; set; }
      public string status { get; set; }
      public string substatus { get; set; }
      public StatusHistory status_history { get; set; }
      public List<SubstatusHistory> substatus_history { get; set; }
      public DateTime date_created { get; set; }
      public DateTime last_updated { get; set; }
      public string tracking_number { get; set; }
      public string tracking_method { get; set; }
      public object service_id { get; set; }
      public object carrier_info { get; set; }
      public int sender_id { get; set; }
      public SenderAddress sender_address { get; set; }
      public int receiver_id { get; set; }
      public ReceiverAddress receiver_address { get; set; }
      public List<ShippingItem> shipping_items { get; set; }
      public ShippingOption shipping_option { get; set; }
      public object comments { get; set; }
      public object date_first_printed { get; set; }
      public string market_place { get; set; }
      public object return_details { get; set; }
      public List<object> tags { get; set; }
      public string type { get; set; }
      public string logistic_type { get; set; }
      public object application_id { get; set; }
      public object return_tracking_number { get; set; }
      public CostComponents cost_components { get; set; }
   }
}
