Get Object Metadata Examples

AVAILABLE API VERSION
API v56.0 and later
Locale available in API v60.0 and later
Picklist values available in API v65.0 and later

Query Account Object Metadata

This example fetches the metadata for the Account object.

{
  uiapi {
    objectInfos(apiNames: ["Account"]) {
      ApiName
      childRelationships {
        fieldName
        childObjectApiName
        junctionIdListNames
        junctionReferenceTo
        relationshipName

      }
      createable
      custom
      defaultRecordTypeId
      deletable
      dependentFields {
        controllingField
        dependentFields
      }
      feedEnabled
      fields {
        ApiName
        calculated
        compound
        compoundComponentName
        controllerName
        controllingFields
        createable
        custom
        dataType
        extraTypeInfo
        filterable
        filteredLookupInfo {
          controllingFields
          dependent
          optionalFilter
        }
        highScaleNumber
        htmlFormatted
        inlineHelpText
        label
        nameField
        polymorphicForeignKey
        precision
        reference
        referenceToInfos {
          ApiName
          nameFields
        }
        relationshipName
        referenceTargetField
        scale
        sortable
        searchPrefilterable
        updateable
      }
      keyPrefix
      label
      labelPlural
      layoutable
      mruEnabled
      nameFields
      queryable
      recordTypeInfos {
        name
        recordTypeId
      }
      searchable
      themeInfo {
        color
        iconUrl
      }
      updateable
    }
  }
}

The previous query returns this response.

