Skip to main content

Entities

Entities define which Dataverse entities are exposed through the API and what operations are available for each entity.

Entity Configuration

When you add an entity to a module, you configure which operations (actions) are available:

OperationHTTP MethodDescription
CreatePOSTCreate new records
UpdatePUT/PATCHModify existing records
ReadGETRetrieve single record by ID
DeleteDELETERemove records
UploadPOSTUpload files/attachments
DownloadGETDownload files/attachments
Process ActionsPOSTExecute custom actions
Local Option SetsGETRetrieve entity-specific option sets

Entity Actions

Each entity can have multiple actions configured. Actions define:

  • Endpoint Name: The URL path for the action
  • Documentation: Title and description for API documentation
  • Inputs: Parameters accepted by the action
  • Data Fetcher: Pre-fetch queries for dependent data
  • Access Control: Authorization and pre-conditions
  • Entity Properties: Field mappings for create/update

Entity Structure in API Studio

Entity: Account
├── Definition
│ └── Endpoint: accounts
├── Actions:
│ ├── Create Action
│ │ ├── Definition
│ │ ├── Documentation
│ │ ├── Inputs
│ │ ├── Data Fetcher
│ │ ├── Access Control
│ │ └── Entity Properties
│ ├── Update Action
│ │ └── (similar structure)
│ ├── Read Action
│ │ └── (similar structure)
│ ├── Delete Action
│ │ └── (similar structure)
│ ├── Upload Actions
│ │ └── (for file uploads)
│ ├── Download Actions
│ │ └── (for file downloads)
│ └── Process Actions
│ └── (entity-bound custom actions)
└── Local Option Sets
└── (entity-specific picklists)

Generated API Endpoints

Each endpoint route is built from the module name, the entity logical name, and the endpoint name you configure on the action, then lowercased. For example, for the account entity in the Sales module with actions named create, get, update, and delete, the engine emits:

OperationEndpointDescription
CreatePOST /sales/account/createCreate new account
UpdatePUT /sales/account/{id}/updateUpdate account
ReadGET /sales/account/{id}/getGet account by ID
DeleteDELETE /sales/account/{id}/deleteDelete account
UploadPOST /sales/account/{id}/uploadUpload attachment
DownloadGET /sales/account/{id}/download/{attachmentId}Download a specific attachment
Local processPOST /sales/account/approve?id={id}Execute an entity-bound process action
Option SetsGET /sales/account/optionsets/{name}Get a local option set
Route structure

Routes are rooted at the application host — the runtime does not add an /api/ prefix. Any such prefix (or a base path) comes from how you host the app. Route segments are always lowercased, the entity segment is the Dataverse logical name (e.g. account, incident), and every entity action carries its own endpoint-name segment. Local (entity-bound) process actions take the record id as a required query-string parameter, not a route segment.

Local Option Sets

Local Option Sets expose entity-specific (local) option sets through dedicated endpoints.

Entity: Account (logical name: account)
Local Option Sets:

├── accountcategorycode
│ └── Endpoint: /sales/account/optionsets/accountcategorycode

├── accountclassificationcode
│ └── Endpoint: /sales/account/optionsets/accountclassificationcode

└── customertypecode
└── Endpoint: /sales/account/optionsets/customertypecode

Access Control:
└── Authorization Policy:
└── Type: Demand Authenticated User

API Request:

GET /sales/account/optionsets/accountcategorycode?lcid=1033

API Response (200 OK):

[
{
"name": "Preferred Customer",
"value": 1
},
{
"name": "Standard",
"value": 2
}
]

Local option sets support the same lcid parameter as global option sets for localization.