Skip to content

OrderView

OrderView level details for Cosmos DB Views database

Properties

  • BillingEntityId (['string', 'null'])Billing entity ID.
  • OmsCustomerId (['string', 'null'])OMS customer ID.
  • OmsId (['string', 'null'])OMS ID.
  • OmsOrderId (['string', 'null'])OMS order ID.
  • OrderId (['string', 'null'])Unique ID for order within order management system.
  • ReferenceId (['string', 'null'])Reference ID.
  • SourceSystemCustomerId (['string', 'null'])This is an automatically generated field added by middleware. It is considered read-only.
  • SourceSystemId (['integer', 'null'])This is an automatically generated field added by middleware. It is considered read-only.
  • SourceSystemOrderId (['string', 'null'])Source system order ID.
  • 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 for address.
      • Address2 (['string', 'null'])Address line 2 for address.
      • Address3 (['string', 'null'])Address line 3 for address.
      • City (['string', 'null'])City name for address.
      • Company (['string', 'null'])Company name for address.
      • Country (['string', 'null'])Country name for address.
      • EmailAddress (['string', 'null'])Contact email address for address.
      • FaxNumber (['string', 'null'])Fax number for address.
      • IsDeleted (['boolean', 'null'])Whether the bill to address is deleted.
      • Key (['string', 'null'])Key for the bill to address.
      • Name (['string', 'null'])Contact name for this address.
      • PhoneNumber (['string', 'null'])Phone number for address.
      • PostalCode (['string', 'null'])Postal code for address.
      • StateProvince (['string', 'null'])State or province name for address.
  • CostCenter (['string', 'null'])Cost center.

  • CreateDateTime (['string', 'null'])Create date time.
  • CreditCardFee (['number', 'null'])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'])Order line items.

    • Items (object)

      • OfferId (['string', 'null'])Unique ID for offer within Integration Broker.
      • ProductManagementSystemCustomerId (['string', 'null'])
      • ProductManagementSystemId (['integer', 'string', 'null'])Identifier for a product management system that can be an integer, string, or null.
      • ReferenceId (['string', 'null'])
      • VariableTemplatePrintId (['string', 'null'])Unique ID for variable template file associated to offer on individual line item.
      • AdditionalProperties (['array', 'null'])Additional properties details for Order LineItems.

        • Items (object)

          • IsDeleted (['boolean', 'null'])Whether the additional property is deleted.
          • Key (['string', 'null'])Key of the additional property.
          • Value (['string', 'null'])Value of the additional property.
      • BillToKey (['string', 'null'])Unique ID for Order.BillTos.Key property associated to individual line item.

      • Comment (['string', 'null'])Manually entered comment for individual line item.
      • CostCenter (['string', 'null'])
      • DueDate (['string', 'null'])Datetime of expected due date for individual line item.
      • LineItemFee (['number', 'null'])Fee applied to individual line item.
      • OfferDescription (['string', 'null'])Description for offer within product management system.
      • OfferLineNumber (['string', 'null'])Unique ID for individual line item.
      • OfferNumber (['string', 'null'])Name for offer within product management system.
      • OrderedByKey (['string', 'null'])Unique ID for Order.OrderedBy.Key property associated to individual line item.
      • PONumber (['string', 'null'])Purchase order number for individual line item.
      • Price (['number', 'null'])Total offer price of individual line item.
      • Products (['array', 'null'])Order.LineItems level product details.

        • Items (object)

          • FulfillmentSystemCustomerId (['string', 'null'])Fulfillment system customer ID.
          • FulfillmentSystemId (['string', 'null'])Fulfillment system ID.
          • FulfillmentSystemProductId (['string', 'null'])Fulfillment system product ID.
          • ProductId (['string', 'null'])Product ID.
          • AssociatedFileName (['string', 'null'])Associated file name.
          • Color (['string', 'null'])Product color.
          • Comment (['string', 'null'])Comment for the product.
          • Components (['array', 'null'])Product components.

            • Items (object)

              • ProductId (['string', 'null'])Component product ID.
              • AssociatedFileName (['string', 'null'])Component associated file name.
              • Comment (['string', 'null'])Component comment.
              • ComponentLineNumber (['string', 'null'])Component line number.
              • IsDeleted (['boolean', 'null'])Whether the component is deleted.
              • OfferLineNumber (['string', 'null'])Component offer line number.
              • ProductLineNumber (['string', 'null'])Component product line number.
              • QuantityBackordered (['integer', 'null'])Component quantity backordered.
              • QuantityOrdered (['integer', 'null'])Component quantity ordered.
          • IsDeleted (['boolean', 'null'])Whether the product is deleted.

          • OfferLineNumber (['string', 'null'])Offer line number.
          • PageCount (['integer', 'null'])Page count.
          • ProductDescription (['string', 'null'])Product description.
          • ProductLineNumber (['string', 'null'])Product line number.
          • ProductNumber (['string', 'null'])Product number.
          • ProductOwner (['string', 'null'])Product owner.
          • QuantityBackordered (['integer', 'null'])Quantity backordered.
          • QuantityOrdered (['integer', 'null'])Quantity ordered.
          • Size (['string', 'null'])Product size.
      • QuantityCanceled (['integer', 'null'])

      • QuantityOrdered (['integer', 'null'])Amount of offer ordered for individual line item.
      • RushOrder (['boolean', 'null'])True/false indicator if individual line item is expedited.
      • ShipToKey (['string', 'null'])Unique ID for Order.ShipTos.Key property associated to individual line item.
      • Status (['string', 'null'])
      • TaxAmount (['number', 'null'])Total tax amount applied to individual line item.
  • ModifiedDateTime (['string', 'null'])Modified date time.

  • OmsCustomerName (['string', 'null'])OMS customer name.
  • OrderFee (['number', 'null'])Order fee.
  • OrderVariables (['object', 'null'])Order variables.
  • OrderedBys (['array', 'null'])Ordered by addresses.

    • Items (object)

      • Address1 (['string', 'null'])Address line 1 for address.
      • Address2 (['string', 'null'])Address line 2 for address.
      • Address3 (['string', 'null'])Address line 3 for address.
      • City (['string', 'null'])City name for address.
      • Company (['string', 'null'])Company name for address.
      • Country (['string', 'null'])Country name for address.
      • EmailAddress (['string', 'null'])Contact email address for address.
      • FaxNumber (['string', 'null'])Fax number for address.
      • IsDeleted (['boolean', 'null'])Whether the ordered by address is deleted.
      • Key (['string', 'null'])Key for the ordered by address.
      • Name (['string', 'null'])Contact name for this address.
      • PhoneNumber (['string', 'null'])Phone number for address.
      • PostalCode (['string', 'null'])Postal code for address.
      • StateProvince (['string', 'null'])State or province name for address.
  • PONumber (['string', 'null'])PO number.

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

    • Items (object)

      • Amount (['number', 'null'], required)Total amount applied to payment method.
      • MethodName (['string', 'null'], required)Name of payment method.
  • PickPackHandlingFee (['number', 'null'])Pick pack handling fee.

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

    • Items (object)

      • AffiliateId (['string', 'null'])Affiliate ID.
      • OmsShippingMethodId (['string', 'null'])OMS shipping method ID.
      • ReferenceId (['string', 'null'])Reference ID.
      • SourceSystemShippingMethodId (['string', 'null'])Source system shipping method ID.
      • AffiliateName (['string', 'null'])Affiliate name.
      • Comment (['string', 'null'])Comment.
      • CostCenter (['string', 'null'])Cost center.
      • CreditCardFee (['number', 'null'])Credit card fee.
      • DueDate (['string', 'null'])Due date.
      • Key (['string', 'null'])Key for the ship to.
      • OrderFee (['number', 'null'])Order fee.
      • PONumber (['string', 'null'])PO number.
      • PaymentMethods (['array', 'null'])Payment methods.

        • Items (object)

          • Amount (['number', 'null'], required)Total amount applied to payment method.
          • MethodName (['string', 'null'], required)Name of payment method.
      • PickPackHandlingFee (['number', 'null'])Pick pack handling fee.

      • RushFee (['number', 'null'])Rush fee.
      • RushOrder (['boolean', 'null'])Whether this is a rush order.
      • ShipToAddress (['object', 'null'])Ship to address.

        • Address1 (['string', 'null'])Address line 1 for address.
        • Address2 (['string', 'null'])Address line 2 for address.
        • Address3 (['string', 'null'])Address line 3 for address.
        • City (['string', 'null'])City name for address.
        • Company (['string', 'null'])Company name for address.
        • Country (['string', 'null'])Country name for address.
        • EmailAddress (['string', 'null'])Contact email address for address.
        • FaxNumber (['string', 'null'])Fax number for address.
        • Name (['string', 'null'])Contact name for this address.
        • PhoneNumber (['string', 'null'])Phone number for address.
        • PostalCode (['string', 'null'])Postal code for address.
        • StateProvince (['string', 'null'])State or province name for address.
      • ShippingCarrier (['string', 'null'])Shipping carrier.

      • ShippingCost (['number', 'null'])Shipping cost.
      • ShippingHandlingTax (['number', 'null'])Shipping handling tax.
      • ShippingService (['string', 'null'])Shipping service.
      • Status (['string', 'null'])Status.
      • TotalOrderFee (['number', 'null'])Total order fee.
  • ShippingHandlingTax (['number', 'null'])Shipping handling tax.

  • Statuses (['array', 'null'])Order statuses - critical for OrderView as it's used for OrderStatus property in Service Bus messages.

    • Items (string)
  • TotalOrderFee (['number', 'null'])Total order fee.

  • TotalShippingCost (['number', 'null'])Total shipping cost.

