/**
 * 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';

export interface AuditResponseAuditsItems {
  /**
   * Account id of the customer.
   * It will be the source account id in case of “Fund Transfer
   */
  accountId?: number | null;
  /**
   * Account number of the customer.
   * It will be the source account number in case of “Fund Transfer”
   */
  accountNumber?: string | null;
  /** Additional information in the request. */
  additionalInformation1?: string | null;
  /** Additional information in the request. */
  additionalInformation2?: string | null;
  /** Additional information in the request. */
  additionalInformation3?: string | null;
  /** Additional information in the request. */
  additionalInformation4?: string | null;
  /** Additional information in the request. */
  additionalInformation5?: string | null;
  /** Additional information in the request. */
  additionalInformation6?: string | null;
  /** Additional information in the request. */
  additionalInformation7?: string | null;
  /** Additional information in the request. */
  additionalInformation8?: string | null;
  /** Additional information in the request. */
  additionalInformation9?: string | null;
  /** Additional information in the request. */
  cardGroupId?: number | null;
  /** Card group name in the request. */
  cardGroupName?: string | null;
  /** Card Id in the request */
  cardId?: number | null;
  /** Collecting company code of the customer */
  colCoCode?: number | null;
  /** Collecting company id of the customer. */
  colCoId?: number | null;
  /** Error code of the request */
  errorCode?: string;
  /** Error description of the request */
  errorString?: string | null;
  /** Global unique request reference provided by client application. */
  globalRequestID?: string | null;
  /**
   * PAN in the request.
   * If Mask PAN is enabled at Microservices configuration then all digits of the PAN, except the last 6 digits, will be masked.
   */
  pAN?: string | null;
  /** Payer id of the customer. */
  payerId?: number | null;
  /** Payer number of the customer. */
  payerNumber?: string | null;
  /**
   * Request processed date.
   * Format: yyyyMMdd HH:mm: ss
   */
  processedOn?: string | null;
  /**
   * vUUID of the user who submitted this request.
   * It will be the UUID of the Driver in the case of “MobilePaymentRegistration”
   */
  requestedBy?: string | null;
  /**
   * User requested operation.
   * Possible values:
   * •    OrderCard
   * •    CreateCardGroup
   * •    PINReminder
   * •    MoveCard
   * •    UpdateCardStatus
   * •    UpdateCardGroup
   * •    AutoRenew
   * •    BulkCardOrder
   * •    BulkCardBlock
   * •    BulkCardOrderMultiAccount
   * •    MobilePaymentRegistration
   * •    UpdateCompanyInfo
   * •    BCOSummary
   * •    BCOMultiAccountSummary
   * •    BCBSummary
   * •    FundTransfer
   * •    DeliveryAddressUpdate
   */
  requestedOperation?: string | null;
  /** Reference number for the requested operation. */
  requestReference?: number | null;
  /**
   * Request type initiated under the requested operation.
   * Possible values:
   * •    OrderCard
   * •    CreateCardGroup
   * •    PINReminder
   * •    MoveCard
   * •    UpdateCardStatus
   * •    UpdateCardGroup
   * •    AutoRenew
   * •    BulkCardOrder
   * •    BulkCardBlock
   * •    BulkCardOrderMultiAccount
   * •    MobilePaymentRegistration
   * •    UpdateCompanyInfo
   * •    BCOSummary
   * •    BCOMultiAccountSummary
   * •    BCBSummary
   * •    FundTransfer
   * •    DeliveryAddressUpdate
   */
  requestType?: string | null;
  /**
   * Status of the request.
   * Possible values:
   * •    Success
   * •    Failed
   * •    InProgress
   * •    Submitted
   * •    Rejected
   * •    PendingApproval
   * •    MailedToCSC
   */
  status?: string | null;
  /**
   * Request submitted date.
   * Format: yyyyMMdd HH:mm: ss
   */
  submittedOn?: string | null;
  /** Reference number for the individual request type. */
  subRequestReference?: number | null;
  /**
   * Display name of the user who submitted this request.
   * It will be the Display Name of the Driver in the case of “MobilePaymentRegistration” in the below format:
   */
  userDisplayName?: string | null;
}

export const auditResponseAuditsItemsSchema: Schema<AuditResponseAuditsItems> = object(
  {
    accountId: ['AccountId', optional(nullable(number()))],
    accountNumber: ['AccountNumber', optional(nullable(string()))],
    additionalInformation1: [
      'AdditionalInformation1',
      optional(nullable(string())),
    ],
    additionalInformation2: [
      'AdditionalInformation2',
      optional(nullable(string())),
    ],
    additionalInformation3: [
      'AdditionalInformation3',
      optional(nullable(string())),
    ],
    additionalInformation4: [
      'AdditionalInformation4',
      optional(nullable(string())),
    ],
    additionalInformation5: [
      'AdditionalInformation5',
      optional(nullable(string())),
    ],
    additionalInformation6: [
      'AdditionalInformation6',
      optional(nullable(string())),
    ],
    additionalInformation7: [
      'AdditionalInformation7',
      optional(nullable(string())),
    ],
    additionalInformation8: [
      'AdditionalInformation8',
      optional(nullable(string())),
    ],
    additionalInformation9: [
      'AdditionalInformation9',
      optional(nullable(string())),
    ],
    cardGroupId: ['CardGroupId', optional(nullable(number()))],
    cardGroupName: ['CardGroupName', optional(nullable(string()))],
    cardId: ['CardId', optional(nullable(number()))],
    colCoCode: ['ColCoCode', optional(nullable(number()))],
    colCoId: ['ColCoId', optional(nullable(number()))],
    errorCode: ['ErrorCode', optional(string())],
    errorString: ['ErrorString', optional(nullable(string()))],
    globalRequestID: ['GlobalRequestID', optional(nullable(string()))],
    pAN: ['PAN', optional(nullable(string()))],
    payerId: ['PayerId', optional(nullable(number()))],
    payerNumber: ['PayerNumber', optional(nullable(string()))],
    processedOn: ['ProcessedOn', optional(nullable(string()))],
    requestedBy: ['RequestedBy', optional(nullable(string()))],
    requestedOperation: ['RequestedOperation', optional(nullable(string()))],
    requestReference: ['RequestReference', optional(nullable(number()))],
    requestType: ['RequestType', optional(nullable(string()))],
    status: ['Status', optional(nullable(string()))],
    submittedOn: ['SubmittedOn', optional(nullable(string()))],
    subRequestReference: ['SubRequestReference', optional(nullable(number()))],
    userDisplayName: ['UserDisplayName', optional(nullable(string()))],
  }
);
