CustomAPI tables

The data that defines custom APIs is in the following tables/entities:

The sections in this topic below provide detailed information about the column values you will use most.

This diagram shows how the tables are related to these tables as well as others:

Diagram showing relationships between tables.

The relationship to the CatalogAssignment table enables using custom API with Microsoft Dataverse business events. More information: Catalog and CatalogAssignment tables.

Retrieve data about custom APIs

You can use the following queries to retrieve data about custom APIs.

More information: Query Data using the Web API

GET [Organization URI]/api/data/v9.1/customapis?$select=
    uniquename,
    allowedcustomprocessingsteptype,
    bindingtype,
    boundentitylogicalname,
    description,
    displayname,
    executeprivilegename,
    iscustomizable,
    isfunction,
    isprivate,
    workflowsdkstepenabled
  &$expand=
  CustomAPIRequestParameters($select=
    uniquename,
    name,
    description,
    displayname,
    type,
    logicalentityname,
    iscustomizable,
    isoptional),
  CustomAPIResponseProperties($select=
    uniquename,
    name,
    description,
    displayname,
    iscustomizable,
    type,
    logicalentityname),
  PluginTypeId($select=
    plugintypeid,
    typename,
    version,
    name,
    assemblyname)

custom API table columns

The table below includes selected columns of a custom API table that you can set.

Display Name
Schema Name
Logical Name
Type Description
Allowed Custom Processing Step Type
AllowedCustomProcessingStepType
allowedcustomprocessingsteptype
Choice
Picklist
  • Value: 0
    Label: None
    Meaning: No custom processing steps allowed.
  • Value: 1
    Label: Async Only
    Meaning: Only asynchronous custom processing steps allowed
  • Value: 2
    Label: Sync and Async
    Meaning: No restriction. 3rd party plug-ins can add synchronous logic to change the behavior of the message.
See Select a Custom Processing Step Type
Cannot be changed after it is saved.
Binding Type
BindingType
bindingtype
Choice
Picklist
  • Value: 0 Label: Global
  • Value: 1 Label: Entity
  • Value: 2 Label: EntityCollection
See Select a Binding Type
Cannot be changed after it is saved.
Bound Entity Logical Name
BoundEntityLogicalName
boundentitylogicalname
Text
String
The logical name of the table bound to the custom API if it is not Global.
Cannot be changed after it is saved.
custom API
CustomAPIId
customapiid
Unique Identifier
Guid
Unique Identifier for custom API instances
Cannot be changed after it is saved.
Description
Description
description
Text
String
Localized description for this custom API. For use when the message is exposed to be called in an app. For example, as a ToolTip.
Display Name
DisplayName
displayname
Text
String
Localized display name for this custom API. For use when the message is exposed to be called in an app.
Execute Privilege Name
ExecutePrivilegeName
executeprivilegename
Text
String
(Optional) Name of the privilege that allows execution of the custom API. See: Secure your custom API with a privilege
Is Customizable
IsCustomizable
iscustomizable
ManagedProperty Whether the custom API can be customized or deleted when part of a managed solution.
Is Function
IsFunction
isfunction
Yes/No
Boolean
  • Value: 0 Label: No
  • Value: 1 Label: Yes
See When to create a Function
Cannot be changed after it is saved.
Is Private
IsPrivate
isprivate
Yes/No
Boolean
  • Value: 0 Label: No
  • Value: 1 Label: Yes
See When to make your custom API private
Name
Name
name
Text
String
The primary name of the custom API. This will display in the list of custom apis when viewed in the solution.
Owner
OwnerId
ownerid
Owner A reference to the user or team that owns the API.
Plugin Type
PluginTypeId
plugintypeid
Lookup A reference to the plug-in type that provides the main operation for this custom API. See: Use a plug-in to include logic in your custom API
Unique Name
UniqueName
uniquename
Text
String
Unique name for the custom API. This will be the name of the message created.
This value must include a customization prefix that matches the prefix set for your solution publisher.
This value can't contain any special characters.
Cannot be changed after it is saved.
Enabled for Workflow
WorkflowSdkStepEnabled
workflowsdkstepenabled
Yes/No
Boolean
Indicates if the custom API is enabled as a workflow action. See: Use a custom API in a workflow
Cannot be changed after it is saved.

CustomAPIRequestParameter Table Columns

A custom API isn't required to have any parameters. There is no specified order for the parameters, they are identified by name.

A parameter is related to a single custom API. You cannot define multiple custom APIs to use the same parameter definition. You can define multiple request parameter with the same UniqueName value if they are used by different custom APIs.

Note

If you define a bound table for your custom API, the request parameter will be generated for you. You don't need to create an input parameter for the table when the custom API is bound to a table. More information: Select a Binding Type

The table shown below includes columns (attributes) of the custom API Request Parameter table that you can set.

