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"]
}