Skip to content

GetShippingratesRequest

Properties

  • SourceSystemCustomerId (string)This is an automatically generated field added by middleware. It is considered read-only.
  • SourceSystemId (integer, format: int32)This is an automatically generated field added by middleware. It is considered read-only.
  • OfferIds (array)List of offer identifiers.

    • Items (string)
  • PackageWeight (number, format: float)Package weight.

  • ShipToAddress (object)Destination address for shipping. Cannot contain additional properties.

    • Address1 (string, required)Address line 1.
    • Address2 (string)Address line 2.
    • Address3 (string)Address line 3.
    • City (string, required)City.
    • Company (string)Company name.
    • Country (string, required)3-letter ISO country code.
    • EmailAddress (string, format: email, required)Email address.
    • FaxNumber (string)Fax number.
    • IsResidential (boolean, required)Whether the address is residential.
    • Name (string, required)Recipient name.
    • PhoneNumber (string)Phone number.
    • PostalCode (string, required)Postal code.
    • StateProvince (string, required)State or province.
  • SourceSystemShippingMethods (array)List of source system shipping methods.

    • Items (string)

Quicktype Command

quicktype \
    --framework SystemTextJson  \
    --lang cs  \
    --number-type double  \
    --src-lang schema  \
    --no-check-required  \
    --density dense  \
    --features complete  \
    --namespace OtpSchema.Api.ShippingBroker.GetShippingratesRequest  \
    --src .working/build/internal/json-schema-for-cs/GetShippingratesRequest.json -o .working/build/internal/csharp/OtpSchema/Api/ShippingBroker/GetShippingratesRequest.cs
GetShippingratesRequest
// <auto-generated />
//
// To parse this JSON data, add NuGet 'System.Text.Json' then do:
//
//    using OtpSchema.Api.ShippingBroker.GetShippingratesRequest;
//
//    var getShippingratesRequest = GetShippingratesRequest.FromJson(jsonString);
#nullable enable
#pragma warning disable CS8618
#pragma warning disable CS8601
#pragma warning disable CS8603

namespace OtpSchema.Api.ShippingBroker.GetShippingratesRequest
{
    using System;
    using System.Collections.Generic;

    using System.Text.Json;
    using System.Text.Json.Serialization;
    using System.Globalization;
    using J = System.Text.Json.Serialization.JsonPropertyNameAttribute;
    using N = System.Text.Json.Serialization.JsonIgnoreCondition;

