I'm very new to the Ethereum landscape, but from everything I'm learning and reading about Ethereum contracts, there is an obvious limitation on connecting to external APIs since we can't wait for those APIs to respond before processing a transaction. The question that keeps coming back to me is that everyone is talking about "applications" that are able to interface with the real world (sometimes autonomously) so there is an obvious need to connect to APIs, get data from "oracles", and initiate external processes or actions (e.g. a distributed organization making a purchase from Amazon).
Eventually, I suppose, Amazon can have their own smart contract that is able to return price info and confirm transactions completely on the blockchain – but I'm guessing this is quite a ways away, and we'll all be resorting to either building our own bridges, or using a third-party relay application that we now have to trust with our data as it's on its way to whoever we're needing to transact with in the real world.
Maybe I'm missing something, but if I'm not, who's working on these types of services today, and are there any best practices being documented yet for designing these types of "bridges" between smart contracts and the real world?