A pricing operation must be callable from canvas apps, from cloud flows through the Dataverse connector, and from the Dataverse Web API as a named message with typed inputs and outputs. The developers want to define it in code, ship it in solutions, and prevent other solutions from registering steps that alter it. What should they design?
Select an answer to reveal the explanation.
Short Explanation
Think of a custom API as giving your operation its own front door with a name plate on it. Apps, flows and the Web API all knock on that same door, and you decide whether anyone else can bolt extra locks onto it. The trap is the custom process action, which works but doesn't give you the developer controls the stem asks for.
Full Explanation
Custom APIs let developers define their own Dataverse messages with strongly typed request parameters and response properties, implemented by a plug-in for the main operation. Because the message is part of Dataverse, it is exposed through the Web API and the SDK and can be invoked from flows through the Dataverse connector, which supports actions; this is why the API should be created as an action rather than a function. Custom APIs are solution components, so they can be defined in solution files and kept in source control, and the custom processing step type can be set to None so that no other solution can register steps that change or cancel the operation. Custom process actions offer a no-code way to define messages but have developer limitations, including less control over extension and binding, so Microsoft positions custom APIs as the code-first alternative. An Azure function behind a custom connector is not a Dataverse message, so it is absent from the Web API and outside the event pipeline. Triggering logic by updating a placeholder row is a workaround that pollutes data and provides no typed contract. Exam caveat: decide early between function and action, because that choice cannot be changed later. Operational check: call the API from the Web API and from a flow, then confirm no other steps can be registered on it.