In the Revit Platform API, material data is stored and managed as an Element. Just as in the Revit UI, a material properties can be either Independent or By Property Set. When material properties are By Property Set, they can be shared by more than one material. When a material is Independent, specific properties can be retrieved from the ParameterSet of the Material class itself. When the material uses shared properties, the properties can be retreived from the ParameterSet of a PropertySetElement.
Some material features are represented by properties, such as FillPattern, Color, or Render while others are available as Parameters that can be retreived using the corresponding BuiltInParameter values.