    public partial class GetShippingratesRequest
    {
        [J("OfferIds")]                                                                            public string[] OfferIds { get; set; }                    // List of offer identifiers
        [J("PackageWeight")]                                                                       public double PackageWeight { get; set; }                 // Package weight
        [J("ShipToAddress")]                                                                       public ShipToAddress ShipToAddress { get; set; }          // Destination address for shipping
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("SourceSystemCustomerId")] public string SourceSystemCustomerId { get; set; }        // This is an automatically generated field added by middleware.  It is considered read-only
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("SourceSystemId")]         public long? SourceSystemId { get; set; }                 // This is an automatically generated field added by middleware.  It is considered read-only
        [J("SourceSystemShippingMethods")]                                                         public string[] SourceSystemShippingMethods { get; set; } // List of source system shipping methods
    }

    /// <summary>Destination address for shipping</summary>
    public partial class ShipToAddress
    {
        [J("Address1")]                                                                 public string Address1 { get; set; }      // Address line 1
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("Address2")]    public string Address2 { get; set; }      // Address line 2
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("Address3")]    public string Address3 { get; set; }      // Address line 3
        [J("City")]                                                                     public string City { get; set; }          // City
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("Company")]     public string Company { get; set; }       // Company name
        [J("Country")]                                                                  public string Country { get; set; }       // 3-letter ISO country code
        [J("EmailAddress")]                                                             public string EmailAddress { get; set; }  // Email address
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("FaxNumber")]   public string FaxNumber { get; set; }     // Fax number
        [J("IsResidential")]                                                            public bool IsResidential { get; set; }   // Whether the address is residential
        [J("Name")]                                                                     public string Name { get; set; }          // Recipient name
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("PhoneNumber")] public string PhoneNumber { get; set; }   // Phone number
        [J("PostalCode")]                                                               public string PostalCode { get; set; }    // Postal code
        [J("StateProvince")]                                                            public string StateProvince { get; set; } // State or province
    }

    public partial class GetShippingratesRequest
    {
        public static GetShippingratesRequest FromJson(string json) => JsonSerializer.Deserialize<GetShippingratesRequest>(json, OtpSchema.Api.ShippingBroker.GetShippingratesRequest.Converter.Settings);
    }

    public static class Serialize
    {
        public static string ToJson(this GetShippingratesRequest self) => JsonSerializer.Serialize(self, OtpSchema.Api.ShippingBroker.GetShippingratesRequest.Converter.Settings);
    }

    internal static class Converter
    {
        public static readonly JsonSerializerOptions Settings = new(JsonSerializerDefaults.General)
        {
            Converters =
            {
                new DateOnlyConverter(),
                new TimeOnlyConverter(),
                IsoDateTimeOffsetConverter.Singleton
            },
        };
    }

    public class DateOnlyConverter : JsonConverter<DateOnly>
    {
        private readonly string serializationFormat;
        public DateOnlyConverter() : this(null) { }

        public DateOnlyConverter(string? serializationFormat)
        {
                this.serializationFormat = serializationFormat ?? "yyyy-MM-dd";
        }

        public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
                var value = reader.GetString();
                return DateOnly.Parse(value!);
        }

        public override void Write(Utf8JsonWriter writer, DateOnly value, JsonSerializerOptions options)
                => writer.WriteStringValue(value.ToString(serializationFormat));
    }

    public class TimeOnlyConverter : JsonConverter<TimeOnly>
    {
        private readonly string serializationFormat;

        public TimeOnlyConverter() : this(null) { }

        public TimeOnlyConverter(string? serializationFormat)
        {
                this.serializationFormat = serializationFormat ?? "HH:mm:ss.fff";
        }

        public override TimeOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
                var value = reader.GetString();
                return TimeOnly.Parse(value!);
        }

        public override void Write(Utf8JsonWriter writer, TimeOnly value, JsonSerializerOptions options)
                => writer.WriteStringValue(value.ToString(serializationFormat));
    }

    internal class IsoDateTimeOffsetConverter : JsonConverter<DateTimeOffset>
    {
        public override bool CanConvert(Type t) => t == typeof(DateTimeOffset);

        private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";

        private DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;
        private string? _dateTimeFormat;
        private CultureInfo? _culture;

        public DateTimeStyles DateTimeStyles
        {
                get => _dateTimeStyles;
                set => _dateTimeStyles = value;
        }

        public string? DateTimeFormat
        {
                get => _dateTimeFormat ?? string.Empty;
                set => _dateTimeFormat = (string.IsNullOrEmpty(value)) ? null : value;
        }

        public CultureInfo Culture
        {
                get => _culture ?? CultureInfo.CurrentCulture;
                set => _culture = value;
        }

        public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)
        {
                string text;


                if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
                        || (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
                {
                        value = value.ToUniversalTime();
                }

                text = value.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);

                writer.WriteStringValue(text);
        }

        public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
                string? dateText = reader.GetString();

                if (string.IsNullOrEmpty(dateText) == false)
                {
                        if (!string.IsNullOrEmpty(_dateTimeFormat))
                        {
                                return DateTimeOffset.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
                        }
                        else
                        {
                                return DateTimeOffset.Parse(dateText, Culture, _dateTimeStyles);
                        }
                }
                else
                {
                        return default(DateTimeOffset);
                }
        }


        public static readonly IsoDateTimeOffsetConverter Singleton = new IsoDateTimeOffsetConverter();
    }
}
#pragma warning restore CS8618
#pragma warning restore CS8601
#pragma warning restore CS8603

GetShippingratesRequest
{
  "$schema": "http://json-schema.org/draft-07/schema#", 
  "$id": "GetShippingratesRequest.json", 
  "type": "object", 
  "additionalProperties": false, 
  "properties": {
    "SourceSystemCustomerId": {
      "description": "This is an automatically generated field added by middleware.  It is considered read-only", 
      "type": "string", 
      "readonly": true
    }, 
    "SourceSystemId": {
      "description": "This is an automatically generated field added by middleware.  It is considered read-only", 
      "type": "integer", 
      "format": "int32", 
      "readonly": true
    }, 
    "OfferIds": {
      "description": "List of offer identifiers", 
      "type": "array", 
      "items": {"type": "string"}
    }, 
    "PackageWeight": {"description": "Package weight", "type": "number", "format": "float"}, 
    "ShipToAddress": {
      "description": "Destination address for shipping", 
      "type": "object", 
      "additionalProperties": false, 
      "properties": {
        "Address1": {"description": "Address line 1", "type": "string"}, 
        "Address2": {"description": "Address line 2", "type": "string"}, 
        "Address3": {"description": "Address line 3", "type": "string"}, 
        "City": {"description": "City", "type": "string"}, 
        "Company": {"description": "Company name", "type": "string"}, 
        "Country": {
          "description": "3-letter ISO country code", 
          "type": "string", 
          "pattern": "^[A-Z]{3}$"
        }, 
        "EmailAddress": {"description": "Email address", "type": "string", "format": "email"}, 
        "FaxNumber": {"description": "Fax number", "type": "string"}, 
        "IsResidential": {"description": "Whether the address is residential", "type": "boolean"}, 
        "Name": {"description": "Recipient name", "type": "string"}, 
        "PhoneNumber": {"description": "Phone number", "type": "string"}, 
        "PostalCode": {"description": "Postal code", "type": "string"}, 
        "StateProvince": {"description": "State or province", "type": "string"}
      }, 
      "required": [
        "Name", "Address1", "City", "StateProvince", "PostalCode", "EmailAddress", 
        "Country", "IsResidential"
      ]
    }, 
    "SourceSystemShippingMethods": {
      "description": "List of source system shipping methods", 
      "type": "array", 
      "items": {"type": "string"}
    }
  }, 
  "required": ["SourceSystemShippingMethods", "ShipToAddress", "PackageWeight", "OfferIds"]
}