oData is essentially just JSON, so use the Get Data > Web page connector called from a function with the same endpoint URL and manually craft the auth header... for an oData feed over https using Basic auth, something along the lines of:
(user as text, pass as text, TableName as text) => let
BasicAuth = user & ":" & pass,
Base64_Auth = Binary.ToText(Text.ToBinary(BasicAuth), BinaryEncoding.Base64),
BaseUrl = "https://base.url/odata",
oDatasrc=TableName,
Headers = [
Accept="application/json",
Authorization = "Basic " & Base64_Auth
],
Options = [
RelativePath = oDataSrc,
Headers = Headers,
ManualStatusHandling = {400, 404}
],
binary_response = Web.Contents(BaseUrl, Options),
buffered = Binary.Buffer(binary_response),
response_metadata = Value.Metadata(binary_response),
status_code = response_metadata[Response.Status],
// for 400 and 404, return extra error info
maybe_bytes =
if List.Contains({400, 404}, status_code)
then response_metadata else buffered,
// returns either document else web request error
from_json = Json.Document(maybe_bytes),
value = from_json[value],
TableConvert = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
TableConvert
...but remember any filtering etc won't be folded back, so you'll probably want to craft any essential top-level filters into the URL by hand also.