例如可以在Tooling API中查询FieldDefinition表
/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的相关列表。您可以查询以在 1 次中获取多个选项列表值
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
或者使用它相关的列表样式(可能更接近于 describe 调用的结果?)
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...
或者像屏幕截图中显示的那样构建链接来获取单个字段的数据。