An increasing number of subsystems inside Salt are designed to make use of external APIs. At the moment, most of these are drivers for Salt Cloud, and most use either the Apache project's Libcloud library or the SDK maintained by the cloud provider.
Things have been changing in recent releases, though. Salt now has a library designed to make a generic, Salty HTTP client available to modules and for direct use by users. This library is already being used by some compute cloud providers as well as other services that provide a REST interface to their users.
Why go to all this trouble instead of just using an SDK? The biggest reason is portability. Take for example PagerDuty, which is a powerful service that manages incident alerting. The original Salt module used a community driver for PagerDuty. At the time, this driver didn't do much, but it did allow Salt to create alerts, which was all that was needed.
However, in practical use, it...