UpdateCustomerRequest
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.-
billingEntities(array)Billing entities. At least one is required. Length must be at least 1.-
Items (object)Cannot contain additional properties.
id(string, required)Required. Billing entity identifier. Must not be empty.xmlSenderId(['string', 'null'])Optional. XmlSenderId override.-
addresses(array, required)Required. Addresses linked to this billing entity.-
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', 'null'])Optional. Broker scopes.- Items (string)
-
contactAddress(['object', 'null'])Optional. Contact address. 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 if contactAddress is present. State or province. Must not be empty.
-
contactEmailAddress(['string', 'null'], format: email)Optional. Contact email address. Must be a valid email if provided. directMailProvider(['string', 'null'])Optional. Direct mail provider.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', 'null'])Optional. Email notification template identifier.-
emailAddresses(['array', 'null'])Optional. Array of email addresses.- Items (string)
-
-
emailServiceProvider(['string', 'null'])Optional. Email service provider. inheritParentOffers(['boolean', 'null'])Optional. Inherit parent offers flag. Defaults to false. Default:false.invoiceEmailAddress(['string', 'null'], format: email)Optional. Invoice email address. Must be a valid email if provided.mailingFileLocation(['string', 'null'])Optional. Mailing file location.name(string)Required. Customer name.offerRevisionDelimiter(['string', 'null'])Optional. Offer revision delimiter.-
parent(['object', 'null'])Optional. Parent customer reference. Cannot contain additional properties.id(['string', 'null'])Optional. Parent customer ID.name(['string', 'null'])Optional. Parent customer name.
-
paymentEmailAddress(['string', 'null'], format: email)Optional. Payment email address. Must be a valid email if provided. productionFileLocation(['string', 'null'])Optional. Production file location.-
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, 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, required)Required. Source system identifier.sourceSystemCustomerId(string)This is an automatically generated field added by middleware. It is considered read-only.
-
-
updateDateTimeUtc(['string', 'null'])Optional. Update date/time in UTC. useDefaultBillingEntity(['boolean', 'null'])Optional. Use default billing entity flag.
Quicktype Command
quicktype \
--framework SystemTextJson \
--lang cs \
--number-type double \
--src-lang schema \
--no-check-required \
--density dense \
--features complete \
--namespace OtpSchema.Api.CustomerBroker.UpdateCustomerRequest \
--src .working/build/internal/json-schema-for-cs/UpdateCustomerRequest.json -o .working/build/internal/csharp/OtpSchema/Api/CustomerBroker/UpdateCustomerRequest.cs
// <auto-generated />
//
// To parse this JSON data, add NuGet 'System.Text.Json' then do:
//
// using OtpSchema.Api.CustomerBroker.UpdateCustomerRequest;
//
// var updateCustomerRequest = UpdateCustomerRequest.FromJson(jsonString);
#nullable enable
#pragma warning disable CS8618
#pragma warning disable CS8601
#pragma warning disable CS8603
namespace OtpSchema.Api.CustomerBroker.UpdateCustomerRequest
{
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 UpdateCustomerRequest
{
[J("billingEntities")] public BillingEntity[]? BillingEntities { get; set; } // Billing entities. At least one is required.
[J("brokerScopes")] public string[]? BrokerScopes { get; set; } // Optional. Broker scopes.
[J("contactAddress")] public ContactAddress ContactAddress { get; set; } // Optional. Contact address.
[J("contactEmailAddress")] public string ContactEmailAddress { get; set; } // Optional. Contact email address. Must be a valid email if provided.
[J("defaultWarehouseId")] public string DefaultWarehouseId { get; set; } // Optional. Warehouse identifier.
[J("directMailProvider")] public string DirectMailProvider { get; set; } // Optional. Direct mail provider.
[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("emailServiceProvider")] public string EmailServiceProvider { get; set; } // Optional. Email service provider.
[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("inheritParentOffers")] public bool? InheritParentOffers { get; set; } // Optional. Inherit parent offers flag. Defaults to false.
[J("invoiceEmailAddress")] public string InvoiceEmailAddress { get; set; } // Optional. Invoice email address. Must be a valid email if provided.
[J("mailingFileLocation")] public string MailingFileLocation { get; set; } // Optional. Mailing file location.
[J("name")][JsonConverter(typeof(MinMaxLengthCheckConverter))] public string Name { get; set; } // Required. Customer name.
[J("offerRevisionDelimiter")] public string OfferRevisionDelimiter { get; set; } // Optional. Offer revision delimiter.
[J("parent")] public Parent Parent { get; set; } // Optional. Parent customer reference.
[J("paymentEmailAddress")] public string PaymentEmailAddress { get; set; } // Optional. Payment email address. Must be a valid email if provided.
[J("productionFileLocation")] public string ProductionFileLocation { get; set; } // Optional. Production file location.
[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("updateDateTimeUtc")] public string UpdateDateTimeUtc { get; set; } // Optional. Update date/time in UTC.
[J("useDefaultBillingEntity")] public bool? UseDefaultBillingEntity { get; set; } // Optional. Use default billing entity flag.
[J("xmlSenderId")] public string XmlSenderId { get; set; } // Optional. XML sender identifier.
}
public partial class BillingEntity
{
[J("addresses")] public Address[]? Addresses { get; set; } // Required. Addresses linked to this billing entity.
[J("id")][JsonConverter(typeof(MinMaxLengthCheckConverter))] public string Id { get; set; } // Required. Billing entity identifier. Must not be empty.
[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")][JsonConverter(typeof(MinMaxLengthCheckConverter))] 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")][JsonConverter(typeof(MinMaxLengthCheckConverter))] 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")][JsonConverter(typeof(MinMaxLengthCheckConverter))] 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")][JsonConverter(typeof(MinMaxLengthCheckConverter))] public string PostalCode { get; set; } // Required if contactAddress is present. Postal code. Must not be empty.
[J("stateProvince")][JsonConverter(typeof(MinMaxLengthCheckConverter))] public string StateProvince { get; set; } // Required if contactAddress is present. State or province. Must not be empty.
}
public partial class EmailNotificationSubscription
{
[J("emailAddresses")] public string[]? EmailAddresses { get; set; } // Optional. Array of email addresses.
[J("emailNotificationTemplateId")] public string EmailNotificationTemplateId { get; set; } // Optional. Email notification template identifier.
}
public partial class Parent
{
[J("id")] public string Id { get; set; } // Optional. Parent customer ID.
[J("name")] public string Name { get; set; } // Optional. Parent customer name.
}
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 UpdateCustomerRequest
{
public static UpdateCustomerRequest FromJson(string json) => JsonSerializer.Deserialize<UpdateCustomerRequest>(json, OtpSchema.Api.CustomerBroker.UpdateCustomerRequest.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this UpdateCustomerRequest self) => JsonSerializer.Serialize(self, OtpSchema.Api.CustomerBroker.UpdateCustomerRequest.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": "UpdateCustomerRequest.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"]
},
"billingEntities": {
"description": "Billing entities. At least one is required.",
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"description": "Required. Billing entity identifier. Must not be empty.",
"type": "string",
"minLength": 1
},
"xmlSenderId": { "description": "Optional. XmlSenderId override.", "type": ["string", "null"] },
"addresses": {
"description": "Required. Addresses linked to this billing entity.",
"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"]
}
},
"isDefaultForCustomer": {
"description": "Required. Indicates whether this is the default billing entity for the customer.",
"type": "boolean"
}
},
"required": ["id", "isDefaultForCustomer", "addresses"]
},
"minItems": 1
},
"brokerScopes": {
"description": "Optional. Broker scopes.",
"type": ["array", "null"],
"items": {"type": "string"}
},
"contactAddress": {
"description": "Optional. Contact address.",
"type": ["object", "null"],
"additionalProperties": false,
"properties": {
"address1": {
"description": "Required if contactAddress is present. Address line 1. Must not be empty.",
"type": "string",
"minLength": 1
},
"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",
"minLength": 1
},
"company": { "description": "Optional. Company name.", "type": ["string", "null"] },
"country": {
"description": "Required if contactAddress is present. Country. Must not be empty.",
"type": "string",
"minLength": 1
},
"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",
"minLength": 1
},
"stateProvince": {
"description": "Required if contactAddress is present. State or province. Must not be empty.",
"type": "string",
"minLength": 1
}
},
"required": ["address1", "city", "country", "postalCode", "stateProvince"]
},
"contactEmailAddress": {
"description": "Optional. Contact email address. Must be a valid email if provided.",
"type": ["string", "null"],
"format": "email"
},
"directMailProvider": { "description": "Optional. Direct mail provider.", "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": "Optional. Email notification template identifier.",
"type": ["string", "null"]
},
"emailAddresses": {
"description": "Optional. Array of email addresses.",
"type": ["array", "null"],
"items": {"type": "string"}
}
}
}
},
"emailServiceProvider": {
"description": "Optional. Email service provider.",
"type": ["string", "null"]
},
"inheritParentOffers": {
"description": "Optional. Inherit parent offers flag. Defaults to false.",
"type": ["boolean", "null"],
"default": false
},
"invoiceEmailAddress": {
"description": "Optional. Invoice email address. Must be a valid email if provided.",
"type": ["string", "null"],
"format": "email"
},
"mailingFileLocation": {
"description": "Optional. Mailing file location.",
"type": ["string", "null"]
},
"name": {"description": "Required. Customer name.", "type": "string", "minLength": 1},
"offerRevisionDelimiter": {
"description": "Optional. Offer revision delimiter.",
"type": ["string", "null"]
},
"parent": {
"description": "Optional. Parent customer reference.",
"type": ["object", "null"],
"additionalProperties": false,
"properties": {
"id" : { "description": "Optional. Parent customer ID." , "type": ["string", "null"] },
"name": { "description": "Optional. Parent customer name.", "type": ["string", "null"] }
}
},
"paymentEmailAddress": {
"description": "Optional. Payment email address. Must be a valid email if provided.",
"type": ["string", "null"],
"format": "email"
},
"productionFileLocation": {
"description": "Optional. Production file location.",
"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"},
"fulfillmentSystemShipMethodId": {
"description": "Required. Fulfillment system ship method identifier.",
"type": "string"
}
},
"required": ["fulfillmentSystemId", "fulfillmentSystemShipMethodId"]
}
},
"trackingUrl": { "description": "Optional. Tracking URL.", "type": ["string", "null"] }
},
"required": [
"sourceSystemShipMethodId", "ratesProviderShipMethodId",
"fulfillmentSystemShipMethods"
]
}
},
"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"},
"sourceSystemCustomerId": {
"description": "This is an automatically generated field added by middleware. It is considered read-only",
"type": "string",
"readonly": true
}
},
"required": ["id"]
}
},
"updateDateTimeUtc": {
"description": "Optional. Update date/time in UTC.",
"type": ["string", "null"]
},
"useDefaultBillingEntity": {
"description": "Optional. Use default billing entity flag.",
"type": ["boolean", "null"]
}
},
"required": ["id", "name", "doValidateOrderPrice", "billingEntities"]
}