Skip to content

InternalUpdateOrderRequest

Properties

  • billingEntityId (['string', 'null'])Billing entity ID.
  • orderId (['string', 'null'])Order ID.
  • referenceId (['string', 'null'])Reference ID.
  • sourceSystemCustomerId (['string', 'null'])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.
  • accessGroups (['array', 'null'])Access groups.

    • Items (string)
  • affiliateIdentifier (['string', 'null'])Affiliate identifier.

  • affiliateName (['string', 'null'])Affiliate name.
  • billTos (['array', 'null'])Bill to addresses.

    • Items (object)

      • address1 (['string', 'null'])Address line 1.
      • address2 (['string', 'null'])Address line 2.
      • address3 (['string', 'null'])Address line 3.
      • addressCode (['string', 'null'])Address code.
      • city (['string', 'null'])City.
      • company (['string', 'null'])Company name.
      • country (['string', 'null'])Country.
      • emailAddress (['string', 'null'])Email address.
      • faxNumber (['string', 'null'])Fax number.
      • isDeleted (['boolean', 'null'])Is deleted flag.
      • key (string, required)Bill to key.
      • name (['string', 'null'])Contact name.
      • phoneNumber (['string', 'null'])Phone number.
      • postalCode (['string', 'null'])Postal code.
      • stateProvince (['string', 'null'])State or province.
  • costCenter (['string', 'null'])Cost center.

  • creditCardFee (['number', 'null'], format: decimal)Credit card fee.
  • defaultBillToKey (['string', 'null'])Default bill to key.
  • defaultOrderedByKey (['string', 'null'])Default ordered by key.
  • defaultShipToKey (['string', 'null'])Default ship to key.
  • dueDate (['string', 'null'])Due date.
  • lineItems (['array', 'null'])Line items.

    • Items (object)

      • offerId (['string', 'null'])Offer ID.
      • referenceId (['string', 'null'])Reference ID.
      • variableTemplatePrintId (['string', 'null'])Variable template print ID.
      • additionalProperties (['array', 'null'])Additional properties.

        • Items (object)

          • key (['string', 'null'])Property key.
          • value (['string', 'null'])Property value.
      • billToKey (['string', 'null'])Bill to key.

      • comment (['string', 'null'])Comment.
      • costCenter (['string', 'null'])Cost center.
      • dueDate (['string', 'null'])Due date.
      • lineItemFee (['number', 'null'], format: decimal, required)Line item fee.
      • offerDescription (['string', 'null'])Offer description.
      • offerLineNumber (['string', 'null'])Offer line number.
      • offerNumber (['string', 'null'])Offer number.
      • orderedByKey (['string', 'null'])Ordered by key.
      • pONumber (['string', 'null'])Purchase order number.
      • price (['number', 'null'], format: decimal, required)Price.
      • products (['array', 'null'])Products.

        • Items (object)

          • productId (['string', 'null'], required)Product ID.
          • associatedFileName (['string', 'null'])Associated file name.
          • color (['string', 'null'])Color.
          • comment (['string', 'null'])Comment.
          • components (['array', 'null'])Product components.

            • Items (object)

              • productId (['string', 'null'])Product ID.
              • associatedFileName (['string', 'null'])Associated file name.
              • color (['string', 'null'])Color.
              • comment (['string', 'null'])Comment.
              • componentLineNumber (['string', 'null'])Component line number.
              • productDescription (['string', 'null'])Product description.
              • productNumber (['string', 'null'])Product number.
              • productOwner (['string', 'null'])Product owner.
              • quantityBackordered (['integer', 'null'], format: int32)Quantity backordered.
              • quantityOrdered (['integer', 'null'], format: int32)Quantity ordered.
              • size (['string', 'null'])Size.
          • pageCount (['integer', 'null'], format: int32)Page count.

          • productDescription (['string', 'null'])Product description.
          • productLineNumber (['string', 'null'])Product line number.
          • productNumber (['string', 'null'])Product number.
          • productOwner (['string', 'null'])Product owner.
          • quantityOrdered (['integer', 'null'], format: int32)Quantity ordered.
          • size (['string', 'null'])Size.
      • quantityOrdered (['integer', 'null'], format: int32, required)Quantity ordered.

      • rushOrder (['boolean', 'null'])Rush order flag.
      • shipToKey (['string', 'null'])Ship to key.
      • taxAmount (['number', 'null'], format: decimal, required)Tax amount.
      • unitPrice (['number', 'null'], format: decimal)Unit price.
  • orderFee (['number', 'null'], format: decimal)Order fee.

  • orderVariables (['object', 'null'])Order variables.
  • orderedBys (['array', 'null'])Ordered by addresses.

    • Items (object)

      • address1 (['string', 'null'])Address line 1.
      • address2 (['string', 'null'])Address line 2.
      • address3 (['string', 'null'])Address line 3.
      • addressCode (['string', 'null'])Address code.
      • city (['string', 'null'])City.
      • company (['string', 'null'])Company name.
      • country (['string', 'null'])Country.
      • emailAddress (['string', 'null'])Email address.
      • faxNumber (['string', 'null'])Fax number.
      • isDeleted (['boolean', 'null'])Is deleted flag.
      • key (string, required)Ordered by key.
      • name (['string', 'null'])Contact name.
      • phoneNumber (['string', 'null'])Phone number.
      • postalCode (['string', 'null'])Postal code.
      • stateProvince (['string', 'null'])State or province.
  • pONumber (['string', 'null'])Purchase order number.

  • paymentMethods (['array', 'null'])Payment methods.

    • Items (object)

      • amount (['number', 'null'], format: decimal)Payment amount.
      • methodName (['string', 'null'])Payment method name.
  • pickPackHandlingFee (['number', 'null'], format: decimal)Pick pack handling fee.

  • rushOrder (boolean)Rush order flag.
  • shipTos (['array', 'null'])Ship to addresses.

    • Items (object)

      • affiliateId (['string', 'null'])Affiliate ID.
      • referenceId (['string', 'null'])Reference ID.
      • sourceSystemShippingMethodId (['string', 'null'], required)Source system shipping method ID.
      • affiliateName (['string', 'null'])Affiliate name.
      • comment (['string', 'null'])Comment.
      • costCenter (['string', 'null'])Cost center.
      • creditCardFee (['number', 'null'], format: decimal)Credit card fee.
      • dueDate (['string', 'null'])Due date.
      • key (string, required)Ship to key.
      • orderFee (['number', 'null'], format: decimal)Order fee.
      • pONumber (['string', 'null'])Purchase order number.
      • paymentMethods (['array', 'null'])Payment methods.

        • Items (object)

          • amount (['number', 'null'], format: decimal)Payment amount.
          • methodName (['string', 'null'])Payment method name.
      • pickPackHandlingFee (['number', 'null'], format: decimal)Pick pack handling fee.

      • rushFee (['number', 'null'], format: decimal)Rush fee.
      • rushOrder (['boolean', 'null'])Rush order flag.
      • shipToAddress (['object', 'null'], required)Ship to address.

        • address1 (['string', 'null'], required)Address line 1.
        • address2 (['string', 'null'])Address line 2.
        • address3 (['string', 'null'])Address line 3.
        • addressCode (['string', 'null'])Address code.
        • city (['string', 'null'], required)City.
        • company (['string', 'null'])Company name.
        • country (['string', 'null'], required)Country.
        • emailAddress (['string', 'null'])Email address.
        • faxNumber (['string', 'null'])Fax number.
        • name (['string', 'null'], required)Contact name.
        • phoneNumber (['string', 'null'])Phone number.
        • postalCode (['string', 'null'], required)Postal code.
        • stateProvince (['string', 'null'], required)State or province.
      • shippingCost (['number', 'null'], format: decimal, required)Shipping cost.

      • shippingHandlingTax (['number', 'null'], format: decimal, required)Shipping handling tax.
      • totalOrderFee (['number', 'null'], format: decimal)Total order fee.
  • shippingHandlingTax (['number', 'null'], format: decimal)Shipping handling tax.

  • totalOrderFee (['number', 'null'], format: decimal)Total order fee.
  • totalShippingCost (['number', 'null'], format: decimal)Total shipping cost.
  • updateDateTime (['string', 'null'])Update date time.

