"""Requests to ows-royalties.""" from __future__ import annotations from typing import Any from lambdacommon.common_config import logger from owsclient import OwsClient from src.errors import InputValidationError SERVICE = 'ows-royalties' _PATH = '/earnings-transfers?limit=10000' def get_earnings_transfers(ows_client: OwsClient) -> list[dict[str, Any]]: """Fetch all earnings transfer records from ows-royalties. Returns: Raw list of API records (dicts). Raises: InputValidationError: If the API returns a non-200 status. """ logger.info( 'Fetching earnings transfers', extra={'service': SERVICE, 'path': _PATH} ) response = ows_client.get(SERVICE, _PATH) logger.info('ows-royalties response status_code=%s', response.status_code) if response.status_code != 200: raise InputValidationError( f'ows-royalties GET {_PATH} returned HTTP {response.status_code}' ) body = response.json() if isinstance(body, dict): keys = list(body.keys()) items_count = len(body.get('items', [])) logger.info( 'ows-royalties response body: top_level_keys=%s items_count=%s body_preview=%s', keys, items_count, str(body)[:500], ) else: logger.info( 'ows-royalties response body is not a dict: type=%s preview=%s', type(body).__name__, str(body)[:500], ) return body.get('items', [])