"""Advoware API Proxy - PUT requests""" from typing import Any from motia import FlowContext, http, ApiRequest, ApiResponse from services.advoware import AdvowareAPI config = { "name": "Advoware Proxy PUT", "description": "Universal proxy for Advoware API (PUT requests)", "flows": ["advoware-proxy"], "triggers": [ http("PUT", "/advoware/proxy") ], "enqueues": [], } async def handler(request: ApiRequest, ctx: FlowContext[Any]) -> ApiResponse: """ Proxy PUT requests to Advoware API. Query parameters: - endpoint: Advoware API endpoint (required) - any other params are forwarded to Advoware Body: JSON payload to forward to Advoware """ try: # Extract endpoint from query parameters endpoint = request.query_params.get('endpoint', '') if not endpoint: return ApiResponse( status=400, body={'error': 'Endpoint required as query parameter'} ) # Initialize Advoware client advoware = AdvowareAPI(ctx) # Forward all query params except 'endpoint' params = {k: v for k, v in request.query_params.items() if k != 'endpoint'} # Get request body json_data = request.body ctx.logger.info(f"Proxying PUT request to Advoware: {endpoint}") result = await advoware.api_call( endpoint, method='PUT', params=params, json_data=json_data ) return ApiResponse(status=200, body={'result': result}) except Exception as e: ctx.logger.error(f"Proxy error: {e}") return ApiResponse( status=500, body={'error': 'Internal server error', 'details': str(e)} )