Quicktype Command

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

namespace OtpSchema.Api.OrderBroker.InternalUpdateOrderRequest
{
    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 InternalUpdateOrderRequest
    {
        [J("accessGroups")]                                                                public string[] AccessGroups { get; set; }                                    // Access groups
        [J("affiliateIdentifier")]                                                         public string AffiliateIdentifier { get; set; }                               // Affiliate identifier
        [J("affiliateName")]                                                               public string AffiliateName { get; set; }                                     // Affiliate name
        [J("billingEntityId")]                                                             public string BillingEntityId { get; set; }                                   // Billing entity ID
        [J("billTos")]                                                                     public BillTo[] BillTos { get; set; }                                         // Bill to addresses
        [J("costCenter")]                                                                  public string CostCenter { get; set; }                                        // Cost center
        [J("creditCardFee")]                                                               public double? CreditCardFee { get; set; }                                    // Credit card fee
        [J("defaultBillToKey")]                                                            public string DefaultBillToKey { get; set; }                                  // Default bill to key
        [J("defaultOrderedByKey")]                                                         public string DefaultOrderedByKey { get; set; }                               // Default ordered by key
        [J("defaultShipToKey")]                                                            public string DefaultShipToKey { get; set; }                                  // Default ship to key
        [J("dueDate")]                                                                     public string DueDate { get; set; }                                           // Due date
        [J("lineItems")]                                                                   public LineItem[] LineItems { get; set; }                                     // Line items
        [J("orderedBys")]                                                                  public OrderedBy[] OrderedBys { get; set; }                                   // Ordered by addresses
        [J("orderFee")]                                                                    public double? OrderFee { get; set; }                                         // Order fee
        [J("orderId")]                                                                     public string OrderId { get; set; }                                           // Order ID
        [J("orderVariables")]                                                              public Dictionary<string, object> OrderVariables { get; set; }                // Order variables
        [J("paymentMethods")]                                                              public InternalUpdateOrderRequestPaymentMethod[] PaymentMethods { get; set; } // Payment methods
        [J("pickPackHandlingFee")]                                                         public double? PickPackHandlingFee { get; set; }                              // Pick pack handling fee
        [J("pONumber")][JsonConverter(typeof(MinMaxLengthCheckConverter))]                 public string PONumber { get; set; }                                          // Purchase order number
        [J("referenceId")]                                                                 public string ReferenceId { get; set; }                                       // Reference ID
        [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("rushOrder")]      public bool? RushOrder { get; set; }                                          // Rush order flag
        [J("shippingHandlingTax")]                                                         public double? ShippingHandlingTax { get; set; }                              // Shipping handling tax
        [J("shipTos")]                                                                     public ShipTo[] ShipTos { get; set; }                                         // Ship to addresses
        [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("totalOrderFee")]                                                               public double? TotalOrderFee { get; set; }                                    // Total order fee
        [J("totalShippingCost")]                                                           public double? TotalShippingCost { get; set; }                                // Total shipping cost
        [J("updateDateTime")]                                                              public string UpdateDateTime { get; set; }                                    // Update date time
    }

