CustomAPI tables

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

The sections in this article provide detailed information about the column values you use most.

This diagram shows how the tables are related to these tables and 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 following table 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. Third 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 isn't 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. Use this value when the message is visible in an app. For example, as a ToolTip.
Display Name
DisplayName
displayname
Text
String
Localized display name for this custom API. Use this value when the message is visible 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 value displays 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 value is 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's no specified order for the parameters. They're identified by name.

A parameter is related to a single custom API. You can't define multiple custom APIs to use the same parameter definition. You can define multiple request parameters with the same UniqueName value if they're 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 following table 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. Use this value when the message parameter is visible in an app. For example, as a ToolTip.
Display Name
DisplayName
displayname
Text
String
Localized display name for custom API request parameter instances. Use this value when the message parameter is visible 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 isn't optional, it's 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 value displays in the list of custom API request parameters when viewed in the solution. Use this value 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 value is 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 includes any response properties you define. It isn't required for a custom API Action to return any value, but it must return a value if defined as a Function.

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

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

The following table 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. Use this value when the message parameter is visible in an app. For example, as a ToolTip.
Display Name
DisplayName
displayname
Text
String
Localized display name for custom API response property instances. Use this value when the message parameter is visible 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 can't 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 value displays in the list of custom API request parameters when viewed in the solution. Use this value 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 value is 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