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

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

export interface RestrictioncardsRes {
  /**
   * Account Id of the customer.
   * Example: 123456
   */
  accountId?: number;
  /**
   * Account Number of the customer.
   * Example: GB000000123
   */
  accountNumber?: string;
  /**
   * Unique Card Id
   * Example: 275549
   */
  cardId?: string;
  /**
   * Card PAN.
   * Example: 7002051006629890645
   */
  pAN?: string;
  /** Status of the card usage restriction submitted. Based on the response the value will be set as either “Success” or “Failed”. */
  usageRestrictionStatus?: string;
  /** Response for the usage restriction in case of an error. This field will have a value only when “UsageRestrictionStatus” is “Failed”. */
  usageRestrictionDescription?: string;
  /** Status of the card day/time restriction submitted. Based on the response from Gateway value will be set as either “Success” or “Failed”. */
  dayTimeRestrictionStatus?: string;
  /** Response for the day/time restriction in case of an error. This field will have a value only when “DayTimeRestrictionStatus” is “Failed”. */
  dayTimeRestrictionDescription?: string;
  /** Status of the card product restriction submitted. Based on the response  the value will be set  either as “Success” or “Failed”. */
  productRestrictionStatus?: string;
  /** Response for the product restriction in case of an error. This field will have a value only when “ProductRestrictionStatus” is “Failed”. */
  productRestrictionDescription?: string;
  /** Card Location restriction submitted, based on response value set as “Success” or “Failed”. */
  locationRestrictionStatus?: string;
  /** Response for the location restriction in case of an error. This field will have a value only when “LocationRestrictionStatus” is “Failed”. */
  locationRestrictionStatusDescription?: string;
  /** Error code for validation failure. */
  validationErrorCode?: string;
  /** Description of validation failure. */
  validationErrorDescription?: string;
}

export const restrictioncardsResSchema: Schema<RestrictioncardsRes> = object({
  accountId: ['AccountId', optional(number())],
  accountNumber: ['AccountNumber', optional(string())],
  cardId: ['CardId', optional(string())],
  pAN: ['PAN', optional(string())],
  usageRestrictionStatus: ['UsageRestrictionStatus', optional(string())],
  usageRestrictionDescription: [
    'UsageRestrictionDescription',
    optional(string()),
  ],
  dayTimeRestrictionStatus: ['DayTimeRestrictionStatus', optional(string())],
  dayTimeRestrictionDescription: [
    'DayTimeRestrictionDescription',
    optional(string()),
  ],
  productRestrictionStatus: ['ProductRestrictionStatus', optional(string())],
  productRestrictionDescription: [
    'ProductRestrictionDescription',
    optional(string()),
  ],
  locationRestrictionStatus: ['LocationRestrictionStatus', optional(string())],
  locationRestrictionStatusDescription: [
    'LocationRestrictionStatusDescription',
    optional(string()),
  ],
  validationErrorCode: ['ValidationErrorCode', optional(string())],
  validationErrorDescription: [
    'ValidationErrorDescription',
    optional(string()),
  ],
});