    public partial class BillTo
    {
        [J("address1")]      public string Address1 { get; set; }      // Address line 1
        [J("address2")]      public string Address2 { get; set; }      // Address line 2
        [J("address3")]      public string Address3 { get; set; }      // Address line 3
        [J("addressCode")]   public string AddressCode { get; set; }   // Address code
        [J("city")]          public string City { get; set; }          // City
        [J("company")]       public string Company { get; set; }       // Company name
        [J("country")]       public string Country { get; set; }       // Country
        [J("emailAddress")]  public string EmailAddress { get; set; }  // Email address
        [J("faxNumber")]     public string FaxNumber { get; set; }     // Fax number
        [J("isDeleted")]     public bool? IsDeleted { get; set; }      // Is deleted flag
        [J("key")]           public string Key { get; set; }           // Bill to key
        [J("name")]          public string Name { get; set; }          // Contact name
        [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 LineItem
    {
        [J("additionalProperties")]    public AdditionalProperty[] AdditionalProperties { get; set; } // Additional properties
        [J("billToKey")]               public string BillToKey { get; set; }                          // Bill to key
        [J("comment")]                 public string Comment { get; set; }                            // Comment
        [J("costCenter")]              public string CostCenter { get; set; }                         // Cost center
        [J("dueDate")]                 public string DueDate { get; set; }                            // Due date
        [J("lineItemFee")]             public double? LineItemFee { get; set; }                       // Line item fee
        [J("offerDescription")]        public string OfferDescription { get; set; }                   // Offer description
        [J("offerId")]                 public string OfferId { get; set; }                            // Offer ID
        [J("offerLineNumber")]         public string OfferLineNumber { get; set; }                    // Offer line number
        [J("offerNumber")]             public string OfferNumber { get; set; }                        // Offer number
        [J("orderedByKey")]            public string OrderedByKey { get; set; }                       // Ordered by key
        [J("pONumber")]                public string PONumber { get; set; }                           // Purchase order number
        [J("price")]                   public double? Price { get; set; }                             // Price
        [J("products")]                public Product[] Products { get; set; }                        // Products
        [J("quantityOrdered")]         public long? QuantityOrdered { get; set; }                     // Quantity ordered
        [J("referenceId")]             public string ReferenceId { get; set; }                        // Reference ID
        [J("rushOrder")]               public bool? RushOrder { get; set; }                           // Rush order flag
        [J("shipToKey")]               public string ShipToKey { get; set; }                          // Ship to key
        [J("taxAmount")]               public double? TaxAmount { get; set; }                         // Tax amount
        [J("unitPrice")]               public double? UnitPrice { get; set; }                         // Unit price
        [J("variableTemplatePrintId")] public string VariableTemplatePrintId { get; set; }            // Variable template print ID
    }

    public partial class AdditionalProperty
    {
        [J("key")]   public string Key { get; set; }   // Property key
        [J("value")] public string Value { get; set; } // Property value
    }

    public partial class Product
    {
        [J("associatedFileName")] public string AssociatedFileName { get; set; } // Associated file name
        [J("color")]              public string Color { get; set; }              // Color
        [J("comment")]            public string Comment { get; set; }            // Comment
        [J("components")]         public Component[] Components { get; set; }    // Product components
        [J("pageCount")]          public long? PageCount { get; set; }           // Page count
        [J("productDescription")] public string ProductDescription { get; set; } // Product description
        [J("productId")]          public string ProductId { get; set; }          // Product ID
        [J("productLineNumber")]  public string ProductLineNumber { get; set; }  // Product line number
        [J("productNumber")]      public string ProductNumber { get; set; }      // Product number
        [J("productOwner")]       public string ProductOwner { get; set; }       // Product owner
        [J("quantityOrdered")]    public long? QuantityOrdered { get; set; }     // Quantity ordered
        [J("size")]               public string Size { get; set; }               // Size
    }

    public partial class Component
    {
        [J("associatedFileName")]  public string AssociatedFileName { get; set; }  // Associated file name
        [J("color")]               public string Color { get; set; }               // Color
        [J("comment")]             public string Comment { get; set; }             // Comment
        [J("componentLineNumber")] public string ComponentLineNumber { get; set; } // Component line number
        [J("productDescription")]  public string ProductDescription { get; set; }  // Product description
        [J("productId")]           public string ProductId { get; set; }           // Product ID
        [J("productNumber")]       public string ProductNumber { get; set; }       // Product number
        [J("productOwner")]        public string ProductOwner { get; set; }        // Product owner
        [J("quantityBackordered")] public long? QuantityBackordered { get; set; }  // Quantity backordered
        [J("quantityOrdered")]     public long? QuantityOrdered { get; set; }      // Quantity ordered
        [J("size")]                public string Size { get; set; }                // Size
    }

    public partial class OrderedBy
    {
        [J("address1")]      public string Address1 { get; set; }      // Address line 1
        [J("address2")]      public string Address2 { get; set; }      // Address line 2
        [J("address3")]      public string Address3 { get; set; }      // Address line 3
        [J("addressCode")]   public string AddressCode { get; set; }   // Address code
        [J("city")]          public string City { get; set; }          // City
        [J("company")]       public string Company { get; set; }       // Company name
        [J("country")]       public string Country { get; set; }       // Country
        [J("emailAddress")]  public string EmailAddress { get; set; }  // Email address
        [J("faxNumber")]     public string FaxNumber { get; set; }     // Fax number
        [J("isDeleted")]     public bool? IsDeleted { get; set; }      // Is deleted flag
        [J("key")]           public string Key { get; set; }           // Ordered by key
        [J("name")]          public string Name { get; set; }          // Contact name
        [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 InternalUpdateOrderRequestPaymentMethod
    {
        [J("amount")]     public double? Amount { get; set; }    // Payment amount
        [J("methodName")] public string MethodName { get; set; } // Payment method name
    }

    public partial class ShipTo
    {
        [J("affiliateId")]                  public string AffiliateId { get; set; }                   // Affiliate ID
        [J("affiliateName")]                public string AffiliateName { get; set; }                 // Affiliate name
        [J("comment")]                      public string Comment { get; set; }                       // Comment
        [J("costCenter")]                   public string CostCenter { get; set; }                    // Cost center
        [J("creditCardFee")]                public double? CreditCardFee { get; set; }                // Credit card fee
        [J("dueDate")]                      public string DueDate { get; set; }                       // Due date
        [J("key")]                          public string Key { get; set; }                           // Ship to key
        [J("orderFee")]                     public double? OrderFee { get; set; }                     // Order fee
        [J("paymentMethods")]               public ShipToPaymentMethod[] PaymentMethods { get; set; } // Payment methods
        [J("pickPackHandlingFee")]          public double? PickPackHandlingFee { get; set; }          // Pick pack handling fee
        [J("pONumber")]                     public string PONumber { get; set; }                      // Purchase order number
        [J("referenceId")]                  public string ReferenceId { get; set; }                   // Reference ID
        [J("rushFee")]                      public double? RushFee { get; set; }                      // Rush fee
        [J("rushOrder")]                    public bool? RushOrder { get; set; }                      // Rush order flag
        [J("shippingCost")]                 public double? ShippingCost { get; set; }                 // Shipping cost
        [J("shippingHandlingTax")]          public double? ShippingHandlingTax { get; set; }          // Shipping handling tax
        [J("shipToAddress")]                public ShipToAddress ShipToAddress { get; set; }          // Ship to address
        [J("sourceSystemShippingMethodId")] public string SourceSystemShippingMethodId { get; set; }  // Source system shipping method ID
        [J("totalOrderFee")]                public double? TotalOrderFee { get; set; }                // Total order fee
    }

    public partial class ShipToPaymentMethod
    {
        [J("amount")]     public double? Amount { get; set; }    // Payment amount
        [J("methodName")] public string MethodName { get; set; } // Payment method name
    }

    public partial class ShipToAddress
    {
        [J("address1")]      public string Address1 { get; set; }      // Address line 1
        [J("address2")]      public string Address2 { get; set; }      // Address line 2
        [J("address3")]      public string Address3 { get; set; }      // Address line 3
        [J("addressCode")]   public string AddressCode { get; set; }   // Address code
        [J("city")]          public string City { get; set; }          // City
        [J("company")]       public string Company { get; set; }       // Company name
        [J("country")]       public string Country { get; set; }       // Country
        [J("emailAddress")]  public string EmailAddress { get; set; }  // Email address
        [J("faxNumber")]     public string FaxNumber { get; set; }     // Fax number
        [J("name")]          public string Name { get; set; }          // Contact name
        [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 InternalUpdateOrderRequest
    {
        public static InternalUpdateOrderRequest FromJson(string json) => JsonSerializer.Deserialize<InternalUpdateOrderRequest>(json, OtpSchema.Api.OrderBroker.InternalUpdateOrderRequest.Converter.Settings);
    }

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

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

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

        public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var value = reader.GetString();
            if (value != null && value.Length <= 20)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
        {
            if (value != null && value.Length <= 20)
            {
                JsonSerializer.Serialize(writer, value, options);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter Singleton = new MinMaxLengthCheckConverter();
    }

    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

InternalUpdateOrderRequest
{
  "$schema": "http://json-schema.org/draft-07/schema#", 
  "$id": "InternalUpdateOrderRequest.json", 
  "type": "object", 
  "properties": {
    "billingEntityId": { "description": "Billing entity ID", "type": ["string", "null"] }, 
    "orderId": { "description": "Order ID", "type": ["string", "null"] }, 
    "referenceId": { "description": "Reference ID", "type": ["string", "null"] }, 
    "sourceSystemCustomerId": {
      "description": "This is an automatically generated field added by middleware.  It is considered read-only", 
      "type": ["string", "null"], 
      "readonly": true
    }, 
    "sourceSystemId": {
      "description": "This is an automatically generated field added by middleware.  It is considered read-only", 
      "type": "integer", 
      "format": "int32", 
      "readonly": true
    }, 
    "accessGroups": {
      "description": "Access groups", 
      "type": ["array", "null"], 
      "items": {"type": "string"}
    }, 
    "affiliateIdentifier": { "description": "Affiliate identifier", "type": ["string", "null"] }, 
    "affiliateName": { "description": "Affiliate name", "type": ["string", "null"] }, 
    "billTos": {
      "description": "Bill to addresses", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "address1": { "description": "Address line 1", "type": ["string", "null"] }, 
          "address2": { "description": "Address line 2", "type": ["string", "null"] }, 
          "address3": { "description": "Address line 3", "type": ["string", "null"] }, 
          "addressCode": { "description": "Address code", "type": ["string", "null"] }, 
          "city": { "description": "City", "type": ["string", "null"] }, 
          "company": { "description": "Company name", "type": ["string", "null"] }, 
          "country": { "description": "Country", "type": ["string", "null"] }, 
          "emailAddress": { "description": "Email address", "type": ["string", "null"] }, 
          "faxNumber": { "description": "Fax number", "type": ["string", "null"] }, 
          "isDeleted": { "description": "Is deleted flag", "type": ["boolean", "null"] }, 
          "key": {"description": "Bill to key", "type": "string", "pattern": "^[0-9]+$"}, 
          "name": { "description": "Contact name", "type": ["string", "null"] }, 
          "phoneNumber": { "description": "Phone number", "type": ["string", "null"] }, 
          "postalCode": { "description": "Postal code", "type": ["string", "null"] }, 
          "stateProvince": { "description": "State or province", "type": ["string", "null"] }
        }, 
        "required": ["key"]
      }
    }, 
    "costCenter": { "description": "Cost center", "type": ["string", "null"] }, 
    "creditCardFee": {
      "description": "Credit card fee", 
      "type": ["number", "null"], 
      "format": "decimal"
    }, 
    "defaultBillToKey": {
      "description": "Default bill to key", 
      "type": ["string", "null"], 
      "pattern": "^[0-9]+$"
    }, 
    "defaultOrderedByKey": {
      "description": "Default ordered by key", 
      "type": ["string", "null"], 
      "pattern": "^[0-9]+$"
    }, 
    "defaultShipToKey": {
      "description": "Default ship to key", 
      "type": ["string", "null"], 
      "pattern": "^[0-9]+$"
    }, 
    "dueDate": { "description": "Due date", "type": ["string", "null"] }, 
    "lineItems": {
      "description": "Line items", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "offerId": { "description": "Offer ID", "type": ["string", "null"] }, 
          "referenceId": { "description": "Reference ID", "type": ["string", "null"] }, 
          "variableTemplatePrintId": { "description": "Variable template print ID", "type": ["string", "null"] }, 
          "additionalProperties": {
            "description": "Additional properties", 
            "type": ["array", "null"], 
            "items": {
              "type": "object", 
              "properties": {
                "key"  : { "description": "Property key"  , "type": ["string", "null"] }, 
                "value": { "description": "Property value", "type": ["string", "null"] }
              }
            }
          }, 
          "billToKey": {
            "description": "Bill to key", 
            "type": ["string", "null"], 
            "pattern": "^[0-9]+$"
          }, 
          "comment": { "description": "Comment", "type": ["string", "null"] }, 
          "costCenter": { "description": "Cost center", "type": ["string", "null"] }, 
          "dueDate": { "description": "Due date", "type": ["string", "null"] }, 
          "lineItemFee": {
            "description": "Line item fee", 
            "type": ["number", "null"], 
            "format": "decimal"
          }, 
          "offerDescription": { "description": "Offer description", "type": ["string", "null"] }, 
          "offerLineNumber": {
            "description": "Offer line number", 
            "type": ["string", "null"], 
            "pattern": "^[0-9]+$"
          }, 
          "offerNumber": { "description": "Offer number", "type": ["string", "null"] }, 
          "orderedByKey": {
            "description": "Ordered by key", 
            "type": ["string", "null"], 
            "pattern": "^[0-9]+$"
          }, 
          "pONumber": { "description": "Purchase order number", "type": ["string", "null"] }, 
          "price": { "description": "Price", "type": ["number", "null"], "format": "decimal" }, 
          "products": {
            "description": "Products", 
            "type": ["array", "null"], 
            "items": {
              "type": "object", 
              "properties": {
                "productId": { "description": "Product ID", "type": ["string", "null"] }, 
                "associatedFileName": { "description": "Associated file name", "type": ["string", "null"] }, 
                "color": { "description": "Color", "type": ["string", "null"] }, 
                "comment": { "description": "Comment", "type": ["string", "null"] }, 
                "components": {
                  "description": "Product components", 
                  "type": ["array", "null"], 
                  "items": {
                    "type": "object", 
                    "properties": {
                      "productId": { "description": "Product ID", "type": ["string", "null"] }, 
                      "associatedFileName": { "description": "Associated file name", "type": ["string", "null"] }, 
                      "color": { "description": "Color", "type": ["string", "null"] }, 
                      "comment": { "description": "Comment", "type": ["string", "null"] }, 
                      "componentLineNumber": {
                        "description": "Component line number", 
                        "type": ["string", "null"], 
                        "pattern": "^[0-9]+$"
                      }, 
                      "productDescription": { "description": "Product description", "type": ["string", "null"] }, 
                      "productNumber": { "description": "Product number", "type": ["string", "null"] }, 
                      "productOwner": { "description": "Product owner", "type": ["string", "null"] }, 
                      "quantityBackordered": {
                        "description": "Quantity backordered", 
                        "type": ["integer", "null"], 
                        "format": "int32"
                      }, 
                      "quantityOrdered": {
                        "description": "Quantity ordered", 
                        "type": ["integer", "null"], 
                        "format": "int32"
                      }, 
                      "size": { "description": "Size", "type": ["string", "null"] }
                    }
                  }
                }, 
                "pageCount": { "description": "Page count", "type": ["integer", "null"], "format": "int32" }, 
                "productDescription": { "description": "Product description", "type": ["string", "null"] }, 
                "productLineNumber": {
                  "description": "Product line number", 
                  "type": ["string", "null"], 
                  "pattern": "^[0-9]+$"
                }, 
                "productNumber": { "description": "Product number", "type": ["string", "null"] }, 
                "productOwner": { "description": "Product owner", "type": ["string", "null"] }, 
                "quantityOrdered": {
                  "description": "Quantity ordered", 
                  "type": ["integer", "null"], 
                  "format": "int32"
                }, 
                "size": { "description": "Size", "type": ["string", "null"] }
              }, 
              "required": ["productId"]
            }
          }, 
          "quantityOrdered": {
            "description": "Quantity ordered", 
            "type": ["integer", "null"], 
            "format": "int32"
          }, 
          "rushOrder": { "description": "Rush order flag", "type": ["boolean", "null"] }, 
          "shipToKey": {
            "description": "Ship to key", 
            "type": ["string", "null"], 
            "pattern": "^[0-9]+$"
          }, 
          "taxAmount": { "description": "Tax amount", "type": ["number", "null"], "format": "decimal" }, 
          "unitPrice": { "description": "Unit price", "type": ["number", "null"], "format": "decimal" }
        }, 
        "required": ["quantityOrdered", "price", "taxAmount", "lineItemFee"]
      }
    }, 
    "orderFee": { "description": "Order fee", "type": ["number", "null"], "format": "decimal" }, 
    "orderVariables": { "description": "Order variables", "type": ["object", "null"] }, 
    "orderedBys": {
      "description": "Ordered by addresses", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "address1": { "description": "Address line 1", "type": ["string", "null"] }, 
          "address2": { "description": "Address line 2", "type": ["string", "null"] }, 
          "address3": { "description": "Address line 3", "type": ["string", "null"] }, 
          "addressCode": { "description": "Address code", "type": ["string", "null"] }, 
          "city": { "description": "City", "type": ["string", "null"] }, 
          "company": { "description": "Company name", "type": ["string", "null"] }, 
          "country": { "description": "Country", "type": ["string", "null"] }, 
          "emailAddress": { "description": "Email address", "type": ["string", "null"] }, 
          "faxNumber": { "description": "Fax number", "type": ["string", "null"] }, 
          "isDeleted": { "description": "Is deleted flag", "type": ["boolean", "null"] }, 
          "key": {"description": "Ordered by key", "type": "string", "pattern": "^[0-9]+$"}, 
          "name": { "description": "Contact name", "type": ["string", "null"] }, 
          "phoneNumber": { "description": "Phone number", "type": ["string", "null"] }, 
          "postalCode": { "description": "Postal code", "type": ["string", "null"] }, 
          "stateProvince": { "description": "State or province", "type": ["string", "null"] }
        }, 
        "required": ["key"]
      }
    }, 
    "pONumber": {
      "description": "Purchase order number", 
      "type": ["string", "null"], 
      "maxLength": 20
    }, 
    "paymentMethods": {
      "description": "Payment methods", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "amount": {
            "description": "Payment amount", 
            "type": ["number", "null"], 
            "format": "decimal"
          }, 
          "methodName": { "description": "Payment method name", "type": ["string", "null"] }
        }
      }
    }, 
    "pickPackHandlingFee": {
      "description": "Pick pack handling fee", 
      "type": ["number", "null"], 
      "format": "decimal"
    }, 
    "rushOrder": {"description": "Rush order flag", "type": "boolean"}, 
    "shipTos": {
      "description": "Ship to addresses", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "affiliateId": { "description": "Affiliate ID", "type": ["string", "null"] }, 
          "referenceId": { "description": "Reference ID", "type": ["string", "null"] }, 
          "sourceSystemShippingMethodId": {
            "description": "Source system shipping method ID", 
            "type": ["string", "null"]
          }, 
          "affiliateName": { "description": "Affiliate name", "type": ["string", "null"] }, 
          "comment": { "description": "Comment", "type": ["string", "null"] }, 
          "costCenter": { "description": "Cost center", "type": ["string", "null"] }, 
          "creditCardFee": {
            "description": "Credit card fee", 
            "type": ["number", "null"], 
            "format": "decimal"
          }, 
          "dueDate": { "description": "Due date", "type": ["string", "null"] }, 
          "key": {"description": "Ship to key", "type": "string", "pattern": "^[0-9]+$"}, 
          "orderFee": { "description": "Order fee", "type": ["number", "null"], "format": "decimal" }, 
          "pONumber": { "description": "Purchase order number", "type": ["string", "null"] }, 
          "paymentMethods": {
            "description": "Payment methods", 
            "type": ["array", "null"], 
            "items": {
              "type": "object", 
              "properties": {
                "amount": {
                  "description": "Payment amount", 
                  "type": ["number", "null"], 
                  "format": "decimal"
                }, 
                "methodName": { "description": "Payment method name", "type": ["string", "null"] }
              }
            }
          }, 
          "pickPackHandlingFee": {
            "description": "Pick pack handling fee", 
            "type": ["number", "null"], 
            "format": "decimal"
          }, 
          "rushFee": { "description": "Rush fee", "type": ["number", "null"], "format": "decimal" }, 
          "rushOrder": { "description": "Rush order flag", "type": ["boolean", "null"] }, 
          "shipToAddress": {
            "description": "Ship to address", 
            "type": ["object", "null"], 
            "properties": {
              "address1"     : { "description": "Address line 1"   , "type": ["string", "null"] }, 
              "address2"     : { "description": "Address line 2"   , "type": ["string", "null"] }, 
              "address3"     : { "description": "Address line 3"   , "type": ["string", "null"] }, 
              "addressCode"  : { "description": "Address code"     , "type": ["string", "null"] }, 
              "city"         : { "description": "City"             , "type": ["string", "null"] }, 
              "company"      : { "description": "Company name"     , "type": ["string", "null"] }, 
              "country"      : { "description": "Country"          , "type": ["string", "null"] }, 
              "emailAddress" : { "description": "Email address"    , "type": ["string", "null"] }, 
              "faxNumber"    : { "description": "Fax number"       , "type": ["string", "null"] }, 
              "name"         : { "description": "Contact name"     , "type": ["string", "null"] }, 
              "phoneNumber"  : { "description": "Phone number"     , "type": ["string", "null"] }, 
              "postalCode"   : { "description": "Postal code"      , "type": ["string", "null"] }, 
              "stateProvince": { "description": "State or province", "type": ["string", "null"] }
            }, 
            "required": ["address1", "city", "country", "name", "postalCode", "stateProvince"]
          }, 
          "shippingCost": {
            "description": "Shipping cost", 
            "type": ["number", "null"], 
            "format": "decimal"
          }, 
          "shippingHandlingTax": {
            "description": "Shipping handling tax", 
            "type": ["number", "null"], 
            "format": "decimal"
          }, 
          "totalOrderFee": {
            "description": "Total order fee", 
            "type": ["number", "null"], 
            "format": "decimal"
          }
        }, 
        "required": [
          "key", "sourceSystemShippingMethodId", "shippingCost", "shippingHandlingTax", 
          "shipToAddress"
        ]
      }
    }, 
    "shippingHandlingTax": {
      "description": "Shipping handling tax", 
      "type": ["number", "null"], 
      "format": "decimal"
    }, 
    "totalOrderFee": {
      "description": "Total order fee", 
      "type": ["number", "null"], 
      "format": "decimal"
    }, 
    "totalShippingCost": {
      "description": "Total shipping cost", 
      "type": ["number", "null"], 
      "format": "decimal"
    }, 
    "updateDateTime": { "description": "Update date time", "type": ["string", "null"] }
  }, 
  "required": ["orderId", "shippingHandlingTax", "billTos", "shipTos"]
}