/**
 * Auto-generated schema from XSD
 * 
 * DO NOT EDIT - Generated by ts-xsd codegen
 * Source: xsd/sap/atcexemption.xsd
 */

import atcfinding from './atcfinding';
import atc from './atc';

export default {
  $xmlns: {
    xsd: 'http://www.w3.org/2001/XMLSchema',
    ecore: 'http://www.eclipse.org/emf/2002/Ecore',
    atcexmpt: 'http://www.sap.com/adt/atc/exemption',
    atcfinding: 'http://www.sap.com/adt/atc/finding',
    atc: 'http://www.sap.com/adt/atc',
  },
  $imports: [
    atcfinding,
    atc,
  ],
  targetNamespace: 'http://www.sap.com/adt/atc/exemption',
  attributeFormDefault: 'unqualified',
  elementFormDefault: 'qualified',
  complexType: [
    {
      name: 'AtcExemptionThisFinding',
      simpleContent: {
        extension: {
          base: 'xsd:boolean',
          attribute: [
            {
              name: 'enabled',
              type: 'xsd:boolean',
              use: 'required',
            },
          ],
        },
      },
    },
    {
      name: 'AtcExemptionObjectRestriction',
      simpleContent: {
        extension: {
          base: 'xsd:string',
          attribute: [
            {
              name: 'subobject',
              type: 'xsd:boolean',
              use: 'optional',
            },
            {
              name: 'object',
              type: 'xsd:boolean',
              use: 'optional',
            },
            {
              name: 'package',
              type: 'xsd:boolean',
              use: 'optional',
            },
          ],
        },
      },
    },
    {
      name: 'AtcExemptionCheckRestriction',
      simpleContent: {
        extension: {
          base: 'xsd:string',
          attribute: [
            {
              name: 'message',
              type: 'xsd:boolean',
            },
            {
              name: 'check',
              type: 'xsd:boolean',
            },
          ],
        },
      },
    },
    {
      name: 'AtcExemptionValidityRestriction',
      simpleContent: {
        extension: {
          base: 'xsd:string',
          attribute: [
            {
              name: 'unrestricted',
              type: 'xsd:boolean',
              use: 'optional',
            },
            {
              name: 'date',
              type: 'xsd:boolean',
              use: 'optional',
            },
            {
              name: 'component_release',
              type: 'xsd:boolean',
              use: 'optional',
            },
            {
              name: 'support_package',
              type: 'xsd:boolean',
              use: 'optional',
            },
          ],
        },
      },
    },
    {
      name: 'AtcExemptionRangeOfFindings',
      sequence: {
        element: [
          {
            name: 'restrictByObject',
            type: 'atcexmpt:AtcExemptionObjectRestriction',
          },
          {
            name: 'restrictByCheck',
            type: 'atcexmpt:AtcExemptionCheckRestriction',
          },
          {
            name: 'restrictByValidity',
            type: 'atcexmpt:AtcExemptionValidityRestriction',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
      attribute: [
        {
          name: 'enabled',
          type: 'xsd:boolean',
          use: 'required',
        },
      ],
    },
    {
      name: 'AtcExemptionRestriction',
      sequence: {
        element: [
          {
            name: 'thisFinding',
            type: 'atcexmpt:AtcExemptionThisFinding',
          },
          {
            name: 'rangeOfFindings',
            type: 'atcexmpt:AtcExemptionRangeOfFindings',
          },
        ],
      },
    },
    {
      name: 'AtcExemptionProposal',
      sequence: {
        element: [
          {
            name: 'finding',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            ref: 'atcfinding:finding',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'package',
            type: 'xsd:string',
          },
          {
            name: 'subObject',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'subObjectType',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'subObjectTypeDescr',
            type: 'xsd:string',
          },
          {
            name: 'objectTypeDescr',
            type: 'xsd:string',
          },
          {
            name: 'restriction',
            type: 'atcexmpt:AtcExemptionRestriction',
          },
          {
            name: 'approver',
            type: 'xsd:string',
          },
          {
            name: 'apprIsArea',
            type: 'xsd:string',
            minOccurs: '0',
          },
          {
            name: 'reason',
            type: 'xsd:string',
          },
          {
            name: 'validity',
            type: 'xsd:string',
          },
          {
            name: 'release',
            type: 'xsd:string',
          },
          {
            name: 'softwareComponent',
            type: 'xsd:string',
          },
          {
            name: 'softwareComponentDescription',
            type: 'xsd:string',
          },
          {
            name: 'justification',
            type: 'xsd:string',
          },
          {
            name: 'notify',
            type: 'xsd:string',
          },
          {
            name: 'checkClass',
            type: 'xsd:string',
          },
          {
            name: 'validUntil',
            type: 'xsd:string',
          },
          {
            name: 'supportPackage',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'reasons',
            type: 'atc:AtcReasons',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'validities',
            type: 'atc:AtcValidities',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
    },
    {
      name: 'AtcExemptionStatus',
      sequence: {
        element: [
          {
            name: 'message',
            type: 'xsd:string',
          },
          {
            name: 'type',
            type: 'xsd:string',
          },
        ],
      },
    },
    {
      name: 'AtcExemptionApply',
      sequence: {
        element: [
          {
            name: 'exemptionProposal',
            type: 'atcexmpt:AtcExemptionProposal',
          },
          {
            name: 'status',
            type: 'atcexmpt:AtcExemptionStatus',
          },
        ],
      },
    },
  ],
  element: [
    {
      name: 'exemptionProposal',
      type: 'atcexmpt:AtcExemptionProposal',
    },
    {
      name: 'exemptionApply',
      type: 'atcexmpt:AtcExemptionApply',
    },
    {
      name: 'status',
      type: 'atcexmpt:AtcExemptionStatus',
    },
  ],
} as const;
