A developer calls a custom message from a code app and reviews the traffic in the browser network trace. The message is defined as a custom API with IsFunction set to true, and it has no side effects. How is it invoked over the Dataverse Web API?
Select an answer to reveal the explanation.
Short Explanation
Here's the deal: functions are questions, actions are commands. Questions use GET and carry their parameters in the URL; commands use POST with a body. Don't assume every custom API is an action; IsFunction decides which one you get.
Full Explanation
Dataverse exposes operations over the Web API as either functions or actions, following OData semantics. A function must not have side effects; it is invoked with an HTTP GET request and its parameters are passed in the URL, often through parameter aliases. An action can change data and is invoked with HTTP POST, with parameters in a JSON body. A custom API's IsFunction property determines which form Dataverse publishes, so a custom API with IsFunction true appears as a function and is called with GET. Treating every custom API as an action ignores IsFunction; only custom APIs with IsFunction false are actions. Calling a function with POST fails because the service only accepts GET for functions, and GET can carry parameters in the query string. PATCH is the verb for updating table rows, not for invoking messages, even bound ones. Exam caveat: a custom API meant to be used from a flow or to change data should be an action, because functions are restricted to read-style behavior. Operational check: in the network trace, confirm the request method is GET with parameters in the URL, and in the custom API definition confirm IsFunction is true before generating the service.