Web API Functions
Within the CSDL $metadata document, you will find Function
elements. Function operations are different from actions because they should not change data. They are typically used only to retrieve data.
Every function has a Name
attribute. This name will be part of the URL when you use HTTP
GET
, sending any defined parameters for the function in the url of the request.
Bound Functions
Just like actions, functions may have a IsBound="true"
attribute. This means it is a bound function. Functions without the IsBound
attribute are unbound. A bound function means that the first parameter is a reference to a to a table record or to an entity set.
When an function is bound, it will have a reference to a specific item within the service namespace. To use the function, you must use the fully qualified name including the Microsoft.Dynamics.CRM
namespace. More information: Service namespace
Composable functions
Functions may have a IsComposable="true"
attribute. This means that you can append some system query options such as $filter
or $select
to the URL to specify the results returned. This option is only available for specific system functions. You cannot create a function using custom API that is composable.
Parameters
Functions usually have one or more Parameter
elements. Each parameter will have the following attributes:
Attribute | Description |
---|---|
Name |
The name of the parameter. The name is unique unless the Function is overloaded. More information: Overloaded Functions. |
Type |
The type of the parameter. |
Nullable="false" |
Whether the parameter can accept a null value |
ReturnType
Functions must return values. A function will always have a ReturnType
element.
Attribute | Description |
---|---|
Type |
The type of the parameter. |
Nullable="false" |
Whether the value may be null. |
Function definition examples
The following represent some fictional examples of Function
definitions showing different binding patterns. Each of these examples returns an integer value.
Unbound functions
An unbound function with a single integer Number
parameter.
<Function Name="UnBoundFunctionExample">
<Parameter Name="Number" Type="Edm.Int32" Nullable="false" />
<ReturnType Type="Edm.Int32" Nullable="false" />
</Function>
Function bound to an entity
A function bound to the account
entity with a single integer Number
parameter.
<Function Name="EntityBoundFunctionExample" IsBound="true">
<Parameter Name="entity" Type="mscrm.account" Nullable="false" />
<Parameter Name="Number" Type="Edm.Int32" Nullable="false" />
<ReturnType Type="Edm.Int32" Nullable="false" />
</Function>
Function bound to an entity set
A function bound to the account
EntitySet with a single integer Number
parameter.
<Function Name="EntityCollectionBoundFunctionExample" IsBound="true">
<Parameter Name="entityset" Type="Collection(mscrm.account)" Nullable="false" />
<Parameter Name="Number" Type="Edm.Int32" Nullable="false" />
<ReturnType Type="Edm.Int32" Nullable="false" />
</Function>
Overloaded functions
Usually, each function you find in the $metadata will be the only function with that name. However bound functions can have multiple definitions when bound to different types. The system RetrieveUnpublished and RetrieveUnpublishedMultiple functions are some examples. You cannot create an overloaded function using custom API.
More information: OData 4.0 Function Overload Rules
Next steps
Learn about Complex & Enum types.
See also
Use the Dataverse Web API
Web API types and operations
Web API Service Documents
Web API EntityTypes
Web API Properties
Web API Navigation Properties
Web API Actions
Web API Complex and Enumeration types
OData Version 4.0. Part 3: Common Schema Definition Language (CSDL) Plus Errata 03 Element edm:Function