Metadata components are not based on sObjects, like objects in the API. Instead, they are based on metadata types, such as ApexClass and CustomObject, which extend Metadata. A component is an instance of a metadata type. For example, CustomObject is a metadata type for custom objects, and the MyCustomObject__c component is an instance of a custom object.
A metadata type can be identified in the metadata WSDL as any complexType that extends the Metadata complexType. A complexType that is a metadata type includes the following element in its WSDL definition:
<xsd:extension base="tns:Metadata">
CustomObject and BusinessProcess extend Metadata so they are metadata types; ActionOverride doesn't extend Metadata so it's not a metadata type.
You can individually deploy or retrieve a component for a metadata type. For example, you can retrieve an individual BusinessProcess component, but you can't retrieve an individual ActionOverride component. You can only retrieve an ActionOverride component by retrieving its encompassing CustomObject component.
Metadata components can be manipulated by asynchronous Metadata API calls or declarative (or file-based) Metadata API calls.
Most of the components can be accessed using Force.com IDE. Exceptions are noted in the description of the object.
Each component field has a specific field type. These field types can correspond to other components defined in the WSDL, or primitive data types, like string, that are commonly used in strongly typed programming languages.
These field data types are used in the SOAP messages that are exchanged between your client application and the API. When writing your client application, follow the data typing rules defined for your programming language and development environment. Your development tool handles the mapping of typed data in your programming language with these SOAP data types.
For more information about primitive data types, see the Web Services API Developer's Guide.
Some component fields have a data type that is an enumeration. An enumeration is the API equivalent of a picklist. The valid values of the field are restricted to a strict set of possible values, all having the same data type. These values are listed in the field description column for each enumeration field. See sortBy for an example of an enumeration field of type string. The XML below shows a sample definition of an enumeration of type string in the WSDL.
<xsd:simpleType name="DashboardComponentFilter"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="RowLabelAscending"/> <xsd:enumeration value="RowLabelDescending"/> <xsd:enumeration value="RowValueAscending"/> <xsd:enumeration value="RowValueDescending"/> </xsd:restriction> </xsd:simpleType>
All of the metadata types are supported by the main calls, unless it is stated otherwise in the individual component sections. The main Metadata API calls are create(), delete(), update(), deploy(), retrieve(), listMetadata(), and describeMetadata(). All other calls, such as checkStatus(), are considered utility calls as they are used in conjunction with one of the main calls.