Order
Order level line item details
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.- 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.Order.Order \
--src .working/build/internal/json-schema-for-cs/Order.json -o .working/build/internal/csharp/OtpSchema/Event/Order/Order.cs
// <auto-generated />
//
// To parse this JSON data, add NuGet 'System.Text.Json' then do:
//
// using OtpSchema.Event.Order.Order;
//
// var order = Order.FromJson(jsonString);
#nullable enable
#pragma warning disable CS8618
#pragma warning disable CS8601
#pragma warning disable CS8603
namespace OtpSchema.Event.Order.Order
{
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>Order level line item details</summary>
public partial class Order
{
[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 OrderPaymentMethod[] 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
[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 OrderPaymentMethod
{
[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 Order
{
public static Order FromJson(string json) => JsonSerializer.Deserialize<Order>(json, OtpSchema.Event.Order.Order.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this Order self) => JsonSerializer.Serialize(self, OtpSchema.Event.Order.Order.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
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "Order.json",
"description": "Order level line item details",
"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",
"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"]
}