In this article, we’ll walk through a practical implementation of an Employee Records API that accepts employee data and stores it in Dataverse.
Real-World Use Case
Imagine your organization has:
A website HR form
An internal onboarding portal
Or a third-party recruitment system
Whenever a new employee joins, the system must automatically:
Capture employee details
Store them in Dataverse
Return a proper success or failure response
Instead of building a custom backend API, we can expose a secure HTTP endpoint using Power Automate that behaves like a lightweight REST API.
Step - by Step Implementation:
Step 1 – Dataverse Table Preparation
Before building the flow, create a Dataverse table.
Table Name:
Employee Records
Columns Created:
First Name (Text)
Last Name (Text)
Email (Text)
Company (Text)
Step 2 – Configure HTTP Trigger
Create a new Instant flow and select trigger as: When an HTTP request is received
This trigger converts your flow into a callable API endpoint.
Trigger Option: Who Can Trigger the Flow?
| Option | Who Can Call the Flow | Authentication Required | Explantion | Risk Level |
|---|---|---|---|---|
| Anyone | Any person/system with the URL | No authentication | The flow becomes publicly callable. If someone has the URL, they can trigger it. Suitable for demos or temporary integrations, but not recommended for production without additional validation (like secret keys). | High (URL exposure risk) |
| Any user in my tenant | Any authenticated user in your Microsoft 365 tenant | Azure AD login required | Only authenticated users within your organization can call the endpoint. | Medium |
| Specific users in my tenant | Only selected users or service principals | Azure AD + restricted access | Access is restricted to defined users or service principals. This is the safest configuration and recommended for enterprise-grade integrations. | Low (recommended) |
Please Note:
1. For testing purpose configuration is set as : Anyone. You can select as per your need.
2. Also, you will notice the "HTTP POST URL" is empty. This URL is generated after you save the flow for the first time.

Defining the JSON Schema
configure the schema as:
{
"type": "object",
"properties": {
"firstName": { "type": "string" },
"lastName": { "type": "string" },
"email": { "type": "string" },
"company": { "type": "string" }
}
}This schema does three important things:
It tells Power Automate how to parse incoming JSON.
It enables dynamic content mapping in later steps.
It prevents blank payload issues (
{ }body problems).
Without a schema, the flow may trigger successfully but the body will be unreadable and Dataverse fields will remain empty. Think of this as defining the input model of your API.
Step 3- Understanding and configuring the HTTP Method Correctly
By default, when sending structured JSON data, the request method must be POST.
Why?
GET requests are intended for retrieval.
POST requests are intended for sending structured data.
Only POST reliably carries a body payload.
Since we are sending employee details, POST is the correct method.
Always ensure:
Trigger method matches request method.
If method is changed, copy the regenerated URL.









Join the conversation! Your thoughts help the community grow.