For requests targeting an entity type with a stream property: If a $select is not present, or is present and includes stream properties, then metadata for those stream properties (i.e., "photo@mediaEditLink":"...") are returned (in full metadata). If a $select is present, and does not include the stream property, then the metadata for the stream is not included (even in full metadata). If a $expand is specified for a stream property on an entity, then the * value * of that stream property (along with the content type) is returned inline with other selected/expanded properties of the entity as described in OData JSON Format Version 4.01 (oasis-open.org) : If the actual stream data is included inline, the control information mediaContentType MUST be present to indicate how the included stream property value is represented. Stream property values of media type application/json or one of its subtypes, optionally with format parameters, are represented as native JSON. Values of top-level type text , for example text/plain , are represented as a string, with JSON string escaping rules applied. Included stream data of other media types is represented as a base64url-encoded string value, see [ RFC4648 ] , section 5. For a request targeting a stream property directly, then it is returned as the raw value according to the content type of the stream, which is returned in the content type header. Does that help? From: Christof Sprenger <
chrispre@microsoft.com> Sent: Wednesday, August 18, 2021 8:57 AM To: Michael Pizzo <
mikep@microsoft.com>;
odata@lists.oasis-open.org Subject: RE: expanded […] stream properties Thanks Mike, Also sorry, I still not 100% sure I get the full picture With $select=streamProperty1 the client is stating that the stream property should be included in-line as described in Format section 9 I streamProperty1 is not mentioned in the $ select (e.g. $select=prop1, prop2 ) the stream property is not included in the response (guessing) if there is no $select it is up to the service to include it in-line or not, correct? A URL ending in .../ streamProperty1/$value will return the stream value as an octet stream (I assume with the mediaContentType metadata in the header) Christof From: Michael Pizzo <
mikep@microsoft.com > Sent: Tuesday, August 17, 2021 17:25 To: Christof Sprenger <
chrispre@microsoft.com >;
odata@lists.oasis-open.org Subject: RE: expanded […] stream properties As described in OData Version 4.01. Part 1: Protocol (oasis-open.org) , starting in OData 4.01, users can request that stream properties be included in-line with other properties of the resource. OData JSON Format Version 4.01 (oasis-open.org) describes the rules for in-lining stream properties within a JSON OData payload. From:
odata@lists.oasis-open.org <
odata@lists.oasis-open.org > On Behalf Of Christof Sprenger Sent: Tuesday, August 17, 2021 10:45 AM To:
odata@lists.oasis-open.org Subject: [EXTERNAL] [odata] expanded […] stream properties Hello, Section 11.2.5.1 states “expanded […] stream properties” Is there something more in the standard about expanding stream properties when and how to do this? Christof 11.2.5.1 System Query Option $select The $select system query option requests that the service return only the properties, dynamic properties, actions and functions explicitly requested by the client. The service returns the specified content, if available, along with any availabl e expanded navigation or stream properties