"""API call step — make HTTP requests.""" import logging import httpx logger = logging.getLogger(__name__) async def execute_api_call(config: dict, **_kwargs) -> str: """Make an HTTP request and return the response body.""" url = config.get("url", "") if not url: raise ValueError("api_call step requires 'url' field") method = config.get("method", "GET").upper() headers = config.get("headers", {}) body = config.get("body") async with httpx.AsyncClient(timeout=30.0) as client: if method == "GET": resp = await client.get(url, headers=headers) elif method == "POST": resp = await client.post(url, headers=headers, content=body) elif method == "PUT": resp = await client.put(url, headers=headers, content=body) elif method == "DELETE": resp = await client.delete(url, headers=headers) else: raise ValueError(f"Unsupported HTTP method: {method}") resp.raise_for_status() return resp.text