您可以查询FieldDefinition例如,Tooling API 中的表
/services/data/v52.0/tooling/query?q=SELECT+Metadata+FROM+FieldDefinition+WHERE+EntityDefinitionId+=+'Account'+AND+QualifiedApiName+=+'Status__c'
(...)
"valueSet" : {
"controllingField" : null,
"restricted" : true,
"valueSetDefinition" : {
"sorted" : false,
"value" : [ {
"color" : null,
"default" : false,
"description" : null,
"isActive" : null,
"label" : "Prospect",
"urls" : null,
"valueName" : "Prospect"
}, {
"color" : null,
"default" : false,
"description" : null,
"isActive" : null,
"label" : "Live",
"urls" : null,
"valueName" : "Live"
}, {
"color" : null,
"default" : false,
"description" : null,
"isActive" : null,
"label" : "Cancelled",
"urls" : null,
"valueName" : "Cancelled"
}
(...)
选项列表值将位于Metadata
字段,但要查询它,您需要确保只返回 1 行。因此,如果您需要 3 个选项列表 - 即 3 个 API 调用...
它将返回“主”选项列表,而不是按记录类型过滤。
还有一个有趣的表叫做PicklistValueInfo。它的描述不太好,这是一个相关列表EntityParticle
。您可以查询以一次性获取多个选项列表值
SELECT DurableId,EntityParticleId,IsActive,Label,Value
FROM PicklistValueInfo
WHERE EntityParticle.EntityDefinition.DeveloperName = 'Account' AND
(DurableId LIKE 'Account.Industry%' OR DurableId LIKE 'Account.Type%')
ORDER BY DurableId
或者使用它相关的列表样式(这可能更接近描述调用的结果?)
SELECT DataType, FieldDefinition.QualifiedApiName,
(SELECT Value, Label FROM PicklistValues)
FROM EntityParticle
WHERE EntityDefinition.QualifiedApiName ='Account'
AND QualifiedApiName IN ('Industry', 'Type', 'Status__c')
如果你使用记录类型- David 链接的 UI API 是最简单的。
https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_resources_picklist_values_collection.htm
你可以把它们全部抓住
/services/data/v52.0/ui-api/object-info/Account/picklist-values/012...
或者构建如屏幕截图所示的链接以获取单个字段的数据。