<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Capabilities.V1.xml">
    <edmx:Include Alias="Capabilities" Namespace="Org.OData.Capabilities.V1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
    <edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
  </edmx:Reference>
  <edmx:DataServices>
    <Schema Namespace="DelegationService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <EntityContainer Name="EntityContainer">
        <EntitySet Name="PermissionTypes" EntityType="DelegationService.PermissionTypes"/>
        <EntitySet Name="AdminConfig" EntityType="DelegationService.AdminConfig">
          <NavigationPropertyBinding Path="permissions" Target="AdminConfigPermissions"/>
        </EntitySet>
        <EntitySet Name="AdminConfigPermissions" EntityType="DelegationService.AdminConfigPermissions">
          <NavigationPropertyBinding Path="config" Target="AdminConfig"/>
        </EntitySet>
        <EntitySet Name="Assignments" EntityType="DelegationService.Assignments">
          <NavigationPropertyBinding Path="permissions" Target="AssignmentPermissions"/>
        </EntitySet>
        <EntitySet Name="AssignmentPermissions" EntityType="DelegationService.AssignmentPermissions">
          <NavigationPropertyBinding Path="assignment" Target="Assignments"/>
        </EntitySet>
        <ActionImport Name="saveAdminConfig" Action="DelegationService.saveAdminConfig" EntitySet="AdminConfig"/>
        <ActionImport Name="deleteAdminConfig" Action="DelegationService.deleteAdminConfig"/>
        <ActionImport Name="getMyDelegationContext" Action="DelegationService.getMyDelegationContext"/>
        <ActionImport Name="getMyAssignments" Action="DelegationService.getMyAssignments"/>
        <ActionImport Name="saveAssignment" Action="DelegationService.saveAssignment" EntitySet="Assignments"/>
        <ActionImport Name="deleteAssignment" Action="DelegationService.deleteAssignment"/>
        <ActionImport Name="setProxy" Action="DelegationService.setProxy"/>
      </EntityContainer>
      <EntityType Name="PermissionTypes">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="module" Type="Edm.String" MaxLength="20" Nullable="false"/>
        <Property Name="key" Type="Edm.String" MaxLength="50" Nullable="false"/>
        <Property Name="label" Type="Edm.String" MaxLength="200" Nullable="false"/>
        <Property Name="displayOrder" Type="Edm.Int32" DefaultValue="0"/>
        <Property Name="isActive" Type="Edm.Boolean" DefaultValue="true"/>
        <Property Name="hasSubSettings" Type="Edm.Boolean" DefaultValue="false"/>
      </EntityType>
      <EntityType Name="AdminConfig">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="configurationName" Type="Edm.String" MaxLength="200" Nullable="false"/>
        <Property Name="module" Type="Edm.String" MaxLength="20" Nullable="false"/>
        <Property Name="groupIds" Type="Edm.String" Nullable="false"/>
        <Property Name="isActive" Type="Edm.Boolean" DefaultValue="true"/>
        <Property Name="createdBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="updatedBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updatedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <NavigationProperty Name="permissions" Type="Collection(DelegationService.AdminConfigPermissions)" Partner="config">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
      </EntityType>
      <EntityType Name="AdminConfigPermissions">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="config" Type="DelegationService.AdminConfig" Partner="permissions">
          <ReferentialConstraint Property="config_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="config_ID" Type="Edm.Guid"/>
        <Property Name="permissionTypeKey" Type="Edm.String" MaxLength="50" Nullable="false"/>
        <Property Name="isEnabled" Type="Edm.Boolean" DefaultValue="false"/>
        <Property Name="needApproverRoleToApprove" Type="Edm.Boolean"/>
        <Property Name="allowApproveAnytime" Type="Edm.Boolean"/>
        <Property Name="allowApproveTemporaryWindow" Type="Edm.Boolean"/>
        <Property Name="maxDaysToApprove" Type="Edm.Int32"/>
        <Property Name="startDate" Type="Edm.Date"/>
        <Property Name="endDate" Type="Edm.Date"/>
      </EntityType>
      <EntityType Name="Assignments">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="module" Type="Edm.String" MaxLength="20" Nullable="false"/>
        <Property Name="delegatorEmployeeId" Type="Edm.String" MaxLength="100" Nullable="false"/>
        <Property Name="delegateEmployeeId" Type="Edm.String" MaxLength="100" Nullable="false"/>
        <Property Name="isActive" Type="Edm.Boolean" DefaultValue="true"/>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="createdBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="updatedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updatedBy" Type="Edm.String" MaxLength="255"/>
        <NavigationProperty Name="permissions" Type="Collection(DelegationService.AssignmentPermissions)" Partner="assignment">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
      </EntityType>
      <EntityType Name="AssignmentPermissions">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="assignment" Type="DelegationService.Assignments" Partner="permissions">
          <ReferentialConstraint Property="assignment_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="assignment_ID" Type="Edm.Guid"/>
        <Property Name="permissionTypeKey" Type="Edm.String" MaxLength="50" Nullable="false"/>
        <Property Name="isGranted" Type="Edm.Boolean" DefaultValue="false"/>
        <Property Name="approveFrom" Type="Edm.Date"/>
        <Property Name="approveTo" Type="Edm.Date"/>
        <Property Name="receivesEmails" Type="Edm.Boolean" DefaultValue="false"/>
      </EntityType>
      <ComplexType Name="AssignmentPermissionInput">
        <Property Name="permissionTypeKey" Type="Edm.String"/>
        <Property Name="isGranted" Type="Edm.Boolean"/>
        <Property Name="approveFrom" Type="Edm.Date"/>
        <Property Name="approveTo" Type="Edm.Date"/>
        <Property Name="receivesEmails" Type="Edm.Boolean"/>
      </ComplexType>
      <ComplexType Name="ap_DelegationService_saveAdminConfig_config">
        <Property Name="ID" Type="Edm.String"/>
        <Property Name="configurationName" Type="Edm.String"/>
        <Property Name="module" Type="Edm.String"/>
        <Property Name="groupIds" Type="Collection(Edm.String)" Nullable="false"/>
        <Property Name="isActive" Type="Edm.Boolean"/>
        <Property Name="permissions" Type="Collection(DelegationService.DelegationPermissionInput)" Nullable="false"/>
      </ComplexType>
      <ComplexType Name="DelegationPermissionInput">
        <Property Name="permissionTypeKey" Type="Edm.String"/>
        <Property Name="isEnabled" Type="Edm.Boolean"/>
        <Property Name="needApproverRoleToApprove" Type="Edm.Boolean"/>
        <Property Name="allowApproveAnytime" Type="Edm.Boolean"/>
        <Property Name="allowApproveTemporaryWindow" Type="Edm.Boolean"/>
        <Property Name="startDate" Type="Edm.Date"/>
        <Property Name="endDate" Type="Edm.Date"/>
      </ComplexType>
      <ComplexType Name="return_DelegationService_getMyDelegationContext">
        <Property Name="employeeId" Type="Edm.String"/>
        <Property Name="modules" Type="Collection(DelegationService.return_DelegationService_getMyDelegationContext_modules)" Nullable="false"/>
        <Property Name="delegators" Type="Collection(DelegationService.return_DelegationService_getMyDelegationContext_delegators)" Nullable="false"/>
      </ComplexType>
      <ComplexType Name="return_DelegationService_getMyDelegationContext_modules">
        <Property Name="module" Type="Edm.String"/>
        <Property Name="permissions" Type="Collection(DelegationService.return_DelegationService_getMyDelegationContext_modules_permissions)" Nullable="false"/>
      </ComplexType>
      <ComplexType Name="return_DelegationService_getMyDelegationContext_modules_permissions">
        <Property Name="key" Type="Edm.String"/>
        <Property Name="label" Type="Edm.String"/>
        <Property Name="displayOrder" Type="Edm.Int32"/>
        <Property Name="hasSubSettings" Type="Edm.Boolean"/>
        <Property Name="allowApproveTemporaryWindow" Type="Edm.Boolean"/>
        <Property Name="allowApproveAnytime" Type="Edm.Boolean"/>
        <Property Name="needApproverRoleToApprove" Type="Edm.Boolean"/>
      </ComplexType>
      <ComplexType Name="return_DelegationService_getMyDelegationContext_delegators">
        <Property Name="assignmentId" Type="Edm.String"/>
        <Property Name="module" Type="Edm.String"/>
        <Property Name="delegatorEmployeeId" Type="Edm.String"/>
        <Property Name="delegatorName" Type="Edm.String"/>
        <Property Name="permissions" Type="Collection(Edm.String)" Nullable="false"/>
      </ComplexType>
      <ComplexType Name="return_DelegationService_getMyAssignments">
        <Property Name="ID" Type="Edm.String"/>
        <Property Name="module" Type="Edm.String"/>
        <Property Name="delegatorEmployeeId" Type="Edm.String"/>
        <Property Name="delegatorName" Type="Edm.String"/>
        <Property Name="delegateEmployeeId" Type="Edm.String"/>
        <Property Name="delegateName" Type="Edm.String"/>
        <Property Name="isActive" Type="Edm.Boolean"/>
        <Property Name="permissions" Type="Collection(DelegationService.AssignmentPermissionInput)" Nullable="false"/>
      </ComplexType>
      <ComplexType Name="ap_DelegationService_saveAssignment_assignment">
        <Property Name="ID" Type="Edm.String"/>
        <Property Name="module" Type="Edm.String"/>
        <Property Name="delegateEmployeeId" Type="Edm.String"/>
        <Property Name="isActive" Type="Edm.Boolean"/>
        <Property Name="permissions" Type="Collection(DelegationService.AssignmentPermissionInput)" Nullable="false"/>
      </ComplexType>
      <ComplexType Name="return_DelegationService_setProxy">
        <Property Name="delegatorEmployeeId" Type="Edm.String"/>
        <Property Name="delegatorName" Type="Edm.String"/>
        <Property Name="modules" Type="Collection(DelegationService.return_DelegationService_setProxy_modules)" Nullable="false"/>
        <Property Name="token" Type="Edm.String"/>
      </ComplexType>
      <ComplexType Name="return_DelegationService_setProxy_modules">
        <Property Name="module" Type="Edm.String"/>
        <Property Name="permissions" Type="Collection(Edm.String)" Nullable="false"/>
      </ComplexType>
      <Action Name="saveAdminConfig" IsBound="false">
        <Parameter Name="config" Type="DelegationService.ap_DelegationService_saveAdminConfig_config"/>
        <ReturnType Type="DelegationService.AdminConfig"/>
      </Action>
      <Action Name="deleteAdminConfig" IsBound="false">
        <Parameter Name="id" Type="Edm.String"/>
        <ReturnType Type="Edm.Boolean"/>
      </Action>
      <Action Name="getMyDelegationContext" IsBound="false">
        <ReturnType Type="DelegationService.return_DelegationService_getMyDelegationContext"/>
      </Action>
      <Action Name="getMyAssignments" IsBound="false">
        <Parameter Name="module" Type="Edm.String"/>
        <Parameter Name="direction" Type="Edm.String"/>
        <ReturnType Type="Collection(DelegationService.return_DelegationService_getMyAssignments)" Nullable="false"/>
      </Action>
      <Action Name="saveAssignment" IsBound="false">
        <Parameter Name="assignment" Type="DelegationService.ap_DelegationService_saveAssignment_assignment"/>
        <ReturnType Type="DelegationService.Assignments"/>
      </Action>
      <Action Name="deleteAssignment" IsBound="false">
        <Parameter Name="id" Type="Edm.String"/>
        <ReturnType Type="Edm.Boolean"/>
      </Action>
      <Action Name="setProxy" IsBound="false">
        <Parameter Name="delegatorEmployeeId" Type="Edm.String"/>
        <ReturnType Type="DelegationService.return_DelegationService_setProxy"/>
      </Action>
      <Annotations Target="DelegationService.EntityContainer/PermissionTypes">
        <Annotation Term="Capabilities.DeleteRestrictions">
          <Record Type="Capabilities.DeleteRestrictionsType">
            <PropertyValue Property="Deletable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.InsertRestrictions">
          <Record Type="Capabilities.InsertRestrictionsType">
            <PropertyValue Property="Insertable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.UpdateRestrictions">
          <Record Type="Capabilities.UpdateRestrictionsType">
            <PropertyValue Property="Updatable" Bool="false"/>
          </Record>
        </Annotation>
      </Annotations>
      <Annotations Target="DelegationService.PermissionTypes/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DelegationService.AdminConfig/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DelegationService.AdminConfig/createdAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DelegationService.AdminConfig/updatedAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DelegationService.AdminConfigPermissions/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DelegationService.Assignments/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="DelegationService.Assignments/createdAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DelegationService.Assignments/updatedAt">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="DelegationService.AssignmentPermissions/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>