<?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://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:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
    <edmx:Include Alias="UI" Namespace="com.sap.vocabularies.UI.v1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Validation.V1.xml">
    <edmx:Include Alias="Validation" Namespace="Org.OData.Validation.V1"/>
  </edmx:Reference>
  <edmx:DataServices>
    <Schema Namespace="RecipeService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <Annotation Term="Core.Links">
        <Collection>
          <Record>
            <PropertyValue Property="rel" String="author"/>
            <PropertyValue Property="href" String="https://cap.cloud.sap"/>
          </Record>
        </Collection>
      </Annotation>
      <EntityContainer Name="EntityContainer">
        <EntitySet Name="Recipes" EntityType="RecipeService.Recipes"/>
        <EntitySet Name="Attachments" EntityType="RecipeService.Attachments">
          <NavigationPropertyBinding Path="toRecipe" Target="Recipes"/>
        </EntitySet>
        <EntitySet Name="Settings" EntityType="RecipeService.Settings"/>
        <EntitySet Name="Users" EntityType="RecipeService.Users"/>
        <ActionImport Name="Login" Action="RecipeService.Login" EntitySet="Users"/>
        <FunctionImport Name="Logout" Function="RecipeService.Logout"/>
        <FunctionImport Name="FetchRecipe" Function="RecipeService.FetchRecipe" EntitySet="Recipes"/>
      </EntityContainer>
      <EntityType Name="Recipes">
        <Key>
          <PropertyRef Name="id"/>
        </Key>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="createdBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="modifiedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="modifiedBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="id" Type="Edm.Guid" Nullable="false"/>
        <Property Name="user" Type="Edm.String" MaxLength="30"/>
        <Property Name="name" Type="Edm.String" MaxLength="50"/>
        <Property Name="description" Type="Edm.String" MaxLength="500"/>
        <Property Name="durationInMinutes" Type="Edm.Int32"/>
        <Property Name="difficulty" Type="Edm.String"/>
        <Property Name="cuisine" Type="Edm.String" MaxLength="20"/>
        <Property Name="ingredients" Type="Collection(RecipeService.Recipes_ingredients)" Nullable="true"/>
        <Property Name="instructions" Type="Collection(RecipeService.Recipes_instructions)" Nullable="true"/>
      </EntityType>
      <EntityType Name="Attachments">
        <Key>
          <PropertyRef Name="id"/>
        </Key>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="createdBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="modifiedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="modifiedBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="id" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String"/>
        <Property Name="recipe" Type="Edm.Guid"/>
        <Property Name="mimeType" Type="Edm.String"/>
        <Property Name="file" Type="Edm.String"/>
        <NavigationProperty Name="toRecipe" Type="RecipeService.Recipes">
          <ReferentialConstraint Property="recipe" ReferencedProperty="id"/>
        </NavigationProperty>
      </EntityType>
      <EntityType Name="Settings">
        <Key>
          <PropertyRef Name="which"/>
        </Key>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="modifiedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="which" Type="Edm.String" Nullable="false"/>
        <Property Name="what" Type="Edm.String"/>
        <Property Name="protected" Type="Edm.Boolean"/>
      </EntityType>
      <EntityType Name="Users">
        <Key>
          <PropertyRef Name="id"/>
        </Key>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="createdBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="modifiedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="modifiedBy" Type="Edm.String" MaxLength="255"/>
        <Property Name="id" Type="Edm.Guid" Nullable="false"/>
        <Property Name="username" Type="Edm.String"/>
        <Property Name="password" Type="Edm.String"/>
        <Property Name="roles" Type="Edm.String"/>
        <Property Name="email" Type="Edm.String"/>
      </EntityType>
      <ComplexType Name="Recipes_ingredients">
        <Property Name="name" Type="Edm.String" MaxLength="30"/>
        <Property Name="quantity" Type="Edm.Int32"/>
        <Property Name="unit" Type="Edm.String" MaxLength="10"/>
      </ComplexType>
      <ComplexType Name="Recipes_instructions">
        <Property Name="title" Type="Edm.String" MaxLength="50"/>
        <Property Name="description" Type="Edm.String" MaxLength="500"/>
      </ComplexType>
      <ComplexType Name="return_RecipeService_Logout"/>
      <Action Name="Login" IsBound="false">
        <Parameter Name="username" Type="Edm.String"/>
        <Parameter Name="password" Type="Edm.String"/>
        <ReturnType Type="RecipeService.Users"/>
      </Action>
      <Function Name="Logout" IsBound="false" IsComposable="false">
        <ReturnType Type="RecipeService.return_RecipeService_Logout"/>
      </Function>
      <Function Name="FetchRecipe" IsBound="false" IsComposable="false">
        <Parameter Name="url" Type="Edm.String"/>
        <ReturnType Type="RecipeService.Recipes"/>
      </Function>
      <Annotations Target="RecipeService.Recipes/createdAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Created On"/>
      </Annotations>
      <Annotations Target="RecipeService.Recipes/createdBy">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Core.Description" String="User's unique ID"/>
        <Annotation Term="Common.Label" String="Created By"/>
      </Annotations>
      <Annotations Target="RecipeService.Recipes/modifiedAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Changed On"/>
      </Annotations>
      <Annotations Target="RecipeService.Recipes/modifiedBy">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Core.Description" String="User's unique ID"/>
        <Annotation Term="Common.Label" String="Changed By"/>
      </Annotations>
      <Annotations Target="RecipeService.Recipes/id">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="RecipeService.Recipes/difficulty">
        <Annotation Term="Validation.AllowedValues">
          <Collection>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="easy"/>
              <PropertyValue Property="Value" String="easy"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="medium"/>
              <PropertyValue Property="Value" String="medium"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="hard"/>
              <PropertyValue Property="Value" String="hard"/>
            </Record>
          </Collection>
        </Annotation>
      </Annotations>
      <Annotations Target="RecipeService.Attachments/createdAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Created On"/>
      </Annotations>
      <Annotations Target="RecipeService.Attachments/createdBy">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Core.Description" String="User's unique ID"/>
        <Annotation Term="Common.Label" String="Created By"/>
      </Annotations>
      <Annotations Target="RecipeService.Attachments/modifiedAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Changed On"/>
      </Annotations>
      <Annotations Target="RecipeService.Attachments/modifiedBy">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Core.Description" String="User's unique ID"/>
        <Annotation Term="Common.Label" String="Changed By"/>
      </Annotations>
      <Annotations Target="RecipeService.Attachments/id">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="RecipeService.Settings/createdAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Created On"/>
      </Annotations>
      <Annotations Target="RecipeService.Settings/modifiedAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Changed On"/>
      </Annotations>
      <Annotations Target="RecipeService.Users/createdAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Created On"/>
      </Annotations>
      <Annotations Target="RecipeService.Users/createdBy">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Core.Description" String="User's unique ID"/>
        <Annotation Term="Common.Label" String="Created By"/>
      </Annotations>
      <Annotations Target="RecipeService.Users/modifiedAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Changed On"/>
      </Annotations>
      <Annotations Target="RecipeService.Users/modifiedBy">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Core.Description" String="User's unique ID"/>
        <Annotation Term="Common.Label" String="Changed By"/>
      </Annotations>
      <Annotations Target="RecipeService.Users/id">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>