Quicktype Command

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

namespace OtpSchema.Event.OrderView.OrderView
{
    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;

    /// <summary>OrderView level details for Cosmos DB Views database</summary>
    public partial class OrderView
    {
        [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("CreateDateTime")]         public string CreateDateTime { get; set; }                     // Create date time
        [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; }                      // Order line items
        [J("ModifiedDateTime")]       public string ModifiedDateTime { get; set; }                   // Modified date time
        [J("OmsCustomerId")]          public string OmsCustomerId { get; set; }                      // OMS customer ID
        [J("OmsCustomerName")]        public string OmsCustomerName { get; set; }                    // OMS customer name
        [J("OmsId")]                  public string OmsId { get; set; }                              // OMS ID
        [J("OmsOrderId")]             public string OmsOrderId { get; set; }                         // OMS order ID
        [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; }                            // Unique ID for order within order management system
        [J("OrderVariables")]         public Dictionary<string, object> OrderVariables { get; set; } // Order variables
        [J("PaymentMethods")]         public OrderViewPaymentMethod[] PaymentMethods { get; set; }   // Payment methods
        [J("PickPackHandlingFee")]    public double? PickPackHandlingFee { get; set; }               // Pick pack handling fee
        [J("PONumber")]               public string PoNumber { get; set; }                           // PO number
        [J("ReferenceId")]            public string ReferenceId { get; set; }                        // Reference ID
        [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
        [J("SourceSystemId")]         public long? SourceSystemId { get; set; }                      // This is an automatically generated field added by middleware.  It is considered read-only
        [J("SourceSystemOrderId")]    public string SourceSystemOrderId { get; set; }                // Source system order ID
        [J("Statuses")]               public string[] Statuses { get; set; }                         // Order statuses - critical for OrderView as it's used for OrderStatus property in Service; Bus messages
        [J("TotalOrderFee")]          public double? TotalOrderFee { get; set; }                     // Total order fee
        [J("TotalShippingCost")]      public double? TotalShippingCost { get; set; }                 // Total shipping cost
    }

