/**
 * Shell Card Management APIsLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import { nullable, number, object, optional, Schema, string } from '../schema';

/** Delivery address. */
export interface CardDetailsResponseCardDeliveryAddress {
  /** Fore name of the contact person */
  contactForeName?: string;
  /** Middle name of the contact person */
  contactMiddleName?: string;
  /** Last name of the contact person */
  contactLastName?: string;
  /** Title of the contact person Optional Max field length- 10 Note- If the Shell Card Platform configuration is set to clear the personal details captured on card orders, this value will be cleared from the record after processing the request. */
  contactTitle?: string;
  /** Company name Mandatory if IsNewDeliveryAddress and OrderReplacement are passed. True, Note- If the Shell Card Platform configuration is set to clear the personal details captured on card orders, this value will be cleared from the record after processing the request. */
  companyName: string;
  /** Address Id in cards platform. */
  addressId: number;
  /** Address line 1 Mandatory if IsNewDeliveryAddress and OrderReplacement are passed True. Max field length- 40 Note- If the Shell Card Platform configuration is set to clear the personal details captured on card orders, this value will be cleared from the record after processing the request. */
  addressLine1: string;
  /** Address line 2 Optional Max field length- 40 Note- If the Shell Card Platform configuration is set to clear the personal details captured on card orders, this value will be cleared from the record after processing the request. */
  addressLine2?: string;
  /** Address line Optional Max field length- 40 Note- If the Shell Card Platform configuration is set to clear the personal details captured on card orders, this value will be cleared from the record after processing the request. */
  addressLine3?: string;
  /** ZIP code Mandatory if IsNewDeliveryAddress and OrderReplacement are passed. True, Max field length- 10 Note- If the Shell Card Platform configuration is set to clear the personal details captured on card orders, this value will be cleared from the record after processing the request. */
  zipCode: string;
  /** City Max field length- 40 Note- If the Shell Card Platform configuration is set to clear the personal details captured on card orders, this value will be cleared from the record after processing the request. */
  city?: string;
  /** Region Id */
  regionId?: number | null;
  /** Region Optional When region is passed, Shell Card Platform will look up for the region id for the given region.  If the option to clear personal details is set in the Shell Card Platform, then this value will be cleared from the record after processing the request . */
  region?: string;
  /** Country Id in cards platform. */
  countryId: number;
  /** The ISO code of the country. Mandatory if IsNewDeliveryAddress and OrderReplacement are passed. If the option to clear personal details is set in the Shell Card Platform, then this value will be cleared from the record after processing the request . */
  countryISOCode: string;
  /** Country name. */
  country: string;
}

export const cardDetailsResponseCardDeliveryAddressSchema: Schema<CardDetailsResponseCardDeliveryAddress> = object(
  {
    contactForeName: ['ContactForeName', optional(string())],
    contactMiddleName: ['ContactMiddleName', optional(string())],
    contactLastName: ['ContactLastName', optional(string())],
    contactTitle: ['ContactTitle', optional(string())],
    companyName: ['CompanyName', string()],
    addressId: ['AddressId', number()],
    addressLine1: ['AddressLine1', string()],
    addressLine2: ['AddressLine2', optional(string())],
    addressLine3: ['AddressLine3', optional(string())],
    zipCode: ['ZipCode', string()],
    city: ['City', optional(string())],
    regionId: ['RegionId', optional(nullable(number()))],
    region: ['Region', optional(string())],
    countryId: ['CountryId', number()],
    countryISOCode: ['CountryISOCode', string()],
    country: ['Country', string()],
  }
);
