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

import {
  array,
  lazy,
  number,
  object,
  optional,
  Schema,
  string,
} from '../schema.js';
import {
  AccountResponseAccountsItems,
  accountResponseAccountsItemsSchema,
} from './accountResponseAccountsItems.js';
import { Warning, warningSchema } from './warning.js';

export interface AccountRes {
  /** Unique identifier for the request. This will be played back in the response from the request. */
  requestId?: string;
  /** Status of the request */
  status?: string;
  data?: AccountResponseAccountsItems[];
  /** Current Page */
  page?: number;
  /** Total row count matched for the given input criteria */
  totalRecords?: number;
  /** Calculated page count based on page size from the incoming API request and total number of rows matched for the given input criteria. Return 1 if the page size is -1 as all records are returned. */
  totalPages?: number;
  /** Page Size – Number of records to show on current page. */
  pageSize?: number;
  /**
   * A list of Warning entity.
   * This entity will hold the details of the scheduled System Outages of any dependent applications of this service.
   * Note: If there is no scheduled outage information available, in the configuration in AMS, for this service, this parameter won’t be present in output.
   */
  warnings?: Warning[];
}

export const accountResSchema: Schema<AccountRes> = lazy(() =>
  object({
    requestId: ['RequestId', optional(string())],
    status: ['Status', optional(string())],
    data: ['Data', optional(array(accountResponseAccountsItemsSchema))],
    page: ['Page', optional(number())],
    totalRecords: ['TotalRecords', optional(number())],
    totalPages: ['TotalPages', optional(number())],
    pageSize: ['PageSize', optional(number())],
    warnings: ['Warnings', optional(array(warningSchema))],
  })
);