    public partial class BillTo
    {
        [J("Address1")]      public string Address1 { get; set; }      // Address line 1 for address
        [J("Address2")]      public string Address2 { get; set; }      // Address line 2 for address
        [J("Address3")]      public string Address3 { get; set; }      // Address line 3 for address
        [J("City")]          public string City { get; set; }          // City name for address
        [J("Company")]       public string Company { get; set; }       // Company name for address
        [J("Country")]       public string Country { get; set; }       // Country name for address
        [J("EmailAddress")]  public string EmailAddress { get; set; }  // Contact email address for address
        [J("FaxNumber")]     public string FaxNumber { get; set; }     // Fax number for address
        [J("IsDeleted")]     public bool? IsDeleted { get; set; }      // Whether the bill to address is deleted
        [J("Key")]           public string Key { get; set; }           // Key for the bill to address
        [J("Name")]          public string Name { get; set; }          // Contact name for this address
        [J("PhoneNumber")]   public string PhoneNumber { get; set; }   // Phone number for address
        [J("PostalCode")]    public string PostalCode { get; set; }    // Postal code for address
        [J("StateProvince")] public string StateProvince { get; set; } // State or province name for address
    }

    public partial class LineItem
    {
        [J("AdditionalProperties")]              public AdditionalProperty[] AdditionalProperties { get; set; }            // Additional properties details for Order LineItems
        [J("BillToKey")]                         public string BillToKey { get; set; }                                     // Unique ID for Order.BillTos.Key property associated to individual line item
        [J("Comment")]                           public string Comment { get; set; }                                       // Manually entered comment for individual line item
        [J("CostCenter")]                        public string CostCenter { get; set; }                                   
        [J("DueDate")]                           public string DueDate { get; set; }                                       // Datetime of expected due date for individual line item
        [J("LineItemFee")]                       public double? LineItemFee { get; set; }                                  // Fee applied to individual line item
        [J("OfferDescription")]                  public string OfferDescription { get; set; }                              // Description for offer within product management system
        [J("OfferId")]                           public string OfferId { get; set; }                                       // Unique ID for offer within Integration Broker
        [J("OfferLineNumber")]                   public string OfferLineNumber { get; set; }                               // Unique ID for individual line item
        [J("OfferNumber")]                       public string OfferNumber { get; set; }                                   // Name for offer within product management system
        [J("OrderedByKey")]                      public string OrderedByKey { get; set; }                                  // Unique ID for Order.OrderedBy.Key property associated to individual line item
        [J("PONumber")]                          public string PoNumber { get; set; }                                      // Purchase order number for individual line item
        [J("Price")]                             public double? Price { get; set; }                                        // Total offer price of individual line item
        [J("ProductManagementSystemCustomerId")] public string ProductManagementSystemCustomerId { get; set; }            
        [J("ProductManagementSystemId")]         public ProductManagementSystemId? ProductManagementSystemId { get; set; } // Identifier for a product management system that can be an integer, string, or null
        [J("Products")]                          public Product[] Products { get; set; }                                   // Order.LineItems level product details
        [J("QuantityCanceled")]                  public long? QuantityCanceled { get; set; }                              
        [J("QuantityOrdered")]                   public long? QuantityOrdered { get; set; }                                // Amount of offer ordered for individual line item
        [J("ReferenceId")]                       public string ReferenceId { get; set; }                                  
        [J("RushOrder")]                         public bool? RushOrder { get; set; }                                      // True/false indicator if individual line item is expedited
        [J("ShipToKey")]                         public string ShipToKey { get; set; }                                     // Unique ID for Order.ShipTos.Key property associated to individual line item
        [J("Status")]                            public string Status { get; set; }                                       
        [J("TaxAmount")]                         public double? TaxAmount { get; set; }                                    // Total tax amount applied to individual line item
        [J("VariableTemplatePrintId")]           public string VariableTemplatePrintId { get; set; }                       // Unique ID for variable template file associated to offer on individual line item
    }