Display Name
Schema Name
Logical Name
Type Description
custom API Request Parameter
CustomAPIRequestParameterId
customapirequestparameterid
Unique Identifier
Guid
Unique identifier for custom API request parameter instances.
Cannot be changed after it is saved.
custom API
CustomAPIId
customapiid
Lookup Unique identifier for the custom API that this custom API request parameter is associated with.
Cannot be changed after it is saved.
Description
Description
description
Text
String
Localized description for custom API request parameter instances. For use when the message parameter is exposed to be called in an app. For example, as a ToolTip.
Display Name
DisplayName
displayname
Text
String
Localized display name for custom API request parameter instances. For use when the message parameter is exposed to be called in an app.
Is Customizable
IsCustomizable
iscustomizable
ManagedProperty Whether the custom api request parameter can be customized or deleted when part of a managed solution. See custom API Customization
Is Optional
IsOptional
isoptional
Yes/No
Boolean
Indicates if the custom API request parameter is optional. If it is not optional, it is required to pass a value for this parameter when using the message.
  • Value: 0 Label: No
  • Value: 1 Label: Yes
Cannot be changed after it is saved.
Logical Entity Name
LogicalEntityName
logicalentityname
Text
String
The logical name of the table bound to the custom API request parameter.
Cannot be changed after it is saved.
Name
Name
name
Text
String
The primary name of the custom API request parameter. This will display in the list of custom api request parameters when viewed in the solution. Use this to differentiate this parameter from others that share a common Unique Name.
This naming convention is recommended: {custom API Unique Name}.{Parameter UniqueName}
Owner
OwnerId
ownerid
Owner A reference to the user or team that owns the API.
Type
Type
type
Choice
Picklist
The data type of the custom API request parameter.
  • Value: 0 Label: Boolean
  • Value: 1 Label: DateTime
  • Value: 2 Label: Decimal
  • Value: 3 Label: Entity
  • Value: 4 Label: EntityCollection
  • Value: 5 Label: EntityReference
  • Value: 6 Label: Float
  • Value: 7 Label: Integer
  • Value: 8 Label: Money
  • Value: 9 Label: Picklist
  • Value: 10 Label: String
  • Value: 11 Label: StringArray
  • Value: 12 Label: Guid
Cannot be changed after it is saved.
Unique Name
UniqueName
uniquename
Text
String
Unique name for the custom API request parameter. This will be the name of the parameter when you call the custom API.
This value can't contain any special characters.
Cannot be changed after it is saved.

CustomAPIResponseProperty Table Columns

The object returned for your custom API message will include any response properties you define. It is not required for a custom API Action to return any value, but it must return a value if defined as a Function.

If there is only a single Entity or EntityCollection response property defined, the response will be of that type. If there are multiple parameters, or one or more parameter of a simple type, the API will return a complex type where each response property will be a property of that complex type.

For example, if your custom API Unique name is sample_CustomAPIExample, it will return a complex type named sample_CustomAPIExampleResponse with properties for each response property you define.

The table below includes columns (attributes) of the custom API Response Property table that you can set.

Display Name
Schema Name
Logical Name
Type Description
custom API Response Property
CustomAPIResponsePropertyId
customapiresponsepropertyid
Unique Identifier
Guid
Unique identifier for custom API response property instances.
Cannot be changed after it is saved.
custom API
CustomAPIId
customapiid
Lookup Unique identifier for the custom API that this custom API response property is associated with.
Cannot be changed after it is saved.
Description
Description
description
Text
String
Localized description for custom API response property instances. For use when the message parameter is exposed to be called in an app. For example, as a ToolTip.
Display Name
DisplayName
displayname
Text
String
Localized display name for custom API response property instances. For use when the message parameter is exposed to be called in an app.
Is Customizable
IsCustomizable
iscustomizable
ManagedProperty Whether the custom api response property can be customized or deleted when part of a managed solution.
Logical Entity Name
LogicalEntityName
logicalentityname
Text
String
When Entity or EntityReference are selected as the Type, you can specify the logical name of the table bound to the custom API response property. You cannot specify a Logical Entity Name when you choose EntityCollection as the Type.
Cannot be changed after it is saved.
Name
Name
name
String The primary name of the custom API response property . This will display in the list of custom api request parameters when viewed in the solution. Use this to differentiate this parameter from others that share a common Unique Name.
This naming convention is recommended: {custom API Unique Name}.{Property UniqueName}
Owner
OwnerId
ownerid
Owner A reference to the user or team that owns the API.
Type
Type
type
Picklist The data type of the custom API response property
  • Value: 0 Label: Boolean
  • Value: 1 Label: DateTime
  • Value: 2 Label: Decimal
  • Value: 3 Label: Entity
  • Value: 4 Label: EntityCollection
  • Value: 5 Label: EntityReference
  • Value: 6 Label: Float
  • Value: 7 Label: Integer
  • Value: 8 Label: Money
  • Value: 9 Label: Picklist
  • Value: 10 Label: String
  • Value: 11 Label: StringArray
  • Value: 12 Label: Guid
Cannot be changed after it is saved.
Unique Name
UniqueName
uniquename
Text
String
Unique name for the custom API response property . This will be the name of the parameter when you call the custom API.
This value can't contain any special characters.
Cannot be changed after it is saved.

See also

Create and use custom APIs
Create a custom API using the plug-in registration tool
Create a custom API in Power Apps
Create a custom API with code
Create a custom API with solution files
Create your own messages