Web API Actions

Within the CSDL $metadata document, you will find Action elements that describe operations that change data.

Every action has a Name attribute. This name will be part of the URL when you use HTTP POST, sending any defined parameters for the action in the body of the request. More information: Use Web API actions

Bound actions

Actions may have a IsBound="true" attribute. This means it is a bound action. Actions without the IsBound attribute are unbound. A bound action means that the first parameter is a reference to a to a table record or to an entity set.

When an action is bound, it will have a reference to a specific item within the service namespace. To use the action, you must use the fully qualified name including the Microsoft.Dynamics.CRM namespace. More information: Service namespace

Parameters

Actions 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 Action is overloaded. More information: Overloaded Actions.
Type The type of the parameter.
Nullable="false" Whether the parameter can accept a null value.

ReturnType

Actions may return values. When an action returns a value, it will have a ReturnType element.

Attribute Description
Type The type of the parameter.
Nullable="false" Whether the value may be null.

Action definition examples

The following represent some fictional examples of Action definitions showing different binding patterns. Each of these examples returns an integer value.

Unbound actions

An unbound action with a single integer Number parameter.

<Action Name="UnBoundActionExample">
    <Parameter Name="Number" Type="Edm.Int32" Nullable="false" />
    <ReturnType Type="Edm.Int32" Nullable="false" />
</Action>

Action bound to an entity

An action bound to the account entity with a single integer Number parameter.

<Action Name="EntityBoundActionExample" IsBound="true">
    <Parameter Name="entity" Type="mscrm.account" Nullable="false" />
    <Parameter Name="Number" Type="Edm.Int32" Nullable="false" />
    <ReturnType Type="Edm.Int32" Nullable="false" />
</Action>

Action bound to an entity set

An action bound to the account EntitySet with a single integer Number parameter.

<Action Name="EntityCollectionBoundActionExample" 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" />
</Action>

Overloaded Actions

Usually, each action you find in the $metadata will be the only action with that name. However bound actions can have multiple definitions when bound to different types. The AddItemCampaign action included the marketing solution is one example. You cannot create an overloaded action using custom API.

More information: Action Overload Rules

Next steps

Learn about Function Definitions.

See also

Web API types and operations
Web API Service Documents
Web API EntityTypes
Web API Properties
Web API Navigation Properties
Web API Functions
Web API Complex and Enumeration types
Use the Dataverse Web API
OData 4.0 Action specification