<?xml version="1.0" encoding="UTF-8" ?>
    <prefix>
      <prefix>userPrefs</prefix>
      <describeURL>/direct/userPrefs/describe</describeURL>
      <summary>User Preference Values</summary>
      <collectionURL>/userPrefs</collectionURL>
      <createURL>/userPrefs/new</createURL>
      <showURL>/userPrefs/:ID:</showURL>
      <updateURL>/userPrefs/:ID:/edit</updateURL>
      <deleteURL>/userPrefs/:ID:/delete</deleteURL>
      <customActions>
        <customAction>
          <action>updateKey</action>
          <url>/direct/userPrefs/:ID:/updateKey</url>
          <method>PUT</method>
          <viewKey>edit</viewKey>
          <description>Update the key property values. Here is the request URL pattern: /direct/userPrefs/updateKey/{user_id}/{key_name}/{name=val&name1=val1...}</description>
        </customAction>
      </customActions>
      <customActions>
        <customAction>
          <action>saveDivState</action>
          <url>/direct/userPrefs/:ID:/saveDivState</url>
          <method>PUT</method>
          <viewKey>edit</viewKey>
          <description>Save key-value pair as current user preferences. Here is the request url pattern: /direct/userPrefs/saveDivState/{key_name}/{state_value}</description>
        </customAction>
      </customActions>
      <customActions>
        <customAction>
          <action>key</action>
          <url>/direct/userPrefs/key</url>
          <method>GET</method>
          <viewKey>list</viewKey>
          <description>Retrieve user preference property settings given user id and property key name. Here is the request URL pattern: /direct/userPrefs/key/{user_id}/{key_name}.{format}</description>
        </customAction>
      </customActions>
      <outputFormats>
        <format>xml</format>
        <format>json</format>
        <format>html</format>
       </outputFormats>
      <inputFormats>
        <format>xml</format>
        <format>json</format>
        <format>html</format>
       </inputFormats>
      <entityClass>
        <class>org.sakaiproject.user.impl.BasePreferencesService$BasePreferences</class>
        <type>bean</type>
        <fields>
          <field>
            <name>activeEdit</name>
            <type>boolean</type>
            <readable>true</readable>
            <writeable>false</writeable>
          </field>
          <field>
            <name>id</name>
            <type>java.lang.String</type>
            <readable>true</readable>
            <writeable>false</writeable>
          </field>
          <field>
            <name>keys</name>
            <type>java.util.Collection</type>
            <readable>true</readable>
            <writeable>false</writeable>
          </field>
          <field>
            <name>properties</name>
            <type>org.sakaiproject.entity.api.ResourceProperties</type>
            <readable>true</readable>
            <writeable>false</writeable>
          </field>
          <field>
            <name>propertiesEdit</name>
            <type>org.sakaiproject.entity.api.ResourcePropertiesEdit</type>
            <readable>true</readable>
            <writeable>false</writeable>
          </field>
          <field>
            <name>reference</name>
            <type>java.lang.String</type>
            <readable>true</readable>
            <writeable>false</writeable>
          </field>
          <field>
            <name>url</name>
            <type>java.lang.String</type>
            <readable>true</readable>
            <writeable>false</writeable>
          </field>
        </fields>
      </entityClass>
      <capabilities>
        <capability>
          <name>CoreEntityProvider</name>
          <type>org.sakaiproject.entitybroker.entityprovider.CoreEntityProvider</type>
        </capability>
        <capability>
          <name>EntityProvider</name>
          <type>org.sakaiproject.entitybroker.entityprovider.EntityProvider</type>
        </capability>
        <capability>
          <name>ActionsExecutable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.ActionsExecutable</type>
        </capability>
        <capability>
          <name>CRUDable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.CRUDable</type>
        </capability>
        <capability>
          <name>CollectionResolvable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.CollectionResolvable</type>
        </capability>
        <capability>
          <name>Createable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Createable</type>
        </capability>
        <capability>
          <name>Deleteable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Deleteable</type>
        </capability>
        <capability>
          <name>Describeable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Describeable</type>
        </capability>
        <capability>
          <name>Inputable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Inputable</type>
        </capability>
        <capability>
          <name>Outputable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Outputable</type>
        </capability>
        <capability>
          <name>RESTful</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.RESTful</type>
        </capability>
        <capability>
          <name>Redirectable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Redirectable</type>
        </capability>
        <capability>
          <name>RequestStorable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.RequestStorable</type>
        </capability>
        <capability>
          <name>Resolvable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Resolvable</type>
        </capability>
        <capability>
          <name>Sampleable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Sampleable</type>
        </capability>
        <capability>
          <name>Saveable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Saveable</type>
        </capability>
        <capability>
          <name>Updateable</name>
          <type>org.sakaiproject.entitybroker.entityprovider.capabilities.Updateable</type>
        </capability>
      </capabilities>
    </prefix>
