<?xml version="1.0" encoding="UTF-8"?>
<!---->
<!--################################################################################       -->
<!--# Redfish Schema:  RedfishExtensions v1.0.0-->
<!--#                                                                                      -->
<!--# For a detailed change log, see the README file contained in the DSP8010 bundle,      -->
<!--# available at http://www.dmtf.org/standards/redfish                                   -->
<!--# Copyright 2014-2018 DMTF.                                                            -->
<!--# For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright -->
<!--################################################################################       -->
<!---->
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">

  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Namespace="Org.OData.Core.V1" Alias="OData"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Settings_v1.xml">
    <edmx:Include Namespace="Settings"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/CollectionCapabilities_v1.xml">
    <edmx:Include Namespace="CollectionCapabilities"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Certificate_v1.xml">
    <edmx:Include Namespace="Certificate"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/ResourceBlock_v1.xml">
    <edmx:Include Namespace="ResourceBlock"/>
  </edmx:Reference>

  <edmx:DataServices>

    <!--These terms extend the schema language for Redfish-specific information-->
    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm"  Namespace="RedfishExtensions.v1_0_0">
      <Annotation Term="RedfishExtensions.v1_0_0.OwningEntity" String="DMTF"/>

      <Term Name="AllowableValues" Type="Collection(Edm.String)" Nullable="false">
        <Annotation Term="OData.Description" String="The set of allowable values for a parameter."/>
      </Term>
      <Term Name="Required" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term specifies that a property is required to be supported by services. Properties not annotated as required are optional."/>
      </Term>
      <Term Name="RequiredOnCreate" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term specifies that a property is required to be specified in the body of a POST request to create the resource."/>
      </Term>
      <Term Name="Settings" Type="Settings.Settings">
        <Annotation Term="OData.Description" String="Reference to the resource that represents the settings to be applied to this object."/>
      </Term>
      <Term Name="AutoExpandReferences" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="RedfishExtensions.v1_0_0.Deprecated" String="This term has been deprecated in favor of OData.AutoExpandReferences."/>
        <Annotation Term="OData.Description" String="The term can be applied to a navigation property in order to specify that the default behavior for the service is to expand the references for the related resource or collection of resources in responses."/>
      </Term>
      <Term Name="AutoExpand" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="RedfishExtensions.v1_0_0.Deprecated" String="This term has been deprecated in favor of OData.AutoExpand."/>
        <Annotation Term="OData.Description" String="The term can be applied to a navigation property in order to specify that the default behavior for the service is to expand the related resource or collection of resources in responses."/>
      </Term>
      <Term Name="IPv6Format" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term can be applied to a property or parameter in order to specify that IPv6 addressing rules apply to that property or parameter."/>
      </Term>
      <Term Name="Copyright" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term is applied to Redfish payload samples in order to specify copyright information. It would not generally be used in production payloads."/>
      </Term>
      <Term Name="Deprecated" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term shall be applied to a property or value in order to specify that the property or value is deprecated.  The value of the string should explain the deprecation, including new property or properties or value to be used.  The property or value can be supported in new and existing implementations, but usage in new implementations is discouraged.  Deprecated properties and values are likely to be removed in a future major version of the schema."/>
      </Term>
      <Term Name="ActionInfo" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term can be applied to an Action to specify a URI to an ActionInfo resource which describes the parameters supported by this instance of the Action."/>
        <Annotation Term="OData.IsURL"/>
      </Term>
      <Term Name="DynamicPropertyPatterns" Type="Collection(RedfishExtensions.v1_0_0.PropertyPattern)" Nullable="false"/>
      <Term Name="SetOnlyOnCreate" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term specifies that a property can only be set when a client is creating a new instance of a resource via POST."/>
      </Term>
      <Term Name="OptionalOnCreate" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term specifies that a property may be set when a client is creating a new instance of a resource via POST."/>
      </Term>
      <Term Name="UpdatableAfterCreate" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term specifies that a property may be set by a client using PATCH after creating a new instance of a resource via POST."/>
      </Term>
      <Term Name="CollectionCapabilities" Type="CollectionCapabilities.CollectionCapabilities">
        <Annotation Term="OData.Description" String="Reference to the resource that represents the POST capabilities of a given collection."/>
      </Term>
      <Term Name="Confidential" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term specifies that a schema or property is un-released and is therefore confidential material not for public disclosure."/>
      </Term>
      <Term Name="Release" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term specifies the version of the release bundle that this schema or versioned namespace was first released."/>
      </Term>
      <Term Name="ReleaseStatus" Type="RedfishExtensions.v1_0_0.ReleaseStatusType">
        <Annotation Term="OData.Description" String="The term specifies the public release status of a property or schema."/>
      </Term>
      <Term Name="SettingsApplyTime" Type="Settings.PreferredApplyTime">
        <Annotation Term="OData.Description" String="Configuration settings for when the values in the settings object are applied to a given resource."/>
      </Term>
      <Term Name="OperationApplyTime" Type="Settings.OperationApplyTime">
        <Annotation Term="OData.Description" String="The requested apply time from a client when performing a Create, Delete, or Action operation."/>
      </Term>
      <Term Name="OperationApplyTimeSupport" Type="Settings.OperationApplyTimeSupport">
        <Annotation Term="OData.Description" String="Indicates if a client is allowed to request for a specific apply time of a Create, Delete, or Action operation of a given resource via the OperationApplyTime term."/>
      </Term>
      <Term Name="MaintenanceWindow" Type="Settings.MaintenanceWindow">
        <Annotation Term="OData.Description" String="Maintenance window configuration of a resource for when to apply settings or operations."/>
      </Term>
      <Term Name="OwningEntity" Type="Edm.String">
        <Annotation Term="OData.Description" String="Indicates the name of the entity responsible for development, publication and maintenance of a given schema.  Possible values include DMTF, SNIA or an OEM label such as is used in a Redfish OEM extension section."/>
      </Term>
      <Term Name="Uris" Type="Collection(Edm.String)">
        <Annotation Term="OData.Description" String="The term specifies the URIs a service is allowed to use for the given resource."/>
      </Term>
      <Term Name="RequestedCount" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term is used by a client in order to specify a request for a quantity of items."/>
      </Term>
      <Term Name="RequestedCountRequired" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term specifies that a client is required to provide the @Redfish.RequestedCount term as part of the payload in order to specify a quantity of items."/>
      </Term>
      <Term Name="AllowOverprovisioning" Type="Edm.Boolean" DefaultValue="false">
        <Annotation Term="OData.Description" String="The term specifies that a client is allowing the service to provide more resources than what was requested, which includes, but is not limited to, a larger quantity of items, larger capacity, and faster devices."/>
        <Annotation Term="OData.LongDescription" String="The term shall specify that a client is allowing the service to provide more resources than what was requested, which includes, but is not limited to, a larger quantity of items, larger capacity, and faster devices.  If not specified by the client, then the service shall treat this as false."/>
      </Term>
      <Term Name="ZoneAffinity" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term specifies that a client is requesting the service fulfills a request using resources available within a specific Zone resource.  The value of the term is the Id property of the given Zone resource."/>
        <Annotation Term="OData.LongDescription" String="The term shall specify that a client is requesting the service fulfills a request using resources available within a specific Zone resource.  The value of the term shall be the Id property of the given Zone resource.  This term shall only be at the root level of the request payload."/>
      </Term>
      <Term Name="Filter" Type="Edm.String">
        <Annotation Term="OData.Description" String="Indicates a filter to apply to an array of objects when the values are copies of data elsewhere in the data model."/>
        <Annotation Term="OData.LongDescription" String="The term shall specify a Filter to apply to a set of objects used as the data source for an array. The value of the term shall follow the Filter query parameter format as specified in the Redfish Specification. Items matching the filter shall be included in the resulting array, while items that do not match the filter shall be excluded from the results."/>
      </Term>
      <Term Name="Excerpt" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term specifies that the property is a Excerpt data element that shall appear in objects marked as a Excerpt Copy when the value of the term matches the type specified by the ExcerptCopy term. The value shall be a property name to use as a key, and the value of that key property, and only one key property can be defined per resource. If the value of the term is unspecified, the property shall appear in all ExcerptCopy instances."/>
      </Term>
      <Term Name="ExcerptCopy" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term specifies that the object or property definition is a copy of data from a source elsewhere in the data model, and that only properties marked as Excerpt in that referenced definition shall be included. The value of the term shall contain the name and value of a key property used to construct the Excerpt subset of properties from the referenced definition. If the value of the term is not defined, then all Excerpt properties shall be copied from the referenced definition."/>
      </Term>
      <Term Name="ExcerptCopyOnly" Type="Edm.Boolean" DefaultValue="true">
        <Annotation Term="OData.Description" String="The term specifies that the property is a data element that shall appear only when the resource definition is used as a copy (using the ExcerptCopy term), and shall not appear in the original data resource."/>
      </Term>
      <Term Name="SupportedCertificates" Type="Collection(Certificate.CertificateType)">
        <Annotation Term="OData.Description" String="The term specifies the supported certificate formats for a given certificate collection."/>
      </Term>
      <Term Name="ResourceBlockLimits" Type="ResourceBlock.ResourceBlockLimits">
        <Annotation Term="OData.Description" String="The term specifies the allowable quantities of types of Resource Blocks for a given composition request."/>
      </Term>
      <Term Name="License" Type="Edm.String">
        <Annotation Term="OData.Description" String="The term is applied to Redfish schema or registry in order to specify licensing information."/>
      </Term>

      <EnumType Name="ReleaseStatusType">
        <Member Name="Standard">
          <Annotation Term="OData.Description" String="Released as normative standard or specification."/>
        </Member>
        <Member Name="Informational">
          <Annotation Term="OData.Description" String="Released as an informational, non-normative document."/>
        </Member>
        <Member Name="WorkInProgress">
          <Annotation Term="OData.Description" String="Released as Work In Progress, subject to change perhaps profoundly and without notice."/>
        </Member>
        <Member Name="InDevelopment">
          <Annotation Term="OData.Description" String="Un-released work product currently under development or review."/>
        </Member>
      </EnumType>

      <ComplexType Name="PropertyPattern">
        <Annotation Term="OData.Description" String="The pattern by which property names must adhere."/>
        <Annotation Term="OData.LongDescription" String="This type shall describe the pattern to which a dynamic property name must adhere."/>
        <Property Name="Pattern" Type="Edm.String">
          <Annotation Term="OData.Description" String="The pattern that the property name shall match."/>
          <Annotation Term="OData.LongDescription" String="This shall be the pattern that the property name shall match."/>
        </Property>
        <Property Name="Type" Type="Edm.String">
          <Annotation Term="OData.Description" String="The type that the name shall have."/>
          <Annotation Term="OData.LongDescription" String="This shall be the type that the name shall have."/>
        </Property>
      </ComplexType>

      <Term Name="Revisions" Type="Collection(RedfishExtensions.v1_0_0.RevisionType)" Nullable="false">
        <Annotation Term="OData.Description" String="List of revisions of a model element."/>
      </Term>

      <ComplexType Name="RevisionType">
        <Annotation Term="OData.Description" String="A structure containing revision information."/>
        <Annotation Term="OData.LongDescription" String="This type shall contain revision information."/>
        <Property Name="Version" Type="Edm.String" Nullable="true">
          <Annotation Term="OData.Description" String="The schema version with which this revision was first published."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the schema version with which this revision was first published."/>
        </Property>
        <Property Name="Kind" Type="RedfishExtensions.v1_0_0.RevisionKind" Nullable="false">
          <Annotation Term="OData.Description" String="The kind of revision."/>
          <Annotation Term="OData.LongDescription" String="This property shall describe the type of change made."/>
        </Property>
        <Property Name="Description" Type="Edm.String">
          <Annotation Term="OData.Description" String="Text describing the reason for the revision."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain a description of the change made."/>
        </Property>
      </ComplexType>

      <EnumType Name="RevisionKind">
        <Member Name="Added">
          <Annotation Term="OData.Description" String="Model element was added."/>
        </Member>
        <Member Name="Modified">
          <Annotation Term="OData.Description" String="Model element was modified."/>
        </Member>
        <Member Name="Deprecated">
          <Annotation Term="OData.Description" String="Model element was deprecated."/>
        </Member>
      </EnumType>

      <Term Name="Enumeration" Type="Collection(RedfishExtensions.v1_0_0.EnumerationMember)" Nullable="false">
        <Annotation Term="OData.Description" String="The term enumerates the allowable set of legacy, non-standard string values where a standard enumeration cannot be used.  This annotation should not be used for any new values."/>
      </Term>

      <ComplexType Name="EnumerationMember">
        <Annotation Term="OData.Description" String="This type describes a member of an enumeration used for compatability purposes for enumerations which do not comply with OData rules."/>
        <Annotation Term="OData.LongDescription" String="This type shall describe a member of an enumeration which contains spaces, starts with a number, or otherwise does not comply with OData EnumMember naming rules."/>
        <Property Name="Member" Type="Edm.String">
          <Annotation Term="OData.Description" String="An allowable string member."/>
          <Annotation Term="OData.LongDescription" String="This shall be an allowable string member for the enumeration."/>
        </Property>
      </ComplexType>

    </Schema>

    <!--These terms are used for validating a property value-->
    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm"  Namespace="Validation.v1_0_0">
      <Annotation Term="RedfishExtensions.v1_0_0.OwningEntity" String="DMTF"/>

      <Term Name="Pattern" Type="Edm.String">
        <Annotation Term="OData.Description" String="The pattern that a string property or parameter must match."/>
      </Term>
      <Term Name="Minimum" Type="Edm.Int64">
        <Annotation Term="OData.Description" String="Minimum value that an integer property or parameter can have."/>
      </Term>
      <Term Name="Maximum" Type="Edm.Int64">
        <Annotation Term="OData.Description" String="Maximum value that an integer property or parameter can have."/>
      </Term>

    </Schema>

  </edmx:DataServices>
</edmx:Edmx>
