A TypeScript service calls the Dataverse Web API to list active accounts in Seattle, returning only the account name and revenue plus the full name of each account's primary contact, in a single request. Which request meets the requirement?
Select an answer to reveal the explanation.
Short Explanation
In the Web API, $select picks your columns, $filter picks your rows, and $expand pulls in the related row by its navigation property. So you expand primarycontactid and select fullname inside it. The traps are a path in $select, the table name instead of the navigation property, and a $join option that doesn't exist.
Full Explanation
The Dataverse Web API follows OData query conventions. $select limits the returned columns of the primary table to name and revenue, which reduces payload and server work. $filter restricts rows using column comparisons, here the city and the active statecode value of 0. $expand retrieves related data through a navigation property; primarycontactid is the single-valued navigation property from account to contact, and a nested $select inside the expand limits the related row to fullname, so everything arrives in one response. Placing primarycontactid/fullname inside $select is not valid for retrieving related columns; Dataverse expects related data to be requested through $expand rather than through a path in $select. Expanding contact uses the table name rather than a navigation property; the expand must name the relationship as defined on account, so the request fails. $join is not an OData system query option, and the Web API rejects unknown options. Exam caveat: for lookup columns, the GUID is also available through the _primarycontactid_value property without expanding, along with formatted values when the appropriate Prefer header is sent. Operational check: send the request with an Authorization header from an HTTP client and confirm each account returns name, revenue and a primarycontactid object containing only fullname.