    public partial class AdditionalProperty
    {
        [J("IsDeleted")] public bool? IsDeleted { get; set; } // Whether the additional property is deleted
        [J("Key")]       public string Key { get; set; }      // Key of the additional property
        [J("Value")]     public string Value { get; set; }    // Value of the additional property
    }

    public partial class Product
    {
        [J("AssociatedFileName")]          public string AssociatedFileName { get; set; }          // Associated file name
        [J("Color")]                       public string Color { get; set; }                       // Product color
        [J("Comment")]                     public string Comment { get; set; }                     // Comment for the product
        [J("Components")]                  public Component[] Components { get; set; }             // Product components
        [J("FulfillmentSystemCustomerId")] public string FulfillmentSystemCustomerId { get; set; } // Fulfillment system customer ID
        [J("FulfillmentSystemId")]         public string FulfillmentSystemId { get; set; }         // Fulfillment system ID
        [J("FulfillmentSystemProductId")]  public string FulfillmentSystemProductId { get; set; }  // Fulfillment system product ID
        [J("IsDeleted")]                   public bool? IsDeleted { get; set; }                    // Whether the product is deleted
        [J("OfferLineNumber")]             public string OfferLineNumber { get; set; }             // Offer line number
        [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("QuantityBackordered")]         public long? QuantityBackordered { get; set; }          // Quantity backordered
        [J("QuantityOrdered")]             public long? QuantityOrdered { get; set; }              // Quantity ordered
        [J("Size")]                        public string Size { get; set; }                        // Product size
    }

    public partial class Component
    {
        [J("AssociatedFileName")]  public string AssociatedFileName { get; set; }  // Component associated file name
        [J("Comment")]             public string Comment { get; set; }             // Component comment
        [J("ComponentLineNumber")] public string ComponentLineNumber { get; set; } // Component line number
        [J("IsDeleted")]           public bool? IsDeleted { get; set; }            // Whether the component is deleted
        [J("OfferLineNumber")]     public string OfferLineNumber { get; set; }     // Component offer line number
        [J("ProductId")]           public string ProductId { get; set; }           // Component product ID
        [J("ProductLineNumber")]   public string ProductLineNumber { get; set; }   // Component product line number
        [J("QuantityBackordered")] public long? QuantityBackordered { get; set; }  // Component quantity backordered
        [J("QuantityOrdered")]     public long? QuantityOrdered { get; set; }      // Component quantity ordered
    }

    public partial class OrderedBy
    {
        [J("Address1")]      public string Address1 { get; set; }      // Address line 1 for address
        [J("Address2")]      public string Address2 { get; set; }      // Address line 2 for address
        [J("Address3")]      public string Address3 { get; set; }      // Address line 3 for address
        [J("City")]          public string City { get; set; }          // City name for address
        [J("Company")]       public string Company { get; set; }       // Company name for address
        [J("Country")]       public string Country { get; set; }       // Country name for address
        [J("EmailAddress")]  public string EmailAddress { get; set; }  // Contact email address for address
        [J("FaxNumber")]     public string FaxNumber { get; set; }     // Fax number for address
        [J("IsDeleted")]     public bool? IsDeleted { get; set; }      // Whether the ordered by address is deleted
        [J("Key")]           public string Key { get; set; }           // Key for the ordered by address
        [J("Name")]          public string Name { get; set; }          // Contact name for this address
        [J("PhoneNumber")]   public string PhoneNumber { get; set; }   // Phone number for address
        [J("PostalCode")]    public string PostalCode { get; set; }    // Postal code for address
        [J("StateProvince")] public string StateProvince { get; set; } // State or province name for address
    }

