API client framework extracted from Fog