CreateCustomerRequest
Properties
defaultWarehouseId(['string', 'null'])Optional. Warehouse identifier.id(string)Required. Unique customer identifier. Must not be empty. Must exist for update. Cannot be the same as parent.id.xmlSenderId(['string', 'null'])Optional. XML sender identifier.billToCodeRequiredOnOrder(boolean)Required. Indicates whether BillTo code is required on order placement.-
billingEntities(['array', 'null'])-
Items (object)Cannot contain additional properties.
id(string, required)Required. Billing entity identifier.xmlSenderId(['string', 'null'])Optional. XmlSenderId override.-
addresses(array, required)Required. Child addresses. Must be an empty array [] for create operations (business rule override). Length must be at most 0.-
Items (object)Cannot contain additional properties.
xmlSenderId(['string', 'null'])Optional. XmlSenderId.code(string, required)Required. Code for the address.
-
-
isDefaultForCustomer(boolean, required)Required. Indicates whether this is the default billing entity for the customer.
-
-
brokerScopes(array)- Items (string)
-
contactAddress(['object', 'null'])Cannot contain additional properties.address1(string, required)Required if contactAddress is present. Address line 1. Must not be empty.address2(['string', 'null'])Optional. Address line 2.address3(['string', 'null'])Optional. Address line 3.city(string, required)Required if contactAddress is present. City. Must not be empty.company(['string', 'null'])Optional. Company name.country(string, required)Required if contactAddress is present. Country. Must not be empty.faxNumber(['string', 'null'])Optional. Fax number.name(['string', 'null'])Optional. Contact name.phoneNumber(['string', 'null'])Optional. Phone number.postalCode(string, required)Required if contactAddress is present. Postal code. Must not be empty.stateProvince(string, required)Required. State or province.
-
contactEmailAddress(['string', 'null'], format: email)Optional. Contact email address. Must be a valid email if provided. createDateTimeUtc(['string', 'null'])Optional. Creation date/time in UTC. Must not be in the future if provided.doValidateOrderPrice(boolean)Required. Indicates whether order price validation is performed on order placement for the Sales Order.-
emailNotificationSubscriptions(['array', 'null'])Optional. List of email notification subscriptions.-
Items (object)Cannot contain additional properties.
emailNotificationTemplateId(string, required)Required. Email notification template identifier.-
emailAddresses(array, required)Required. Array of email addresses.- Items (string)
-
-
invoiceEmailAddress(['string', 'null'], format: email)Optional. Invoice email address. Must be a valid email if provided. name(string)Required. Customer name.offerRevisionDelimiter(['string', 'null'])-
parent(['object', 'null'])Cannot contain additional properties.id(['string', 'null'], required)Required. Must not be the same as the customer id. Must exist in the system.name(['string', 'null'])
-
partner(['string', 'null'])Optional. Partner name. paymentEmailAddress(['string', 'null'], format: email)Optional. Payment email address. Must be a valid email if provided.phoneNumber(['string', 'null'])Optional. Phone number.productionFileLocation(['string', 'null'])Optional. Production file location.salesRep(['string', 'null'])Optional. Sales representative.-
shipMethodMappings(['array', 'null'])Optional. Ship method mappings for the customer.-
Items (object)Cannot contain additional properties.
ratesProviderShipMethodId(string, required)Required. Rates provider ship method identifier.sourceSystemShipMethodId(string, required)Required. Source system ship method identifier.-
fulfillmentSystemShipMethods(array, required)Required. Fulfillment system ship methods.-
Items (object)Cannot contain additional properties.
fulfillmentSystemId(integer, format: int64, required)Required. Fulfillment system identifier.fulfillmentSystemShipMethodId(string, required)Required. Fulfillment system ship method identifier.
-
-
trackingUrl(['string', 'null'])Optional. Tracking URL.
-
-
sourceSystems(['array', 'null'])Optional. Source systems for the customer.-
Items (object)Cannot contain additional properties.
id(integer, format: int64, required)Required. Source system identifier.sourceSystemCustomerId(string)This is an automatically generated field added by middleware. It is considered read-only.
-
-
subsidiary(['string', 'null'])Optional. Subsidiary name. website(['string', 'null'])Optional. Website URL.
Quicktype Command
quicktype \
--framework SystemTextJson \
--lang cs \
--number-type double \
--src-lang schema \
--no-check-required \
--density dense \
--features complete \
--namespace OtpSchema.Api.CustomerBroker.CreateCustomerRequest \
--src .working/build/internal/json-schema-for-cs/CreateCustomerRequest.json -o .working/build/internal/csharp/OtpSchema/Api/CustomerBroker/CreateCustomerRequest.cs
// <auto-generated />
//
// To parse this JSON data, add NuGet 'System.Text.Json' then do:
//
// using OtpSchema.Api.CustomerBroker.CreateCustomerRequest;
//
// var createCustomerRequest = CreateCustomerRequest.FromJson(jsonString);
#nullable enable
#pragma warning disable CS8618
#pragma warning disable CS8601
#pragma warning disable CS8603
namespace OtpSchema.Api.CustomerBroker.CreateCustomerRequest
{
using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Globalization;
using J = System.Text.Json.Serialization.JsonPropertyNameAttribute;
using N = System.Text.Json.Serialization.JsonIgnoreCondition;
public partial class CreateCustomerRequest
{
[J("billingEntities")] public BillingEntity[] BillingEntities { get; set; }
[J("billToCodeRequiredOnOrder")] public bool BillToCodeRequiredOnOrder { get; set; } // Required. Indicates whether BillTo code is required on order placement.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("brokerScopes")] public string[] BrokerScopes { get; set; }
[J("contactAddress")] public ContactAddress ContactAddress { get; set; }
[J("contactEmailAddress")] public string ContactEmailAddress { get; set; } // Optional. Contact email address. Must be a valid email if provided.
[J("createDateTimeUtc")] public string CreateDateTimeUtc { get; set; } // Optional. Creation date/time in UTC. Must not be in the future if provided.
[J("defaultWarehouseId")] public string DefaultWarehouseId { get; set; } // Optional. Warehouse identifier.
[J("doValidateOrderPrice")] public bool DoValidateOrderPrice { get; set; } // Required. Indicates whether order price validation is performed on order placement for; the Sales Order.
[J("emailNotificationSubscriptions")] public EmailNotificationSubscription[] EmailNotificationSubscriptions { get; set; } // Optional. List of email notification subscriptions.
[J("id")][JsonConverter(typeof(MinMaxLengthCheckConverter))] public string Id { get; set; } // Required. Unique customer identifier. Must not be empty. Must exist for update. Cannot be; the same as parent.id.
[J("invoiceEmailAddress")] public string InvoiceEmailAddress { get; set; } // Optional. Invoice email address. Must be a valid email if provided.
[J("name")][JsonConverter(typeof(MinMaxLengthCheckConverter))] public string Name { get; set; } // Required. Customer name.
[J("offerRevisionDelimiter")] public string OfferRevisionDelimiter { get; set; }
[J("parent")] public Parent Parent { get; set; }
[J("partner")] public string Partner { get; set; } // Optional. Partner name.
[J("paymentEmailAddress")] public string PaymentEmailAddress { get; set; } // Optional. Payment email address. Must be a valid email if provided.
[J("phoneNumber")] public string PhoneNumber { get; set; } // Optional. Phone number.
[J("productionFileLocation")] public string ProductionFileLocation { get; set; } // Optional. Production file location.
[J("salesRep")] public string SalesRep { get; set; } // Optional. Sales representative.
[J("shipMethodMappings")] public ShipMethodMapping[] ShipMethodMappings { get; set; } // Optional. Ship method mappings for the customer.
[J("sourceSystems")] public SourceSystem[] SourceSystems { get; set; } // Optional. Source systems for the customer.
[J("subsidiary")] public string Subsidiary { get; set; } // Optional. Subsidiary name.
[J("website")] public string Website { get; set; } // Optional. Website URL.
[J("xmlSenderId")] public string XmlSenderId { get; set; } // Optional. XML sender identifier.
}
public partial class BillingEntity
{
[J("addresses")] public Address[] Addresses { get; set; } // Required. Child addresses. Must be an empty array [] for create operations (business rule; override).
[J("id")] public string Id { get; set; } // Required. Billing entity identifier.
[J("isDefaultForCustomer")] public bool IsDefaultForCustomer { get; set; } // Required. Indicates whether this is the default billing entity for the customer.
[J("xmlSenderId")] public string XmlSenderId { get; set; } // Optional. XmlSenderId override.
}
public partial class Address
{
[J("code")] public string Code { get; set; } // Required. Code for the address.
[J("xmlSenderId")] public string XmlSenderId { get; set; } // Optional. XmlSenderId.
}
public partial class ContactAddress
{
[J("address1")] public string Address1 { get; set; } // Required if contactAddress is present. Address line 1. Must not be empty.
[J("address2")] public string Address2 { get; set; } // Optional. Address line 2.
[J("address3")] public string Address3 { get; set; } // Optional. Address line 3.
[J("city")] public string City { get; set; } // Required if contactAddress is present. City. Must not be empty.
[J("company")] public string Company { get; set; } // Optional. Company name.
[J("country")] public string Country { get; set; } // Required if contactAddress is present. Country. Must not be empty.
[J("faxNumber")] public string FaxNumber { get; set; } // Optional. Fax number.
[J("name")] public string Name { get; set; } // Optional. Contact name.
[J("phoneNumber")] public string PhoneNumber { get; set; } // Optional. Phone number.
[J("postalCode")] public string PostalCode { get; set; } // Required if contactAddress is present. Postal code. Must not be empty.
[J("stateProvince")] public string StateProvince { get; set; } // Required. State or province.
}
public partial class EmailNotificationSubscription
{
[J("emailAddresses")] public string[] EmailAddresses { get; set; } // Required. Array of email addresses.
[J("emailNotificationTemplateId")] public string EmailNotificationTemplateId { get; set; } // Required. Email notification template identifier.
}
public partial class Parent
{
[J("id")] public string Id { get; set; } // Required. Must not be the same as the customer id. Must exist in the system.
[J("name")] public string Name { get; set; }
}
public partial class ShipMethodMapping
{
[J("fulfillmentSystemShipMethods")] public FulfillmentSystemShipMethod[] FulfillmentSystemShipMethods { get; set; } // Required. Fulfillment system ship methods.
[J("ratesProviderShipMethodId")] public string RatesProviderShipMethodId { get; set; } // Required. Rates provider ship method identifier.
[J("sourceSystemShipMethodId")] public string SourceSystemShipMethodId { get; set; } // Required. Source system ship method identifier.
[J("trackingUrl")] public string TrackingUrl { get; set; } // Optional. Tracking URL.
}
public partial class FulfillmentSystemShipMethod
{
[J("fulfillmentSystemId")] public long FulfillmentSystemId { get; set; } // Required. Fulfillment system identifier.
[J("fulfillmentSystemShipMethodId")] public string FulfillmentSystemShipMethodId { get; set; } // Required. Fulfillment system ship method identifier.
}
public partial class SourceSystem
{
[J("id")] public long Id { get; set; } // Required. Source system identifier.
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)][J("sourceSystemCustomerId")] public string SourceSystemCustomerId { get; set; } // This is an automatically generated field added by middleware. It is considered read-only
}
public partial class CreateCustomerRequest
{
public static CreateCustomerRequest FromJson(string json) => JsonSerializer.Deserialize<CreateCustomerRequest>(json, OtpSchema.Api.CustomerBroker.CreateCustomerRequest.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this CreateCustomerRequest self) => JsonSerializer.Serialize(self, OtpSchema.Api.CustomerBroker.CreateCustomerRequest.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerOptions Settings = new(JsonSerializerDefaults.General)
{
Converters =
{
new DateOnlyConverter(),
new TimeOnlyConverter(),
IsoDateTimeOffsetConverter.Singleton
},
};
}
internal class MinMaxLengthCheckConverter : JsonConverter<string>
{
public override bool CanConvert(Type t) => t == typeof(string);
public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var value = reader.GetString();
if (value != null && value.Length >= 1)
{
return value;
}
throw new Exception("Cannot unmarshal type string");
}
public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
{
if (value != null && value.Length >= 1)
{
JsonSerializer.Serialize(writer, value, options);
return;
}
throw new Exception("Cannot marshal type string");
}
public static readonly MinMaxLengthCheckConverter Singleton = new MinMaxLengthCheckConverter();
}
public class DateOnlyConverter : JsonConverter<DateOnly>
{
private readonly string serializationFormat;
public DateOnlyConverter() : this(null) { }
public DateOnlyConverter(string? serializationFormat)
{
this.serializationFormat = serializationFormat ?? "yyyy-MM-dd";
}
public override DateOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var value = reader.GetString();
return DateOnly.Parse(value!);
}
public override void Write(Utf8JsonWriter writer, DateOnly value, JsonSerializerOptions options)
=> writer.WriteStringValue(value.ToString(serializationFormat));
}
public class TimeOnlyConverter : JsonConverter<TimeOnly>
{
private readonly string serializationFormat;
public TimeOnlyConverter() : this(null) { }
public TimeOnlyConverter(string? serializationFormat)
{
this.serializationFormat = serializationFormat ?? "HH:mm:ss.fff";
}
public override TimeOnly Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var value = reader.GetString();
return TimeOnly.Parse(value!);
}
public override void Write(Utf8JsonWriter writer, TimeOnly value, JsonSerializerOptions options)
=> writer.WriteStringValue(value.ToString(serializationFormat));
}
internal class IsoDateTimeOffsetConverter : JsonConverter<DateTimeOffset>
{
public override bool CanConvert(Type t) => t == typeof(DateTimeOffset);
private const string DefaultDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK";
private DateTimeStyles _dateTimeStyles = DateTimeStyles.RoundtripKind;
private string? _dateTimeFormat;
private CultureInfo? _culture;
public DateTimeStyles DateTimeStyles
{
get => _dateTimeStyles;
set => _dateTimeStyles = value;
}
public string? DateTimeFormat
{
get => _dateTimeFormat ?? string.Empty;
set => _dateTimeFormat = (string.IsNullOrEmpty(value)) ? null : value;
}
public CultureInfo Culture
{
get => _culture ?? CultureInfo.CurrentCulture;
set => _culture = value;
}
public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonSerializerOptions options)
{
string text;
if ((_dateTimeStyles & DateTimeStyles.AdjustToUniversal) == DateTimeStyles.AdjustToUniversal
|| (_dateTimeStyles & DateTimeStyles.AssumeUniversal) == DateTimeStyles.AssumeUniversal)
{
value = value.ToUniversalTime();
}
text = value.ToString(_dateTimeFormat ?? DefaultDateTimeFormat, Culture);
writer.WriteStringValue(text);
}
public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
string? dateText = reader.GetString();
if (string.IsNullOrEmpty(dateText) == false)
{
if (!string.IsNullOrEmpty(_dateTimeFormat))
{
return DateTimeOffset.ParseExact(dateText, _dateTimeFormat, Culture, _dateTimeStyles);
}
else
{
return DateTimeOffset.Parse(dateText, Culture, _dateTimeStyles);
}
}
else
{
return default(DateTimeOffset);
}
}
public static readonly IsoDateTimeOffsetConverter Singleton = new IsoDateTimeOffsetConverter();
}
}
#pragma warning restore CS8618
#pragma warning restore CS8601
#pragma warning restore CS8603
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "CreateCustomerRequest.json",
"type": "object",
"additionalProperties": false,
"properties": {
"defaultWarehouseId": { "description": "Optional. Warehouse identifier.", "type": ["string", "null"] },
"id": {
"description": "Required. Unique customer identifier. Must not be empty. Must exist for update. Cannot be the same as parent.id.",
"type": "string",
"minLength": 1
},
"xmlSenderId": {
"description": "Optional. XML sender identifier.",
"type": ["string", "null"]
},
"billToCodeRequiredOnOrder": {
"description": "Required. Indicates whether BillTo code is required on order placement.",
"type": "boolean"
},
"billingEntities": {
"type": ["array", "null"],
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {"description": "Required. Billing entity identifier.", "type": "string"},
"xmlSenderId": { "description": "Optional. XmlSenderId override.", "type": ["string", "null"] },
"addresses": {
"description": "Required. Child addresses. Must be an empty array [] for create operations (business rule override).",
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"xmlSenderId": { "description": "Optional. XmlSenderId." , "type": ["string", "null"] },
"code" : { "description": "Required. Code for the address.", "type": "string" }
},
"required": ["code"]
},
"maxItems": 0
},
"isDefaultForCustomer": {
"description": "Required. Indicates whether this is the default billing entity for the customer.",
"type": "boolean"
}
},
"required": ["id", "isDefaultForCustomer", "addresses"]
}
},
"brokerScopes": { "type": "array", "items": {"type": "string"} },
"contactAddress": {
"type": ["object", "null"],
"additionalProperties": false,
"properties": {
"address1": {
"description": "Required if contactAddress is present. Address line 1. Must not be empty.",
"type": "string"
},
"address2": { "description": "Optional. Address line 2.", "type": ["string", "null"] },
"address3": { "description": "Optional. Address line 3.", "type": ["string", "null"] },
"city": {
"description": "Required if contactAddress is present. City. Must not be empty.",
"type": "string"
},
"company": { "description": "Optional. Company name.", "type": ["string", "null"] },
"country": {
"description": "Required if contactAddress is present. Country. Must not be empty.",
"type": "string"
},
"faxNumber": { "description": "Optional. Fax number.", "type": ["string", "null"] },
"name": { "description": "Optional. Contact name.", "type": ["string", "null"] },
"phoneNumber": { "description": "Optional. Phone number.", "type": ["string", "null"] },
"postalCode": {
"description": "Required if contactAddress is present. Postal code. Must not be empty.",
"type": "string"
},
"stateProvince": {"description": "Required. State or province.", "type": "string"}
},
"required": ["address1", "city", "country", "postalCode", "stateProvince"]
},
"contactEmailAddress": {
"description": "Optional. Contact email address. Must be a valid email if provided.",
"type": ["string", "null"],
"format": "email"
},
"createDateTimeUtc": {
"description": "Optional. Creation date/time in UTC. Must not be in the future if provided.",
"type": ["string", "null"]
},
"doValidateOrderPrice": {
"description": "Required. Indicates whether order price validation is performed on order placement for the Sales Order.",
"type": "boolean"
},
"emailNotificationSubscriptions": {
"description": "Optional. List of email notification subscriptions.",
"type": ["array", "null"],
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"emailNotificationTemplateId": {
"description": "Required. Email notification template identifier.",
"type": "string"
},
"emailAddresses": {
"description": "Required. Array of email addresses.",
"type": "array",
"items": {"type": "string"}
}
},
"required": ["emailNotificationTemplateId", "emailAddresses"]
}
},
"invoiceEmailAddress": {
"description": "Optional. Invoice email address. Must be a valid email if provided.",
"type": ["string", "null"],
"format": "email"
},
"name": {"description": "Required. Customer name.", "type": "string", "minLength": 1},
"offerRevisionDelimiter": { "type": ["string", "null"] },
"parent": {
"type": ["object", "null"],
"additionalProperties": false,
"properties": {
"id": {
"description": "Required. Must not be the same as the customer id. Must exist in the system.",
"type": ["string", "null"]
},
"name": { "type": ["string", "null"] }
},
"required": ["id"]
},
"partner": { "description": "Optional. Partner name.", "type": ["string", "null"] },
"paymentEmailAddress": {
"description": "Optional. Payment email address. Must be a valid email if provided.",
"type": ["string", "null"],
"format": "email"
},
"phoneNumber": { "description": "Optional. Phone number.", "type": ["string", "null"] },
"productionFileLocation": {
"description": "Optional. Production file location.",
"type": ["string", "null"]
},
"salesRep": { "description": "Optional. Sales representative.", "type": ["string", "null"] },
"shipMethodMappings": {
"description": "Optional. Ship method mappings for the customer.",
"type": ["array", "null"],
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"ratesProviderShipMethodId": {
"description": "Required. Rates provider ship method identifier.",
"type": "string"
},
"sourceSystemShipMethodId": {
"description": "Required. Source system ship method identifier.",
"type": "string"
},
"fulfillmentSystemShipMethods": {
"description": "Required. Fulfillment system ship methods.",
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"fulfillmentSystemId": {
"description": "Required. Fulfillment system identifier.",
"type": "integer",
"format": "int64"
},
"fulfillmentSystemShipMethodId": {
"description": "Required. Fulfillment system ship method identifier.",
"type": "string"
}
},
"required": ["fulfillmentSystemId", "fulfillmentSystemShipMethodId"]
}
},
"trackingUrl": { "description": "Optional. Tracking URL.", "type": ["string", "null"] }
},
"required": [
"fulfillmentSystemShipMethods", "ratesProviderShipMethodId",
"sourceSystemShipMethodId"
]
}
},
"sourceSystems": {
"description": "Optional. Source systems for the customer.",
"type": ["array", "null"],
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"description": "Required. Source system identifier.",
"type": "integer",
"format": "int64"
},
"sourceSystemCustomerId": {
"description": "This is an automatically generated field added by middleware. It is considered read-only",
"type": "string",
"readonly": true
}
},
"required": ["id"]
}
},
"subsidiary": { "description": "Optional. Subsidiary name.", "type": ["string", "null"] },
"website": { "description": "Optional. Website URL.", "type": ["string", "null"] }
},
"required": ["id", "name", "doValidateOrderPrice", "billToCodeRequiredOnOrder"]
}