    public partial class OrderViewPaymentMethod
    {
        [J("Amount")]     public double? Amount { get; set; }    // Total amount applied to payment method
        [J("MethodName")] public string MethodName { get; set; } // Name of payment method
    }

    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; }                           // Key for the ship to
        [J("OmsShippingMethodId")]          public string OmsShippingMethodId { get; set; }           // OMS shipping method ID
        [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; }                      // PO 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; }                      // Whether this is a rush order
        [J("ShippingCarrier")]              public string ShippingCarrier { get; set; }               // Shipping carrier
        [J("ShippingCost")]                 public double? ShippingCost { get; set; }                 // Shipping cost
        [J("ShippingHandlingTax")]          public double? ShippingHandlingTax { get; set; }          // Shipping handling tax
        [J("ShippingService")]              public string ShippingService { get; set; }               // Shipping service
        [J("ShipToAddress")]                public ShipToAddress ShipToAddress { get; set; }          // Ship to address
        [J("SourceSystemShippingMethodId")] public string SourceSystemShippingMethodId { get; set; }  // Source system shipping method ID
        [J("Status")]                       public string Status { get; set; }                        // Status
        [J("TotalOrderFee")]                public double? TotalOrderFee { get; set; }                // Total order fee
    }

    public partial class ShipToPaymentMethod
    {
        [J("Amount")]     public double? Amount { get; set; }    // Total amount applied to payment method
        [J("MethodName")] public string MethodName { get; set; } // Name of payment method
    }

    public partial class ShipToAddress
    {
        [J("Address1")]      public string Address1 { get; set; }      // Address line 1 for address
        [J("Address2")]      public string Address2 { get; set; }      // Address line 2 for address
        [J("Address3")]      public string Address3 { get; set; }      // Address line 3 for address
        [J("City")]          public string City { get; set; }          // City name for address
        [J("Company")]       public string Company { get; set; }       // Company name for address
        [J("Country")]       public string Country { get; set; }       // Country name for address
        [J("EmailAddress")]  public string EmailAddress { get; set; }  // Contact email address for address
        [J("FaxNumber")]     public string FaxNumber { get; set; }     // Fax number for address
        [J("Name")]          public string Name { get; set; }          // Contact name for this address
        [J("PhoneNumber")]   public string PhoneNumber { get; set; }   // Phone number for address
        [J("PostalCode")]    public string PostalCode { get; set; }    // Postal code for address
        [J("StateProvince")] public string StateProvince { get; set; } // State or province name for address
    }

    /// <summary>Identifier for a product management system that can be an integer, string, or null</summary>
    public partial struct ProductManagementSystemId
    {
        public long? Integer;
        public string String;

        public static implicit operator ProductManagementSystemId(long Integer) => new ProductManagementSystemId { Integer = Integer };
        public static implicit operator ProductManagementSystemId(string String) => new ProductManagementSystemId { String = String };
        public bool IsNull => Integer == null && String == null;
    }

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

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

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

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

        public override ProductManagementSystemId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            switch (reader.TokenType)
            {
                case JsonTokenType.Null:
                    return new ProductManagementSystemId { };
                case JsonTokenType.Number:
                    var integerValue = reader.GetInt64();
                    return new ProductManagementSystemId { Integer = integerValue };
                case JsonTokenType.String:
                    var stringValue = reader.GetString();
                    return new ProductManagementSystemId { String = stringValue };
            }
            throw new Exception("Cannot unmarshal type ProductManagementSystemId");
        }

        public override void Write(Utf8JsonWriter writer, ProductManagementSystemId value, JsonSerializerOptions options)
        {
            if (value.IsNull)
            {
                writer.WriteNullValue();
                return;
            }
            if (value.Integer != null)
            {
                JsonSerializer.Serialize(writer, value.Integer.Value, options);
                return;
            }
            if (value.String != null)
            {
                JsonSerializer.Serialize(writer, value.String, options);
                return;
            }
            throw new Exception("Cannot marshal type ProductManagementSystemId");
        }

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

    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