{
  "data": {
    "uiapi": {
      "objectInfos": [
        {
          "ApiName": "Account",
          "childRelationships": [
            {
              "fieldName": "ParentId",
              "childObjectApiName": "Account",
              "junctionIdListNames": [],
              "junctionReferenceTo": [],
              "relationshipName": "ChildAccounts"
            },
            //...truncated for display
          "createable": true,
          "custom": false,
          "defaultRecordTypeId": null,
          "deletable": true,
          "dependentFields": [],
          "feedEnabled": true,
          "fields": [
            {
              "ApiName": "ShippingLatitude",
              "calculated": false,
              "compound": false,
              "compoundComponentName": "ShippingAddress",
              "controllerName": null,
              "controllingFields": [],
              "createable": true,
              "custom": false,
              "dataType": "DOUBLE",
              "extraTypeInfo": null,
              "filterable": true,
              "filteredLookupInfo": null,
              "highScaleNumber": false,
              "htmlFormatted": false,
              "inlineHelpText": null,
              "label": "Shipping Latitude",
              "nameField": false,
              "polymorphicForeignKey": false,
              "precision": 18,
              "reference": false,
              "referenceToInfos": [],
              "relationshipName": null,
              "referenceTargetField": null,
              "scale": 15,
              "sortable": true,
              "searchPrefilterable": false,
              "updateable": true
            },
            //...truncated for display
            "keyPrefix": "001",
            "label": "Account",
            "labelPlural": "Accounts",
            "layoutable": true,
            "mruEnabled": true,
            "nameFields": [
              "Name"
            ],
            "queryable": true,
            "recordTypeInfos": [
              {
                "name": "Master",
                "recordTypeId": "012000000000000AAA"
              }
            ],
            "searchable": true,
            "themeInfo": {
              "color": "7F8DE1",
              "iconUrl": "https://www.example.com/img/account_120.png"
            },
            "updateable": true
          }
       ]
     }
  },
  "errors": []
}

Query Account Object Labels Using a Locale

This example gets account labels in French.

query accounts {
    uiapi {
         objectInfos(apiNames: ["Account"], locale: "fr_FR") {
           ApiName
           locale
           fields {
             label
           }
         }
    }
}

The previous query returns this response.

{
  "data": {
    "uiapi": {
      "objectInfos": [
        {
          "ApiName": "Account",
          "locale": "fr_FR",
          "fields": [
            {
              "label": "Date de dernière modification"
            },
            {
              "label": "Ville de facturation"
            },
            {
              "label": "Jigsaw Company ID"
            },
            {
              "label": "SLA"
            },
          :
          :
          ]
        }
      ]
    }
  }
}

Query Picklist Values for a Record Type

This example gets all picklist values for the Account object for a specified record type ID.

query GetPicklistValuesByRecordType {
  uiapi {
    objectInfos(objectInfoInputs: {
      apiName: "Account",
      recordTypeIDs: ["012000000000000AAA"],
      fieldNames: []
    }) {
      apiName
      fields {
        apiName
        ... on PicklistField {
          picklistValuesByRecordTypeIDs {
            recordTypeID
            controllerValues {
              value
            }
            picklistValues {
              value
            }
          }
        }
      }
    }
  }
}

The previous query returns this response.

{
  "data": {
    "uiapi": {
      "objectInfos": [
        {
          "apiName": "Account",
          "fields": [
            {
              "apiName": "Industry",
              "picklistValuesByRecordTypeIDs": [
                {
                  "recordTypeID": "012000000000000AAA",
                  "controllerValues": [],
                  "picklistValues": [
                    { "value": "Agriculture" },
                    { "value": "Apparel" },
                    ...
                  ]
                }
              ]
            },
            ...
          ]
        }
      ]
    }
  }
}

Query Picklist Values for Multiple Record Types

This example gets all picklist values for two record type IDs and filtered by a field name.

query GetFilteredPicklistValues {
  uiapi {
    objectInfos(objectInfoInputs: {
      apiName: "Account",
      recordTypeIDs: ["012000000000000AAA", "012xx0000006ZD2AAM"],
      fieldNames: ["Industry"]
    }) {
      apiName
      fields {
        apiName
        ... on PicklistField {
          picklistValuesByRecordTypeIDs {
            recordTypeID
            controllerValues {
              value
            }
            picklistValues {
              value
            }
          }
        }
      }
    }
  }
}

The previous query returns this response.

{
  "data": {
    "uiapi": {
      "objectInfos": [
        {
          "apiName": "Account",
          "fields": [
            {
              "apiName": "Industry",
              "picklistValuesByRecordTypeIDs": [
                {
                  "recordTypeID": "012000000000000AAA",
                  "controllerValues": [],
                  "picklistValues": [
                    { "value": "Agriculture" },
                    { "value": "Apparel" },
                    ...
                  ]
                },
                {
                  "recordTypeID": "012xx0000006ZD2AAM",
                  "controllerValues": [],
                  "picklistValues": [
                    { "value": "Agriculture" },
                    { "value": "Apparel" },
                    ...
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Query Account Child Relationships

This example fetches all the child relationships for the Account object.

{
  uiapi {
    objectInfos(apiNames: ["Account"]) {
      childRelationships {
        objectInfo {
          ApiName
          createable
          custom
          defaultRecordTypeId
          deletable
          feedEnabled
          keyPrefix
          label
          labelPlural
          layoutable
          mruEnabled
          nameFields
          queryable
          searchable
          updateable
        }
      }
    }
  }
}

The previous query returns this response.

{
  "data": {
    "uiapi": {
      "objectInfos": [
        {
          "childRelationships": [
            {
              "objectInfo": {
                "ApiName": "Account",
                "createable": true,
                "custom": false,
                "defaultRecordTypeId": null,
                "deletable": true,
                "feedEnabled": true,
                "keyPrefix": "001",
                "label": "Account",
                "labelPlural": "Accounts",
                "layoutable": true,
                "mruEnabled": true,
                "nameFields": [
                  "Name"
                ],
                "queryable": true,
                "searchable": true,
                "updateable": true
              }
            },
            {
              "objectInfo": {
                "ApiName": "AccountChangeEvent",
                "createable": false,
                "custom": false,
                "defaultRecordTypeId": null,
                "deletable": false,
                "feedEnabled": false,
                "keyPrefix": "1CE",
                "label": "Account Change Event",
                "labelPlural": "Account Change Event",
                "layoutable": false,
                "mruEnabled": false,
                "nameFields": [
                  "Name"
                ],
                "queryable": false,
                "searchable": false,
                "updateable": false
              }
            },
            //...truncated for display
            {
              "objectInfo": {
                "ApiName": "WorkOrderChangeEvent",
                "createable": false,
                "custom": false,
                "defaultRecordTypeId": null,
                "deletable": false,
                "feedEnabled": false,
                "keyPrefix": "1CE",
                "label": "Work Order Change Event",
                "labelPlural": "Work Order Change Event",
                "layoutable": false,
                "mruEnabled": false,
                "nameFields": [],
                "queryable": false,
                "searchable": false,
                "updateable": false
              }
            }
          ]
        }
      ]
    }
  },
  "errors": []
}

Query Child Relationships for Account and Case

This example returns the child relationships for accounts and cases. It also runs an objectInfo subquery to fetch the queryable field on childRelationships.

{
  uiapi {
    objectInfos(apiNames: ["Account", "Case"]) {
      ApiName
      childRelationships {
        childObjectApiName
        relationshipName
        objectInfo {
          ApiName
          queryable
        }
      }
    }
  }
}

The previous query returns this response.

{
  "data": {
    "uiapi": {
      "objectInfos": [
        {
          "ApiName": "Account",
          "childRelationships": [
            {
              "childObjectApiName": "Account",
              "relationshipName": "ChildAccounts",
              "objectInfo": {
                "ApiName": "Account",
                "queryable": true
              }
            },
            //...truncated for display
          ]
        }
      ]
    }
  }
}

See Also

Get Object Metadata