HOSTED MOCK API REFERENCE
Dataverse Accounts API mock: OData success and service protection
Verify that your Dynamics connector accepts a bodyless 204 and reads OData-EntityId rather than attempting JSON parsing. Exercise PATCH requests and a selected ETag precondition failure separately from service-protection throttling.
Explore mock APIsNew registration is paused. Explore the public mock APIs; existing users can still sign in.
Existing user? Configure Microsoft Dataverse Accounts API · Workspace pricing and limits · Supported operations and behaviours
What to assert in your client
Prefer representations and concurrency errors are selected fixtures. The receiver does not persist Accounts, evaluate an If-Match value or negotiate Prefer automatically. Retry-After and OData header values are example values; they do not describe a live tenant.
Request and selected response examples
Create Account: Account row created
Documented Synthetic illustrative example from the catalogue, not a live capture. Run only after installing your own receiver. Replace <your-receiver-token> locally; no request is sent from this page.
HTTP 204 · No response body
curl / Bash request
printf '%s' '{"name":"Example Test Co"}' | \
curl -i -X POST \
'https://nottherealapi.com/r/<your-receiver-token>/api/data/v9.2/accounts' \
-H 'Authorization: Bearer synthetic-microsoft-dataverse-token' \
-H 'Accept: application/json' \
-H 'OData-Version: 4.0' \
-H 'OData-MaxVersion: 4.0' \
-H 'Content-Type: application/json' \
--data-binary @-PowerShell request
$body = '{"name":"Example Test Co"}'
Invoke-WebRequest `
-UseBasicParsing `
-Uri 'https://nottherealapi.com/r/<your-receiver-token>/api/data/v9.2/accounts' `
-Method POST `
-Headers @{
Authorization = 'Bearer synthetic-microsoft-dataverse-token'
Accept = 'application/json'
'OData-Version' = '4.0'
'OData-MaxVersion' = '4.0'
} `
-ContentType 'application/json' `
-Body ([Text.Encoding]::UTF8.GetBytes($body))Selected synthetic response
HTTP 204
odata-version: 4.0
odata-entityid: https://org.example.test/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)
Update Account: Service protection throttling
Documented Synthetic illustrative example from the catalogue, not a live capture. Run only after installing your own receiver. Replace <your-receiver-token> locally; no request is sent from this page.
HTTP 429 · 0x80072321 · Retry-After: 30
curl / Bash request
printf '%s' '{"name":"Updated Example Co"}' | \
curl -i -X PATCH \
'https://nottherealapi.com/r/<your-receiver-token>/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)' \
-H 'Authorization: Bearer synthetic-microsoft-dataverse-token' \
-H 'Accept: application/json' \
-H 'OData-Version: 4.0' \
-H 'OData-MaxVersion: 4.0' \
-H 'If-Match: *' \
-H 'Content-Type: application/json' \
--data-binary @-PowerShell request
$body = '{"name":"Updated Example Co"}'
Invoke-WebRequest `
-UseBasicParsing `
-Uri 'https://nottherealapi.com/r/<your-receiver-token>/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)' `
-Method PATCH `
-Headers @{
Authorization = 'Bearer synthetic-microsoft-dataverse-token'
Accept = 'application/json'
'OData-Version' = '4.0'
'OData-MaxVersion' = '4.0'
'If-Match' = '*'
} `
-ContentType 'application/json' `
-Body ([Text.Encoding]::UTF8.GetBytes($body))Selected synthetic response
HTTP 429
content-type: application/json
retry-after: 30
x-ms-ratelimit-burst-remaining-xrm-requests: 0
x-ms-ratelimit-time-remaining-xrm-requests: 0
odata-version: 4.0
{
"error": {
"code": "0x80072321",
"message": "Service protection API limit exceeded. Decrease request rate and retry later."
}
}CRM Dataverse Web API · v9.2
What can I test with this?
Test integrations that create and update Dataverse account rows without a live Dynamics 365 environment. Reproduce bodyless success responses, OData headers, table permissions and invalid properties. Exercise missing rows, concurrent update conflicts and service-protection throttling in your client.
Prefer representations and ETag failures are selected responses. The receiver does not persist accounts, evaluate ETags or negotiate Prefer automatically. Error messages and service-protection header values are examples.
Useful for
- Account synchronisation
- Dynamics 365 connectors
- OData response handling
- Conditional updates
- Service-protection backoff
Supported operations
2 operationsCreate Account
POST /api/data/v9.2/accounts
Creates a Dataverse account row. The success response has HTTP 204 with no body and an OData-EntityId header identifying the example row.
Request content type: application/json
Request example
{
"name": "Example Test Co"
}Available behaviours (7)
Account row created
DocumentedCreate returns no body and the new entity URL in OData-EntityId.
HTTP 204 · No response body
Verify that your client handles a successful response.
Created row representation
DocumentedSelect this response and send Prefer: return=representation. No row is persisted.
HTTP 201
Verify that your client handles a successful response.
Expired bearer token
RepresentativeSelected expired-token response; the simulator does not validate an actual Microsoft token.
HTTP 401 · 0x8005F101
Test credential refresh and authentication recovery.
Insufficient table privilege
RepresentativeAuthenticated principal lacks permission for this table operation.
HTTP 403 · 0x80040220
Check how your integration reports missing access or permissions.
Invalid property value
RepresentativeDataverse rejects an invalid property name or value.
HTTP 400 · 0x80048d19
Test field mapping and useful validation feedback.
Service protection throttling
Documented429 includes Retry-After; wait before sending more requests.
HTTP 429 · 0x80072321 · Retry-After: 30
Verify bounded backoff and retry handling.
- Wait for Retry-After before retrying; avoid increasing concurrency.
Dataverse temporarily unavailable
RepresentativeRepresentative upstream unavailability.
HTTP 503 ·
Test recovery and error reporting during simulated service failures.
Update Account
PATCH /api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)
Updates fields on the example account row using PATCH. Exercise bodyless success, missing rows and ETag precondition conflicts.
Request content type: application/json
Request example
{
"name": "Updated Example Co"
}Available behaviours (9)
Account row updated
RepresentativePATCH a representative account row.
HTTP 204 · No response body
Verify that your client handles a successful response.
Updated row representation
DocumentedSelect this response and send Prefer: return=representation. ETag is fixed; no concurrency state is maintained.
HTTP 200
Verify that your client handles a successful response.
Expired bearer token
RepresentativeSelected expired-token response; the simulator does not validate an actual Microsoft token.
HTTP 401 · 0x8005F101
Test credential refresh and authentication recovery.
Insufficient table privilege
RepresentativeAuthenticated principal lacks permission for this table operation.
HTTP 403 · 0x80040220
Check how your integration reports missing access or permissions.
Invalid property value
RepresentativeDataverse rejects an invalid property name or value.
HTTP 400 · 0x80048d19
Test field mapping and useful validation feedback.
Row not found
RepresentativeThe requested entity ID is not present.
HTTP 404 · 0x80040217
Check how your client handles a missing record or resource.
Concurrent update conflict
RepresentativeA conditional write's ETag precondition no longer matches.
HTTP 412 ·
Exercise conflict handling before repeating a write.
Service protection throttling
Documented429 includes Retry-After; wait before sending more requests.
HTTP 429 · 0x80072321 · Retry-After: 30
Verify bounded backoff and retry handling.
- Wait for Retry-After before retrying; avoid increasing concurrency.
Dataverse temporarily unavailable
RepresentativeRepresentative upstream unavailability.
HTTP 503 ·
Test recovery and error reporting during simulated service failures.
What NotTheRealAPI controls
NotTheRealAPI does not call Microsoft Dynamics 365 / Dataverse. No real provider account is required. Your integration sends the request to a NotTheRealAPI receiver and receives the selected provider-shaped response.
The receiver stays under NotTheRealAPI at /r/<receiver-token> followed by the operation path. Selecting a behaviour controls the simulated response on that same receiver.
New registration is paused. Sign in to use this module
Scope and safe testing
This independent simulation has no live Microsoft Dynamics 365 / Dataverse connection or endorsement and does not claim complete API compatibility. No real provider credentials are required. Outcomes remain selected until you change them; these provider fixtures do not persist business records or transition autonomously.
Use synthetic data only. Receiver URLs are secrets. Captured headers and bounded bodies are visible to authorised workspace members without automatic redaction; see privacy and retention.
NotTheRealAPI independently simulates third-party APIs for testing. All provider names and logos are the property of their respective owners. NotTheRealAPI is not affiliated with, sponsored by or endorsed by those providers, and these modules do not connect to their live services. Twilio and all related logos are trademarks of Twilio Inc. or its affiliates.
Browse the full mock API catalogue · HubSpot Contacts API mock: property mapping and retry handling · Compare workspace limits and pricing · Sign in