OrderView
{
  "$schema": "http://json-schema.org/draft-07/schema#", 
  "$id": "OrderView.json", 
  "description": "OrderView level details for Cosmos DB Views database", 
  "type": "object", 
  "properties": {
    "BillingEntityId": { "description": "Billing entity ID", "type": ["string", "null"] }, 
    "OmsCustomerId": { "description": "OMS customer ID", "type": ["string", "null"] }, 
    "OmsId": { "description": "OMS ID", "type": ["string", "null"] }, 
    "OmsOrderId": { "description": "OMS order ID", "type": ["string", "null"] }, 
    "OrderId": {
      "description": "Unique ID for order within order management system", 
      "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", "null"], 
      "readonly": true
    }, 
    "SourceSystemOrderId": { "description": "Source system order ID", "type": ["string", "null"] }, 
    "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 for address", "type": ["string", "null"] }, 
          "Address2": { "description": "Address line 2 for address", "type": ["string", "null"] }, 
          "Address3": { "description": "Address line 3 for address", "type": ["string", "null"] }, 
          "City": { "description": "City name for address", "type": ["string", "null"] }, 
          "Company": { "description": "Company name for address", "type": ["string", "null"] }, 
          "Country": { "description": "Country name for address", "type": ["string", "null"] }, 
          "EmailAddress": {
            "description": "Contact email address for address", 
            "type": ["string", "null"]
          }, 
          "FaxNumber": { "description": "Fax number for address", "type": ["string", "null"] }, 
          "IsDeleted": {
            "description": "Whether the bill to address is deleted", 
            "type": ["boolean", "null"]
          }, 
          "Key": { "description": "Key for the bill to address", "type": ["string", "null"] }, 
          "Name": { "description": "Contact name for this address", "type": ["string", "null"] }, 
          "PhoneNumber": { "description": "Phone number for address", "type": ["string", "null"] }, 
          "PostalCode": { "description": "Postal code for address", "type": ["string", "null"] }, 
          "StateProvince": {
            "description": "State or province name for address", 
            "type": ["string", "null"]
          }
        }
      }
    }, 
    "CostCenter": { "description": "Cost center", "type": ["string", "null"] }, 
    "CreateDateTime": { "description": "Create date time", "type": ["string", "null"] }, 
    "CreditCardFee": { "description": "Credit card fee", "type": ["number", "null"] }, 
    "DefaultBillToKey": { "description": "Default bill to key", "type": ["string", "null"] }, 
    "DefaultOrderedByKey": { "description": "Default ordered by key", "type": ["string", "null"] }, 
    "DefaultShipToKey": { "description": "Default ship to key", "type": ["string", "null"] }, 
    "DueDate": { "description": "Due date", "type": ["string", "null"] }, 
    "LineItems": {
      "description": "Order line items", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "OfferId": {
            "description": "Unique ID for offer within Integration Broker", 
            "type": ["string", "null"]
          }, 
          "ProductManagementSystemCustomerId": { "type": ["string", "null"] }, 
          "ProductManagementSystemId": {
            "description": "Identifier for a product management system that can be an integer, string, or null", 
            "type": ["integer", "string", "null"]
          }, 
          "ReferenceId": { "type": ["string", "null"] }, 
          "VariableTemplatePrintId": {
            "description": "Unique ID for variable template file associated to offer on individual line item", 
            "type": ["string", "null"]
          }, 
          "AdditionalProperties": {
            "description": "Additional properties details for Order LineItems", 
            "type": ["array", "null"], 
            "items": {
              "type": "object", 
              "properties": {
                "IsDeleted": {
                  "description": "Whether the additional property is deleted", 
                  "type": ["boolean", "null"]
                }, 
                "Key": { "description": "Key of the additional property", "type": ["string", "null"] }, 
                "Value": {
                  "description": "Value of the additional property", 
                  "type": ["string", "null"]
                }
              }
            }
          }, 
          "BillToKey": {
            "description": "Unique ID for Order.BillTos.Key property associated to individual line item", 
            "type": ["string", "null"]
          }, 
          "Comment": {
            "description": "Manually entered comment for individual line item", 
            "type": ["string", "null"]
          }, 
          "CostCenter": { "type": ["string", "null"] }, 
          "DueDate": {
            "description": "Datetime of expected due date for individual line item", 
            "type": ["string", "null"]
          }, 
          "LineItemFee": {
            "description": "Fee applied to individual line item", 
            "type": ["number", "null"]
          }, 
          "OfferDescription": {
            "description": "Description for offer within product management system", 
            "type": ["string", "null"]
          }, 
          "OfferLineNumber": {
            "description": "Unique ID for individual line item", 
            "type": ["string", "null"]
          }, 
          "OfferNumber": {
            "description": "Name for offer within product management system", 
            "type": ["string", "null"]
          }, 
          "OrderedByKey": {
            "description": "Unique ID for Order.OrderedBy.Key property associated to individual line item", 
            "type": ["string", "null"]
          }, 
          "PONumber": {
            "description": "Purchase order number for individual line item", 
            "type": ["string", "null"]
          }, 
          "Price": {
            "description": "Total offer price of individual line item", 
            "type": ["number", "null"]
          }, 
          "Products": {
            "description": "Order.LineItems level product details", 
            "type": ["array", "null"], 
            "items": {
              "type": "object", 
              "properties": {
                "FulfillmentSystemCustomerId": { "description": "Fulfillment system customer ID", "type": ["string", "null"] }, 
                "FulfillmentSystemId": { "description": "Fulfillment system ID", "type": ["string", "null"] }, 
                "FulfillmentSystemProductId": { "description": "Fulfillment system product ID", "type": ["string", "null"] }, 
                "ProductId": { "description": "Product ID", "type": ["string", "null"] }, 
                "AssociatedFileName": { "description": "Associated file name", "type": ["string", "null"] }, 
                "Color": { "description": "Product color", "type": ["string", "null"] }, 
                "Comment": { "description": "Comment for the product", "type": ["string", "null"] }, 
                "Components": {
                  "description": "Product components", 
                  "type": ["array", "null"], 
                  "items": {
                    "type": "object", 
                    "properties": {
                      "ProductId": { "description": "Component product ID", "type": ["string", "null"] }, 
                      "AssociatedFileName": { "description": "Component associated file name", "type": ["string", "null"] }, 
                      "Comment": { "description": "Component comment", "type": ["string", "null"] }, 
                      "ComponentLineNumber": { "description": "Component line number", "type": ["string", "null"] }, 
                      "IsDeleted": {
                        "description": "Whether the component is deleted", 
                        "type": ["boolean", "null"]
                      }, 
                      "OfferLineNumber": { "description": "Component offer line number", "type": ["string", "null"] }, 
                      "ProductLineNumber": { "description": "Component product line number", "type": ["string", "null"] }, 
                      "QuantityBackordered": { "description": "Component quantity backordered", "type": ["integer", "null"] }, 
                      "QuantityOrdered": { "description": "Component quantity ordered", "type": ["integer", "null"] }
                    }
                  }
                }, 
                "IsDeleted": { "description": "Whether the product is deleted", "type": ["boolean", "null"] }, 
                "OfferLineNumber": { "description": "Offer line number", "type": ["string", "null"] }, 
                "PageCount": { "description": "Page count", "type": ["integer", "null"] }, 
                "ProductDescription": { "description": "Product description", "type": ["string", "null"] }, 
                "ProductLineNumber": { "description": "Product line number", "type": ["string", "null"] }, 
                "ProductNumber": { "description": "Product number", "type": ["string", "null"] }, 
                "ProductOwner": { "description": "Product owner", "type": ["string", "null"] }, 
                "QuantityBackordered": { "description": "Quantity backordered", "type": ["integer", "null"] }, 
                "QuantityOrdered": { "description": "Quantity ordered", "type": ["integer", "null"] }, 
                "Size": { "description": "Product size", "type": ["string", "null"] }
              }
            }
          }, 
          "QuantityCanceled": { "type": ["integer", "null"] }, 
          "QuantityOrdered": {
            "description": "Amount of offer ordered for individual line item", 
            "type": ["integer", "null"]
          }, 
          "RushOrder": {
            "description": "True/false indicator if individual line item is expedited", 
            "type": ["boolean", "null"]
          }, 
          "ShipToKey": {
            "description": "Unique ID for Order.ShipTos.Key property associated to individual line item", 
            "type": ["string", "null"]
          }, 
          "Status": { "type": ["string", "null"] }, 
          "TaxAmount": {
            "description": "Total tax amount applied to individual line item", 
            "type": ["number", "null"]
          }
        }
      }
    }, 
    "ModifiedDateTime": { "description": "Modified date time", "type": ["string", "null"] }, 
    "OmsCustomerName": { "description": "OMS customer name", "type": ["string", "null"] }, 
    "OrderFee": { "description": "Order fee", "type": ["number", "null"] }, 
    "OrderVariables": { "description": "Order variables", "type": ["object", "null"] }, 
    "OrderedBys": {
      "description": "Ordered by addresses", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "Address1": { "description": "Address line 1 for address", "type": ["string", "null"] }, 
          "Address2": { "description": "Address line 2 for address", "type": ["string", "null"] }, 
          "Address3": { "description": "Address line 3 for address", "type": ["string", "null"] }, 
          "City": { "description": "City name for address", "type": ["string", "null"] }, 
          "Company": { "description": "Company name for address", "type": ["string", "null"] }, 
          "Country": { "description": "Country name for address", "type": ["string", "null"] }, 
          "EmailAddress": {
            "description": "Contact email address for address", 
            "type": ["string", "null"]
          }, 
          "FaxNumber": { "description": "Fax number for address", "type": ["string", "null"] }, 
          "IsDeleted": {
            "description": "Whether the ordered by address is deleted", 
            "type": ["boolean", "null"]
          }, 
          "Key": { "description": "Key for the ordered by address", "type": ["string", "null"] }, 
          "Name": { "description": "Contact name for this address", "type": ["string", "null"] }, 
          "PhoneNumber": { "description": "Phone number for address", "type": ["string", "null"] }, 
          "PostalCode": { "description": "Postal code for address", "type": ["string", "null"] }, 
          "StateProvince": {
            "description": "State or province name for address", 
            "type": ["string", "null"]
          }
        }
      }
    }, 
    "PONumber": { "description": "PO number", "type": ["string", "null"] }, 
    "PaymentMethods": {
      "description": "Payment methods", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "Amount": {
            "description": "Total amount applied to payment method", 
            "type": ["number", "null"]
          }, 
          "MethodName": { "description": "Name of payment method", "type": ["string", "null"] }
        }, 
        "required": ["Amount", "MethodName"]
      }
    }, 
    "PickPackHandlingFee": { "description": "Pick pack handling fee", "type": ["number", "null"] }, 
    "RushOrder": { "description": "Rush order flag", "type": ["boolean", "null"] }, 
    "ShipTos": {
      "description": "Ship to addresses", 
      "type": ["array", "null"], 
      "items": {
        "type": "object", 
        "properties": {
          "AffiliateId": { "description": "Affiliate ID", "type": ["string", "null"] }, 
          "OmsShippingMethodId": { "description": "OMS shipping method 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"] }, 
          "DueDate": { "description": "Due date", "type": ["string", "null"] }, 
          "Key": { "description": "Key for the ship to", "type": ["string", "null"] }, 
          "OrderFee": { "description": "Order fee", "type": ["number", "null"] }, 
          "PONumber": { "description": "PO number", "type": ["string", "null"] }, 
          "PaymentMethods": {
            "description": "Payment methods", 
            "type": ["array", "null"], 
            "items": {
              "type": "object", 
              "properties": {
                "Amount": {
                  "description": "Total amount applied to payment method", 
                  "type": ["number", "null"]
                }, 
                "MethodName": { "description": "Name of payment method", "type": ["string", "null"] }
              }, 
              "required": ["Amount", "MethodName"]
            }
          }, 
          "PickPackHandlingFee": { "description": "Pick pack handling fee", "type": ["number", "null"] }, 
          "RushFee": { "description": "Rush fee", "type": ["number", "null"] }, 
          "RushOrder": { "description": "Whether this is a rush order", "type": ["boolean", "null"] }, 
          "ShipToAddress": {
            "description": "Ship to address", 
            "type": ["object", "null"], 
            "properties": {
              "Address1": { "description": "Address line 1 for address", "type": ["string", "null"] }, 
              "Address2": { "description": "Address line 2 for address", "type": ["string", "null"] }, 
              "Address3": { "description": "Address line 3 for address", "type": ["string", "null"] }, 
              "City": { "description": "City name for address", "type": ["string", "null"] }, 
              "Company": { "description": "Company name for address", "type": ["string", "null"] }, 
              "Country": { "description": "Country name for address", "type": ["string", "null"] }, 
              "EmailAddress": {
                "description": "Contact email address for address", 
                "type": ["string", "null"]
              }, 
              "FaxNumber": { "description": "Fax number for address", "type": ["string", "null"] }, 
              "Name": { "description": "Contact name for this address", "type": ["string", "null"] }, 
              "PhoneNumber": { "description": "Phone number for address", "type": ["string", "null"] }, 
              "PostalCode": { "description": "Postal code for address", "type": ["string", "null"] }, 
              "StateProvince": {
                "description": "State or province name for address", 
                "type": ["string", "null"]
              }
            }
          }, 
          "ShippingCarrier": { "description": "Shipping carrier", "type": ["string", "null"] }, 
          "ShippingCost": { "description": "Shipping cost", "type": ["number", "null"] }, 
          "ShippingHandlingTax": { "description": "Shipping handling tax", "type": ["number", "null"] }, 
          "ShippingService": { "description": "Shipping service", "type": ["string", "null"] }, 
          "Status": { "description": "Status", "type": ["string", "null"] }, 
          "TotalOrderFee": { "description": "Total order fee", "type": ["number", "null"] }
        }
      }
    }, 
    "ShippingHandlingTax": { "description": "Shipping handling tax", "type": ["number", "null"] }, 
    "Statuses": {
      "description": "Order statuses - critical for OrderView as it's used for OrderStatus property in Service Bus messages", 
      "type": ["array", "null"], 
      "items": {"type": "string"}
    }, 
    "TotalOrderFee": { "description": "Total order fee", "type": ["number", "null"] }, 
    "TotalShippingCost": { "description": "Total shipping cost", "type": ["number", "null"] }
  }, 
  "required": ["OrderId", "LineItems", "BillTos", "ShipTos"]
}