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

import { array, boolean, object, optional, Schema, string } from '../schema.js';

export interface PartnerSiteRestriction {
  /**
   * Gateway network codes, typically 7 or 10 digits, where sites and site groups belong to.
   * Example: 0002003250
   */
  networkCode?: string;
  /**
   * A list of Site IDs in this network which needs to be either restricted or allowed.
   * For example, 97123, 97155
   * A list of values must be passed for either Sites or SiteGroups or both.
   * Max 10 sites are allowed for the Partner site Restriction.
   */
  sites?: string[];
  /**
   * A list of site group ids in this network which needs to be either restricted or allowed.
   * For example, 83649200
   * A list of values must be passed for either Sites or SiteGroups or both.
   * Max 10 sites groups are allowed for the Partner site Restriction.
   */
  siteGroups?: string[];
  /**
   * Flag indicates whether the profile is inclusive or exclusive.
   * Mandatory
   * Example: False - (inclusive), i.e. the “Sites” & “SiteGroups” properties lists the sites & site groups where the transaction will be allowed.
   * True - (exclusive), i.e. the “Sites” & “SiteGroups” properties lists the sites and site groups where the transactions will be declined.
   */
  exclusive?: boolean;
}

export const partnerSiteRestrictionSchema: Schema<PartnerSiteRestriction> = object(
  {
    networkCode: ['NetworkCode', optional(string())],
    sites: ['Sites', optional(array(string()))],
    siteGroups: ['SiteGroups', optional(array(string()))],
    exclusive: ['Exclusive', optional(boolean())],
  }
);
